status_t BnAudioRecord::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch (code) { case GET_CBLK: { CHECK_INTERFACE(IAudioRecord, data, reply); reply->writeStrongBinder(getCblk()->asBinder()); return NO_ERROR; } break; case START: { CHECK_INTERFACE(IAudioRecord, data, reply); int /*AudioSystem::sync_event_t*/ event = data.readInt32(); int triggerSession = data.readInt32(); reply->writeInt32(start(event, triggerSession)); return NO_ERROR; } break; case STOP: { CHECK_INTERFACE(IAudioRecord, data, reply); stop(); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } }
status_t BnAudioTrack::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { case GET_CBLK: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeStrongBinder(getCblk()->asBinder()); return NO_ERROR; } break; case START: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeInt32(start()); return NO_ERROR; } break; case STOP: { CHECK_INTERFACE(IAudioTrack, data, reply); stop(); return NO_ERROR; } break; case FLUSH: { CHECK_INTERFACE(IAudioTrack, data, reply); flush(); return NO_ERROR; } break; case MUTE: { CHECK_INTERFACE(IAudioTrack, data, reply); mute( data.readInt32() ); return NO_ERROR; } break; case PAUSE: { CHECK_INTERFACE(IAudioTrack, data, reply); pause(); return NO_ERROR; } case ATTACH_AUX_EFFECT: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeInt32(attachAuxEffect(data.readInt32())); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } }
status_t BnAudioTrack::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch (code) { case GET_CBLK: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeStrongBinder(IInterface::asBinder(getCblk())); return NO_ERROR; } break; case START: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeInt32(start()); return NO_ERROR; } break; case STOP: { CHECK_INTERFACE(IAudioTrack, data, reply); stop(); return NO_ERROR; } break; case FLUSH: { CHECK_INTERFACE(IAudioTrack, data, reply); flush(); return NO_ERROR; } break; case PAUSE: { CHECK_INTERFACE(IAudioTrack, data, reply); pause(); return NO_ERROR; } case ATTACH_AUX_EFFECT: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeInt32(attachAuxEffect(data.readInt32())); return NO_ERROR; } break; case ALLOCATE_TIMED_BUFFER: { CHECK_INTERFACE(IAudioTrack, data, reply); sp<IMemory> buffer; status_t status = allocateTimedBuffer(data.readInt64(), &buffer); reply->writeInt32(status); if (status == NO_ERROR) { reply->writeStrongBinder(IInterface::asBinder(buffer)); } return NO_ERROR; } break; case QUEUE_TIMED_BUFFER: { CHECK_INTERFACE(IAudioTrack, data, reply); sp<IMemory> buffer = interface_cast<IMemory>( data.readStrongBinder()); uint64_t pts = data.readInt64(); reply->writeInt32(queueTimedBuffer(buffer, pts)); return NO_ERROR; } break; case SET_MEDIA_TIME_TRANSFORM: { CHECK_INTERFACE(IAudioTrack, data, reply); LinearTransform xform; xform.a_zero = data.readInt64(); xform.b_zero = data.readInt64(); xform.a_to_b_numer = data.readInt32(); xform.a_to_b_denom = data.readInt32(); int target = data.readInt32(); reply->writeInt32(setMediaTimeTransform(xform, target)); return NO_ERROR; } break; case SET_PARAMETERS: { CHECK_INTERFACE(IAudioTrack, data, reply); String8 keyValuePairs(data.readString8()); reply->writeInt32(setParameters(keyValuePairs)); return NO_ERROR; } break; case GET_TIMESTAMP: { CHECK_INTERFACE(IAudioTrack, data, reply); AudioTimestamp timestamp; status_t status = getTimestamp(timestamp); reply->writeInt32(status); if (status == NO_ERROR) { reply->writeInt32(timestamp.mPosition); reply->writeInt32(timestamp.mTime.tv_sec); reply->writeInt32(timestamp.mTime.tv_nsec); } return NO_ERROR; } break; case SIGNAL: { CHECK_INTERFACE(IAudioTrack, data, reply); signal(); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } }
status_t BnSurfaceComposer::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { case CREATE_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = createConnection()->asBinder(); reply->writeStrongBinder(b); } break; case CREATE_GRAPHIC_BUFFER_ALLOC: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = createGraphicBufferAlloc()->asBinder(); reply->writeStrongBinder(b); } break; case SET_TRANSACTION_STATE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); size_t count = data.readInt32(); ComposerState s; Vector<ComposerState> state; state.setCapacity(count); for (size_t i=0 ; i<count ; i++) { s.read(data); state.add(s); } int orientation = data.readInt32(); uint32_t flags = data.readInt32(); setTransactionState(state, orientation, flags); } break; case BOOT_FINISHED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); bootFinished(); } break; case GET_CBLK: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = getCblk()->asBinder(); reply->writeStrongBinder(b); } break; case CAPTURE_SCREEN: { CHECK_INTERFACE(ISurfaceComposer, data, reply); DisplayID dpy = data.readInt32(); uint32_t reqWidth = data.readInt32(); uint32_t reqHeight = data.readInt32(); uint32_t minLayerZ = data.readInt32(); uint32_t maxLayerZ = data.readInt32(); sp<IMemoryHeap> heap; uint32_t w, h; PixelFormat f; status_t res = captureScreen(dpy, &heap, &w, &h, &f, reqWidth, reqHeight, minLayerZ, maxLayerZ); reply->writeStrongBinder(heap->asBinder()); reply->writeInt32(w); reply->writeInt32(h); reply->writeInt32(f); reply->writeInt32(res); } break; case TURN_ELECTRON_BEAM_OFF: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int32_t mode = data.readInt32(); status_t res = turnElectronBeamOff(mode); reply->writeInt32(res); } break; case TURN_ELECTRON_BEAM_ON: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int32_t mode = data.readInt32(); status_t res = turnElectronBeamOn(mode); reply->writeInt32(res); } break; case AUTHENTICATE_SURFACE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<ISurfaceTexture> surfaceTexture = interface_cast<ISurfaceTexture>(data.readStrongBinder()); int32_t result = authenticateSurfaceTexture(surfaceTexture) ? 1 : 0; reply->writeInt32(result); } break; #ifdef QCOM_HDMI_OUT case EXTERNAL_DISPLAY: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int disp_type = data.readInt32(); int enable = data.readInt32(); enableExternalDisplay(disp_type, enable); } break; #endif #ifdef STE_HDMI case SET_HDMI_PARAMETER: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int disp_type = data.readInt32(); int enable = data.readInt32(); int32_t result = setHDMIParameter(disp_type, enable); reply->writeInt32(result); } break; #endif default: return BBinder::onTransact(code, data, reply, flags); } return NO_ERROR; }
status_t BnSurfaceComposer::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { case CREATE_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = createConnection()->asBinder(); reply->writeStrongBinder(b); } break; case CREATE_CLIENT_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = createClientConnection()->asBinder(); reply->writeStrongBinder(b); } break; case OPEN_GLOBAL_TRANSACTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); openGlobalTransaction(); } break; case CLOSE_GLOBAL_TRANSACTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); closeGlobalTransaction(); } break; case SET_ORIENTATION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); DisplayID dpy = data.readInt32(); int orientation = data.readInt32(); uint32_t flags = data.readInt32(); reply->writeInt32( setOrientation(dpy, orientation, flags) ); } break; case FREEZE_DISPLAY: { CHECK_INTERFACE(ISurfaceComposer, data, reply); DisplayID dpy = data.readInt32(); uint32_t flags = data.readInt32(); reply->writeInt32( freezeDisplay(dpy, flags) ); } break; case UNFREEZE_DISPLAY: { CHECK_INTERFACE(ISurfaceComposer, data, reply); DisplayID dpy = data.readInt32(); uint32_t flags = data.readInt32(); reply->writeInt32( unfreezeDisplay(dpy, flags) ); } break; case BOOT_FINISHED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); bootFinished(); } break; case SIGNAL: { CHECK_INTERFACE(ISurfaceComposer, data, reply); signal(); } break; case GET_CBLK: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = getCblk()->asBinder(); reply->writeStrongBinder(b); } break; case CAPTURE_SCREEN: { CHECK_INTERFACE(ISurfaceComposer, data, reply); DisplayID dpy = data.readInt32(); uint32_t reqWidth = data.readInt32(); uint32_t reqHeight = data.readInt32(); sp<IMemoryHeap> heap; uint32_t w, h; PixelFormat f; status_t res = captureScreen(dpy, &heap, &w, &h, &f, reqWidth, reqHeight); reply->writeStrongBinder(heap->asBinder()); reply->writeInt32(w); reply->writeInt32(h); reply->writeInt32(f); reply->writeInt32(res); } break; case TURN_ELECTRON_BEAM_OFF: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int32_t mode = data.readInt32(); status_t res = turnElectronBeamOff(mode); reply->writeInt32(res); } break; case TURN_ELECTRON_BEAM_ON: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int32_t mode = data.readInt32(); status_t res = turnElectronBeamOn(mode); reply->writeInt32(res); } break; default: return BBinder::onTransact(code, data, reply, flags); } return NO_ERROR; }