mmserv/radioutility/inc/RadioServerData.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 15 Mar 2010 12:42:35 +0200
branchRCL_3
changeset 8 e35735ece90c
parent 0 71ca22bcf22a
permissions -rw-r--r--
Revision: 201009 Kit: 201010

/*
* 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