ModemRequest * modem_call_request_conference (ModemCallService *self, ModemCallServiceReply *callback, gpointer user_data) { RETURN_NULL_IF_NOT_VALID (self); return modem_request (MODEM_CALL_SERVICE (self), DBUS_PROXY (self), "CreateMultiparty", modem_call_conference_request_reply, G_CALLBACK (callback), user_data, G_TYPE_INVALID); }
ModemRequest * modem_call_request_release (ModemCall *self, ModemCallReply callback, gpointer user_data) { DEBUG ("%s.%s (%s)", MODEM_OFACE_CALL, "Hangup", modem_call_get_path (self)); RETURN_NULL_IF_NOT_VALID (self); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self)), "Hangup", reply_to_instance_request, G_CALLBACK (callback), user_data, G_TYPE_INVALID); }
/** * modem_call_service_swap_calls * @self ModemCallService object * * Swaps active and held calls. 0 or more active calls become * held, and 0 or more held calls become active. */ ModemRequest * modem_call_service_swap_calls (ModemCallService *self, ModemCallServiceReply callback, gpointer user_data) { RETURN_NULL_IF_NOT_VALID (self); DEBUG ("%s.%s", MODEM_OFACE_CALL_MANAGER, "SwapCalls"); return modem_request (MODEM_CALL_SERVICE (self), DBUS_PROXY (self), "SwapCalls", modem_call_service_noparams_request_reply, G_CALLBACK (callback), user_data, G_TYPE_INVALID); }
ModemRequest * modem_call_request_split (ModemCall *self, ModemCallReply callback, gpointer user_data) { DEBUG ("%s.%s (%s)", MODEM_OFACE_CALL_MANAGER, "PrivateChat", modem_call_get_path (self)); RETURN_NULL_IF_NOT_VALID (self); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self->priv->service)), "PrivateChat", reply_to_private_chat_request, G_CALLBACK (callback), user_data, DBUS_TYPE_G_OBJECT_PATH, modem_call_get_path (self), G_TYPE_INVALID); }
/* XXX: Ofono at the moment supports only fixed-duration tones */ ModemRequest * modem_call_start_dtmf (ModemCall *self, char const tone, ModemCallReply *callback, gpointer user_data) { char tones[2] = { tone }; RETURN_NULL_IF_NOT_VALID (self); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self->priv->service)), "SendTones", reply_to_instance_request, G_CALLBACK (callback), user_data, G_TYPE_STRING, tones, G_TYPE_INVALID); }
ModemRequest * modem_sms_request_send (ModemSMSService *self, char const *to, char const *message, ModemSMSServiceSendReply *reply, gpointer user_data) { ModemRequest *request; DEBUG (MODEM_OFACE_SMS ".SendMessage (%s,%s)", to, message); request = modem_request (self, modem_oface_dbus_proxy (MODEM_OFACE (self)), "SendMessage", reply_to_send_message, G_CALLBACK (reply), user_data, G_TYPE_STRING, to, G_TYPE_STRING, message, G_TYPE_INVALID); if (request) modem_request_add_data_full (request, "destination", g_strdup (to), g_free); return request; }
static at_error_t handle_dial (at_modem_t *modem, const char *str, void *data) { plugin_t *p = data; char buf[256], *num; const char *callerid = ""; for (num = buf; *str; str++) { char c = *str; if ((c >= '0' && c <= '9') || c == '*' || c == '#' || c == '+' || (c >= 'A' && c <= 'C')) { *(num++) = c; if (num >= (buf + sizeof (buf))) return AT_ERROR; } else if (c == 'I') callerid = "enabled"; else if (c == 'i') callerid = "disabled"; else if (c == 'G' || c == 'g') return AT_CME_ENOTSUP; /* XXX? */ else if (c == '>') return AT_CME_ENOENT; /* phonebook -> reject */ } *num = '\0'; num = buf; (void) modem; /* FIXME TODO: signal call progress asynchronously */ return modem_request (p, "VoiceCallManager", "Dial", DBUS_TYPE_STRING, &num, DBUS_TYPE_STRING, &callerid, DBUS_TYPE_INVALID); }
/* modem_request_type */ int modem_request_type(Modem * modem, ModemRequestType type, ...) { va_list ap; ModemRequest request; va_start(ap, type); memset(&request, 0, sizeof(request)); switch((request.type = type)) { /* no arguments */ case MODEM_REQUEST_BATTERY_LEVEL: case MODEM_REQUEST_CALL_ANSWER: case MODEM_REQUEST_CALL_HANGUP: case MODEM_REQUEST_CONTACT_LIST: case MODEM_REQUEST_MESSAGE_LIST: case MODEM_REQUEST_SIGNAL_LEVEL: break; case MODEM_REQUEST_AUTHENTICATE: request.authenticate.name = va_arg(ap, char const *); request.authenticate.username = va_arg(ap, char const *); request.authenticate.password = va_arg(ap, char const *); break; case MODEM_REQUEST_CALL: request.call.call_type = va_arg(ap, ModemCallType); request.call.number = va_arg(ap, char const *); request.call.anonymous = va_arg(ap, int); break; case MODEM_REQUEST_CALL_PRESENTATION: request.call_presentation.enabled = va_arg(ap, unsigned int); break; case MODEM_REQUEST_CONNECTIVITY: request.connectivity.enabled = va_arg(ap, unsigned int); break; case MODEM_REQUEST_CONTACT: request.contact.id = va_arg(ap, unsigned int); break; case MODEM_REQUEST_CONTACT_EDIT: request.contact_edit.id = va_arg(ap, unsigned int); request.contact_edit.name = va_arg(ap, char const *); request.contact_edit.number = va_arg(ap, char const *); break; case MODEM_REQUEST_CONTACT_NEW: request.contact_new.name = va_arg(ap, char const *); request.contact_new.number = va_arg(ap, char const *); break; case MODEM_REQUEST_CONTACT_DELETE: request.contact_delete.id = va_arg(ap, unsigned int); break; case MODEM_REQUEST_DTMF_SEND: request.dtmf_send.dtmf = va_arg(ap, unsigned int); break; case MODEM_REQUEST_MESSAGE: case MODEM_REQUEST_MESSAGE_DELETE: request.message.id = va_arg(ap, unsigned int); break; case MODEM_REQUEST_MESSAGE_SEND: request.message_send.number = va_arg(ap, char const *); request.message_send.encoding = va_arg(ap, unsigned int); request.message_send.length = va_arg(ap, size_t); request.message_send.content = va_arg(ap, char const *); break; case MODEM_REQUEST_MUTE: request.mute.enabled = va_arg(ap, unsigned int); break; case MODEM_REQUEST_REGISTRATION: request.registration.mode = va_arg(ap, ModemRegistrationMode); if(request.registration.mode == MODEM_REGISTRATION_MODE_MANUAL) request.registration._operator = va_arg(ap, char const *); break; case MODEM_REQUEST_UNSUPPORTED: default: #ifdef DEBUG fprintf(stderr, "DEBUG: %s(%u) %s\n", __func__, type, "Unsupported request type"); #endif va_end(ap); return -1; } va_end(ap); return modem_request(modem, &request); }