Fix p2p bug and various warnings
[profile/ivi/neard.git] / src / near.h
1 /*
2  *
3  *  neard - Near Field Communication manager
4  *
5  *  Copyright (C) 2011  Intel Corporation. All rights reserved.
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License version 2 as
9  *  published by the Free Software Foundation.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, write to the Free Software
18  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21
22 #include <stdint.h>
23 #include <sys/socket.h>
24
25 #include <linux/socket.h>
26 #include <linux/nfc.h>
27
28 #include <glib.h>
29
30 #include <near/types.h>
31
32 struct near_adapter;
33 struct near_device_driver;
34
35 #include <near/log.h>
36
37 int __near_log_init(const char *debug, gboolean detach);
38 void __near_log_cleanup(void);
39
40 #include <near/dbus.h>
41
42 int __near_dbus_init(DBusConnection *conn);
43 void __near_dbus_cleanup(void);
44
45 DBusMessage *__near_error_failed(DBusMessage *msg, int errnum);
46 DBusMessage *__near_error_invalid_arguments(DBusMessage *msg);
47 DBusMessage *__near_error_permission_denied(DBusMessage *msg);
48 DBusMessage *__near_error_passphrase_required(DBusMessage *msg);
49 DBusMessage *__near_error_not_registered(DBusMessage *msg);
50 DBusMessage *__near_error_not_unique(DBusMessage *msg);
51 DBusMessage *__near_error_not_supported(DBusMessage *msg);
52 DBusMessage *__near_error_not_implemented(DBusMessage *msg);
53 DBusMessage *__near_error_not_found(DBusMessage *msg);
54 DBusMessage *__near_error_not_polling(DBusMessage *msg);
55 DBusMessage *__near_error_no_carrier(DBusMessage *msg);
56 DBusMessage *__near_error_in_progress(DBusMessage *msg);
57 DBusMessage *__near_error_already_exists(DBusMessage *msg);
58 DBusMessage *__near_error_already_enabled(DBusMessage *msg);
59 DBusMessage *__near_error_already_disabled(DBusMessage *msg);
60 DBusMessage *__near_error_already_connected(DBusMessage *msg);
61 DBusMessage *__near_error_not_connected(DBusMessage *msg);
62 DBusMessage *__near_error_operation_aborted(DBusMessage *msg);
63 DBusMessage *__near_error_operation_timeout(DBusMessage *msg);
64 DBusMessage *__near_error_invalid_service(DBusMessage *msg);
65 DBusMessage *__near_error_invalid_property(DBusMessage *msg);
66
67 int __near_manager_adapter_add(uint32_t idx, const char *name,
68                         uint32_t protocols, near_bool_t powered);
69 void __near_manager_adapter_remove(uint32_t idx);
70 int __near_manager_init(DBusConnection *conn);
71 void __near_manager_cleanup(void);
72
73 #include <near/adapter.h>
74
75 struct near_adapter * __near_adapter_create(uint32_t idx,
76                 const char *name, uint32_t protocols, near_bool_t powered);
77 void __near_adapter_destroy(struct near_adapter *adapter);
78 const char *__near_adapter_get_path(struct near_adapter *adapter);
79 struct near_adapter *__near_adapter_get(uint32_t idx);
80 int __near_adapter_add(struct near_adapter *adapter);
81 void __near_adapter_remove(struct near_adapter *adapter);
82 int __near_adapter_add_target(uint32_t idx, uint32_t target_idx,
83                         uint32_t protocols, uint16_t sens_res, uint8_t sel_res,
84                         uint8_t *nfcid, uint8_t nfcid_len);
85 int __near_adapter_remove_target(uint32_t idx, uint32_t target_idx);
86 int __near_adapter_add_device(uint32_t idx, uint8_t *nfcid, uint8_t nfcid_len);
87 int __near_adapter_remove_device(uint32_t idx);
88 int __near_adapter_set_dep_state(uint32_t idx, near_bool_t dep);
89 near_bool_t __near_adapter_get_dep_state(uint32_t idx);
90 void __near_adapter_tags_changed(uint32_t adapter_idx);
91 void __near_adapter_devices_changed(uint32_t adapter_idx);
92 void __near_adapter_listen(struct near_device_driver *driver);
93 void __near_adapter_list(DBusMessageIter *iter, void *user_data);
94 void __near_adapter_start_check_presence(uint32_t adapter_idx, uint32_t target_idx);
95 void __near_adapter_stop_check_presence(uint32_t adapter_idx, uint32_t target_idx);
96 int __near_adapter_init(void);
97 void __near_adapter_cleanup(void);
98
99 #include <near/ndef.h>
100
101 #define NFC_MAX_URI_ID  0x23
102
103 int __near_ndef_init(void);
104 void __near_ndef_cleanup(void);
105 int __near_ndef_record_register(struct near_ndef_record *record, char *path);
106 void __near_ndef_record_free(struct near_ndef_record *record);
107 char *__near_ndef_record_get_path(struct near_ndef_record *record);
108 char *__near_ndef_record_get_type(struct near_ndef_record *record);
109 const char *__near_ndef_get_uri_prefix(uint8_t id);
110 struct near_ndef_message *__ndef_build_from_message(DBusMessage *msg);
111
112 #include <near/tag.h>
113
114 int __near_tag_init(void);
115 void __near_tag_cleanup(void);
116 struct near_tag *__near_tag_add(uint32_t idx, uint32_t target_idx,
117                                 uint32_t protocols,
118                                 uint16_t sens_res, uint8_t sel_res,
119                                 uint8_t *nfcid, uint8_t nfcid_len);
120 void __near_tag_remove(struct near_tag *tag);
121 const char *__near_tag_get_path(struct near_tag *tag);
122 uint32_t __near_tag_get_type(struct near_tag *tag);
123 void __near_tag_append_records(struct near_tag *tag, DBusMessageIter *iter);
124 int __near_tag_read(struct near_tag *tag, near_tag_io_cb cb);
125 int __near_tag_write(struct near_tag *tag,
126                                 struct near_ndef_message *ndef,
127                                 near_tag_io_cb cb);
128 int __near_tag_check_presence(struct near_tag *tag, near_tag_io_cb cb);
129
130 #include <near/device.h>
131
132 int __near_device_init(void);
133 void __near_device_cleanup(void);
134 const char *__near_device_get_path(struct near_device *device);
135 uint32_t __neard_device_get_idx(struct near_device *device);
136 struct near_device *__near_device_add(uint32_t idx, uint32_t target_idx,
137                                         uint8_t *nfcid, uint8_t nfcid_len);
138 void __near_device_remove(struct near_device *device);
139 int __near_device_listen(struct near_device *device, near_device_io_cb cb);
140 int __near_device_push(struct near_device *device,
141                         struct near_ndef_message *ndef, char *service_name,
142                         near_device_io_cb cb);
143
144 #include <near/tlv.h>
145
146 int __near_netlink_get_adapters(void);
147 int __near_netlink_start_poll(int idx,
148                         uint32_t im_protocols, uint32_t tm_protocols);
149 int __near_netlink_stop_poll(int idx);
150 int __near_netlink_dep_link_up(uint32_t idx, uint32_t target_idx,
151                                 uint8_t comm_mode, uint8_t rf_mode);
152 int __near_netlink_dep_link_down(uint32_t idx);
153 int __near_netlink_adapter_enable(int idx, near_bool_t enable);
154 int __near_netlink_init(void);
155 void __near_netlink_cleanup(void);
156
157 #include <near/setting.h>
158
159 #include <near/plugin.h>
160
161 int __near_plugin_init(const char *pattern, const char *exclude);
162 void __near_plugin_cleanup(void);
163
164 /* NFC Bluetooth Secure Simple Pairing */
165 #define BT_MIME_V2_0            0
166 #define BT_MIME_V2_1            1
167 #define BT_MIME_STRING_2_0      "nokia.com:bt"
168 #define BT_MIME_STRING_2_1      "application/vnd.bluetooth.ep.oob"
169
170 int __near_bluetooth_init(void);
171 void __near_bluetooth_cleanup(void);
172 int __near_bluetooth_parse_oob_record(uint8_t version, uint8_t *bt_data,
173                                                         near_bool_t pair);
174 int __near_bluetooth_pair(void *data);
175 uint8_t *__near_bluetooth_local_get_properties(int *bt_data_len);
176
177 void __near_agent_ndef_parse_records(GList *records);
178 int __near_agent_ndef_register(const char *sender, const char *path,
179                                                 const char *record_type);
180 int __near_agent_ndef_unregister(const char *sender, const char *path,
181                                                 const char *record_type);
182 int __near_agent_handover_register(const char *sender, const char *path);
183 int __near_agent_handover_unregister(const char *sender, const char *path);
184
185 int __near_agent_init(void);
186 void __near_agent_cleanup(void);