]> rtime.felk.cvut.cz Git - tiny-bt.git/blobdiff - src2/tiny_bt_hci_cmd.c
new version of callback functions and new was added
[tiny-bt.git] / src2 / tiny_bt_hci_cmd.c
similarity index 68%
rename from src2/hcidriver.c
rename to src2/tiny_bt_hci_cmd.c
index 9fbbbae8a93d1563fb598b4abd50c9cda43c2a74..2e7f5e62d04342bf760138c9d95878798f7ce972 100644 (file)
@@ -1,14 +1,13 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include <math.h>
 #include <string.h>
 #include <errno.h>
 #include <unistd.h>
 #include <stdint.h>
 #include <fcntl.h>
 #include <sys/poll.h>
-#include <sys/ioctl.h>
-#include "hcidriver.h"
+#include "tiny_bt_hci_cmd.h"
+#include "bt_hw.h"
 
 
 
@@ -32,9 +31,10 @@ int send_hci_inquiry_cmd(void){
        p_creq->p_cmdp=p_cmdp;
        p_creq->cmdp_len=INQUIRY_CP_SIZE;
        
-       if(send_cmd(p_creq)<0)
+       if(send_cmd(p_creq)<0){
                perror("hci_inquiry_cmd wasn't sent");
                return -1;
+       }
        return 0;
 }
 // fill up the input parameter address pointer by one address
@@ -45,9 +45,10 @@ int send_hci_read_bd_addr_cmd(void){
        p_creq->OCF_OGF=READ_BD_ADDR_CMD_OP;
        p_creq->cmdp_len=0;
        
-       if(send_cmd(p_creq)<0)
+       if(send_cmd(p_creq)<0){
                perror("hci_read_bd_addr wasn't sent");
                return -1;
+       }
        return 0;
 }
 
@@ -58,9 +59,10 @@ int send_hci_read_local_name_cmd(void){
        p_creq->OCF_OGF=READ_LOCAL_NAME_CMD_OP;
        p_creq->cmdp_len=0;
        
-       if(send_smd(p_creq)<0)
+       if(send_cmd(p_creq)<0){
                perror("hci_read_local_name_cmd wasn't sent");
                return -1;
+       }
        return 0;
 }
 
@@ -76,14 +78,14 @@ int send_hci_create_connection_cmd(bt_address *p_dest_addr){
        p_cmdp->clock_offset=0xf000;
        p_cmdp->role_switch=0x00;
        memset(p_creq,0,sizeof(creq));
-       p_req->OCF_OGF=CREATE_CONNECTION_CMD_OP;
-       p_req->p_cmdp=p_cmdp;
-       p_req->cmdp_len=CREATE_CONN_CP_SIZE;
+       p_creq->OCF_OGF=CREATE_CONNECTION_CMD_OP;
+       p_creq->p_cmdp=p_cmdp;
+       p_creq->cmdp_len=CREATE_CONN_CP_SIZE;
        
-       if(send_cmd(p_creq)<0)
+       if(send_cmd(p_creq)<0){
                perror("hci_create_connection_cmd wasn't sent");
                return -1;
-       
+       }
        return 0;       
 }
 
@@ -96,10 +98,10 @@ int send_hci_accept_conn_req_cmd(bt_address *p_address){
        p_cmdp->role=0x01;
        memset(p_creq,0,sizeof(creq));
        p_creq->OCF_OGF=ACCEPT_CONNECTION_REQ_OP;
-       p_req->p_cmdp=p_cmdp;
-       p_req->cmdp_len=ACCEPT_CONN_REQ_CP_SIZE;
+       p_creq->p_cmdp=p_cmdp;
+       p_creq->cmdp_len=ACCEPT_CONN_REQ_CP_SIZE;
        
-       if(send_cmd(dd,p_req)<0){
+       if(send_cmd(p_creq)<0){
                perror("hci_accept_conn_req_cmd wasn't sent");
                return -1;
        }
@@ -108,10 +110,12 @@ int send_hci_accept_conn_req_cmd(bt_address *p_address){
 
 /*********************************main functions****************************/
 int send_cmd(hci_cmd_request *p_creq){
-       __u8 array[p_creq->cmdp_len+4]; 
+       __u8 array[p_creq->cmdp_len+4];
+       __u16 sw_opcode;
        int ii;
+       sw_opcode=swap_2_bytes(p_creq->OCF_OGF);
        array[0]=0x01;
-       memcpy(&array[1],p_req->OCF_OGF,2);
+       memcpy(&array[1],&sw_opcode,2);
        array[3]= p_creq->cmdp_len;
        if(p_creq->cmdp_len > 0){
                memcpy(&array[4],p_creq->p_cmdp,p_creq->cmdp_len); // !!!!!!!!! segmentation fault
@@ -122,71 +126,13 @@ int send_cmd(hci_cmd_request *p_creq){
        }
        printf("\n");
 
-       if(hw_bt_write(&array,sizeof(array))<0){
+       if(hw_bt_write(array,sizeof(array))<0){
                perror("hw_bt_write problem");
                return -1;
        }
        return 0;
 }
 
-/******************************HCI callback functions*********************/
-
-static int callback_hci_all_commands(void *p_recbuf){
-       evt_cmd_status *p_rp;
-       p_rp = (void *) p_recbuf;
-
-       if(p_rp->status){
-               perror("command status error\n");
-               return -1;
-       }
-               
-       printf("command status with opcode: %d",p_rp->opcode);
-       return 0;
-
-
-}
-
-static void callback_hci_read_bd_addr(void *p_arg, void *p_recbuf){
-       read_bd_addr_data *p_data=p_arg;
-       read_bd_addr_rp *p_rp;
-               
-       p_rp = (void *) (p_recbuf+3);   
-       memcpy(p_data->p_address,&p_rp->address,6);
-       p_data->callback_app_read_bd_addr(p_data->p_address);
-       free(p_data);
-}
-
-static void callback_hci_read_local_name(void *p_arg, void *p_recbuf){
-       read_local_name_data p_data=p_arg;
-       read_local_name_rp *p_rp;
-
-       p_rp = (void *) (p_recbuf+3);
-       memcpy(p_data->p_name,&p_rp->name,248);
-       p_data->callback_app_read_local_name(p_data->p_name);
-       free(p_data);
-}
-
-static void callback_hci_inquiry_RSSI(void *p_arg, void *p_recbuf){
-       inquiry_RSSI_data p_data=p_arg;
-       inquiry_info_with_rssi *p_rp;
-
-       p_rp = (void *) (p_recbuf+4);
-       memcpy(p_data->p_address,&p_rp->bdaddr,6);
-       p_data->callback_app_inquiry_RSSI(p_data->p_address);
-       free(p_data);
-}
-
-static void callback_hci_create_connection(void *p_arg, void *p_recbuf){
-       connection_complete_data p_data=p_arg;
-       evt_conn_complete *p_rp;
-
-       p_rp = (void *) (p_recbuf+3);
-       memcpy(p_data->p_handle,&p_rp->handle,2);
-       memcpy(p_data->p_address,&p_rp->bdaddr,6);
-       p_data->callback_app_connection_complete(p_data->p_handle, p_data->p_address);
-       free(p_data);
-}
-
 /*****************************HCI support functions*****************************/