// ---------------------------------------------------------------------------------- // CSSYChannel::GetPropertyL() // ---------------------------------------------------------------------------------- // void CSSYChannel::GetPropertyL( const TSensrvChannelId aChannelId, TSensrvProperty& aProperty ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: GetPropertyL wrong channelId!" ); User::Leave( KErrArgument ); } // try first common sensor properties TInt ret = iSensorProperties->GetProperty( aProperty ); if ( ret != KErrNone ) { // then try the channel properties ret = iChannelProperties->GetProperty( aProperty ); } if ( ret != KErrNone ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Property is not supported: 0x%x ", aProperty.GetPropertyId() ); User::Leave( KErrNotSupported ); } SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::GetAllPropertiesL() // ---------------------------------------------------------------------------------- // void CSSYChannel::GetAllPropertiesL( const TSensrvChannelId aChannelId, RSensrvPropertyList& aChannelPropertyList ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: GetAllPropertiesL wrong channelId!" ); User::Leave( KErrArgument ); } aChannelPropertyList.Reset(); RSensrvPropertyList channelProperties; iSensorProperties->GetAllProperties( aChannelPropertyList ); iChannelProperties->GetAllProperties( channelProperties ); for ( TInt index = 0; index < channelProperties.Count(); index++ ) { aChannelPropertyList.Append( channelProperties[index] ); } channelProperties.Close(); SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::ForceBufferFilledL() // ---------------------------------------------------------------------------------- // void CSSYChannel::ForceBufferFilledL( const TSensrvChannelId aChannelId ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: StartChannelDataL wrong channelId!" ); User::Leave( KErrArgument ); } if( iChannelState & KChannelCanBeFilled ) { SetChannelState( EChannelForceBufferFilled ); IssueRequest(); } else { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: ForceBufferFilledL called in incorrected state! channelId: %d, state: %S", aChannelId, ConvertChannelStateIntoString( iChannelState ) ); User::Leave( KErrGeneral ); } SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::StopChannelDataL() // ---------------------------------------------------------------------------------- // void CSSYChannel::StopChannelDataL( const TSensrvChannelId aChannelId ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY::ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY::ERROR: StartChannelDataL wrong channelId!" ); User::Leave( KErrArgument ); } if ( iChannelState & KChannelCanBeStopped ) { iOrientationHandler->StopListeningL(); SetChannelState( EChannelStopListening ); IssueRequest(); } else { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Trying to stop listening a channel that is not listened! channelId: %d, state: %S", aChannelId, ConvertChannelStateIntoString( iChannelState ) ); User::Leave( KErrGeneral ); } SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::StartChannelDataL() // ---------------------------------------------------------------------------------- // void CSSYChannel::StartChannelDataL( const TSensrvChannelId aChannelId, TUint8* aBuffer, TInt aCount ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: StartChannelDataL wrong channelId!" ); User::Leave( KErrArgument ); } ASSERT_DEBUG_SSY( aBuffer ); ASSERT_DEBUG_SSY( aCount ); if ( !aBuffer || !aCount ) { User::Leave( KErrArgument ); } iBuffer = aBuffer; iCount = aCount; SSY_TRACE( EExtended, "ORIENTATIONSSY:New data buffer: 0x%x", iBuffer ); SSY_TRACE( EExtended, "ORIENTATIONSSY:New data count : %d", iCount ); if ( iChannelState & KChannelCanBeListened ) { iOrientationHandler->StartListeningL(); SetChannelState( EChannelListening ); IssueRequest(); } else { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Trying to listen a channel that is not open! channelId: %d, state: %S", aChannelId, ConvertChannelStateIntoString( iChannelState ) ); User::Leave( KErrGeneral ); } SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::CheckPropertyDependenciesL() // ---------------------------------------------------------------------------------- // void CSSYChannel::CheckPropertyDependenciesL( const TSensrvChannelId aChannelId, const TSensrvProperty& aProperty, RSensrvChannelList& aAffectedChannels ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: CheckPropertyDependenciesL wrong channelId!" ); User::Leave( KErrArgument ); } CSSYProperty* propertyPtr = iSensorProperties; TSensrvProperty property = aProperty; // try first common sensor properties TInt ret = iSensorProperties->GetProperty( property ); if ( ret != KErrNone ) { propertyPtr = iChannelProperties; // then try the channel properties ret = iChannelProperties->GetProperty( property ); } if ( ret != KErrNone ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Property is not supported: 0x%x ", aProperty.GetPropertyId() ); User::Leave( KErrNotFound ); } propertyPtr->GetAffectedChannels( aAffectedChannels ); SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::SetPropertyL() // ---------------------------------------------------------------------------------- // void CSSYChannel::SetPropertyL( const TSensrvChannelId aChannelId, const TSensrvProperty& aProperty ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: SetPropertyL wrong channelId!" ); User::Leave( KErrArgument ); } TBool valueChanged( ETrue ); RSensrvChannelList affectedChannels; TInt valueInt( 0 ); // try first common sensor properties TInt ret = iSensorProperties->SetProperty( aProperty, affectedChannels ); if ( ret == KErrNotFound ) { // then try the channel properties ret = iChannelProperties->SetProperty( aProperty, affectedChannels ); } if ( ret != KErrNone && ret != KErrAlreadyExists ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Property is not supported or it's readonly: 0x%x ", aProperty.GetPropertyId() ); User::Leave( KErrNotSupported ); } if ( ret == KErrAlreadyExists ) { // client tried to set the same value that the property already has, lets just return without doing anything // but informing the "change" via the callback valueChanged = EFalse; } // do something if the value was really changed if ( valueChanged ) { aProperty.GetValue( valueInt ); // These are ReadOnly values, cannot change these if ( ( aProperty.GetPropertyId() == KSensrvPropIdDataRate ) || ( aProperty.GetPropertyId() == KSensrvPropIdAvailability ) || ( aProperty.GetPropertyId() == KSensrvPropIdMeasureRange ) || ( aProperty.GetPropertyId() == KSensrvPropIdChannelDataFormat ) || ( aProperty.GetPropertyId() == KSensrvPropIdChannelAccuracy ) ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Setting the property is not supported: 0x%x ", aProperty.GetPropertyId() ); User::Leave( KErrNotSupported ); } } // we call the callback function to inform that property was changed, even if it was not actually changed iCallback->PropertyChanged( iChannelInfo.iChannelId, affectedChannels, aProperty ); affectedChannels.Reset(); SSY_TRACE_OUT(); }
// ---------------------------------------------------------------------------------- // CSSYChannel::AppendData() // ---------------------------------------------------------------------------------- // TBool CSSYChannel::AppendData( const TSensrvOrientationData& aOrientationData, const TSensrvRotationData& aRotationData ) { TBool ret( ETrue ); if ( iChannelState == EChannelDataReceived ) { if( iCountReceived == 0 ) { SSY_TRACE( EExtended, "ORIENTATIONSSY:First data append to buffer" ); iWritePointer = iBuffer; } ASSERT_DEBUG_SSY( iWritePointer ); if ( !iWritePointer ) { return EFalse; } if ( iChannelInfo.iChannelType == KSensrvChannelTypeIdOrientationData ) { TSensrvOrientationData* p = reinterpret_cast<TSensrvOrientationData*>(iWritePointer); p->iTimeStamp = aOrientationData.iTimeStamp; p->iDeviceOrientation = aOrientationData.iDeviceOrientation; iWritePointer += sizeof( TSensrvOrientationData ); } else if ( iChannelInfo.iChannelType == KSensrvChannelTypeIdRotationData ) { TSensrvRotationData* p = reinterpret_cast<TSensrvRotationData*>(iWritePointer); p->iDeviceRotationAboutZAxis = aRotationData.iDeviceRotationAboutZAxis; p->iDeviceRotationAboutXAxis = aRotationData.iDeviceRotationAboutXAxis; p->iDeviceRotationAboutYAxis = aRotationData.iDeviceRotationAboutYAxis; p->iTimeStamp = aRotationData.iTimeStamp; iWritePointer += sizeof( TSensrvRotationData ); } else { ret = EFalse; } } else { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Trying to append while not listening ", ChannelId() ); ret = EFalse; } return ret; }
ChannelId IOServiceLibEvent::genChannelId(int sock, const std::string& local, const std::string& remote) { return ChannelId(sequence_++, sock, local, remote); }