sl@0: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of the License "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // e32\include\d32camerasc.inl sl@0: // sl@0: // sl@0: sl@0: inline TVersion RDevCameraSc::VersionRequired() sl@0: { sl@0: const TInt KCameraMajorVersionNumber=1; sl@0: const TInt KCameraMinorVersionNumber=0; sl@0: const TInt KCameraBuildVersionNumber=KE32BuildVersionNumber; sl@0: return TVersion(KCameraMajorVersionNumber,KCameraMinorVersionNumber,KCameraBuildVersionNumber); sl@0: } sl@0: sl@0: #ifndef __KERNEL_MODE__ sl@0: sl@0: sl@0: inline RDevCameraSc::RDevCameraSc() sl@0: : RBusLogicalChannel() sl@0: { sl@0: iCameraCaps = NULL; sl@0: iCapsSize = 0; sl@0: } sl@0: sl@0: inline TInt RDevCameraSc::Open(TInt aUnit) sl@0: { sl@0: TInt r=DoCreate(KDevCameraScName,VersionRequired(),aUnit,NULL,NULL,EOwnerThread); sl@0: if (KErrNone == r) sl@0: { sl@0: // Obtain the Capability structure size then allocate memory for it on client side sl@0: r=iCapsSize=DoControl(EControlCapsSize); sl@0: if (KErrNone > r) sl@0: { sl@0: iCapsSize = 0; sl@0: return r; sl@0: } sl@0: sl@0: TAny* capsBufPtr = User::Alloc(iCapsSize); sl@0: if(NULL == capsBufPtr) sl@0: { sl@0: Close(); sl@0: return KErrNoMemory; sl@0: } sl@0: sl@0: TPtr8 capsPtr((TUint8*)capsBufPtr, iCapsSize, iCapsSize); sl@0: // Fill the Capability structure sl@0: r = DoControl(EControlCaps,(TAny*)&capsPtr); sl@0: if (KErrNone > r) sl@0: { sl@0: iCapsSize = 0; sl@0: return r; sl@0: } sl@0: iCameraCaps = (TCameraCapsV02*) capsPtr.Ptr(); sl@0: } sl@0: sl@0: return r; sl@0: } sl@0: sl@0: inline void RDevCameraSc::Close() sl@0: { sl@0: if (iCameraCaps != NULL) sl@0: { sl@0: User::Free(iCameraCaps); sl@0: iCameraCaps = NULL; sl@0: } sl@0: iCapsSize = 0; sl@0: RBusLogicalChannel::Close(); sl@0: } sl@0: sl@0: inline TInt RDevCameraSc::Caps(TDes8& aCapsBuf) sl@0: { sl@0: if (aCapsBuf.MaxLength() < iCapsSize) sl@0: { sl@0: return KErrArgument; sl@0: } sl@0: sl@0: TPtrC8 ptr ((TUint8*)iCameraCaps, iCapsSize); sl@0: aCapsBuf = ptr; sl@0: return KErrNone; sl@0: } sl@0: sl@0: inline TPtrC8 RDevCameraSc::Caps() sl@0: { sl@0: TPtrC8 ptr((TUint8*)iCameraCaps, iCapsSize); sl@0: return ptr; sl@0: } sl@0: sl@0: inline TInt RDevCameraSc::SetBufConfigChunkCreate(TDevCamCaptureMode aCaptureMode, TInt aNumBuffers, RChunk& aChunk) sl@0: {return(aChunk.SetReturnedHandle(DoControl(EControlSetBufConfigChunkCreate,(TAny*)aCaptureMode,(TAny*)aNumBuffers)));} sl@0: sl@0: inline TInt RDevCameraSc::SetBufConfigChunkOpen(TDevCamCaptureMode aCaptureMode, const TDesC8& aBufferConfigBuf, RChunk& aChunk) sl@0: { sl@0: SSetBufConfigChunkOpenInfo info = {&aBufferConfigBuf, aChunk.Handle()}; sl@0: return(DoControl(EControlSetBufConfigChunkOpen,(TAny*)aCaptureMode,&info)); sl@0: } sl@0: sl@0: inline TInt RDevCameraSc::ChunkClose(TDevCamCaptureMode aCaptureMode) sl@0: {return(DoControl(EControlChunkClose,(TAny*)aCaptureMode));} sl@0: sl@0: inline TInt RDevCameraSc::SetCamConfig(TDevCamCaptureMode aCaptureMode,const TDesC8& aConfigBuf) sl@0: {return(DoControl(EControlSetCamConfig,(TAny*)aCaptureMode,(TAny*)&aConfigBuf));} sl@0: sl@0: inline void RDevCameraSc::GetCamConfig(TDevCamCaptureMode aCaptureMode, TDes8& aConfigBuf) sl@0: {DoControl(EControlGetCamConfig,(TAny*)aCaptureMode,(TAny*)&aConfigBuf);} sl@0: sl@0: inline void RDevCameraSc::GetBufferConfig(TDevCamCaptureMode aCaptureMode, TDes8& aConfigBuf) sl@0: {DoControl(EControlGetBufferConfig,(TAny*)aCaptureMode,(TAny*)&aConfigBuf);} sl@0: sl@0: inline TInt RDevCameraSc::SetCaptureMode(TDevCamCaptureMode aCaptureMode) sl@0: {return(DoControl(EControlSetCaptureMode,(TAny*)aCaptureMode));} sl@0: sl@0: inline TInt RDevCameraSc::Start() sl@0: {return(DoControl(EControlStart));} sl@0: sl@0: inline TInt RDevCameraSc::Stop() sl@0: {return(DoControl(EControlStop));} sl@0: sl@0: inline void RDevCameraSc::NotifyNewImage(TRequestStatus& aStatus) sl@0: {DoRequest(ERequestNotifyNewImage,aStatus);} sl@0: sl@0: inline void RDevCameraSc::NotifyNewImageCancel() sl@0: {DoCancel(1<iCapsMisc & mask ? KErrNone : KErrNotSupported); sl@0: } sl@0: sl@0: // sl@0: // sl@0: // sl@0: inline TInt RDevCameraSc::SetDynamicAttribute(TDevCamDynamicAttribute aAttribute, TUint aValue) sl@0: { sl@0: TInt err = CheckAttributeSupported(aAttribute); sl@0: if (err == KErrNone) sl@0: { sl@0: err = KErrArgument; sl@0: TDynamicRange &range = iCameraCaps->iDynamicRange[aAttribute]; sl@0: if ((aValue >= range.iMin) && (aValue <= range.iMax)) sl@0: { sl@0: err = DoControl(EControlSetDynamicAttribute, (TAny*)aAttribute, (TAny*)aValue); sl@0: } sl@0: } sl@0: sl@0: return err; sl@0: } sl@0: sl@0: // sl@0: // sl@0: // sl@0: inline TInt RDevCameraSc::GetDynamicAttribute(TDevCamDynamicAttribute aAttribute, TUint& aValue) sl@0: { sl@0: TInt err = CheckAttributeSupported(aAttribute); sl@0: if (err == KErrNone) sl@0: { sl@0: err = DoControl(EControlGetDynamicAttribute, (TAny*)aAttribute, (TAny*)&aValue); sl@0: } sl@0: sl@0: return err; sl@0: } sl@0: #endif // __KERNEL_MODE__