Ejemplo n.º 1
0
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);
}
Ejemplo n.º 3
0
/**
 * 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;
}
Ejemplo n.º 7
0
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);
}
Ejemplo n.º 8
0
/* 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);
}