| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #pragma once |
| |
| #include <bluetooth/log.h> |
| #include <raw_address.h> |
| |
| #define BTPAN_ROLE_NONE 0 |
| #define BTPAN_ROLE_PANNAP 1 |
| #define BTPAN_ROLE_PANU 2 |
| |
| typedef enum { |
| BTPAN_STATE_CONNECTED = 0, |
| BTPAN_STATE_CONNECTING = 1, |
| BTPAN_STATE_DISCONNECTED = 2, |
| BTPAN_STATE_DISCONNECTING = 3 |
| } btpan_connection_state_t; |
| |
| typedef enum { |
| BTPAN_STATE_ENABLED = 0, |
| BTPAN_STATE_DISABLED = 1 |
| } btpan_control_state_t; |
| |
| /** |
| * Callback for pan connection state |
| */ |
| typedef void (*btpan_connection_state_callback)(btpan_connection_state_t state, |
| bt_status_t error, |
| const RawAddress* bd_addr, |
| int local_role, |
| int remote_role); |
| typedef void (*btpan_control_state_callback)(btpan_control_state_t state, |
| int local_role, bt_status_t error, |
| const char* ifname); |
| |
| typedef struct { |
| size_t size; |
| btpan_control_state_callback control_state_cb; |
| btpan_connection_state_callback connection_state_cb; |
| } btpan_callbacks_t; |
| typedef struct { |
| /** set to size of this struct*/ |
| size_t size; |
| /** |
| * Initialize the pan interface and register the btpan callbacks |
| */ |
| bt_status_t (*init)(const btpan_callbacks_t* callbacks); |
| /* |
| * enable the pan service by specified role. The result state of |
| * enabl will be returned by btpan_control_state_callback. when pan-nap is |
| * enabled, the state of connecting panu device will be notified by |
| * btpan_connection_state_callback |
| */ |
| bt_status_t (*enable)(int local_role); |
| /* |
| * get current pan local role |
| */ |
| int (*get_local_role)(void); |
| /** |
| * start bluetooth pan connection to the remote device by specified pan role. |
| * The result state will be returned by btpan_connection_state_callback |
| */ |
| bt_status_t (*connect)(const RawAddress* bd_addr, int local_role, |
| int remote_role); |
| /** |
| * stop bluetooth pan connection. The result state will be returned by |
| * btpan_connection_state_callback |
| */ |
| bt_status_t (*disconnect)(const RawAddress* bd_addr); |
| |
| /** |
| * Cleanup the pan interface |
| */ |
| void (*cleanup)(void); |
| |
| } btpan_interface_t; |
| |
| namespace fmt { |
| template <> |
| struct formatter<btpan_connection_state_t> |
| : enum_formatter<btpan_connection_state_t> {}; |
| |
| template <> |
| struct formatter<btpan_control_state_t> |
| : enum_formatter<btpan_control_state_t> {}; |
| } // namespace fmt |