williamr@2: /* williamr@2: * Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Type definitions file for Sensor Server williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef SENSRVTYPES_H williamr@2: #define SENSRVTYPES_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: // Forward declare channel info williamr@2: class TSensrvChannelInfo; williamr@2: williamr@2: /** williamr@2: * Max length of the vendor Id williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: */ williamr@2: const TInt KSensrvVendorIdLength = 16; williamr@2: williamr@2: /** williamr@2: * Max length of the location string williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: */ williamr@2: const TInt KSensrvLocationLength = 16; williamr@2: williamr@2: /** williamr@2: * Item index for properties that are not data item specific williamr@2: * williamr@2: * @see TSensrvProperty williamr@2: */ williamr@2: const TInt KSensrvItemIndexNone = -1; williamr@2: williamr@2: // DATA TYPES williamr@2: williamr@2: /** williamr@2: * Type definition for a channel id used by TSensrvChannelInfo. Its value is assigned by the Sensor williamr@2: * Server and uniquely identifies a channel for the client session. When the client session has ended williamr@2: * the channel id is no longer valid. williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: * @see CSsyControl williamr@2: * @see MSsyCallback williamr@2: * @see MSsyChannelDataProvider williamr@2: * @see MSsyPropertyProvider williamr@2: */ williamr@2: typedef TUint32 TSensrvChannelId; williamr@2: williamr@2: /** williamr@2: * Type definition for a channel type used by TSensrvChannelInfo. This id identifies the type of channel williamr@2: * * that the object represents and therefore the content of the channel. This value is a uid and is unique williamr@2: * among all channels. See sensor channel specific header files. A client can use this value as one of the williamr@2: * search criteria when finding channels. williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: */ williamr@2: typedef TUint32 TSensrvChannelTypeId; williamr@2: williamr@2: /** williamr@2: * Typedef for datatype Id used by TSensrvChannelInfo. This identifies the data type for the data that the williamr@2: * channel provides. This value is a uid and is unique among all channels. See sensor channel specific header williamr@2: * files. williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: */ williamr@2: typedef TUint32 TSensrvChannelDataTypeId; williamr@2: williamr@2: williamr@2: /** williamr@2: * Undefined Channel id for use when finding channels williamr@2: * williamr@2: * @see CSensrvChannelFinder williamr@2: */ williamr@2: const TSensrvChannelTypeId KSensrvChannelTypeIdUndefined = 0x00000000; williamr@2: williamr@2: /** williamr@2: * RArray based channel Id list williamr@2: * williamr@2: * @see MSsyCallback williamr@2: * @see MSsyPropertyProvider williamr@2: */ williamr@2: typedef RArray RSensrvChannelList; williamr@2: williamr@2: /** williamr@2: * RArray based property list williamr@2: * williamr@2: * @see CSensrvChannel williamr@2: * @see MSsyPropertyProvider williamr@2: */ williamr@2: typedef RArray RSensrvPropertyList; williamr@2: williamr@2: /** williamr@2: * RArray based channel info list williamr@2: * williamr@2: * @see CSensrvChannelFinder williamr@2: * @see MSsyCallback williamr@2: */ williamr@2: typedef RArray RSensrvChannelInfoList; williamr@2: williamr@2: /** williamr@2: * Indication of whether a call to CSensrvChannel::SetPropertyL() is likely to succeed williamr@2: * williamr@2: * @see CSensrvChannel williamr@2: * @see MSensrvPropertyListener williamr@2: */ williamr@2: enum TSetPropertySuccessIndicator williamr@2: { williamr@2: ESetPropertyIndicationUnknown = 0, williamr@2: /** williamr@2: * Setting of a property is certain to succeed because client has the highest priority williamr@2: * of all clients that have open channels on that sensor device williamr@2: */ williamr@2: ESetPropertyIndicationAvailable, williamr@2: /** williamr@2: * Setting of a property may not succeed because: williamr@2: * 1. Client has the highest priority on its own channel however there are multiple williamr@2: * clients with the same priority and control is granted on a first come first served williamr@2: * basis. williamr@2: * 2. Client has highest priority on its own channel however there are higher priority williamr@2: * clients on other channels of the device that may be affected by the setting, in which williamr@2: * case it will not be allowed. williamr@2: * 3. Client has highest priority on its channel however there are same priority clients williamr@2: * on other channels of the device that may be affected by the setting, in which case it williamr@2: * will not be allowed williamr@2: */ williamr@2: ESetPropertyIndicationPossible, williamr@2: /** williamr@2: * Setting of a property will not succeed because: williamr@2: * 1. There are clients on the same channel with higher priority williamr@2: * 2. A client of the same priority is already setting properties on channel. williamr@2: */ williamr@2: ESetPropertyIndicationUnavailable williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The quantity of channel values. Defines the quantity the channel is measuring. williamr@2: * Licensee defined values must be between ESensrvQuantityLicenseeBase and williamr@2: * ESensrvQuantityLicenseeEnd williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: */ williamr@2: enum TSensrvQuantity williamr@2: { williamr@2: /** Channel doesn't provide quantity information*/ williamr@2: ESensrvQuantityNotUsed = -1, williamr@2: /** Quantity is not defined */ williamr@2: ESensrvQuantityNotdefined = 0, williamr@2: /** Channel measures acceleration */ williamr@2: ESensrvQuantityAcceleration = 10, williamr@2: /** Channel measures tapping events */ williamr@2: ESensrvQuantityTapping = 11, williamr@2: /** Channel measures phone orientation */ williamr@2: ESensrvQuantityOrientation = 12, williamr@2: /** Channel measures phone rotation */ williamr@2: ESensrvQuantityRotation = 13, williamr@2: /** Channel measures phone direction */ williamr@2: ESensrvQuantityMagnetic = 14, williamr@2: /** Channel measures degrees */ williamr@2: ESensrvQuantityAngle = 15, williamr@2: /** Channel measures phone proximity events*/ williamr@2: ESensrvQuantityProximity = 16, williamr@2: /** Start of licensee quantity range definitions */ williamr@2: ESensrvQuantityLicenseeBase = 8192, williamr@2: /** End of licensee quantity range definitions */ williamr@2: ESensrvQuantityLicenseeEnd = 12287 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The context type of a sensor. williamr@2: * Licensee defined values must be between ESensrvContextTypeLicenseeBase and williamr@2: * ESensrvContextTypeLicenseeEnd williamr@2: * williamr@2: * @see TSensrvChannelInfo williamr@2: */ williamr@2: enum TSensrvContextType williamr@2: { williamr@2: /** Channel doesn't provide sensor context type information */ williamr@2: ESensrvContextTypeNotUsed = -1, williamr@2: /** Context type is not defined */ williamr@2: ESensrvContextTypeNotDefined = 0, williamr@2: /** williamr@2: * Sensor is measuring a physical quantity of the phones environment e.g. pressure, temperature, williamr@2: * sound intensity, humidity williamr@2: */ williamr@2: ESensrvContextTypeAmbient = 1, williamr@2: /** williamr@2: * Sensor is measuring a physical quantity that the phone itself is undergoing e.g. acceleration, williamr@2: * rotation, orientation williamr@2: */ williamr@2: ESensrvContextTypeDevice = 2, williamr@2: /** williamr@2: * Sensor is measuring a physical quantity that is user stimulated e.g. body temperature, body mass, williamr@2: * heart rate williamr@2: */ williamr@2: ESensrvContextTypeUser = 3, williamr@2: /** Start of licensee context range definitions */ williamr@2: ESensrvContextTypeLicenseeBase = 8192, williamr@2: /** End of licensee context range definitions */ williamr@2: ESensrvContextTypeLicenseeEnd = 12287 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The connection type of a sensor. williamr@2: * Licensee defined values must be between ESensrvConnectionTypeLicenseeBase and williamr@2: * ESensrvConnectionTypeLicenseeEnd williamr@2: * williamr@2: * @see KSensrvSensorConnectionType williamr@2: */ williamr@2: enum TSensrvConnectionType williamr@2: { williamr@2: /** Connection type is not defined */ williamr@2: ESensrvConnectionTypeNotDefined = 0, williamr@2: /** Sensor is embedded in the phone */ williamr@2: ESensrvConnectionTypeEmbedded, williamr@2: /** Sensor is attached to phone by wire */ williamr@2: ESensrvConnectionTypeWired, williamr@2: /** Sensor is attached to phone wirelessly */ williamr@2: ESensrvConnectionTypeWireless, williamr@2: /** Start of licensee Connection type range definitions */ williamr@2: ESensrvConnectionTypeLicenseeBase = 8192, williamr@2: /** End of licensee Connection type range definitions */ williamr@2: ESensrvConnectionTypeLicenseeEnd = 12287 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The unit of the data measured by the sensor channel williamr@2: * Licensee defined values must be between ESensrvChannelUnitLicenseeBase and williamr@2: * ESensrvChannelUnitLicenseeEnd williamr@2: * williamr@2: * @see KSensrvPropIdChannelUnit williamr@2: */ williamr@2: enum TSensrvChannelUnit williamr@2: { williamr@2: /** Channel Unit is not defined */ williamr@2: ESensrvChannelUnitNotDefined = 0, williamr@2: /** Acceleration, meter per square second (m/s^2) */ williamr@2: ESensevChannelUnitAcceleration = 10, williamr@2: /** Acceleration, gravitational constant (G) */ williamr@2: ESensrvChannelUnitGravityConstant = 11, williamr@2: /** ESensrvChannelUnitMagneticFluxDensity, magnetic field density, Tesla (T) */ williamr@2: ESensrvChannelUnitMagneticFluxDensity = 12, williamr@2: /** Start of licensee Channel Unit range definitions */ williamr@2: ESensrvChannelUnitLicenseeBase = 8192, williamr@2: /** End of licensee Channel Unit range definitions */ williamr@2: ESensrvChannelUnitLicenseeEnd = 12287 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The format of the data measured by the sensor channel williamr@2: * Licensee defined values must be between ESensrvChannelDataFormatLicenseeBase and williamr@2: * ESensrvChannelDataFormatLicenseeEnd williamr@2: * williamr@2: * @code williamr@2: * Scaled format example: williamr@2: * Measure range for the accelerometer, KSensrvPropIdMeasureRange: -2g to 2g. williamr@2: * KSensrvPropIdScaledRange defines following values: williamr@2: * Range: Min: -127 Max: 127 williamr@2: * williamr@2: * Example values for the data item and their absolute values: williamr@2: * Data item: -64 = > -64/127 * 2g = -1.01g williamr@2: * Data item: 32 = > 32/127 * 2g = 0.51g williamr@2: * Data item: 127 = > 127/127 * 2g = 2g williamr@2: * @endcode williamr@2: * williamr@2: * @see KSensrvPropIdChannelDataFormat williamr@2: */ williamr@2: enum TSensrvChannelDataFormat williamr@2: { williamr@2: /** Data Fomat is not defined */ williamr@2: ESensrvChannelDataFormatNotDefined = 0, williamr@2: /** Value of the data item represents actual value of the measured quantity */ williamr@2: ESensrvChannelDataFormatAbsolute, williamr@2: /** williamr@2: * Value of the data item represents a relative value which is scaled between the maximum williamr@2: * and minimum values of the measured quantity williamr@2: */ williamr@2: ESensrvChannelDataFormatScaled, williamr@2: /** Start of licensee Data Format range definitions */ williamr@2: ESensrvChannelDataFormatLicenseeBase = 8192, williamr@2: /** End of licensee Data Format range definitions */ williamr@2: ESensrvChannelDataFormatLicenseeEnd = 12287 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The error code received by a sensor server listener williamr@2: * williamr@2: * @see MSensrvChannelConditionListener williamr@2: * @see MSensrvChannelListener williamr@2: * @see MSensrvDataListener williamr@2: * @see MSensrvPropertyListener williamr@2: */ williamr@2: enum TSensrvErrorSeverity williamr@2: { williamr@2: /** Error Severity is not defined */ williamr@2: ESensrvErrorSeverityNotDefined = 0, williamr@2: /** The channel has a temporary failure but listening has been successfully continued */ williamr@2: ESensrvErrorSeverityMinor, williamr@2: /** The channel has a fatal error and the channel was closed */ williamr@2: ESensrvErrorSeverityFatal williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The channel change is detected by the Channel Listener williamr@2: * williamr@2: * @see MSensrvChannelListener williamr@2: */ williamr@2: enum TSensrvChannelChangeType williamr@2: { williamr@2: /** Channel Change not defined */ williamr@2: ESensrvChannelChangeTypeNotDefined = 0, williamr@2: /** Channel was removed */ williamr@2: ESensrvChannelChangeTypeRemoved, williamr@2: /** Channel was added */ williamr@2: ESensrvChannelChangeTypeAdded williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The TSensrvPower represents sensor power state williamr@2: * williamr@2: * Possible values: williamr@2: * - ESensrvPowerPowerDown, sensor is currently powered down williamr@2: * - ESensrvPowerPowerUp, sensor currently powered up williamr@2: */ williamr@2: enum TSensrvPower williamr@2: { williamr@2: /** Sensor is powered down */ williamr@2: ESensrvPowerPowerDown = 0, williamr@2: /** Sensor is powered up */ williamr@2: ESensrvPowerPowerUp williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The TSensrvAvailability represents sensor channel availability williamr@2: * williamr@2: * Possible values: williamr@2: * - ESensrvAvailabilityFalse, the channel is not available, which is caused by williamr@2: * either sensor being powered down, or a dependency with another channel williamr@2: * prevents the channel for being available williamr@2: * - ESensrvAvailabilityTrue, the channel is available williamr@2: */ williamr@2: enum TSensrvAvailability williamr@2: { williamr@2: /** Channel not available */ williamr@2: ESensrvAvailabilityFalse = 0, williamr@2: /** Channel available */ williamr@2: ESensrvAvailabilityTrue williamr@2: }; williamr@2: williamr@2: williamr@2: #endif //SENSRVTYPES_H williamr@2: williamr@2: // End of File