diff options
author | Paul Kocialkowski <contact@paulk.fr> | 2013-06-25 16:22:19 +0200 |
---|---|---|
committer | Paul Kocialkowski <contact@paulk.fr> | 2013-06-25 16:22:19 +0200 |
commit | 9d1137d9197552439af937fee4b9ec5368f562bf (patch) | |
tree | ea7fc5e6a73761d414daa9f09eadf05a5937bb89 /include/call.h | |
parent | e207275718352c781c5ddcfdd1015fde36259e9b (diff) | |
download | hardware_replicant_libsamsung-ipc-9d1137d9197552439af937fee4b9ec5368f562bf.tar.gz hardware_replicant_libsamsung-ipc-9d1137d9197552439af937fee4b9ec5368f562bf.tar.bz2 hardware_replicant_libsamsung-ipc-9d1137d9197552439af937fee4b9ec5368f562bf.zip |
Drop support for the (incomplete) old protocol implementation used on H1.
Also refactor headers: values aligned to 16x4 spaces and other cosmetics
Change-Id: I5a6f2c2471599c88c4be74591117d0ab2dfaaddf
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'include/call.h')
-rw-r--r-- | include/call.h | 151 |
1 files changed, 97 insertions, 54 deletions
diff --git a/include/call.h b/include/call.h index 1ceb57b..8e981ea 100644 --- a/include/call.h +++ b/include/call.h @@ -1,6 +1,7 @@ -/** +/* * This file is part of libsamsung-ipc. * + * Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr> * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com> * * libsamsung-ipc is free software: you can redistribute it and/or modify @@ -18,76 +19,118 @@ * */ -#ifndef __CALL_H__ -#define __CALL_H__ +#include <samsung-ipc.h> -#if defined(DEVICE_IPC_V4) -#include "device/ipc-v4/call.h" -#elif defined(DEVICE_H1) -#include "device/h1/call.h" -#endif +#ifndef __SAMSUNG_IPC_CALL_H__ +#define __SAMSUNG_IPC_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 - -/* Enum values */ -#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_PREFIX_NONE 0x00 -#define IPC_CALL_PREFIX_INTL 0x11 +/* + * Types + */ -/* 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_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 + +/* + * Values + */ -#define IPC_CALL_LIST_ENTRY_STATE_ACTIVE 0x01 -#define IPC_CALL_LIST_ENTRY_STATE_HOLDING 0x02 -#define IPC_CALL_LIST_ENTRY_STATE_DIALING 0x03 -#define IPC_CALL_LIST_ENTRY_STATE_ALERTING 0x04 -#define IPC_CALL_LIST_ENTRY_STATE_INCOMING 0x05 -#define IPC_CALL_LIST_ENTRY_STATE_WAITING 0x06 +#define IPC_CALL_TYPE_VOICE 0x01 +#define IPC_CALL_TYPE_DATA 0x03 -#define IPC_CALL_END_CAUSE_NORMAL 0x05 -#define IPC_CALL_END_CAUSE_REJECTED 0x2F -#define IPC_CALL_END_CAUSE_UNSPECIFIED 0x10 +#define IPC_CALL_IDENTITY_DEFAULT 0x00 +#define IPC_CALL_IDENTITY_HIDE 0x01 +#define IPC_CALL_IDENTITY_SHOW 0x02 -#define IPC_CALL_TERM_MO 0x01 -#define IPC_CALL_TERM_MT 0x02 +#define IPC_CALL_PREFIX_NONE 0x00 +#define IPC_CALL_PREFIX_INTL 0x11 -#define IPC_CALL_DTMF_STATE_START 0x01 -#define IPC_CALL_DTMF_STATE_STOP 0x02 +/* 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_LIST_ENTRY_STATE_ACTIVE 0x01 +#define IPC_CALL_LIST_ENTRY_STATE_HOLDING 0x02 +#define IPC_CALL_LIST_ENTRY_STATE_DIALING 0x03 +#define IPC_CALL_LIST_ENTRY_STATE_ALERTING 0x04 +#define IPC_CALL_LIST_ENTRY_STATE_INCOMING 0x05 +#define IPC_CALL_LIST_ENTRY_STATE_WAITING 0x06 + +#define IPC_CALL_END_CAUSE_NORMAL 0x05 +#define IPC_CALL_END_CAUSE_REJECTED 0x2F +#define IPC_CALL_END_CAUSE_UNSPECIFIED 0x10 + +#define IPC_CALL_TERM_MO 0x01 +#define IPC_CALL_TERM_MT 0x02 + +#define IPC_CALL_DTMF_STATE_START 0x01 +#define IPC_CALL_DTMF_STATE_STOP 0x02 + +/* + * Structures + */ -struct ipc_message_info; +struct ipc_call_incoming { + unsigned char unk; + unsigned char type; // IPC_CALL_TYPE_... + unsigned char id; + unsigned char line; +} __attribute__((__packed__)); + +struct ipc_call_outgoing { + unsigned char unk; + 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_status { + unsigned char unk; + unsigned char type; + unsigned char id; + unsigned char state; + unsigned char reason; + unsigned char end_cause; +} __attribute__((__packed__)); + +struct ipc_call_list_entry { + unsigned char unk0; + unsigned char type; // IPC_CALL_TYPE_... + unsigned char idx; + unsigned char term; // IPC_CALL_TERM_... + unsigned char state; // IPC_CALL_LIST_ENTRY_STATE_... + unsigned char mpty; + unsigned char number_len; + unsigned char unk4; +} __attribute__((__packed__)); struct ipc_call_cont_dtmf { unsigned char state; unsigned char tone; } __attribute__((__packed__)); -void ipc_call_outgoing_setup(struct ipc_call_outgoing *message, unsigned char type, - unsigned char identity, unsigned char prefix, char *number); +/* + * Helpers + */ +void ipc_call_outgoing_setup(struct ipc_call_outgoing *message, unsigned char type, unsigned char identity, unsigned char prefix, char *number); unsigned int ipc_call_list_response_get_num_entries(struct ipc_message_info *response); struct ipc_call_list_entry* ipc_call_list_response_get_entry(struct ipc_message_info *response, unsigned int num); -char* ipc_call_list_response_get_entry_number(struct ipc_message_info *response, unsigned int num); -unsigned char* ipc_call_cont_dtmf_burst_pack(struct ipc_call_cont_dtmf *message, unsigned char *burst, int burst_len); +char *ipc_call_list_response_get_entry_number(struct ipc_message_info *response, unsigned int num); +unsigned char *ipc_call_cont_dtmf_burst_pack(struct ipc_call_cont_dtmf *message, unsigned char *burst, int burst_len); #endif |