2 * C Implementation: bt_hw
4 * Description: hardweare function for sockets
7 * Author: root <root@ubuntu>, (C) 2008
9 * Copyright: See COPYING file that comes with this distribution
12 #include<sys/socket.h>
15 #include <sys/ioctl.h>
22 #include "hciembeded.h"
26 int hw_bt_open_device(__u8 dev_id){
27 struct sockaddr_hci address;
30 if((dd=socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI))<0){
31 perror("socket no created");
32 return dd; //it return -1 when socket isn't created
35 oldflag=fcntl(dd, F_GETFL, 0);
36 if(fcntl(dd, F_SETFL, oldflag | O_NONBLOCK) < 0){
37 perror("problem with socket flag setting");
41 memset(&address,0,sizeof(address));
42 address.hci_family=AF_BLUETOOTH;
43 address.hci_dev=dev_id;
44 if(bind(dd,(struct sockaddr *) &address, sizeof(address))<0){
45 perror("Socket not binded to hci device");
50 if(ioctl(dd, HCISETRAW,1)<0){
51 perror("error in ioctl HCISETRAW");
59 int hw_bt_close_dev(){
63 int hw_bt_write(__u8 *p_array, __u16 length){
64 while(write(hw_dd, p_array, length)<0){
65 perror("write interrupted");
66 if(errno == EAGAIN || errno == EINTR)
74 int hw_bt_read(__u8 *p_recbuf){
76 while((len=read(hw_dd, p_recbuf, sizeof(p_recbuf)*HCI_MAX_EVENT_SIZE))<0){
81 perror("Problem with reading \n");