Rename ipc_header to ipc_fmt_header, add ipc_rfs_header and utility functions
[libsamsung-ipc.git] / include / samsung-ipc.h
1 /*
2  * This file is part of libsamsung-ipc.
3  *
4  * Copyright (C) 2012 Simon Busch <morphis@gravedo.de>
5  * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com>
6  *
7  * libsamsung-ipc is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * libsamsung-ipc is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with libsamsung-ipc.  If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21
22 #include <time.h>
23
24 #ifndef __SAMSUNG_IPC_H__
25 #define __SAMSUNG_IPC_H__
26
27 /*
28  * Values
29  */
30
31 #define IPC_CLIENT_TYPE_FMT                                     0x00
32 #define IPC_CLIENT_TYPE_RFS                                     0x01
33
34 /*
35  * Structures
36  */
37
38 struct ipc_client;
39 struct ipc_handlers;
40
41 struct ipc_fmt_header;
42 struct ipc_rfs_header;
43
44 struct ipc_message_info {
45     unsigned char mseq;
46     unsigned char aseq;
47     unsigned char group;
48     unsigned char index;
49     unsigned short cmd;
50     unsigned char type;
51     unsigned int length;
52     unsigned char *data;
53 };
54
55 struct ipc_client_gprs_capabilities {
56     int port_list;
57     int cid_max;
58 };
59
60 /*
61  * Helpers
62  */
63
64 struct ipc_client *ipc_client_create(int client_type);
65 int ipc_client_destroy(struct ipc_client *client);
66
67 void ipc_client_log(struct ipc_client *client, const char *message, ...);
68 int ipc_client_set_log_callback(struct ipc_client *client,
69     void (*log_callback)(void *log_data, const char *message), void *log_data);
70
71 int ipc_client_set_transport_handlers(struct ipc_client *client,
72     int (*open)(void *transport_data, int type),
73     int (*close)(void *transport_data),
74     int (*read)(void *transport_data, void *buffer, unsigned int length),
75     int (*write)(void *transport_data, void *buffer, unsigned int length),
76     int (*poll)(void *transport_data, struct timeval *timeout),
77     void *transport_data);
78 int ipc_client_set_power_handlers(struct ipc_client *client,
79     int (*power_on)(void *power_data),
80     int (*power_off)(void *power_data),
81     void *power_data);
82 int ipc_client_set_gprs_handlers(struct ipc_client *client,
83     int (*gprs_activate)(void *gprs_data, int cid),
84     int (*gprs_deactivate)(void *gprs_data, int cid),
85     void *gprs_data);
86
87 int ipc_client_bootstrap(struct ipc_client *client);
88 int ipc_client_send(struct ipc_client *client, const unsigned short command,
89     const char type, unsigned char *data, const int length, unsigned char mseq);
90 int ipc_client_recv(struct ipc_client *client,
91     struct ipc_message_info *response);
92 void ipc_client_response_free(struct ipc_client *client,
93     struct ipc_message_info *response);
94
95 int ipc_client_open(struct ipc_client *client);
96 int ipc_client_close(struct ipc_client *client);
97 int ipc_client_poll(struct ipc_client *client, struct timeval *timeout);
98
99 int ipc_client_power_on(struct ipc_client *client);
100 int ipc_client_power_off(struct ipc_client *client);
101
102 int ipc_client_gprs_activate(struct ipc_client *client, int cid);
103 int ipc_client_gprs_deactivate(struct ipc_client *client, int cid);
104
105 int ipc_client_data_create(struct ipc_client *client);
106 int ipc_client_data_destroy(struct ipc_client *client);
107
108 char *ipc_client_gprs_get_iface(struct ipc_client *client, int cid);
109 int ipc_client_gprs_get_capabilities(struct ipc_client *client,
110     struct ipc_client_gprs_capabilities *capabilities);
111
112 const char *ipc_response_type_to_str(int type);
113 const char *ipc_request_type_to_str(int type);
114 const char *ipc_command_to_str(int command);
115 void ipc_client_hex_dump(struct ipc_client *client, void *data, int size);
116 void ipc_client_log_recv(struct ipc_client *client,
117     struct ipc_message_info *response, const char *prefix);
118 void ipc_client_log_send(struct ipc_client *client,
119     struct ipc_message_info *request, const char *prefix);
120 void ipc_fmt_header_fill(struct ipc_fmt_header *header, struct ipc_message_info *message);
121 void ipc_fmt_message_fill(struct ipc_fmt_header *header, struct ipc_message_info *message);
122 void ipc_rfs_header_fill(struct ipc_rfs_header *header, struct ipc_message_info *message);
123 void ipc_rfs_message_fill(struct ipc_rfs_header *header, struct ipc_message_info *message);
124
125 /*
126  * Samsung-IPC protocol
127  */
128
129 #include "protocol.h"
130 #include "pwr.h"
131 #include "call.h"
132 #include "sms.h"
133 #include "sec.h"
134 #include "pb.h"
135 #include "disp.h"
136 #include "net.h"
137 #include "snd.h"
138 #include "misc.h"
139 #include "ss.h"
140 #include "gprs.h"
141 #include "sat.h"
142 #include "imei.h"
143 #include "rfs.h"
144 #include "gen.h"
145
146 #endif
147
148 // vim:ts=4:sw=4:expandtab