void CMagnetometer::DataReceived(CSensrvChannel& aChannel, TInt aCount, TInt aDataLost) { if (aChannel.GetChannelInfo().iChannelType == KSensrvChannelTypeIdMagnetometerXYZAxisData) { TPckgBuf<TSensrvMagnetometerAxisData> dataBuffer; TSensrvMagnetometerAxisData data; for (TInt i = 0; i < aCount; ++i) { aChannel.GetData(dataBuffer); data = dataBuffer(); // Do something with the date in data variable // data.iTimeStamp // Compensate axis for landscape mode TInt x = -data.iAxisYCalibrated; TInt y = data.iAxisXCalibrated; TInt z = data.iAxisZCalibrated; #if 0 TInt x = data.iAxisXCalibrated; TInt y = data.iAxisYCalibrated; TInt z = data.iAxisZCalibrated; #endif const TReal KPole = 0.85; iX = KPole * iX + (1.0 - KPole) * x; iY = KPole * iY + (1.0 - KPole) * y; iZ = KPole * iZ + (1.0 - KPole) * z; } } }
Qt::Orientation HbSensorListener::orientationFromData(CSensrvChannel &aChannel, TInt aCount) { Qt::Orientation orientation = mOrientation; if (aChannel.GetChannelInfo().iChannelType == KSensrvChannelTypeIdOrientationData) { TSensrvOrientationData data; for (TInt i = 0; i < aCount; ++i) { TPckgBuf<TSensrvOrientationData> dataBuf; aChannel.GetData(dataBuf); data = dataBuf(); orientation = sensorOrientationToQtOrientation(data.iDeviceOrientation); } } return orientation; }
void CMagnetometer::PropertyChanged(CSensrvChannel& aChannel, const TSensrvProperty& aChangedProperty) { TSensrvChannelInfo info = aChannel.GetChannelInfo(); if (info.iChannelType == KSensrvChannelTypeIdMagnetometerXYZAxisData && aChangedProperty.GetPropertyId() == KSensrvPropCalibrationLevel) { TInt calibration = 0; aChangedProperty.GetValue(calibration); iCalibration = calibration == 0? ENone : calibration == 1? ELow : calibration == 2? EModerate : calibration == 3? EHigh : ENone; } }