#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"
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
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;
}
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;
}
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;
}
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;
}
/*********************************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
}
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*****************************/