static void ril_cbs_notify(GRilIoChannel *io, guint code, const void *data, guint len, void *user_data) { struct ril_cbs *cd = user_data; GRilIoParser rilp; char* pdu; GASSERT(code == RIL_UNSOL_ON_USSD); grilio_parser_init(&rilp, data, len); pdu = grilio_parser_get_utf8(&rilp); DBG("%s", pdu); if (pdu) { ofono_cbs_notify(cd->cbs, (const guchar *)pdu, strlen(pdu)); g_free(pdu); } }
static void ril_cbs_notify(struct ril_msg *message, gpointer user_data) { struct ofono_cbs *cbs = user_data; /* * Ofono does not support UMTS CB - see * src/smsutil.c method cbs_decode. * But let's let the core to make * the rejection reserve memory here * for maximum UMTS CB length */ unsigned char pdu[1252]; char *resp; struct parcel rilp; ril_util_init_parcel(message, &rilp); resp = parcel_r_string(&rilp); memcpy(resp, pdu, strlen((char *)resp)); ofono_cbs_notify(cbs, pdu, strlen((char *)resp)); }