summaryrefslogtreecommitdiff
path: root/android/pan.c
diff options
context:
space:
mode:
authorRavi kumar Veeramally <ravikumar.veeramally@linux.intel.com>2014-01-10 16:11:48 +0200
committerSzymon Janc <szymon.janc@tieto.com>2014-01-10 16:09:55 +0100
commit7f445ac7d5e5241a43c114ebf5831a8bd40baa7c (patch)
tree4075f418fe49cb6d7637f1dfbdc95bc817863f17 /android/pan.c
parent423f6371791aafaa052aba3a78047fc241fb9dfb (diff)
downloadbluez-7f445ac7d5e5241a43c114ebf5831a8bd40baa7c.tar.gz
android/pan: Implement PAN enable HAL api at daemon side
Diffstat (limited to 'android/pan.c')
-rw-r--r--android/pan.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/android/pan.c b/android/pan.c
index 21a46b467..9f99ed96b 100644
--- a/android/pan.c
+++ b/android/pan.c
@@ -576,18 +576,40 @@ static void bt_pan_enable(const void *buf, uint16_t len)
{
const struct hal_cmd_pan_enable *cmd = buf;
uint8_t status;
+ int err;
+
+ DBG("");
+
+ if (local_role == cmd->local_role) {
+ status = HAL_STATUS_SUCCESS;
+ goto reply;
+ }
+
+ /* destroy existing server */
+ destroy_nap_device();
switch (cmd->local_role) {
- case HAL_PAN_ROLE_PANU:
case HAL_PAN_ROLE_NAP:
- DBG("Not Implemented");
- status = HAL_STATUS_FAILED;
break;
+ case HAL_PAN_ROLE_NONE:
+ status = HAL_STATUS_SUCCESS;
+ goto reply;
default:
status = HAL_STATUS_UNSUPPORTED;
- break;
+ goto reply;
}
+ local_role = cmd->local_role;
+ err = register_nap_server();
+ if (err < 0) {
+ status = HAL_STATUS_FAILED;
+ destroy_nap_device();
+ goto reply;
+ }
+
+ status = HAL_STATUS_SUCCESS;
+
+reply:
ipc_send_rsp(HAL_SERVICE_ID_PAN, HAL_OP_PAN_ENABLE, status);
}