mmserv/radioutility/inc/RadioServerData.h
changeset 0 71ca22bcf22a
equal deleted inserted replaced
-1:000000000000 0:71ca22bcf22a
       
     1 /*
       
     2 * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Defines all constants and data structures used by the Radio
       
    15 *                Server and its clients.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 #ifndef RADIOSERVERDATA_H
       
    22 #define RADIOSERVERDATA_H
       
    23 
       
    24 //  INCLUDES
       
    25 #include <e32std.h>
       
    26 #include <e32base.h>
       
    27 
       
    28 // CONSTANTS & DATA TYPES
       
    29 
       
    30 /**
       
    31  *  Radio Server error definitions.
       
    32  *  In addition to the standard system error code, the following error codes may
       
    33  *  be returned.
       
    34  */
       
    35 typedef TInt TRadioServerError;
       
    36 const TRadioServerError KRadioServErrHardwareFaulty              = -12050;
       
    37 const TRadioServerError KRadioServErrTuning                      = -12051;
       
    38 const TRadioServerError KRadioServErrFrequencyOutOfBandRange     = -12052;
       
    39 const TRadioServerError KRadioServErrFrequencyNotValid           = -12053;
       
    40 const TRadioServerError KRadioServErrNotPermittedInCurrentState  = -12054;
       
    41 const TRadioServerError KRadioServErrDuplicateRequest            = -12055;
       
    42 const TRadioServerError KRadioServErrAntennaNotConnected	     = -12056;
       
    43 const TRadioServerError KRadioServErrFmTransmitterActive	     = -12057;
       
    44 const TRadioServerError KRadioServErrOfflineMode                 = -12058;
       
    45 
       
    46 /**
       
    47 * RadioServer panic codes
       
    48 */
       
    49 enum TRadioServerPanic
       
    50 	{
       
    51 	ERadioPanicIllegalFunction,		// Illegal function called via client-server interface
       
    52 	ERadioPanicBadHandle,
       
    53 	ERadioPanicBadDescriptor,
       
    54 	ERadioPanicPostConditionViolation
       
    55 	};
       
    56 
       
    57 // RadioServer Publish & Subscribe property category
       
    58 const TUid KRadioServerPropertyCategory = {0x10207A7E};
       
    59 // RadioServer monitor state key, defined as TBool
       
    60 // ETrue to indicate that Radio is playing; client should now start to monitor radio activities.
       
    61 // EFalse to indicate that Radio is stopped and there are no primary clients connected.
       
    62 const TInt KRadioServPsMonitorState = 1;
       
    63 
       
    64 /**
       
    65 * Tuner type.
       
    66 */
       
    67 enum TRsTuner
       
    68     {
       
    69     ERsTunerFm	= 0x01,		// FM tuner
       
    70     ERsTunerAm	= 0x04		// AM tuner
       
    71     };
       
    72 
       
    73 /**
       
    74 * Frequency range. The actual range comes from the adaptation. The following range
       
    75 * specified in the comment is just a approximate guideline.
       
    76 */
       
    77 enum TRsFrequencyRange
       
    78     {
       
    79     ERsRangeFmEuroAmerica	= 0x01,		// European and American FM frequency range (87.5 - 108 MHz)
       
    80     ERsRangeFmJapan			= 0x02,		// Japanese FM frequency range (76 - 90 MHz)
       
    81     ERsRangeAm				= 0x04		// AM (535 - 1605 kHz)
       
    82     };
       
    83 
       
    84 // RadioServer balace
       
    85 const TInt KRadioServerBalanceMin	= 0;
       
    86 const TInt KRadioServerBalanceMax	= 100;
       
    87 
       
    88 /**
       
    89 *  Tuner capabilities class defines the capabilities of the tuner on the
       
    90 *  device, as retrieved using the function GetTunerCapabilities.
       
    91 *
       
    92 *  @since Series 60 4.0
       
    93 */
       
    94 class TRsTunerCapabilities
       
    95 	{
       
    96 	public:
       
    97 		// Tuner Function bit flags - may be extended in future
       
    98 		enum TRsTunerFunctions
       
    99 			{
       
   100 			// The tuner can be used when the device is in offline mode
       
   101 			ETunerFunctionAvailableInOfflineMode	= 0x01,
       
   102 			// RDS supported
       
   103 			ETunerFunctionRds						= 0x02,
       
   104 			// Device supports dual tuner
       
   105 			ETunerFunctionDualTuner          		= 0x04
       
   106 			};
       
   107 
       
   108 	public:
       
   109 		// Bitfield (as defined by TRsTunerBand) with the bits of the supported tuner bands
       
   110 		TUint32 iFrequencyRange;
       
   111 		// Bitfield (as defined by TRsTunerFunctions) with the bits of the supported functions set
       
   112 		TUint32 iCapabilities;
       
   113 		// Reserved for future
       
   114 		TUint32 iAdditionalFunctions1;
       
   115 		// Reserved for future
       
   116 		TUint32 iAdditionalFunctions2;
       
   117 	};
       
   118 
       
   119 /**
       
   120 * Player state
       
   121 */
       
   122 enum TRsPlayerState
       
   123 	{
       
   124 	ERsPlayerIdle,
       
   125 	ERsPlayerPlaying
       
   126 	};
       
   127 
       
   128 /**
       
   129 * RDS Programme Type.
       
   130 *
       
   131 * The interpretation of values of this type depends on the origin of the RDS
       
   132 * broadcast: in North America, a slightly different standard, RBDS, is used.
       
   133 * These PTY codes are defined by static values KRsRbdsPtyXxxxx, for example
       
   134 * KRsRbdsPtySoftRock.
       
   135 *
       
   136 * Elsewhere, including Europe, the RDS standard is used. In these areas, the
       
   137 * PTY codes are defined by static values KRsRdsPtyXxxxx, for example
       
   138 * KRsRdsPtyChildrensProgrammes.
       
   139 *
       
   140 * In all other important aspects, the European RDS and North American RBDS
       
   141 * standards are identical.
       
   142 */
       
   143 typedef TInt TRsRdsProgrammeType;
       
   144 
       
   145 const static TRsRdsProgrammeType KRsRdsPtyNone = 0;
       
   146 const static TRsRdsProgrammeType KRsRdsPtyNews = 1;
       
   147 const static TRsRdsProgrammeType KRsRdsPtyCurrentAffairs = 2;
       
   148 const static TRsRdsProgrammeType KRsRdsPtyInformation = 3;
       
   149 const static TRsRdsProgrammeType KRsRdsPtySport = 4;
       
   150 const static TRsRdsProgrammeType KRsRdsPtyEducation = 5;
       
   151 const static TRsRdsProgrammeType KRsRdsPtyDrama = 6;
       
   152 const static TRsRdsProgrammeType KRsRdsPtyCulture = 7;
       
   153 const static TRsRdsProgrammeType KRsRdsPtyScience = 8;
       
   154 const static TRsRdsProgrammeType KRsRdsPtyVariedSpeech = 9;
       
   155 const static TRsRdsProgrammeType KRsRdsPtyPopMusic = 10;
       
   156 const static TRsRdsProgrammeType KRsRdsPtyRockMusic = 11;
       
   157 const static TRsRdsProgrammeType KRsRdsPtyEasyListening = 12;
       
   158 const static TRsRdsProgrammeType KRsRdsPtyLightClassical = 13;
       
   159 const static TRsRdsProgrammeType KRsRdsPtySeriousClassical = 14;
       
   160 const static TRsRdsProgrammeType KRsRdsPtyOtherMusic = 15;
       
   161 const static TRsRdsProgrammeType KRsRdsPtyWeather = 16;
       
   162 const static TRsRdsProgrammeType KRsRdsPtyFinance = 17;
       
   163 const static TRsRdsProgrammeType KRsRdsPtyChildrensProgrammes = 18;
       
   164 const static TRsRdsProgrammeType KRsRdsPtySocialAffairs = 19;
       
   165 const static TRsRdsProgrammeType KRsRdsPtyReligion = 20;
       
   166 const static TRsRdsProgrammeType KRsRdsPtyPhoneIn = 21;
       
   167 const static TRsRdsProgrammeType KRsRdsPtyTravel = 22;
       
   168 const static TRsRdsProgrammeType KRsRdsPtyLeisure = 23;
       
   169 const static TRsRdsProgrammeType KRsRdsPtyJazzMusic = 24;
       
   170 const static TRsRdsProgrammeType KRsRdsPtyCountryMusic = 25;
       
   171 const static TRsRdsProgrammeType KRsRdsPtyNationalMusic = 26;
       
   172 const static TRsRdsProgrammeType KRsRdsPtyOldiesMusic = 27;
       
   173 const static TRsRdsProgrammeType KRsRdsPtyFolkMusic = 28;
       
   174 const static TRsRdsProgrammeType KRsRdsPtyDocumentary = 29;
       
   175 const static TRsRdsProgrammeType KRsRdsPtyAlarmTest = 30;
       
   176 const static TRsRdsProgrammeType KRsRdsPtyAlarm = 31;
       
   177 
       
   178 const static TRsRdsProgrammeType KRsRbdsPtyNone = 0;
       
   179 const static TRsRdsProgrammeType KRsRbdsPtyNews = 1;
       
   180 const static TRsRdsProgrammeType KRsRbdsPtyInformation = 2;
       
   181 const static TRsRdsProgrammeType KRsRbdsPtySports = 3;
       
   182 const static TRsRdsProgrammeType KRsRbdsPtyTalk = 4;
       
   183 const static TRsRdsProgrammeType KRsRbdsPtyRock = 5;
       
   184 const static TRsRdsProgrammeType KRsRbdsPtyClassicRock = 6;
       
   185 const static TRsRdsProgrammeType KRsRbdsPtyAdultHits = 7;
       
   186 const static TRsRdsProgrammeType KRsRbdsPtySoftRock = 8;
       
   187 const static TRsRdsProgrammeType KRsRbdsPtyTop40 = 9;
       
   188 const static TRsRdsProgrammeType KRsRbdsPtyCountry = 10;
       
   189 const static TRsRdsProgrammeType KRsRbdsPtyOldies = 11;
       
   190 const static TRsRdsProgrammeType KRsRbdsPtySoft = 12;
       
   191 const static TRsRdsProgrammeType KRsRbdsPtyNostalgia = 13;
       
   192 const static TRsRdsProgrammeType KRsRbdsPtyJazz = 14;
       
   193 const static TRsRdsProgrammeType KRsRbdsPtyClassical = 15;
       
   194 const static TRsRdsProgrammeType KRsRbdsPtyRhythmAndBlues = 16;
       
   195 const static TRsRdsProgrammeType KRsRbdsPtySoftRhythmAndBlues = 17;
       
   196 const static TRsRdsProgrammeType KRsRbdsPtyLanguage = 18;
       
   197 const static TRsRdsProgrammeType KRsRbdsPtyReligiousMusic = 19;
       
   198 const static TRsRdsProgrammeType KRsRbdsPtyReligiousTalk = 20;
       
   199 const static TRsRdsProgrammeType KRsRbdsPtyPersonality = 21;
       
   200 const static TRsRdsProgrammeType KRsRbdsPtyPublic = 22;
       
   201 const static TRsRdsProgrammeType KRsRbdsPtyCollege = 23;
       
   202 const static TRsRdsProgrammeType KRsRbdsPtyUnassigned1 = 24;
       
   203 const static TRsRdsProgrammeType KRsRbdsPtyUnassigned2 = 25;
       
   204 const static TRsRdsProgrammeType KRsRbdsPtyUnassigned3 = 26;
       
   205 const static TRsRdsProgrammeType KRsRbdsPtyUnassigned4 = 27;
       
   206 const static TRsRdsProgrammeType KRsRbdsPtyUnassigned5 = 28;
       
   207 const static TRsRdsProgrammeType KRsRbdsPtyWeather = 29;
       
   208 const static TRsRdsProgrammeType KRsRbdsPtyEmergencyTest = 30;
       
   209 const static TRsRdsProgrammeType KRsRbdsPtyEmergency = 31;
       
   210 
       
   211 
       
   212 /**
       
   213  *  Table 1: Class codes for RTplus content types
       
   214  *  Defined in Radiotext plus (RTplus) Specification Version 2.1
       
   215  *  RDS Forum 2006-07-21 - R06/040_1
       
   216  */
       
   217 enum TRsRdsRTplusClass
       
   218     {
       
   219     // Category: Item (0 - 11)
       
   220     ERsRTplusItemDummy = 0,
       
   221     ERsRTplusItemTitle,
       
   222     ERsRTplusItemAlbum,
       
   223     ERsRTplusItemTrackNumber,
       
   224     ERsRTplusItemArtist,
       
   225     ERsRTplusItemComposition,
       
   226     ERsRTplusItemMovement,
       
   227     ERsRTplusItemConductor,
       
   228     ERsRTplusItemComposer,
       
   229     ERsRTplusItemBand,
       
   230     ERsRTplusItemComment,
       
   231     ERsRTplusItemGenre,
       
   232     // Category: Info (12 - 30)
       
   233     ERsRTplusInfoNews,
       
   234     ERsRTplusInfoNewsLocal,
       
   235     ERsRTplusInfoStockMarket,
       
   236     ERsRTplusInfoSport,
       
   237     ERsRTplusInfoLottery,
       
   238     ERsRTplusInfoHoroscope,
       
   239     ERsRTplusInfoDailyDiversion,
       
   240     ERsRTplusInfoHealth,
       
   241     ERsRTplusInfoEvent,
       
   242     ERsRTplusInfoSzene,
       
   243     ERsRTplusInfoCinema,
       
   244     ERsRTplusInfoTV,
       
   245     ERsRTplusInfoDateTime,
       
   246     ERsRTplusInfoWeather,
       
   247     ERsRTplusInfoTraffic,
       
   248     ERsRTplusInfoAlarm,
       
   249     ERsRTplusInfoAdvisertisement,
       
   250     ERsRTplusInfoURL,
       
   251     ERsRTplusInfoOther,
       
   252     // Category: Programme (31 - 40)
       
   253     ERsRTplusStationNameShort,
       
   254     ERsRTplusStationNameLong,
       
   255     ERsRTplusProgramNow,
       
   256     ERsRTplusProgramNext,
       
   257     ERsRTplusProgramPart,
       
   258     ERsRTplusProgramHost,
       
   259     ERsRTplusProgramEditorialStaff,
       
   260     ERsRTplusStationFrequency,
       
   261     ERsRTplusProgramHomepage,
       
   262     ERsRTplusProgramSubChannel,
       
   263     // Category: Interactivity (41 - 53)
       
   264     ERsRTplusPhoneHotline,
       
   265     ERsRTplusPhoneStudio,
       
   266     ERsRTplusPhoneOther,
       
   267     ERsRTplusSmsStudio,
       
   268     ERsRTplusSmsOther,
       
   269     ERsRTplusEmailHotline,
       
   270     ERsRTplusEmailStudio,
       
   271     ERsRTplusEmailOther,
       
   272     ERsRTplusMmsOther,
       
   273     ERsRTplusChat,
       
   274     ERsRTplusChatCenter,
       
   275     ERsRTplusVoteQuestion,
       
   276     ERsRTplusVoteCenter,
       
   277     // Category: Reserved for future (54 - 55)
       
   278     ERsRTplusRfuClass54,
       
   279     ERsRTplusRfuClass55,
       
   280     // Category: Private classes (56 - 58)
       
   281     ERsRTplusPrivateClass56,
       
   282     ERsRTplusPrivateClass57,
       
   283     ERsRTplusPrivateClass58,
       
   284     // Category: Descriptor (59 - 63)
       
   285     ERsRTplusPlace,
       
   286     ERsRTplusAppointment,
       
   287     ERsRTplusIdentifier,
       
   288     ERsRTplusPurchase,
       
   289     ERsRTplusGetData
       
   290     };
       
   291 
       
   292 /**
       
   293 *  The RDS Capabilities class defines the capabilities of the RDS control on the
       
   294 *  device, as retrieved using the function GetCapabilities.
       
   295 *
       
   296 *  @since Series 60 3.2
       
   297 */
       
   298 class TRsRdsCapabilities
       
   299 	{
       
   300 	public:
       
   301 		/// RDS Function Bit Flags
       
   302 		enum TRsRdsFeatures
       
   303 			{
       
   304 			ERsRdsProgrammeIdentification	= 0x001,
       
   305 			ERsRdsProgrammeType				= 0x002,
       
   306 			ERsRdsProgrammeService 			= 0x004,
       
   307 			ERsRdsRadioText 				= 0x008,
       
   308 			ERsRdsRadioTextPlus				= 0x010,
       
   309 			ERsRdsClockTime 				= 0x020,
       
   310 			ERsRdsTrafficProgramme 			= 0x040,
       
   311 			ERsRdsTrafficAnnouncement 		= 0x080,
       
   312 			ERsRdsAlternateFrequency 		= 0x100
       
   313 			};
       
   314 	public:
       
   315 		// Bitfield as defined by TRsRdsFeatures with the bits of the supported functions set
       
   316 		TUint32 iRdsFunctions;
       
   317 		// Reserved for future
       
   318 		TUint32 iAdditionalFunctions1;
       
   319 		// Reserved for future
       
   320 		TUint32 iAdditionalFunctions2;
       
   321 	};
       
   322 
       
   323 /**
       
   324 *  This class provides RDS features that can be enabled or disabled. Used in
       
   325 *  function SubscribeRdsData.
       
   326 *
       
   327 *  @since Series 60 3.2
       
   328 */
       
   329 class TRsRdsData
       
   330 	{
       
   331 	public:
       
   332 		// RDS Function Bit Flags
       
   333 		enum TRsRdsFeatures
       
   334 			{
       
   335 			ERsRdsProgrammeIdentification	= 0x001,
       
   336 			ERsRdsProgrammeType				= 0x002,
       
   337 			ERsRdsProgrammeService 			= 0x004,
       
   338 			ERsRdsRadioText 				= 0x008,
       
   339 			ERsRdsRadioTextPlus				= 0x010,
       
   340 			ERsRdsClockTime 				= 0x020,
       
   341 			ERsRdsTrafficProgramme 			= 0x040,
       
   342 			ERsRdsTrafficAnnouncement 		= 0x080,
       
   343 			ERsRdsAlternateFrequency 		= 0x100
       
   344 			};
       
   345 
       
   346 	// A value indicating a set containig all RDS data encapsulated by class TRdsData.
       
   347 	static const TUint32 KRsAllRdsData = ( ERsRdsProgrammeIdentification | ERsRdsProgrammeType | ERsRdsProgrammeService
       
   348 										 | ERsRdsRadioText|ERsRdsRadioTextPlus | ERsRdsClockTime
       
   349 										 | ERsRdsTrafficProgramme |ERsRdsTrafficAnnouncement | ERsRdsAlternateFrequency);
       
   350 
       
   351 	public:
       
   352 		// Bitfield as defined by TRsRdsFeatures with the bits of the supported functions set
       
   353 		TUint32 iRdsFunctions;
       
   354 		// Reserved for future
       
   355 		TUint32 iAdditionalFunctions1;
       
   356 		// Reserved for future
       
   357 		TUint32 iAdditionalFunctions2;
       
   358 	};
       
   359 
       
   360 // Programme Service name, 8 characters
       
   361 typedef TBuf16<8> TRsRdsPSName;
       
   362 // Radio Text, 64 characters
       
   363 typedef TBuf16<64> TRsRdsRadioText;
       
   364 
       
   365 typedef CArrayFixFlat<TInt>            TFreqList;
       
   366 typedef CArrayFixFlat<TRsRdsPSName>    TPsNameList;
       
   367 //typedef CArrayFixFlat<TRsRdsRTplusTag> TRtPlusTagsList;
       
   368 
       
   369 /**
       
   370  *  RadioServer settings data.
       
   371  */
       
   372 class TRsSettingsData
       
   373 	{
       
   374 	public:
       
   375 		TInt iError;
       
   376 		TInt iData1;
       
   377 		TInt iData2;
       
   378 		TInt iData3;
       
   379 	};
       
   380 /**
       
   381  *  RadioServer Radio Text+ object data.
       
   382  */
       
   383 class TRsRdsRTPlusObjectData
       
   384 	{
       
   385 	public:
       
   386 		TRsRdsRadioText aRtObj1;
       
   387 		TUint32 iContentType1;
       
   388 		TRsRdsRadioText aRtObj2;
       
   389 		TUint32 iContentType2;
       
   390 	};
       
   391   
       
   392 /**
       
   393  *  RadioServer character conversion table data.
       
   394  *  Conversion from 8-bit RDS character set to 16-bit UNICODE
       
   395  */
       
   396 static const TUint16 TRsRdsCharConvData[ ] = {
       
   397         // Convert all non displayble control characters (< 0x20) to UNICODE spaces 0x0020,
       
   398         // to avoid incorrect output in display.
       
   399         0x0020, // 0x00 NUL -> <space>
       
   400         0x0020, // 0x01 SOH -> <space>
       
   401         0x0020, // 0x02 STX -> <space>
       
   402         0x0020, // 0x03 ETX -> <space>
       
   403         0x0020, // 0x04 EOT -> <space>
       
   404         0x0020, // 0x05 ENQ -> <space>
       
   405         0x0020, // 0x06 ACK -> <space>
       
   406         0x0020, // 0x07 BEL -> <space>
       
   407         0x0020, // 0x08 BS -> <space>
       
   408         0x0020, // 0x09 TAB -> <space>
       
   409         0x0020, // 0x0A LF -> <space>
       
   410         0x0020, // 0x0B VT -> <space>
       
   411         0x0020, // 0x0C FF -> <space>
       
   412         0x0020, // 0x0D CR -> <space>
       
   413         0x0020, // 0x0E SO -> <space>
       
   414         0x0020, // 0x0F SI -> <space>
       
   415         0x0020, // 0x10 DLE -> <space>
       
   416         0x0020, // 0x11 DC1 -> <space>
       
   417         0x0020, // 0x12 DC2-> <space>
       
   418         0x0020, // 0x13 DC3 -> <space>
       
   419         0x0020, // 0x14 DC4 -> <space>
       
   420         0x0020, // 0x15 NAK -> <space>
       
   421         0x0020, // 0x16 SYN -> <space>
       
   422         0x0020, // 0x17 ETB -> <space>
       
   423         0x0020, // 0x18 CAN -> <space>
       
   424         0x0020, // 0x19 EM -> <space>
       
   425         0x0020, // 0x1A SUB -> <space>
       
   426         0x0020, // 0x1B ESC -> <space>
       
   427         0x0020, // 0x1C FS -> <space>
       
   428         0x0020, // 0x1D GS -> <space>
       
   429         0x0020, // 0x1E RS -> <space>
       
   430         0x0020, // 0x1F US -> <space>
       
   431         // end of non displayable control characters
       
   432         0x0020, // 0x20 RDS 8bit <space> to UNICODE <space>, first displayable character
       
   433         0x0021, // 0x21 !
       
   434         0x0022, // 0x22 "
       
   435         0x0023, // 0x23 #
       
   436         0x00A4, // 0x24 'sun'
       
   437         0x0025, // 0x25 %
       
   438         0x0026, // 0x26 &
       
   439         0x0027, // 0x27 '
       
   440         0x0028, // 0x28 (
       
   441         0x0029, // 0x29 )
       
   442         0x002A, // 0x2A *
       
   443         0x002B, // 0x2B +
       
   444         0x002C, // 0x2C ,
       
   445         0x002D, // 0x2D -
       
   446         0x002E, // 0x2E .
       
   447         0x002F, // 0x2F /
       
   448         0x0030, // 0x30 0
       
   449         0x0031, // 0x31 1
       
   450         0x0032, // 0x32 2
       
   451         0x0033, // 0x33 3
       
   452         0x0034, // 0x34 4
       
   453         0x0035, // 0x35 5
       
   454         0x0036, // 0x36 6
       
   455         0x0037, // 0x37 7
       
   456         0x0038, // 0x38 8
       
   457         0x0039, // 0x39 9
       
   458         0x003A, // 0x3A :
       
   459         0x003B, // 0x3B ;
       
   460         0x003C, // 0x3C <
       
   461         0x003D, // 0x3D =
       
   462         0x003E, // 0x3E >
       
   463         0x003F, // 0x3F ?
       
   464         0x0040, // 0x40 @
       
   465         0x0041, // 0x41 A
       
   466         0x0042, // 0x42 B
       
   467         0x0043, // 0x43 C
       
   468         0x0044, // 0x44 D
       
   469         0x0045, // 0x45 E
       
   470         0x0046, // 0x46 F
       
   471         0x0047, // 0x47 G
       
   472         0x0048, // 0x48 H
       
   473         0x0049, // 0x49 I
       
   474         0x004A, // 0x4A J
       
   475         0x004B, // 0x4B K
       
   476         0x004C, // 0x4C L
       
   477         0x004D, // 0x4D M
       
   478         0x004E, // 0x4E N
       
   479         0x004F, // 0x4F O
       
   480         0x0050, // 0x50 P
       
   481         0x0051, // 0x51 Q
       
   482         0x0052, // 0x52 R
       
   483         0x0053, // 0x53 S
       
   484         0x0054, // 0x54 T
       
   485         0x0055, // 0x55 U
       
   486         0x0056, // 0x56 V
       
   487         0x0057, // 0x57 W
       
   488         0x0058, // 0x58 X
       
   489         0x0059, // 0x59 Y
       
   490         0x005A, // 0x5A Z
       
   491         0x005B, // 0x5B [
       
   492         0x005C, // 0x5C '\'
       
   493         0x005D, // 0x5D ]
       
   494         0x0336, // 0x5E horizontal line centered
       
   495         0x005F, // 0x5F _
       
   496         0x01C1, // 0x60 double pipes centered
       
   497         0x0061, // 0x61 a
       
   498         0x0062, // 0x62 b
       
   499         0x0063, // 0x63 c
       
   500         0x0064, // 0x64 d
       
   501         0x0065, // 0x65 e
       
   502         0x0066, // 0x66 f
       
   503         0x0067, // 0x67 g
       
   504         0x0068, // 0x68 h
       
   505         0x0069, // 0x69 i
       
   506         0x006A, // 0x6A j
       
   507         0x006B, // 0x6B k
       
   508         0x006C, // 0x6C l
       
   509         0x006D, // 0x6D m
       
   510         0x006E, // 0x6E n
       
   511         0x006F, // 0x6F o
       
   512         0x0070, // 0x70 p
       
   513         0x0071, // 0x71 q
       
   514         0x0072, // 0x72 r
       
   515         0x0073, // 0x73 s
       
   516         0x0074, // 0x74 t
       
   517         0x0075, // 0x75 u
       
   518         0x0076, // 0x76 v
       
   519         0x0077, // 0x77 w
       
   520         0x0078, // 0x78 x
       
   521         0x0079, // 0x79 y
       
   522         0x007A, // 0x7A z
       
   523         0x007B, // 0x7B {
       
   524         0x007C, // 0x7C pipe
       
   525         0x007D, // 0x7D }
       
   526         0x00AF, // 0x7E horizontal line up
       
   527         0x0020, // 0x7F DEL (control character), set it to <space>
       
   528         0x00E1, // 0x80 á
       
   529         0x00E0, // 0x81 à
       
   530         0x00E9, // 0x82 é
       
   531         0x00E8, // 0x83 è
       
   532         0x00ED, // 0x84 í
       
   533         0x00EC, // 0x85 ì
       
   534         0x00F3, // 0x86 ó
       
   535         0x00F2, // 0x87 ò
       
   536         0x00FA, // 0x88 ú
       
   537         0x00F9, // 0x89 ù
       
   538         0x00D1, // 0x8A Ñ
       
   539         0x00C7, // 0x8B Ç
       
   540         0x015E, // 0x8C S with curve under
       
   541         0x00DF, // 0x8D double S
       
   542         0x00A1, // 0x8E ! upside down
       
   543         0x0132, // 0x8F 'IJ'
       
   544         0x00E2, // 0x90 â
       
   545         0x00E4, // 0x91 ä
       
   546         0x00E9, // 0x92 ê
       
   547         0x00EB, // 0x93 ë
       
   548         0x00EE, // 0x94 î
       
   549         0x00EF, // 0x95 ï
       
   550         0x00F4, // 0x96 ô
       
   551         0x00F6, // 0x97 ö
       
   552         0x00FB, // 0x98 û
       
   553         0x00FC, // 0x99 ü
       
   554         0x00F1, // 0x9A ñ        
       
   555         0x00E7, // 0x9B ç
       
   556         0x015F, // 0x9C s with curve under
       
   557         0x011F, // 0x9D g with curve above
       
   558         0x0131, // 0x9E i without dot
       
   559         0x0133, // 0x9F 'ij'
       
   560         0x00AA, // 0xA0 superscript a underlined
       
   561         0x03B1, // 0xA1 alfa-sign
       
   562         0x00A9, // 0xA2 copyright
       
   563         0x2030, // 0xA3 per mille sign
       
   564         0x01E6, // 0xA4 G with curve above
       
   565         0x011B, // 0xA5 e with curve above
       
   566         0x0148, // 0xA6 n with curve above
       
   567         0x0151, // 0xA7 o with tilted double quotes
       
   568         0x03C0, // 0xA8 pi sign
       
   569         0x20A0, // 0xA9 'CE' sign
       
   570         0x00A3, // 0xAA £
       
   571         0x0024, // 0xAB $
       
   572         0x2190, // 0xAC left arrow
       
   573         0x2191, // 0xAD up arrow
       
   574         0x2192, // 0xAE right arrow
       
   575         0x2193, // 0xAF down arrow
       
   576         0x00BA, // 0xB0 superscript o underlined
       
   577         0x00B9, // 0xB1 superscript 1
       
   578         0x00B2, // 0xB2 superscript 2
       
   579         0x00B3, // 0xB3 superscript 3
       
   580         0x00B1, // 0xB4 plus/minus
       
   581         0x0130, // 0xB5 I with dot
       
   582         0x0144, // 0xB6 n with right stroke
       
   583         0x0171, // 0xB7 u with tilted double quotes
       
   584         0x00B5, // 0xB8 mju
       
   585         0x00BF, // 0xB9 question mark upside down
       
   586         0x00F7, // 0xBA division sign
       
   587         0x00B0, // 0xBB degrees sign
       
   588         0x00BC, // 0xBC 1/4 sign
       
   589         0x00BD, // 0xBD 1/2 sign
       
   590         0x00BE, // 0xBE 3/4 sign
       
   591         0x00A7, // 0xBF §
       
   592         0x00C1, // 0xC0 Á
       
   593         0x00C0, // 0xC1 À
       
   594         0x00C9, // 0xC2 É
       
   595         0x00C8, // 0xC3 È
       
   596         0x00CD, // 0xC4 Í
       
   597         0x00CC, // 0xC5 Ì
       
   598         0x00D3, // 0xC6 Ó
       
   599         0x00D2, // 0xC7 Ò
       
   600         0x00DA, // 0xC8 Ú
       
   601         0x00D9, // 0xC9 Ù
       
   602         0x0158, // 0xCA R with curve above
       
   603         0x010C, // 0xCB C with curve above
       
   604         0x0160, // 0xCC S with curve above
       
   605         0x017D, // 0xCD Z with curve above
       
   606         0x0110, // 0xCE D with stroke
       
   607         0x013F, // 0xCF L with dot
       
   608         0x00C2, // 0xD0 Â
       
   609         0x00C4, // 0xD1 Ä
       
   610         0x00CA, // 0xD2 Ê
       
   611         0x00CB, // 0xD3 Ë
       
   612         0x00CE, // 0xD4 Î
       
   613         0x00CF, // 0xD5 Ï
       
   614         0x00D4, // 0xD6 Ô
       
   615         0x00D6, // 0xD7 Ö
       
   616         0x00DB, // 0xD8 Û
       
   617         0x00DC, // 0xD9 Ü
       
   618         0x0159, // 0xDA r with curve above
       
   619         0x010D, // 0xDB c with curve above
       
   620         0x0161, // 0xDC s with curve above
       
   621         0x017E, // 0xDD z with curve above
       
   622         0x0111, // 0xDE d with stroke
       
   623         0x0140, // 0xDF l with dot
       
   624         0x00C3, // 0xE0 Ã
       
   625         0x00C5, // 0xE1 Å
       
   626         0x00C6, // 0xE2 AE
       
   627         0x0152, // 0xE3 OE
       
   628         0x0177, // 0xE4 y with curve above
       
   629         0x00DD, // 0xE5 Ý
       
   630         0x00D5, // 0xE6 Õ
       
   631         0x00D8, // 0xE7 O with stroke
       
   632         0x00DE, // 0xE8 'P'-look-a-like
       
   633         0x014A, // 0xE9 'NJ'
       
   634         0x0154, // 0xEA R with stroke
       
   635         0x0106, // 0xEB C with stroke
       
   636         0x015A, // 0xEC S with stroke
       
   637         0x0179, // 0xED Z with stroke
       
   638         0x0166, // 0xEE T with stroke
       
   639         0x00F0, // 0xEF 'O'-look-a-like
       
   640         0x00E3, // 0xF0 ã
       
   641         0x00E5, // 0xF1 å
       
   642         0x00E6, // 0xF2 ae
       
   643         0x0153, // 0xF3 oe
       
   644         0x0175, // 0xF4 w with stroke
       
   645         0x00FD, // 0xF5 ý
       
   646         0x00F5, // 0xF6 õ
       
   647         0x00F8, // 0xF7 o with stroke
       
   648         0x00FE, // 0xF8 'p'-look-a-like
       
   649         0x014B, // 0xF9 'nj'
       
   650         0x0155, // 0xFA r with stroke
       
   651         0x0107, // 0xFB c with stroke
       
   652         0x015B, // 0xFC s with stroke
       
   653         0x017A, // 0xFD z with stroke
       
   654         0x0167, // 0xFE t with stroke
       
   655         0x0020  // 0xFF Should not happen, but just in case set to <space>
       
   656                 //      to avoid out of table access.
       
   657 };
       
   658 
       
   659 #endif      // RADIOSERVERDATA_H
       
   660 
       
   661 // End of File