static bt_status_t btsock_listen(btsock_type_t type, const char *service_name, const uint8_t *service_uuid, int channel, int *sock_fd, int flags) { if((flags & BTSOCK_FLAG_NO_SDP) == 0) { assert(service_uuid != NULL || channel > 0); assert(sock_fd != NULL); } *sock_fd = INVALID_FD; bt_status_t status = BT_STATUS_FAIL; switch (type) { case BTSOCK_RFCOMM: status = btsock_rfc_listen(service_name, service_uuid, channel, sock_fd, flags); break; case BTSOCK_L2CAP: status = btsock_l2cap_listen(service_name, channel, sock_fd, flags); break; case BTSOCK_SCO: status = btsock_sco_listen(sock_fd, flags); break; default: LOG_ERROR("%s unknown/unsupported socket type: %d", __func__, type); status = BT_STATUS_UNSUPPORTED; break; } return status; }
static bt_status_t btsock_listen(btsock_type_t type, const char* service_name, const uint8_t* service_uuid, int channel, int* sock_fd, int flags) { if((service_uuid == NULL && channel <= 0) || sock_fd == NULL) { BTIF_TRACE_ERROR3("invalid parameters, uuid:%p, channel:%d, sock_fd:%p", service_uuid, channel, sock_fd); return BT_STATUS_PARM_INVALID; } *sock_fd = -1; bt_status_t status = BT_STATUS_FAIL; switch(type) { case BTSOCK_RFCOMM: status = btsock_rfc_listen(service_name, service_uuid, channel, sock_fd, flags); break; case BTSOCK_L2CAP: BTIF_TRACE_ERROR1("bt l2cap socket type not supported, type:%d", type); status = BT_STATUS_UNSUPPORTED; break; case BTSOCK_SCO: BTIF_TRACE_ERROR1("bt sco socket not supported, type:%d", type); status = BT_STATUS_UNSUPPORTED; break; default: BTIF_TRACE_ERROR1("unknown bt socket type:%d", type); status = BT_STATUS_UNSUPPORTED; break; } return status; }