]> rtime.felk.cvut.cz Git - tiny-bt.git/blob - src2/testapp.c
453ab8a596410dc18476b3a82f2fd04efda30ef5
[tiny-bt.git] / src2 / testapp.c
1 /*
2 *  C Implementation: testapp
3 *
4 * Description: 
5 *
6 *
7 * Author: root <root@ubuntu>, (C) 2008
8 *
9 * Copyright: See COPYING file that comes with this distribution
10 *
11 */
12
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <errno.h>
16 #include <stdint.h>
17 #include "tiny_bt_hci_core.h"
18 #include "tiny_bt_hci_cmd.h"
19 #include "testapp.h"
20
21 bt_address rem_bd_addr_array[HCI_MAX_DEV];
22 bt_address rem_addr;
23 int glob_count;
24 connection_hci connection,*p_connection=&connection;
25
26
27 void callback_app_read_bd_addr(bt_address *p_address){
28         printf("Read address is :");
29         printba(p_address);
30         tiny_bt_read_local_name(&(p_connection->master.name), callback_app_read_local_name);
31 }
32
33 void callback_app_read_local_name(char *p_name){
34         int i;
35         printf("read name is:");
36         for(i=0;i<8;i++){
37                 printf("%c",*(p_name+i));
38         }
39         printf("\n");
40         tiny_bt_inquiry(&rem_addr, callback_app_inquiry_RSSI, callback_app_inquiry_complete);
41 }
42
43 void callback_app_inquiry_RSSI(bt_address *p_address){
44         static int count=0;
45         int i,sign=0;
46         
47         if(count==0){
48                 rem_bd_addr_array[0]=*p_address;
49                 count++;
50         }
51         else{
52                 for(i=0;i<count;i++){
53                         if(compare_bda(p_address,&rem_bd_addr_array[i])){
54                                 sign=1;
55                                 break;
56                         }
57                         
58                 }
59                 if(sign==0){
60                         if(count < HCI_MAX_DEV){        
61                                 rem_bd_addr_array[count]=*p_address;
62                                 printf("There is device:");
63                                 printba(p_address);
64                                 count++;
65                         }
66                         else{
67                                 printf("Array full, there is more than 16 devices in surroundig area\n");
68                         }
69                 }
70         }
71         
72         glob_count=count;
73         tiny_bt_inquiry_register_again(&rem_addr, callback_app_inquiry_RSSI);
74
75 }
76
77 void callback_app_inquiry_complete(void){
78         int i;
79         
80         printf("inquiry complete\n");
81         for(i=0;i<glob_count;i++){
82                 printf("remote dev ");
83                 printba(&rem_bd_addr_array[i]);
84         }
85         p_connection->slave.bdaddr=rem_bd_addr_array[0];
86         tiny_bt_connect(&rem_bd_addr_array[0],&p_connection->handle, callback_app_connection_complete);
87         
88 }
89
90 void callback_app_connection_complete(__u16 *p_handle){
91         connection_state state = CONNECT;
92         p_connection->con_state=state;
93         printf("Connection complete handle:%d\n",*p_handle);
94         
95
96 }
97
98
99 int main(void){
100         int ii=30000;
101         tiny_bt_init(0);
102         printf("begin of main\n");
103         if(tiny_bt_read_bd_addr(&p_connection->master.bdaddr, callback_app_read_bd_addr)<0){
104                 perror("tiny_bt_read_bd_addr error");
105                 return -1;
106         }
107         while(1){
108                 
109                 ii--;
110                 if(tiny_bt_process()<0){
111                         perror("process error");
112                         return -1;
113                 }
114
115         }
116         return 0;
117 }
118