libminradio: fix other cases of calls before rilConnected
- ResponseTrackerResult doesn't drop RadioError
- RESPOND_ERROR_IF_NOT_CONNECTED accepts varargs
- added getCellInfoList rilConnected guard
Bug: 405108602
Test: VtsHalRadioTargetTest
Flag: EXEMPT vendor HAL changes only
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7495932c5ca997e8191d33f2f2c5c4127eb6b5e7)
Merged-In: I86af8af17011cdf18279c6e3a7d37a928920acc0
Change-Id: I86af8af17011cdf18279c6e3a7d37a928920acc0
diff --git a/radio/aidl/minradio/libminradio/include/libminradio/ResponseTracker.h b/radio/aidl/minradio/libminradio/include/libminradio/ResponseTracker.h
index 978d64c..a8f564e 100644
--- a/radio/aidl/minradio/libminradio/include/libminradio/ResponseTracker.h
+++ b/radio/aidl/minradio/libminradio/include/libminradio/ResponseTracker.h
@@ -56,14 +56,10 @@
public:
ResponseTrackerResult() : ResponseTrackerResultBase(ResultData::descriptor) {}
- ResponseTrackerResult(::aidl::android::hardware::radio::RadioError error)
- : ResponseTrackerResultBase(ResultData::descriptor, error) {}
ResponseTrackerResult(::ndk::ScopedAStatus st)
: ResponseTrackerResultBase(ResultData::descriptor, std::move(st)) {}
- ResponseTrackerResult(ResultData data)
- : ResponseTrackerResultBase(ResultData::descriptor,
- ::aidl::android::hardware::radio::RadioError::NONE),
- mResultData(data) {}
+ ResponseTrackerResult(ResultData data, ::aidl::android::hardware::radio::RadioError error)
+ : ResponseTrackerResultBase(ResultData::descriptor, error), mResultData(data) {}
const ResultData& get() const {
CHECK(expectOk()) << "Request failed";
@@ -126,7 +122,7 @@
::ndk::ScopedAStatus handle(const ::aidl::android::hardware::radio::RadioResponseInfo& info,
const ResultData& data) {
std::unique_ptr<ResponseTrackerResultBase> result =
- std::make_unique<ResponseTrackerResult<ResultData>>(data);
+ std::make_unique<ResponseTrackerResult<ResultData>>(data, info.error);
return handle(info, std::move(result));
}
diff --git a/radio/aidl/minradio/libminradio/include/libminradio/response.h b/radio/aidl/minradio/libminradio/include/libminradio/response.h
index f101a04..57cf4a7 100644
--- a/radio/aidl/minradio/libminradio/include/libminradio/response.h
+++ b/radio/aidl/minradio/libminradio/include/libminradio/response.h
@@ -25,15 +25,15 @@
aidl::android::hardware::radio::RadioResponseInfo errorResponse(
int32_t serial, aidl::android::hardware::radio::RadioError error);
-#define RESPOND_ERROR_IF_NOT_CONNECTED(responseMethod) \
- if (!mContext->isConnected()) RESPOND_NOT_CONNECTED(responseMethod);
+#define RESPOND_ERROR_IF_NOT_CONNECTED(responseMethod, ...) \
+ if (!mContext->isConnected()) RESPOND_NOT_CONNECTED(responseMethod, __VA_ARGS__);
-#define RESPOND_NOT_CONNECTED(responseMethod) \
+#define RESPOND_NOT_CONNECTED(responseMethod, ...) \
{ \
LOG(WARNING) << (RADIO_MODULE ".") << __func__ << " called before rilConnected"; \
const auto responseInfo = ::android::hardware::radio::minimal::errorResponse( \
serial, ::aidl::android::hardware::radio::RadioError::RADIO_NOT_AVAILABLE); \
- respond()->responseMethod(responseInfo, {}); \
+ respond()->responseMethod(responseInfo __VA_OPT__(, ) __VA_ARGS__); \
return ok(); \
}
diff --git a/radio/aidl/minradio/libminradio/network/RadioNetwork.cpp b/radio/aidl/minradio/libminradio/network/RadioNetwork.cpp
index ce3a17e..c6214cf 100644
--- a/radio/aidl/minradio/libminradio/network/RadioNetwork.cpp
+++ b/radio/aidl/minradio/libminradio/network/RadioNetwork.cpp
@@ -76,6 +76,7 @@
ScopedAStatus RadioNetwork::getCellInfoList(int32_t serial) {
LOG_CALL;
+ RESPOND_ERROR_IF_NOT_CONNECTED(getCellInfoListResponse, {});
respond()->getCellInfoListResponse(noError(serial), getCellInfoListBase());
return ok();
}