Loading services/core/jni/Android.bp +2 −2 Original line number Diff line number Diff line Loading @@ -189,7 +189,7 @@ cc_defaults { "android.hardware.thermal@1.0", "android.hardware.thermal-V1-ndk", "android.hardware.tv.input@1.0", "android.hardware.tv.input-V1-ndk", "android.hardware.tv.input-V2-ndk", "android.hardware.vibrator-V2-cpp", "android.hardware.vibrator@1.0", "android.hardware.vibrator@1.1", Loading Loading @@ -244,5 +244,5 @@ filegroup { filegroup { name: "lib_oomConnection_native", srcs: ["com_android_server_am_OomConnection.cpp",], srcs: ["com_android_server_am_OomConnection.cpp"], } services/core/jni/tvinput/JTvInputHal.cpp +43 −12 Original line number Diff line number Diff line Loading @@ -368,12 +368,20 @@ JTvInputHal::TvInputEventWrapper JTvInputHal::TvInputEventWrapper::createEventWr } JTvInputHal::TvMessageEventWrapper JTvInputHal::TvMessageEventWrapper::createEventWrapper( const AidlTvMessageEvent& aidlTvMessageEvent) { const AidlTvMessageEvent& aidlTvMessageEvent, bool isLegacyMessage) { auto messageList = aidlTvMessageEvent.messages; TvMessageEventWrapper event; event.messages.insert(event.messages.begin(), std::begin(aidlTvMessageEvent.messages) + 1, std::end(aidlTvMessageEvent.messages)); // Handle backwards compatibility for V1 if (isLegacyMessage) { event.deviceId = messageList[0].groupId; event.messages.insert(event.messages.begin(), std::begin(messageList) + 1, std::end(messageList)); } else { event.deviceId = aidlTvMessageEvent.deviceId; event.messages.insert(event.messages.begin(), std::begin(messageList), std::end(messageList)); } event.streamId = aidlTvMessageEvent.streamId; event.deviceId = aidlTvMessageEvent.messages[0].groupId; event.type = aidlTvMessageEvent.type; return event; } Loading Loading @@ -449,15 +457,30 @@ JTvInputHal::TvInputCallback::TvInputCallback(JTvInputHal* hal) { ::ndk::ScopedAStatus JTvInputHal::TvInputCallback::notifyTvMessageEvent( const AidlTvMessageEvent& event) { const std::string DEVICE_ID_SUBTYPE = "device_id"; if (event.messages.size() > 1 && event.messages[0].subType == DEVICE_ID_SUBTYPE) { mHal->mLooper ->sendMessage(new NotifyTvMessageHandler(mHal, TvMessageEventWrapper::createEventWrapper( event)), ::ndk::ScopedAStatus status = ::ndk::ScopedAStatus::ok(); int32_t aidlVersion = 0; if (mHal->mTvInput->getAidlInterfaceVersion(&aidlVersion).isOk() && event.messages.size() > 0) { bool validLegacyMessage = aidlVersion == 1 && event.messages[0].subType == DEVICE_ID_SUBTYPE && event.messages.size() > 1; bool validTvMessage = aidlVersion > 1 && event.messages.size() > 0; if (validLegacyMessage || validTvMessage) { mHal->mLooper->sendMessage( new NotifyTvMessageHandler(mHal, TvMessageEventWrapper:: createEventWrapper(event, validLegacyMessage)), static_cast<int>(event.type)); } else { status = ::ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); ALOGE("The TVMessage event was malformed for HAL version: %d", aidlVersion); } return ::ndk::ScopedAStatus::ok(); } else { status = ::ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); ALOGE("The TVMessage event was empty or the HAL version (version: %d) could not " "be inferred.", aidlVersion); } return status; } JTvInputHal::ITvInputWrapper::ITvInputWrapper(std::shared_ptr<AidlITvInput>& aidlTvInput) Loading Loading @@ -521,4 +544,12 @@ JTvInputHal::ITvInputWrapper::ITvInputWrapper(std::shared_ptr<AidlITvInput>& aid } } ::ndk::ScopedAStatus JTvInputHal::ITvInputWrapper::getAidlInterfaceVersion(int32_t* _aidl_return) { if (mIsHidl) { return ::ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); } else { return mAidlTvInput->getInterfaceVersion(_aidl_return); } } } // namespace android services/core/jni/tvinput/JTvInputHal.h +2 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ private: TvMessageEventWrapper() {} static TvMessageEventWrapper createEventWrapper( const AidlTvMessageEvent& aidlTvMessageEvent); const AidlTvMessageEvent& aidlTvMessageEvent, bool isLegacyMessage); int streamId; int deviceId; Loading Loading @@ -195,6 +195,7 @@ private: ::ndk::ScopedAStatus getTvMessageQueueDesc( MQDescriptor<int8_t, SynchronizedReadWrite>* out_queue, int32_t in_deviceId, int32_t in_streamId); ::ndk::ScopedAStatus getAidlInterfaceVersion(int32_t* _aidl_return); private: ::ndk::ScopedAStatus hidlSetCallback(const std::shared_ptr<TvInputCallback>& in_callback); Loading Loading
services/core/jni/Android.bp +2 −2 Original line number Diff line number Diff line Loading @@ -189,7 +189,7 @@ cc_defaults { "android.hardware.thermal@1.0", "android.hardware.thermal-V1-ndk", "android.hardware.tv.input@1.0", "android.hardware.tv.input-V1-ndk", "android.hardware.tv.input-V2-ndk", "android.hardware.vibrator-V2-cpp", "android.hardware.vibrator@1.0", "android.hardware.vibrator@1.1", Loading Loading @@ -244,5 +244,5 @@ filegroup { filegroup { name: "lib_oomConnection_native", srcs: ["com_android_server_am_OomConnection.cpp",], srcs: ["com_android_server_am_OomConnection.cpp"], }
services/core/jni/tvinput/JTvInputHal.cpp +43 −12 Original line number Diff line number Diff line Loading @@ -368,12 +368,20 @@ JTvInputHal::TvInputEventWrapper JTvInputHal::TvInputEventWrapper::createEventWr } JTvInputHal::TvMessageEventWrapper JTvInputHal::TvMessageEventWrapper::createEventWrapper( const AidlTvMessageEvent& aidlTvMessageEvent) { const AidlTvMessageEvent& aidlTvMessageEvent, bool isLegacyMessage) { auto messageList = aidlTvMessageEvent.messages; TvMessageEventWrapper event; event.messages.insert(event.messages.begin(), std::begin(aidlTvMessageEvent.messages) + 1, std::end(aidlTvMessageEvent.messages)); // Handle backwards compatibility for V1 if (isLegacyMessage) { event.deviceId = messageList[0].groupId; event.messages.insert(event.messages.begin(), std::begin(messageList) + 1, std::end(messageList)); } else { event.deviceId = aidlTvMessageEvent.deviceId; event.messages.insert(event.messages.begin(), std::begin(messageList), std::end(messageList)); } event.streamId = aidlTvMessageEvent.streamId; event.deviceId = aidlTvMessageEvent.messages[0].groupId; event.type = aidlTvMessageEvent.type; return event; } Loading Loading @@ -449,15 +457,30 @@ JTvInputHal::TvInputCallback::TvInputCallback(JTvInputHal* hal) { ::ndk::ScopedAStatus JTvInputHal::TvInputCallback::notifyTvMessageEvent( const AidlTvMessageEvent& event) { const std::string DEVICE_ID_SUBTYPE = "device_id"; if (event.messages.size() > 1 && event.messages[0].subType == DEVICE_ID_SUBTYPE) { mHal->mLooper ->sendMessage(new NotifyTvMessageHandler(mHal, TvMessageEventWrapper::createEventWrapper( event)), ::ndk::ScopedAStatus status = ::ndk::ScopedAStatus::ok(); int32_t aidlVersion = 0; if (mHal->mTvInput->getAidlInterfaceVersion(&aidlVersion).isOk() && event.messages.size() > 0) { bool validLegacyMessage = aidlVersion == 1 && event.messages[0].subType == DEVICE_ID_SUBTYPE && event.messages.size() > 1; bool validTvMessage = aidlVersion > 1 && event.messages.size() > 0; if (validLegacyMessage || validTvMessage) { mHal->mLooper->sendMessage( new NotifyTvMessageHandler(mHal, TvMessageEventWrapper:: createEventWrapper(event, validLegacyMessage)), static_cast<int>(event.type)); } else { status = ::ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); ALOGE("The TVMessage event was malformed for HAL version: %d", aidlVersion); } return ::ndk::ScopedAStatus::ok(); } else { status = ::ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); ALOGE("The TVMessage event was empty or the HAL version (version: %d) could not " "be inferred.", aidlVersion); } return status; } JTvInputHal::ITvInputWrapper::ITvInputWrapper(std::shared_ptr<AidlITvInput>& aidlTvInput) Loading Loading @@ -521,4 +544,12 @@ JTvInputHal::ITvInputWrapper::ITvInputWrapper(std::shared_ptr<AidlITvInput>& aid } } ::ndk::ScopedAStatus JTvInputHal::ITvInputWrapper::getAidlInterfaceVersion(int32_t* _aidl_return) { if (mIsHidl) { return ::ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); } else { return mAidlTvInput->getInterfaceVersion(_aidl_return); } } } // namespace android
services/core/jni/tvinput/JTvInputHal.h +2 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ private: TvMessageEventWrapper() {} static TvMessageEventWrapper createEventWrapper( const AidlTvMessageEvent& aidlTvMessageEvent); const AidlTvMessageEvent& aidlTvMessageEvent, bool isLegacyMessage); int streamId; int deviceId; Loading Loading @@ -195,6 +195,7 @@ private: ::ndk::ScopedAStatus getTvMessageQueueDesc( MQDescriptor<int8_t, SynchronizedReadWrite>* out_queue, int32_t in_deviceId, int32_t in_streamId); ::ndk::ScopedAStatus getAidlInterfaceVersion(int32_t* _aidl_return); private: ::ndk::ScopedAStatus hidlSetCallback(const std::shared_ptr<TvInputCallback>& in_callback); Loading