unsigned short channel;
size_t handler_count;
const struct hci_mgmt_handler *handlers;
+#ifdef TIZEN_BT
+ size_t tizen_handler_count;
+ const struct hci_mgmt_handler *tizen_handlers;
+#endif
void (*hdev_init) (struct sock *sk, struct hci_dev *hdev);
};
--- /dev/null
+/*
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (c) 2015-2016 Samsung Electronics Co., Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef __MGMT_TIZEN_H
+#define __MGMT_TIZEN_H
+
+#define TIZEN_OP_CODE_BASE 0xff00
+#define TIZEN_EV_BASE 0xff00
+
+#endif /* __MGMT_TIZEN_H */
#include <net/bluetooth/hci_core.h>
#include <net/bluetooth/hci_mon.h>
#include <net/bluetooth/mgmt.h>
+#ifdef TIZEN_BT
+#include <net/bluetooth/mgmt_tizen.h>
+#endif
#include "mgmt_util.h"
goto done;
}
+#ifdef TIZEN_BT
+ if (opcode >= TIZEN_OP_CODE_BASE) {
+ u16 tizen_opcode_index = opcode - TIZEN_OP_CODE_BASE;
+ if (tizen_opcode_index >= chan->tizen_handler_count ||
+ chan->tizen_handlers[tizen_opcode_index].func == NULL) {
+ BT_DBG("Unknown op %u", opcode);
+ err = mgmt_cmd_status(sk, index, opcode,
+ MGMT_STATUS_UNKNOWN_COMMAND);
+ goto done;
+ }
+
+ handler = &chan->tizen_handlers[tizen_opcode_index];
+
+ } else {
+#endif
if (opcode >= chan->handler_count ||
chan->handlers[opcode].func == NULL) {
BT_DBG("Unknown op %u", opcode);
}
handler = &chan->handlers[opcode];
+#ifdef TIZEN_BT
+ }
+#endif
if (!hci_sock_test_flag(sk, HCI_SOCK_TRUSTED) &&
!(handler->flags & HCI_MGMT_UNTRUSTED)) {
#include <net/bluetooth/hci_sock.h>
#include <net/bluetooth/l2cap.h>
#include <net/bluetooth/mgmt.h>
+#ifdef TIZEN_BT
+#include <net/bluetooth/mgmt_tizen.h>
+#endif
#include "hci_request.h"
#include "smp.h"
{ remove_advertising, MGMT_REMOVE_ADVERTISING_SIZE },
};
+#ifdef TIZEN_BT
+static const struct hci_mgmt_handler tizen_mgmt_handlers[] = {
+ { NULL }, /* 0x0000 (no command) */
+};
+#endif
+
void mgmt_index_added(struct hci_dev *hdev)
{
struct mgmt_ev_ext_index ev;
.channel = HCI_CHANNEL_CONTROL,
.handler_count = ARRAY_SIZE(mgmt_handlers),
.handlers = mgmt_handlers,
+#ifdef TIZEN_BT
+ .tizen_handler_count = ARRAY_SIZE(tizen_mgmt_handlers),
+ .tizen_handlers = tizen_mgmt_handlers,
+#endif
.hdev_init = mgmt_init_hdev,
};