mmserv/radioutility/inc/RadioServerData.h
changeset 0 71ca22bcf22a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/inc/RadioServerData.h	Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,661 @@
+/*
+* Copyright (c) 2002-2004 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 "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Defines all constants and data structures used by the Radio
+*                Server and its clients.
+*
+*/
+
+
+
+#ifndef RADIOSERVERDATA_H
+#define RADIOSERVERDATA_H
+
+//  INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CONSTANTS & DATA TYPES
+
+/**
+ *  Radio Server error definitions.
+ *  In addition to the standard system error code, the following error codes may
+ *  be returned.
+ */
+typedef TInt TRadioServerError;
+const TRadioServerError KRadioServErrHardwareFaulty              = -12050;
+const TRadioServerError KRadioServErrTuning                      = -12051;
+const TRadioServerError KRadioServErrFrequencyOutOfBandRange     = -12052;
+const TRadioServerError KRadioServErrFrequencyNotValid           = -12053;
+const TRadioServerError KRadioServErrNotPermittedInCurrentState  = -12054;
+const TRadioServerError KRadioServErrDuplicateRequest            = -12055;
+const TRadioServerError KRadioServErrAntennaNotConnected	     = -12056;
+const TRadioServerError KRadioServErrFmTransmitterActive	     = -12057;
+const TRadioServerError KRadioServErrOfflineMode                 = -12058;
+
+/**
+* RadioServer panic codes
+*/
+enum TRadioServerPanic
+	{
+	ERadioPanicIllegalFunction,		// Illegal function called via client-server interface
+	ERadioPanicBadHandle,
+	ERadioPanicBadDescriptor,
+	ERadioPanicPostConditionViolation
+	};
+
+// RadioServer Publish & Subscribe property category
+const TUid KRadioServerPropertyCategory = {0x10207A7E};
+// RadioServer monitor state key, defined as TBool
+// ETrue to indicate that Radio is playing; client should now start to monitor radio activities.
+// EFalse to indicate that Radio is stopped and there are no primary clients connected.
+const TInt KRadioServPsMonitorState = 1;
+
+/**
+* Tuner type.
+*/
+enum TRsTuner
+    {
+    ERsTunerFm	= 0x01,		// FM tuner
+    ERsTunerAm	= 0x04		// AM tuner
+    };
+
+/**
+* Frequency range. The actual range comes from the adaptation. The following range
+* specified in the comment is just a approximate guideline.
+*/
+enum TRsFrequencyRange
+    {
+    ERsRangeFmEuroAmerica	= 0x01,		// European and American FM frequency range (87.5 - 108 MHz)
+    ERsRangeFmJapan			= 0x02,		// Japanese FM frequency range (76 - 90 MHz)
+    ERsRangeAm				= 0x04		// AM (535 - 1605 kHz)
+    };
+
+// RadioServer balace
+const TInt KRadioServerBalanceMin	= 0;
+const TInt KRadioServerBalanceMax	= 100;
+
+/**
+*  Tuner capabilities class defines the capabilities of the tuner on the
+*  device, as retrieved using the function GetTunerCapabilities.
+*
+*  @since Series 60 4.0
+*/
+class TRsTunerCapabilities
+	{
+	public:
+		// Tuner Function bit flags - may be extended in future
+		enum TRsTunerFunctions
+			{
+			// The tuner can be used when the device is in offline mode
+			ETunerFunctionAvailableInOfflineMode	= 0x01,
+			// RDS supported
+			ETunerFunctionRds						= 0x02,
+			// Device supports dual tuner
+			ETunerFunctionDualTuner          		= 0x04
+			};
+
+	public:
+		// Bitfield (as defined by TRsTunerBand) with the bits of the supported tuner bands
+		TUint32 iFrequencyRange;
+		// Bitfield (as defined by TRsTunerFunctions) with the bits of the supported functions set
+		TUint32 iCapabilities;
+		// Reserved for future
+		TUint32 iAdditionalFunctions1;
+		// Reserved for future
+		TUint32 iAdditionalFunctions2;
+	};
+
+/**
+* Player state
+*/
+enum TRsPlayerState
+	{
+	ERsPlayerIdle,
+	ERsPlayerPlaying
+	};
+
+/**
+* RDS Programme Type.
+*
+* The interpretation of values of this type depends on the origin of the RDS
+* broadcast: in North America, a slightly different standard, RBDS, is used.
+* These PTY codes are defined by static values KRsRbdsPtyXxxxx, for example
+* KRsRbdsPtySoftRock.
+*
+* Elsewhere, including Europe, the RDS standard is used. In these areas, the
+* PTY codes are defined by static values KRsRdsPtyXxxxx, for example
+* KRsRdsPtyChildrensProgrammes.
+*
+* In all other important aspects, the European RDS and North American RBDS
+* standards are identical.
+*/
+typedef TInt TRsRdsProgrammeType;
+
+const static TRsRdsProgrammeType KRsRdsPtyNone = 0;
+const static TRsRdsProgrammeType KRsRdsPtyNews = 1;
+const static TRsRdsProgrammeType KRsRdsPtyCurrentAffairs = 2;
+const static TRsRdsProgrammeType KRsRdsPtyInformation = 3;
+const static TRsRdsProgrammeType KRsRdsPtySport = 4;
+const static TRsRdsProgrammeType KRsRdsPtyEducation = 5;
+const static TRsRdsProgrammeType KRsRdsPtyDrama = 6;
+const static TRsRdsProgrammeType KRsRdsPtyCulture = 7;
+const static TRsRdsProgrammeType KRsRdsPtyScience = 8;
+const static TRsRdsProgrammeType KRsRdsPtyVariedSpeech = 9;
+const static TRsRdsProgrammeType KRsRdsPtyPopMusic = 10;
+const static TRsRdsProgrammeType KRsRdsPtyRockMusic = 11;
+const static TRsRdsProgrammeType KRsRdsPtyEasyListening = 12;
+const static TRsRdsProgrammeType KRsRdsPtyLightClassical = 13;
+const static TRsRdsProgrammeType KRsRdsPtySeriousClassical = 14;
+const static TRsRdsProgrammeType KRsRdsPtyOtherMusic = 15;
+const static TRsRdsProgrammeType KRsRdsPtyWeather = 16;
+const static TRsRdsProgrammeType KRsRdsPtyFinance = 17;
+const static TRsRdsProgrammeType KRsRdsPtyChildrensProgrammes = 18;
+const static TRsRdsProgrammeType KRsRdsPtySocialAffairs = 19;
+const static TRsRdsProgrammeType KRsRdsPtyReligion = 20;
+const static TRsRdsProgrammeType KRsRdsPtyPhoneIn = 21;
+const static TRsRdsProgrammeType KRsRdsPtyTravel = 22;
+const static TRsRdsProgrammeType KRsRdsPtyLeisure = 23;
+const static TRsRdsProgrammeType KRsRdsPtyJazzMusic = 24;
+const static TRsRdsProgrammeType KRsRdsPtyCountryMusic = 25;
+const static TRsRdsProgrammeType KRsRdsPtyNationalMusic = 26;
+const static TRsRdsProgrammeType KRsRdsPtyOldiesMusic = 27;
+const static TRsRdsProgrammeType KRsRdsPtyFolkMusic = 28;
+const static TRsRdsProgrammeType KRsRdsPtyDocumentary = 29;
+const static TRsRdsProgrammeType KRsRdsPtyAlarmTest = 30;
+const static TRsRdsProgrammeType KRsRdsPtyAlarm = 31;
+
+const static TRsRdsProgrammeType KRsRbdsPtyNone = 0;
+const static TRsRdsProgrammeType KRsRbdsPtyNews = 1;
+const static TRsRdsProgrammeType KRsRbdsPtyInformation = 2;
+const static TRsRdsProgrammeType KRsRbdsPtySports = 3;
+const static TRsRdsProgrammeType KRsRbdsPtyTalk = 4;
+const static TRsRdsProgrammeType KRsRbdsPtyRock = 5;
+const static TRsRdsProgrammeType KRsRbdsPtyClassicRock = 6;
+const static TRsRdsProgrammeType KRsRbdsPtyAdultHits = 7;
+const static TRsRdsProgrammeType KRsRbdsPtySoftRock = 8;
+const static TRsRdsProgrammeType KRsRbdsPtyTop40 = 9;
+const static TRsRdsProgrammeType KRsRbdsPtyCountry = 10;
+const static TRsRdsProgrammeType KRsRbdsPtyOldies = 11;
+const static TRsRdsProgrammeType KRsRbdsPtySoft = 12;
+const static TRsRdsProgrammeType KRsRbdsPtyNostalgia = 13;
+const static TRsRdsProgrammeType KRsRbdsPtyJazz = 14;
+const static TRsRdsProgrammeType KRsRbdsPtyClassical = 15;
+const static TRsRdsProgrammeType KRsRbdsPtyRhythmAndBlues = 16;
+const static TRsRdsProgrammeType KRsRbdsPtySoftRhythmAndBlues = 17;
+const static TRsRdsProgrammeType KRsRbdsPtyLanguage = 18;
+const static TRsRdsProgrammeType KRsRbdsPtyReligiousMusic = 19;
+const static TRsRdsProgrammeType KRsRbdsPtyReligiousTalk = 20;
+const static TRsRdsProgrammeType KRsRbdsPtyPersonality = 21;
+const static TRsRdsProgrammeType KRsRbdsPtyPublic = 22;
+const static TRsRdsProgrammeType KRsRbdsPtyCollege = 23;
+const static TRsRdsProgrammeType KRsRbdsPtyUnassigned1 = 24;
+const static TRsRdsProgrammeType KRsRbdsPtyUnassigned2 = 25;
+const static TRsRdsProgrammeType KRsRbdsPtyUnassigned3 = 26;
+const static TRsRdsProgrammeType KRsRbdsPtyUnassigned4 = 27;
+const static TRsRdsProgrammeType KRsRbdsPtyUnassigned5 = 28;
+const static TRsRdsProgrammeType KRsRbdsPtyWeather = 29;
+const static TRsRdsProgrammeType KRsRbdsPtyEmergencyTest = 30;
+const static TRsRdsProgrammeType KRsRbdsPtyEmergency = 31;
+
+
+/**
+ *  Table 1: Class codes for RTplus content types
+ *  Defined in Radiotext plus (RTplus) Specification Version 2.1
+ *  RDS Forum 2006-07-21 - R06/040_1
+ */
+enum TRsRdsRTplusClass
+    {
+    // Category: Item (0 - 11)
+    ERsRTplusItemDummy = 0,
+    ERsRTplusItemTitle,
+    ERsRTplusItemAlbum,
+    ERsRTplusItemTrackNumber,
+    ERsRTplusItemArtist,
+    ERsRTplusItemComposition,
+    ERsRTplusItemMovement,
+    ERsRTplusItemConductor,
+    ERsRTplusItemComposer,
+    ERsRTplusItemBand,
+    ERsRTplusItemComment,
+    ERsRTplusItemGenre,
+    // Category: Info (12 - 30)
+    ERsRTplusInfoNews,
+    ERsRTplusInfoNewsLocal,
+    ERsRTplusInfoStockMarket,
+    ERsRTplusInfoSport,
+    ERsRTplusInfoLottery,
+    ERsRTplusInfoHoroscope,
+    ERsRTplusInfoDailyDiversion,
+    ERsRTplusInfoHealth,
+    ERsRTplusInfoEvent,
+    ERsRTplusInfoSzene,
+    ERsRTplusInfoCinema,
+    ERsRTplusInfoTV,
+    ERsRTplusInfoDateTime,
+    ERsRTplusInfoWeather,
+    ERsRTplusInfoTraffic,
+    ERsRTplusInfoAlarm,
+    ERsRTplusInfoAdvisertisement,
+    ERsRTplusInfoURL,
+    ERsRTplusInfoOther,
+    // Category: Programme (31 - 40)
+    ERsRTplusStationNameShort,
+    ERsRTplusStationNameLong,
+    ERsRTplusProgramNow,
+    ERsRTplusProgramNext,
+    ERsRTplusProgramPart,
+    ERsRTplusProgramHost,
+    ERsRTplusProgramEditorialStaff,
+    ERsRTplusStationFrequency,
+    ERsRTplusProgramHomepage,
+    ERsRTplusProgramSubChannel,
+    // Category: Interactivity (41 - 53)
+    ERsRTplusPhoneHotline,
+    ERsRTplusPhoneStudio,
+    ERsRTplusPhoneOther,
+    ERsRTplusSmsStudio,
+    ERsRTplusSmsOther,
+    ERsRTplusEmailHotline,
+    ERsRTplusEmailStudio,
+    ERsRTplusEmailOther,
+    ERsRTplusMmsOther,
+    ERsRTplusChat,
+    ERsRTplusChatCenter,
+    ERsRTplusVoteQuestion,
+    ERsRTplusVoteCenter,
+    // Category: Reserved for future (54 - 55)
+    ERsRTplusRfuClass54,
+    ERsRTplusRfuClass55,
+    // Category: Private classes (56 - 58)
+    ERsRTplusPrivateClass56,
+    ERsRTplusPrivateClass57,
+    ERsRTplusPrivateClass58,
+    // Category: Descriptor (59 - 63)
+    ERsRTplusPlace,
+    ERsRTplusAppointment,
+    ERsRTplusIdentifier,
+    ERsRTplusPurchase,
+    ERsRTplusGetData
+    };
+
+/**
+*  The RDS Capabilities class defines the capabilities of the RDS control on the
+*  device, as retrieved using the function GetCapabilities.
+*
+*  @since Series 60 3.2
+*/
+class TRsRdsCapabilities
+	{
+	public:
+		/// RDS Function Bit Flags
+		enum TRsRdsFeatures
+			{
+			ERsRdsProgrammeIdentification	= 0x001,
+			ERsRdsProgrammeType				= 0x002,
+			ERsRdsProgrammeService 			= 0x004,
+			ERsRdsRadioText 				= 0x008,
+			ERsRdsRadioTextPlus				= 0x010,
+			ERsRdsClockTime 				= 0x020,
+			ERsRdsTrafficProgramme 			= 0x040,
+			ERsRdsTrafficAnnouncement 		= 0x080,
+			ERsRdsAlternateFrequency 		= 0x100
+			};
+	public:
+		// Bitfield as defined by TRsRdsFeatures with the bits of the supported functions set
+		TUint32 iRdsFunctions;
+		// Reserved for future
+		TUint32 iAdditionalFunctions1;
+		// Reserved for future
+		TUint32 iAdditionalFunctions2;
+	};
+
+/**
+*  This class provides RDS features that can be enabled or disabled. Used in
+*  function SubscribeRdsData.
+*
+*  @since Series 60 3.2
+*/
+class TRsRdsData
+	{
+	public:
+		// RDS Function Bit Flags
+		enum TRsRdsFeatures
+			{
+			ERsRdsProgrammeIdentification	= 0x001,
+			ERsRdsProgrammeType				= 0x002,
+			ERsRdsProgrammeService 			= 0x004,
+			ERsRdsRadioText 				= 0x008,
+			ERsRdsRadioTextPlus				= 0x010,
+			ERsRdsClockTime 				= 0x020,
+			ERsRdsTrafficProgramme 			= 0x040,
+			ERsRdsTrafficAnnouncement 		= 0x080,
+			ERsRdsAlternateFrequency 		= 0x100
+			};
+
+	// A value indicating a set containig all RDS data encapsulated by class TRdsData.
+	static const TUint32 KRsAllRdsData = ( ERsRdsProgrammeIdentification | ERsRdsProgrammeType | ERsRdsProgrammeService
+										 | ERsRdsRadioText|ERsRdsRadioTextPlus | ERsRdsClockTime
+										 | ERsRdsTrafficProgramme |ERsRdsTrafficAnnouncement | ERsRdsAlternateFrequency);
+
+	public:
+		// Bitfield as defined by TRsRdsFeatures with the bits of the supported functions set
+		TUint32 iRdsFunctions;
+		// Reserved for future
+		TUint32 iAdditionalFunctions1;
+		// Reserved for future
+		TUint32 iAdditionalFunctions2;
+	};
+
+// Programme Service name, 8 characters
+typedef TBuf16<8> TRsRdsPSName;
+// Radio Text, 64 characters
+typedef TBuf16<64> TRsRdsRadioText;
+
+typedef CArrayFixFlat<TInt>            TFreqList;
+typedef CArrayFixFlat<TRsRdsPSName>    TPsNameList;
+//typedef CArrayFixFlat<TRsRdsRTplusTag> TRtPlusTagsList;
+
+/**
+ *  RadioServer settings data.
+ */
+class TRsSettingsData
+	{
+	public:
+		TInt iError;
+		TInt iData1;
+		TInt iData2;
+		TInt iData3;
+	};
+/**
+ *  RadioServer Radio Text+ object data.
+ */
+class TRsRdsRTPlusObjectData
+	{
+	public:
+		TRsRdsRadioText aRtObj1;
+		TUint32 iContentType1;
+		TRsRdsRadioText aRtObj2;
+		TUint32 iContentType2;
+	};
+  
+/**
+ *  RadioServer character conversion table data.
+ *  Conversion from 8-bit RDS character set to 16-bit UNICODE
+ */
+static const TUint16 TRsRdsCharConvData[ ] = {
+        // Convert all non displayble control characters (< 0x20) to UNICODE spaces 0x0020,
+        // to avoid incorrect output in display.
+        0x0020, // 0x00 NUL -> <space>
+        0x0020, // 0x01 SOH -> <space>
+        0x0020, // 0x02 STX -> <space>
+        0x0020, // 0x03 ETX -> <space>
+        0x0020, // 0x04 EOT -> <space>
+        0x0020, // 0x05 ENQ -> <space>
+        0x0020, // 0x06 ACK -> <space>
+        0x0020, // 0x07 BEL -> <space>
+        0x0020, // 0x08 BS -> <space>
+        0x0020, // 0x09 TAB -> <space>
+        0x0020, // 0x0A LF -> <space>
+        0x0020, // 0x0B VT -> <space>
+        0x0020, // 0x0C FF -> <space>
+        0x0020, // 0x0D CR -> <space>
+        0x0020, // 0x0E SO -> <space>
+        0x0020, // 0x0F SI -> <space>
+        0x0020, // 0x10 DLE -> <space>
+        0x0020, // 0x11 DC1 -> <space>
+        0x0020, // 0x12 DC2-> <space>
+        0x0020, // 0x13 DC3 -> <space>
+        0x0020, // 0x14 DC4 -> <space>
+        0x0020, // 0x15 NAK -> <space>
+        0x0020, // 0x16 SYN -> <space>
+        0x0020, // 0x17 ETB -> <space>
+        0x0020, // 0x18 CAN -> <space>
+        0x0020, // 0x19 EM -> <space>
+        0x0020, // 0x1A SUB -> <space>
+        0x0020, // 0x1B ESC -> <space>
+        0x0020, // 0x1C FS -> <space>
+        0x0020, // 0x1D GS -> <space>
+        0x0020, // 0x1E RS -> <space>
+        0x0020, // 0x1F US -> <space>
+        // end of non displayable control characters
+        0x0020, // 0x20 RDS 8bit <space> to UNICODE <space>, first displayable character
+        0x0021, // 0x21 !
+        0x0022, // 0x22 "
+        0x0023, // 0x23 #
+        0x00A4, // 0x24 'sun'
+        0x0025, // 0x25 %
+        0x0026, // 0x26 &
+        0x0027, // 0x27 '
+        0x0028, // 0x28 (
+        0x0029, // 0x29 )
+        0x002A, // 0x2A *
+        0x002B, // 0x2B +
+        0x002C, // 0x2C ,
+        0x002D, // 0x2D -
+        0x002E, // 0x2E .
+        0x002F, // 0x2F /
+        0x0030, // 0x30 0
+        0x0031, // 0x31 1
+        0x0032, // 0x32 2
+        0x0033, // 0x33 3
+        0x0034, // 0x34 4
+        0x0035, // 0x35 5
+        0x0036, // 0x36 6
+        0x0037, // 0x37 7
+        0x0038, // 0x38 8
+        0x0039, // 0x39 9
+        0x003A, // 0x3A :
+        0x003B, // 0x3B ;
+        0x003C, // 0x3C <
+        0x003D, // 0x3D =
+        0x003E, // 0x3E >
+        0x003F, // 0x3F ?
+        0x0040, // 0x40 @
+        0x0041, // 0x41 A
+        0x0042, // 0x42 B
+        0x0043, // 0x43 C
+        0x0044, // 0x44 D
+        0x0045, // 0x45 E
+        0x0046, // 0x46 F
+        0x0047, // 0x47 G
+        0x0048, // 0x48 H
+        0x0049, // 0x49 I
+        0x004A, // 0x4A J
+        0x004B, // 0x4B K
+        0x004C, // 0x4C L
+        0x004D, // 0x4D M
+        0x004E, // 0x4E N
+        0x004F, // 0x4F O
+        0x0050, // 0x50 P
+        0x0051, // 0x51 Q
+        0x0052, // 0x52 R
+        0x0053, // 0x53 S
+        0x0054, // 0x54 T
+        0x0055, // 0x55 U
+        0x0056, // 0x56 V
+        0x0057, // 0x57 W
+        0x0058, // 0x58 X
+        0x0059, // 0x59 Y
+        0x005A, // 0x5A Z
+        0x005B, // 0x5B [
+        0x005C, // 0x5C '\'
+        0x005D, // 0x5D ]
+        0x0336, // 0x5E horizontal line centered
+        0x005F, // 0x5F _
+        0x01C1, // 0x60 double pipes centered
+        0x0061, // 0x61 a
+        0x0062, // 0x62 b
+        0x0063, // 0x63 c
+        0x0064, // 0x64 d
+        0x0065, // 0x65 e
+        0x0066, // 0x66 f
+        0x0067, // 0x67 g
+        0x0068, // 0x68 h
+        0x0069, // 0x69 i
+        0x006A, // 0x6A j
+        0x006B, // 0x6B k
+        0x006C, // 0x6C l
+        0x006D, // 0x6D m
+        0x006E, // 0x6E n
+        0x006F, // 0x6F o
+        0x0070, // 0x70 p
+        0x0071, // 0x71 q
+        0x0072, // 0x72 r
+        0x0073, // 0x73 s
+        0x0074, // 0x74 t
+        0x0075, // 0x75 u
+        0x0076, // 0x76 v
+        0x0077, // 0x77 w
+        0x0078, // 0x78 x
+        0x0079, // 0x79 y
+        0x007A, // 0x7A z
+        0x007B, // 0x7B {
+        0x007C, // 0x7C pipe
+        0x007D, // 0x7D }
+        0x00AF, // 0x7E horizontal line up
+        0x0020, // 0x7F DEL (control character), set it to <space>
+        0x00E1, // 0x80 á
+        0x00E0, // 0x81 à
+        0x00E9, // 0x82 é
+        0x00E8, // 0x83 è
+        0x00ED, // 0x84 í
+        0x00EC, // 0x85 ì
+        0x00F3, // 0x86 ó
+        0x00F2, // 0x87 ò
+        0x00FA, // 0x88 ú
+        0x00F9, // 0x89 ù
+        0x00D1, // 0x8A Ñ
+        0x00C7, // 0x8B Ç
+        0x015E, // 0x8C S with curve under
+        0x00DF, // 0x8D double S
+        0x00A1, // 0x8E ! upside down
+        0x0132, // 0x8F 'IJ'
+        0x00E2, // 0x90 â
+        0x00E4, // 0x91 ä
+        0x00E9, // 0x92 ê
+        0x00EB, // 0x93 ë
+        0x00EE, // 0x94 î
+        0x00EF, // 0x95 ï
+        0x00F4, // 0x96 ô
+        0x00F6, // 0x97 ö
+        0x00FB, // 0x98 û
+        0x00FC, // 0x99 ü
+        0x00F1, // 0x9A ñ        
+        0x00E7, // 0x9B ç
+        0x015F, // 0x9C s with curve under
+        0x011F, // 0x9D g with curve above
+        0x0131, // 0x9E i without dot
+        0x0133, // 0x9F 'ij'
+        0x00AA, // 0xA0 superscript a underlined
+        0x03B1, // 0xA1 alfa-sign
+        0x00A9, // 0xA2 copyright
+        0x2030, // 0xA3 per mille sign
+        0x01E6, // 0xA4 G with curve above
+        0x011B, // 0xA5 e with curve above
+        0x0148, // 0xA6 n with curve above
+        0x0151, // 0xA7 o with tilted double quotes
+        0x03C0, // 0xA8 pi sign
+        0x20A0, // 0xA9 'CE' sign
+        0x00A3, // 0xAA £
+        0x0024, // 0xAB $
+        0x2190, // 0xAC left arrow
+        0x2191, // 0xAD up arrow
+        0x2192, // 0xAE right arrow
+        0x2193, // 0xAF down arrow
+        0x00BA, // 0xB0 superscript o underlined
+        0x00B9, // 0xB1 superscript 1
+        0x00B2, // 0xB2 superscript 2
+        0x00B3, // 0xB3 superscript 3
+        0x00B1, // 0xB4 plus/minus
+        0x0130, // 0xB5 I with dot
+        0x0144, // 0xB6 n with right stroke
+        0x0171, // 0xB7 u with tilted double quotes
+        0x00B5, // 0xB8 mju
+        0x00BF, // 0xB9 question mark upside down
+        0x00F7, // 0xBA division sign
+        0x00B0, // 0xBB degrees sign
+        0x00BC, // 0xBC 1/4 sign
+        0x00BD, // 0xBD 1/2 sign
+        0x00BE, // 0xBE 3/4 sign
+        0x00A7, // 0xBF §
+        0x00C1, // 0xC0 Á
+        0x00C0, // 0xC1 À
+        0x00C9, // 0xC2 É
+        0x00C8, // 0xC3 È
+        0x00CD, // 0xC4 Í
+        0x00CC, // 0xC5 Ì
+        0x00D3, // 0xC6 Ó
+        0x00D2, // 0xC7 Ò
+        0x00DA, // 0xC8 Ú
+        0x00D9, // 0xC9 Ù
+        0x0158, // 0xCA R with curve above
+        0x010C, // 0xCB C with curve above
+        0x0160, // 0xCC S with curve above
+        0x017D, // 0xCD Z with curve above
+        0x0110, // 0xCE D with stroke
+        0x013F, // 0xCF L with dot
+        0x00C2, // 0xD0 Â
+        0x00C4, // 0xD1 Ä
+        0x00CA, // 0xD2 Ê
+        0x00CB, // 0xD3 Ë
+        0x00CE, // 0xD4 Î
+        0x00CF, // 0xD5 Ï
+        0x00D4, // 0xD6 Ô
+        0x00D6, // 0xD7 Ö
+        0x00DB, // 0xD8 Û
+        0x00DC, // 0xD9 Ü
+        0x0159, // 0xDA r with curve above
+        0x010D, // 0xDB c with curve above
+        0x0161, // 0xDC s with curve above
+        0x017E, // 0xDD z with curve above
+        0x0111, // 0xDE d with stroke
+        0x0140, // 0xDF l with dot
+        0x00C3, // 0xE0 Ã
+        0x00C5, // 0xE1 Å
+        0x00C6, // 0xE2 AE
+        0x0152, // 0xE3 OE
+        0x0177, // 0xE4 y with curve above
+        0x00DD, // 0xE5 Ý
+        0x00D5, // 0xE6 Õ
+        0x00D8, // 0xE7 O with stroke
+        0x00DE, // 0xE8 'P'-look-a-like
+        0x014A, // 0xE9 'NJ'
+        0x0154, // 0xEA R with stroke
+        0x0106, // 0xEB C with stroke
+        0x015A, // 0xEC S with stroke
+        0x0179, // 0xED Z with stroke
+        0x0166, // 0xEE T with stroke
+        0x00F0, // 0xEF 'O'-look-a-like
+        0x00E3, // 0xF0 ã
+        0x00E5, // 0xF1 å
+        0x00E6, // 0xF2 ae
+        0x0153, // 0xF3 oe
+        0x0175, // 0xF4 w with stroke
+        0x00FD, // 0xF5 ý
+        0x00F5, // 0xF6 õ
+        0x00F8, // 0xF7 o with stroke
+        0x00FE, // 0xF8 'p'-look-a-like
+        0x014B, // 0xF9 'nj'
+        0x0155, // 0xFA r with stroke
+        0x0107, // 0xFB c with stroke
+        0x015B, // 0xFC s with stroke
+        0x017A, // 0xFD z with stroke
+        0x0167, // 0xFE t with stroke
+        0x0020  // 0xFF Should not happen, but just in case set to <space>
+                //      to avoid out of table access.
+};
+
+#endif      // RADIOSERVERDATA_H
+
+// End of File