1. 목적
ㄱ. BlueZ의 simplescan 예제를 테스트 한다.
ㄴ. gcc를 통해 blueZ를 포함하여 컴파일 하는 법을 배워본다.
2. 본론
ㄱ. mit 대학의 bluetooth 관련 강의의blueZ 예제를 참고한다.
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <bluetooth/bluetooth.h>
- #include <bluetooth/hci.h>
- #include <bluetooth/hci_lib.h>
- int main(int argc, char **argv)
- {
- inquiry_info *ii = NULL;
- int max_rsp, num_rsp;
- int dev_id, sock, len, flags;
- int i;
- char addr[19] = { 0 };
- char name[248] = { 0 };
- dev_id = hci_get_route(NULL);
- sock = hci_open_dev( dev_id );
- if (dev_id < 0 || sock < 0) {
- perror("opening socket");
- exit(1);
- }
- len = 8;
- max_rsp = 255;
- flags = IREQ_CACHE_FLUSH;
- ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info));
- num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags);
- if( num_rsp < 0 ) perror("hci_inquiry");
- for (i = 0; i < num_rsp; i++) {
- ba2str(&(ii+i)->bdaddr, addr);
- memset(name, 0, sizeof(name));
- if (hci_read_remote_name(sock, &(ii+i)->bdaddr, sizeof(name),
- name, 0) < 0)
- strcpy(name, "[unknown]");
- printf("%s %s\n", addr, name);
- }
- free( ii );
- close( sock );
- return 0;
- }
ㄴ. ㄱ의 소스는 simplescan.c의 소스이다. 컴파일은 다음의 명령어를 통해 하게 된다.
gcc -o scantest simplescan.c -lbluetooth
ㄷ. 컴파일 후 생성되는 scantest 파일일 실행하게 되면 다음과 같은 결과를 볼 수 있다.
3. 결론
ㄱ. BlueZ를 통한 simplescan.c 예제를 실습해보았다.
ㄴ. 블루투스 기기들이 검색되는 것을 볼 수 있다.
'임베디드(Embedded) > 디바이스 프로그래밍(Device Progamming)' 카테고리의 다른 글
우분투 NFS 시작시에 자동 마운트 하기 (0) | 2013.12.19 |
---|---|
Ubuntu에서 apt-get update fail to fetch 에러 대처법 (0) | 2013.12.19 |
BlueZ 라이브러리를 이용한 리눅스 Bluetooth 프로그래밍 (3) | 2013.12.18 |
임베디드 to 호스트 NFS 설정하기 (0) | 2013.12.18 |
우분투 고정 ip 설정하기(Configure static ip adress on ubuntu) (0) | 2013.12.18 |