| /* |
| * |
| * BlueZ - Bluetooth protocol stack for Linux |
| * |
| * Copyright (C) 2014 Instituto Nokia de Tecnologia - INdT |
| * |
| * |
| * This program 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 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program 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 this program; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| * |
| */ |
| |
| struct btd_attribute; |
| |
| void gatt_init(void); |
| |
| void gatt_cleanup(void); |
| |
| /* |
| * Read operation result callback. Called from the service implementation |
| * informing the core (ATT layer) the result of read operation. |
| * @err: error in -errno format. |
| * @value: value of the attribute read. |
| * @len: length of value. |
| * @user_data: user_data passed in btd_attr_read_t callback. |
| */ |
| typedef void (*btd_attr_read_result_t) (int err, uint8_t *value, size_t len, |
| void *user_data); |
| /* |
| * Service implementation callback passed to core (ATT layer). It manages read |
| * operations received from remote devices. |
| * @attr: reference of the attribute to be read. |
| * @result: callback called from the service implementation informing the |
| * value of attribute read. |
| * @user_data: user_data passed in btd_attr_read_result_t callback. |
| */ |
| typedef void (*btd_attr_read_t) (struct btd_attribute *attr, |
| btd_attr_read_result_t result, |
| void *user_data); |
| |
| /* |
| * Write operation result callback. Called from the service implementation |
| * informing the core (ATT layer) the result of the write operation. It is used |
| * to manage Write Request operations. |
| * @err: error in -errno format. |
| * @user_data: user_data passed in btd_attr_write_t callback. |
| */ |
| typedef void (*btd_attr_write_result_t) (int err, void *user_data); |
| /* |
| * Service implementation callback passed to core (ATT layer). It manages write |
| * operations received from remote devices. |
| * @attr: reference of the attribute to be changed. |
| * @value: new attribute value. |
| * @len: length of value. |
| * @result: callback called from the service implementation informing the |
| * result of the write operation. |
| * @user_data: user_data passed in btd_attr_write_result_t callback. |
| */ |
| typedef void (*btd_attr_write_t) (struct btd_attribute *attr, |
| const uint8_t *value, size_t len, |
| btd_attr_write_result_t result, |
| void *user_data); |
| |
| /* btd_gatt_add_service - Add a service declaration to local attribute database. |
| * @uuid: Service UUID. |
| * |
| * Returns a reference to service declaration attribute. In case of error, |
| * NULL is returned. |
| */ |
| struct btd_attribute *btd_gatt_add_service(const bt_uuid_t *uuid); |
| |
| /* |
| * btd_gatt_add_char - Add a characteristic (declaration and value attributes) |
| * to local attribute database. |
| * @uuid: Characteristic UUID (16-bits or 128-bits). |
| * @properties: Characteristic properties. See Core SPEC 4.1 page 2183. |
| * @read_cb: Callback used to provide the characteristic value. |
| * @write_cb: Callback called to notify the implementation that a new value |
| * is available. |
| * |
| * Returns a reference to characteristic value attribute. In case of error, |
| * NULL is returned. |
| */ |
| struct btd_attribute *btd_gatt_add_char(const bt_uuid_t *uuid, |
| uint8_t properties, |
| btd_attr_read_t read_cb, |
| btd_attr_write_t write_cb); |