Add default implementation of enableModem for cuttlefish

Bug: 126589649
Test: build
Change-Id: I801c83277251ddc6e11532270a5de1edd5234979
diff --git a/guest/hals/ril/cuttlefish_ril.cpp b/guest/hals/ril/cuttlefish_ril.cpp
index ab02039..1a8aad3 100644
--- a/guest/hals/ril/cuttlefish_ril.cpp
+++ b/guest/hals/ril/cuttlefish_ril.cpp
@@ -2338,6 +2338,12 @@
   return;
 }
 
+static void request_enable_modem(int /*request*/, RIL_Token t) {
+  ALOGV("Enabling modem - void");
+  gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+  return;
+}
+
 static void request_set_system_selection_channels(int /*request*/, RIL_Token t) {
   ALOGV("request_set_system_selection_channels - void");
   gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
@@ -2589,6 +2595,9 @@
     case RIL_REQUEST_GET_MODEM_STACK_STATUS:
       request_get_modem_stack_status(request, t);
       break;
+    case RIL_REQUEST_ENABLE_MODEM:
+      request_enable_modem(request, t);
+      break;
     case RIL_REQUEST_EMERGENCY_DIAL:
       request_emergency_dial(request, data, datalen, t);
       break;
diff --git a/guest/hals/ril/libril/ril.h b/guest/hals/ril/libril/ril.h
index 9bad8e3..33b8dad 100644
--- a/guest/hals/ril/libril/ril.h
+++ b/guest/hals/ril/libril/ril.h
@@ -91,6 +91,7 @@
  *                    RIL_REQUEST_STOP_NETWORK_SCAN
  *                    RIL_UNSOL_NETWORK_SCAN_RESULT
  *                    RIL_REQUEST_GET_MODEM_STACK_STATUS
+ *                    RIL_REQUEST_ENABLE_MODEM
  *                    RIL_REQUEST_EMERGENCY_DIAL
  *                    RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS
  */
@@ -6477,6 +6478,19 @@
  */
 #define RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS 151
 
+/**
+ * RIL_REQUEST_ENABLE_MODEM
+ *
+ * Enable a logical modem
+ *
+ * Valid errors:
+ *  SUCCESS
+ *  RADIO_NOT_AVAILABLE
+ *  MODEM_ERR
+ *
+ */
+#define RIL_REQUEST_ENABLE_MODEM 152
+
 /***********************************************************************/
 
 /**
diff --git a/guest/hals/ril/libril/ril_commands.h b/guest/hals/ril/libril/ril_commands.h
index e736356..6207165 100644
--- a/guest/hals/ril/libril/ril_commands.h
+++ b/guest/hals/ril/libril/ril_commands.h
@@ -166,3 +166,4 @@
     {RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE_BITMAP, radio_1_4::setPreferredNetworkTypeBitmapResponse},
     {RIL_REQUEST_EMERGENCY_DIAL, radio_1_4::emergencyDialResponse},
     {RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS, radio_1_4::setSystemSelectionChannelsResponse},
+    {RIL_REQUEST_ENABLE_MODEM, radio_1_4::enableModemResponse},
diff --git a/guest/hals/ril/libril/ril_service.cpp b/guest/hals/ril/libril/ril_service.cpp
index f4594b3..571aa2a 100755
--- a/guest/hals/ril/libril/ril_service.cpp
+++ b/guest/hals/ril/libril/ril_service.cpp
@@ -3165,11 +3165,11 @@
     return Void();
 }
 
-Return<void> RadioImpl_1_4::enableModem(int32_t /* serial */, bool /* on */) {
-    // TODO implement
+Return<void> RadioImpl_1_4::enableModem(int32_t serial, bool /* on */) {
 #if VDBG
-    RLOGE("[%04d]< %s", serial, "Method is not implemented");
+    RLOGE("enableModem: serial = %d, enable = %s", serial, on);
 #endif
+    dispatchVoid(serial, mSlotId, RIL_REQUEST_ENABLE_MODEM);
     return Void();
 }
 
@@ -7344,6 +7344,26 @@
     return 0;
 }
 
+int radio_1_4::enableModemResponse(int slotId, int responseType, int serial, RIL_Errno e,
+                                    void *response, size_t responseLen) {
+#if VDBG
+    RLOGD("%s(): %d", __FUNCTION__, serial);
+#endif
+    RadioResponseInfo responseInfo = {};
+    populateResponseInfo(responseInfo, serial, responseType, e);
+
+    // If we don't have a radio service, there's nothing we can do
+    if (radioService[slotId]->mRadioResponseV1_3 == NULL) {
+        RLOGE("%s: radioService[%d]->mRadioResponseV1_3 == NULL", __FUNCTION__, slotId);
+        return 0;
+    }
+
+    Return<void> retStatus =
+            radioService[slotId]->mRadioResponseV1_3->enableModemResponse(responseInfo);
+    radioService[slotId]->checkReturnStatus(retStatus);
+    return 0;
+}
+
 int radio_1_4::sendRequestRawResponse(int slotId,
                                   int responseType, int serial, RIL_Errno e,
                                   void *response, size_t responseLen) {
diff --git a/guest/hals/ril/libril/ril_service.h b/guest/hals/ril/libril/ril_service.h
index 13891e3..1cb2339 100644
--- a/guest/hals/ril/libril/ril_service.h
+++ b/guest/hals/ril/libril/ril_service.h
@@ -537,6 +537,9 @@
                                 int responseType, int serial, RIL_Errno e,
                                 void *response, size_t responselen);
 
+int enableModemResponse(int slotId, int responseType, int serial, RIL_Errno e,
+                                void *response, size_t responselen);
+
 int setAllowedCarriersResponse(int slotId,
                               int responseType, int serial, RIL_Errno e,
                               void *response, size_t responselen);