aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/call.h84
-rw-r--r--samsung-ipc/Makefile.am1
-rw-r--r--samsung-ipc/call.c38
-rw-r--r--vapi/samsung-ipc-1.0.vapi4
4 files changed, 88 insertions, 39 deletions
diff --git a/include/call.h b/include/call.h
index 996f563..d499371 100644
--- a/include/call.h
+++ b/include/call.h
@@ -22,64 +22,72 @@
#define __CALL_H__
/* Message types */
-#define IPC_CALL_OUTGOING 0x0201
-#define IPC_CALL_INCOMING 0x0202
-#define IPC_CALL_RELEASE 0x0203
-#define IPC_CALL_ANSWER 0x0204
-#define IPC_CALL_STATUS 0x0205
-#define IPC_CALL_LIST 0x0206
-#define IPC_CALL_BURST_DTMF 0x0207
-#define IPC_CALL_CONT_DTMF 0x0208
-#define IPC_CALL_WAITING 0x0209
-#define IPC_CALL_LINE_ID 0x020A
+#define IPC_CALL_OUTGOING 0x0201
+#define IPC_CALL_INCOMING 0x0202
+#define IPC_CALL_RELEASE 0x0203
+#define IPC_CALL_ANSWER 0x0204
+#define IPC_CALL_STATUS 0x0205
+#define IPC_CALL_LIST 0x0206
+#define IPC_CALL_BURST_DTMF 0x0207
+#define IPC_CALL_CONT_DTMF 0x0208
+#define IPC_CALL_WAITING 0x0209
+#define IPC_CALL_LINE_ID 0x020A
/* Enum values */
-#define IPC_CALL_TYPE_VOICE 0x01
-#define IPC_CALL_TYPE_DATA 0x03
+#define IPC_CALL_TYPE_VOICE 0x01
+#define IPC_CALL_TYPE_DATA 0x03
-#define IPC_CALL_IDENTITY_DEFAULT 0x00
-#define IPC_CALL_IDENTITY_HIDE 0x01
-#define IPC_CALL_IDENTITY_SHOW 0x02
+#define IPC_CALL_IDENTITY_DEFAULT 0x00
+#define IPC_CALL_IDENTITY_HIDE 0x01
+#define IPC_CALL_IDENTITY_SHOW 0x02
-#define IPC_CALL_PREFIX_NONE 0x00
-#define IPC_CALL_PREFIX_INTL 0x11
+#define IPC_CALL_PREFIX_NONE 0x00
+#define IPC_CALL_PREFIX_INTL 0x11
/* Only for ipc_call_status, NOT call_list */
-#define IPC_CALL_STATE_DIALING 0x01
-#define IPC_CALL_STATE_IGNORING_INCOMING_STATUS 0x02
-#define IPC_CALL_STATE_CONNECTED 0x03
-#define IPC_CALL_STATE_RELEASED 0x04
-#define IPC_CALL_STATE_CONNECTING 0x05
+#define IPC_CALL_STATE_DIALING 0x01
+#define IPC_CALL_STATE_IGNORING_INCOMING_STATUS 0x02
+#define IPC_CALL_STATE_CONNECTED 0x03
+#define IPC_CALL_STATE_RELEASED 0x04
+#define IPC_CALL_STATE_CONNECTING 0x05
-#define IPC_CALL_TERM_MO 0x01
-#define IPC_CALL_TERM_MT 0x02
+#define IPC_CALL_TERM_MO 0x01
+#define IPC_CALL_TERM_MT 0x02
struct ipc_call_outgoing {
- unsigned char type, identity;
- unsigned char length, prefix;
- unsigned char number[86];
+ unsigned char type; // IPC_CALL_TYPE_...
+ unsigned char identity; // IPC_CALL_IDENTITY_...
+ unsigned char length;
+ unsigned char prefix; // IPC_CALL_PREFIX_...
+ unsigned char number[86];
} __attribute__((__packed__));
struct ipc_call_incoming {
- unsigned char type, id, line;
+ unsigned char type; // IPC_CALL_TYPE_...
+ unsigned char id;
+ unsigned char line;
} __attribute__((__packed__));
struct ipc_call_list_entry {
- unsigned char type, idx;
- unsigned char term, state, mpty;
- unsigned char number_len;
- unsigned char unk4;
+ unsigned char type; // IPC_CALL_TYPE_...
+ unsigned char idx;
+ unsigned char term; // IPC_CALL_TERM_...
+ unsigned char state;
+ unsigned char mpty;
+ unsigned char number_len;
+ unsigned char unk4;
} __attribute__((__packed__));
struct ipc_call_status {
- unsigned char type, id, state;
- unsigned char reason, end_cause;
+ unsigned char type;
+ unsigned char id;
+ unsigned char state;
+ unsigned char reason;
+ unsigned char end_cause;
} __attribute__((__packed__));
-void ipc_call_outgoing(const char *number, int identity, int request_id);
-void ipc_call_release(int request_id);
-void ipc_call_answer(int request_id);
-void ipc_call_list(int request_id);
+void ipc_call_outgoing_setup(struct ipc_call_outgoing *message, unsigned char type,
+ unsigned char identity, unsigned char prefix, char *number);
#endif
diff --git a/samsung-ipc/Makefile.am b/samsung-ipc/Makefile.am
index e3d74fb..b26ba56 100644
--- a/samsung-ipc/Makefile.am
+++ b/samsung-ipc/Makefile.am
@@ -19,6 +19,7 @@ libsamsung_ipc_la_SOURCES = \
misc.c \
sec.c \
gprs.c \
+ call.c \
$(NULL)
libsamsung_ipc_la_LIBADD = \
diff --git a/samsung-ipc/call.c b/samsung-ipc/call.c
new file mode 100644
index 0000000..9573a8d
--- /dev/null
+++ b/samsung-ipc/call.c
@@ -0,0 +1,38 @@
+/**
+ * This file is part of libsamsung-ipc.
+ *
+ * Copyright (C) 2011 Simon Busch <morphis@gravedo.de>
+ *
+ * libsamsung-ipc is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * libsamsung-ipc is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with libsamsung-ipc. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <radio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#define OUTGOING_NUMBER_MAX_LENGTH 86
+
+void ipc_call_outgoing_setup(struct ipc_call_outgoing *message, unsigned char type,
+ unsigned char identity, unsigned char prefix, char *number)
+{
+ assert(message != NULL);
+
+ message->type = type;
+ message->identity = identity;
+ message->prefix = prefix;
+ strncpy(message->number, number, OUTGOING_NUMBER_MAX_LENGTH);
+}
+
diff --git a/vapi/samsung-ipc-1.0.vapi b/vapi/samsung-ipc-1.0.vapi
index 4890955..9c98faf 100644
--- a/vapi/samsung-ipc-1.0.vapi
+++ b/vapi/samsung-ipc-1.0.vapi
@@ -650,12 +650,14 @@ namespace SamsungIpc
[CCode (cname = "struct ipc_call_outgoing", destroy_function = "")]
public struct OutgoingMessage
{
- public uint8 type;
+ public Type type;
public Identity identity;
public uint8 length;
public Prefix prefix;
public uint8[] number;
+ public void setup(Type type, Identity identity, Prefix prefix, string number);
+
public unowned uint8[] data
{
get