Skip to content

Commit

Permalink
emulator: Add special Virtual HCI setup command
Browse files Browse the repository at this point in the history
  • Loading branch information
holtmann committed Oct 5, 2013
1 parent 38c5dcc commit 57a43ed
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion emulator/vhci.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
#include <stdlib.h>
#include <string.h>

#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>

#include "monitor/mainloop.h"
#include "monitor/bt.h"
#include "btdev.h"
Expand Down Expand Up @@ -93,20 +96,27 @@ struct vhci *vhci_open(enum vhci_type type)
{
struct vhci *vhci;
enum btdev_type uninitialized_var(btdev_type);
unsigned char uninitialized_var(ctrl_type);
unsigned char setup_cmd[2];
static uint8_t id = 0x23;

switch (type) {
case VHCI_TYPE_BREDRLE:
btdev_type = BTDEV_TYPE_BREDRLE;
ctrl_type = HCI_BREDR;
break;
case VHCI_TYPE_BREDR:
btdev_type = BTDEV_TYPE_BREDR;
ctrl_type = HCI_BREDR;
break;
case VHCI_TYPE_LE:
btdev_type = BTDEV_TYPE_LE;
ctrl_type = HCI_BREDR;
break;
case VHCI_TYPE_AMP:
return NULL;
btdev_type = BTDEV_TYPE_AMP;
ctrl_type = HCI_AMP;
break;
}

vhci = malloc(sizeof(*vhci));
Expand All @@ -122,6 +132,15 @@ struct vhci *vhci_open(enum vhci_type type)
return NULL;
}

setup_cmd[0] = HCI_VENDOR_PKT;
setup_cmd[1] = ctrl_type;

if (write(vhci->fd, setup_cmd, sizeof(setup_cmd)) < 0) {
close(vhci->fd);
free(vhci);
return NULL;
}

vhci->btdev = btdev_create(btdev_type, id++);
if (!vhci->btdev) {
close(vhci->fd);
Expand Down

0 comments on commit 57a43ed

Please sign in to comment.