@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2018-2019 Jolla Ltd.
- * Copyright (C) 2018-2019 Slava Monich <slava.monich@jolla.com>
+ * Copyright (C) 2018-2020 Jolla Ltd.
+ * Copyright (C) 2018-2020 Slava Monich <slava.monich@jolla.com>
*
* You may use this file under the terms of BSD license as follows:
*
@@ -30,6 +30,8 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
#include "ril_binder_radio.h"
#include "ril_binder_radio_impl.h"
@@ -1203,6 +1205,55 @@
return FALSE;
}
+/**
+ * @param int32_t Serial number of request.
+ * @param RadioCapability structure to be set
+ */
+static
+gboolean
+ril_binder_radio_encode_radio_capability(
+ GRilIoRequest* in,
+ GBinderLocalRequest* out)
+{
+ GRilIoParser parser;
+ char* uuid = NULL;
+ gint32 version, session, phase, raf, status;
+
+ ril_binder_radio_init_parser(&parser, in);
+ if (grilio_parser_get_int32(&parser, &version) &&
+ grilio_parser_get_int32(&parser, &session) &&
+ grilio_parser_get_int32(&parser, &phase) &&
+ grilio_parser_get_int32(&parser, &raf) &&
+ (uuid = grilio_parser_get_utf8(&parser)) != NULL &&
+ grilio_parser_get_int32(&parser, &status)) {
+ GBinderWriter writer;
+ RadioCapability* rc;
+ guint index;
+
+ /* Initialize the writer and the data to be written */
+ gbinder_local_request_init_writer(out, &writer);
+ rc = gbinder_writer_new0(&writer, RadioCapability);
+ ril_binder_radio_take_string(out, &rc->logicalModemUuid, uuid);
+ rc->session = session;
+ rc->phase = phase;
+ rc->raf = raf;
+ rc->status = status;
+
+ /* Write the arguments */
+ gbinder_writer_append_int32(&writer, grilio_request_serial(in));
+
+ /* Write the parent structure */
+ index = gbinder_writer_append_buffer_object(&writer, rc, sizeof(*rc));
+
+ /* Write the string data */
+ ril_binder_radio_write_hidl_string_data(&writer, rc, logicalModemUuid,
+ index);
+ return TRUE;
+ }
+ g_free(uuid);
+ return FALSE;
+}
+
/*==========================================================================*
* Decoders (binder -> plugin)
*==========================================================================*/
@@ -2150,6 +2201,53 @@
return ok;
}
+/**
+ * @param bool true = registered, false = not registered
+ * @param RadioTechnologyFamily (int32).
+ */
+static
+gboolean
+ril_binder_radio_decode_ims_registration_state(
+ GBinderReader* in,
+ GByteArray* out)
+{
+ gboolean reg;
+ gint32 family;
+
+ if (gbinder_reader_read_bool(in, ®) &&
+ gbinder_reader_read_int32(in, &family)) {
+ grilio_encode_int32(out, 2); /* Number of ints to follow */
+ grilio_encode_int32(out, reg);
+ grilio_encode_int32(out, family);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/**
+ * @param rc Radio capability as defined by RadioCapability
+ */
+static
+gboolean
+ril_binder_radio_decode_radio_capability(
+ GBinderReader* in,
+ GByteArray* out)
+{
+ const RadioCapability* rc = gbinder_reader_read_hidl_struct
+ (in, RadioCapability);
+
+ if (rc) {
+ grilio_encode_int32(out, 1 /* RIL_RADIO_CAPABILITY_VERSION */);
+ grilio_encode_int32(out, rc->session);
+ grilio_encode_int32(out, rc->phase);
+ grilio_encode_int32(out, rc->raf);
+ grilio_encode_utf8(out, rc->logicalModemUuid.data.str);
+ grilio_encode_int32(out, rc->status);
+ return TRUE;
+ }
+ return FALSE;
+}
+
/*==========================================================================*
* Calls
*==========================================================================*/
@@ -2673,6 +2771,13 @@
NULL,
"setInitialAttachApn"
},{
+ RIL_REQUEST_IMS_REGISTRATION_STATE,
+ RADIO_REQ_GET_IMS_REGISTRATION_STATE,
+ RADIO_RESP_GET_IMS_REGISTRATION_STATE,
+ ril_binder_radio_encode_serial,
+ ril_binder_radio_decode_ims_registration_state,
+ "getImsRegistrationState"
+ },{
RIL_REQUEST_SET_UICC_SUBSCRIPTION,
RADIO_REQ_SET_UICC_SUBSCRIPTION,
RADIO_RESP_SET_UICC_SUBSCRIPTION,
@@ -2694,6 +2799,20 @@
NULL,
"setDataProfile"
},{
+ RIL_REQUEST_GET_RADIO_CAPABILITY,
+ RADIO_REQ_GET_RADIO_CAPABILITY,
+ RADIO_RESP_GET_RADIO_CAPABILITY,
+ ril_binder_radio_encode_serial,
+ ril_binder_radio_decode_radio_capability,
+ "getRadioCapability"
+ },{
+ RIL_REQUEST_SET_RADIO_CAPABILITY,
+ RADIO_REQ_SET_RADIO_CAPABILITY,
+ RADIO_RESP_SET_RADIO_CAPABILITY,
+ ril_binder_radio_encode_radio_capability,
+ ril_binder_radio_decode_radio_capability,
+ "setRadioCapability"
+ },{
RIL_REQUEST_SEND_DEVICE_STATE,
RADIO_REQ_SEND_DEVICE_STATE,
RADIO_RESP_SEND_DEVICE_STATE,
@@ -2823,6 +2942,11 @@
ril_binder_radio_decode_cell_info_list,
"cellInfoList"
},{
+ RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED,
+ RADIO_IND_IMS_NETWORK_STATE_CHANGED,
+ NULL,
+ "imsNetworkStateChanged"
+ },{
RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED,
RADIO_IND_SUBSCRIPTION_STATUS_CHANGED,
ril_binder_radio_decode_bool_to_int_array,
|