ʵսLinux Bluetooth±à³Ì£¨¶þ£© BlueZ¼ò½é
LinuxÏÂBluetoothÐÒéÕ»µÄʵÏÖ. LinuxÏ¿ª·ÅµÄÀ¶ÑÀÐÒéÕ»Ö÷Òª°üÀ¨IBM¹«Ë¾µÄBlueDrekar£¬Nokia¹«Ë¾µÄAffix, Axis¹«Ë¾µÄOpenBTºÍ¹Ù·½ÐÒéÕ»BlueZ¡£ÎÒÃÇÖ÷ÒªÃæ¶ÔBluezÀ´Ì½ÌÖ¡£
BlueZ»ù´¡´úÂë¾ùÊÇÓÉMaxim KrasnyanskyÍê³ÉµÄ¡£°üÀ¨£ºHCI£¬L2CAP£¬RFCOMMºÍ»ù±¾socketµÄʵÏÖ¡£Ëû¾ÍÖ°ÓÚQualcomm(¸ßͨ)¡£Marcel Holtmann¿ª·¢²ãµÄÐÒéºÍÓ¦Ó㬰üÀ¨£ºBNEP, CMTPµÈ¡£µ±È»£¬ÕâЩÖÐÒ²ÓÐMaxim KrasnyanskyµÄ²ÎÔ¤¡£Óв¿·Ö´úÂëÓÉNokiaÌṩµÄ¡£
BluezÊÇÈçºÎʵÏÖBluetoothÐÒéÕ»µÄÄØ£¿ Ëü·Ö2²¿·ÖʵÏÖ£º
1.Kernel²ãʵÏÖ£º
ÕýÈçÉÏһƪËù̸µ½µÄ£¬bluetoothÐÒéÕ»Óжà²ã½á¹¹£¬×îµ×²ãµÄÓ²¼þÐÒéÔÚÓ²¼þÖоÍÒѾʵÏÖÁË¡££¨ÀýÈçbroadcomµÄоƬÖУ¬µ×²ãÓ²¼þÐÒéÒѾ°üº¬ÓÚоƬ֮ÖÐÁË£©¡£Èí¼þ¼¶±ðµÄÐÒéʵÏÖ£¬´ÓHCIÕâÒ»²ãÆð¾Í¿ÉÒÔÁË¡£ BlueZ¶Ô¸÷²ãÐÒéµÄʵÏÖÊÇÒÀÍÐÓÚSocketµÄ¡£BlueZÊ×ÏÈ´´½¨ÁËÒ»¸öеÄSocketÖеÄÐÒé--PF_BLUETOOTH £¨AF_BLUETOOTH=31). £¨Ò²¾ÍÊÇ˵£¬Socket£¨£©µÄµÚÒ»¸ö²ÎÊý£ºdomain±ØÐëÊÇ£ºPF_BLUETOOTH £©¡£ÕâÒ²Òâζ×Å£¬µØÖ·ÀàÐÍÐèҪʹÓÃBluetoothËù¶¨ÒåµÄ¡£
ÆäʵºÜ¼òµ¥£¬¾ÍÊÇÔÚnet_families(ÍøÂçÐÒéÁбí)ÖÐÌí¼ÓÁËPF_BLUETOOTHÕâÒ»Ïî¡£Èç¹û¶ÔLinux KernelÓÐÁ˽âµÄ»°£¬¾ÍÖªµÀÕâ¸ö×¢²á¶¯×÷Ò»¶¨ÔÚBluetooth init²¿·Ö×÷µÄ¡£
ͬÑù£¬¸÷¸öÐÒé²ã£¨È磺HCI£¬L2CAP,HIDµÈ£©¶¼½«×Ô¼ºµÄÐÐΪ¹æ·¶Ìí¼Óµ½PF_BLUETOOTHÐÒéÖС£
2.Ó¦ÓóÌÐò²ãʵÏÖ£º
ËäÈ»Kernel²ãÒѾ½«BluetoothÐÒéÕ»ÍêȫʵÏÖÁË£¬µ«Èç¹ûҪʹÓÃÆðÀ´£¬»¹ÊǷdz£²»·½±ãµÄ¡£±Ï¾¹Ó¦ÓóÌÐòÓëkernel×î·½±ãµÄ½»Á÷ͨµÀ¾ÍÊÇioctl().Õâ·Ç³£²»Ö±¹Û¡£ÓÚÊÇ£¬BlueZÓÖÌṩÁËÒ»Ì×API,Õâ¸öAPI°ïÖú¿ª·¢Õß·½±ãµÄÓëKernel²ãÐÒé´ò½»µÀ¡£µ±È»£¬ÕâЩAPIµ×²ãµÄʵÏÖÆä¾ÍÊÇÊÇioctl.
BlueZµÄʱ¼ä£¬»ù±¾¾ÍÊÇÕâÑùÁË¡£ÏÂÃæÔÛÃǾßÌåÑо¿ÈçºÎʹÓÃBlueZËùÌṩµÄÕâÌ×API¡£
Ïà¹ØÎĵµ£º
ÍêÉÆLinuxϵͳ
1.¿ª»ú×Ô¶¯¹ÒÔØwindow·ÖÇø
fedora10ËäÈ»ÄÜ×Ô¶¯¹ÒÔØ,µ«ÊǹÒÔØµÄ·ÖÇøÓÐʱ»á²»ÈϺº×ÖÎļþ¼Ð
´ÓÖÕ¶ËÓÃvi»ògedit´ò¿ª/etc/fstab£¬ÔÚÆäÖÐÌí¼Ó£º
/dev/sda1 /mnt/1 ntfs default 0 0
×¢£ºµÚÒ»ÏîÊÇ·ÖÇøÇý¶¯µØÖ·
......
ÔÚÓ¦ÓóÌÐò¿ª·¢Ê±£¬Ò²¾³£ÐèÒªÈçÏµĶ¨Ê±Æ÷. ÕâÀï¶Ô¶¨Ê±Æ÷×öÁËÒ»¸öÓÅ»¯£¬¾ÍÊÇÔÚ²åÈë¶ÓÁÐÖÐʱ½øÐÐÁËÒ»´ÎÅÅÐò£¬Ê¹µÃ¼ì²âʱ²»ÐèÒª±éÀúÕû¸öÁ´±í£¬Ö»Ðè°ÑÅÅÔÚÇ°ÃæµÄ¼¸¸öµ½Ê±µÄÈÎÎñÈ¡³öÀ´¾Í¿ÉÒÔÁË¡£
static struct timer_list {
long jiffies;
void (*fn)();
......
1. man ¶ÔÄãÊìϤ»ò²»ÊìϤµÄÃüÁîÌṩ°ïÖú½âÊÍ
eg:man ls ¾Í¿ÉÒԲ鿴lsÏà¹ØµÄÓ÷¨
×¢£º°´q¼ü»òÕßctrl+cÍ˳ö£¬ÔÚlinuxÏ¿ÉÒÔʹÓÃctrl+cÖÕÖ¹µ±Ç°³ÌÐòÔËÐС£
2. ls ²é¿´Ä¿Â¼»òÕßÎļþµÄÊô*£¬ÁоٳöÈÎһĿ¼ÏÂÃæµÄÎļþ
eg: ls /usr/man
ls -l
a.d±íʾĿ¼(directory)£¬Èç¹ûÊÇÒ»¸ö"-"±íʾÊÇÎļþ£¬Èç¹ûÊÇlÔò±íʾÊÇÒ»¸öÁ¬½ÓÎļþ ......
¾ÀúÁËÒ»´Îϵͳ±ÀÀ£ÖÕÓÚ°ÑlinuxϵͳϵĿª·¢»·¾³ÍêÕûµÄ¿ª·¢Á˳öÀ´ÁË¡£
Õâ´Î²ÉÈ¡µÄÊÇubuntu9.10(RC)+JDK1.5+Mysql5.1Íâ´øÒ»¸öeclipse×÷ΪIDE¡£
ÓÉÓڱʼDZ¾µÄ¹âÇýËãÊÇÎþÉüÁË£¬ËùÒÔµ±Õâ´Îubuntu·¢Æ¢ÆødownµôµÄʱºò¼¸ºõ×¥¿ñ¡£Ã»ÓйâÅÌ£¬Ôõô°²×°ÏµÍ³£¿
ÍøÉÏÒ»ËÑ£¬×îºó²ÉÈ¡µÄ°ì·¨ÊÇÓÃuÅÌÆô¶¯ISO¾µÏñÎļþÀ´½øÐа²×°µÄ¡£Æð³õ·Å½ ......
Ç°Ãæ½²ÁËʹÓà ioctl·¢ËÍHCI CommandµÄ·½·¨¡£µ«HCI protocol»¹ÓÐһЩCommand£¬±ÈÈçInquiryµÈ£¬ËûÃÇÔò²»ÐèҪʹÓÃioctlÀ´·¢ËÍ¡£blueZ Ö±½ÓÌṩÁËÖ§³Ö£¬ËäÈ»ËûÃǵÄ×îÖÕ¶¼ÊÇÓÃͬÑù°ì·¨ÊµÏֵġ£
ÔÚÓ¦ÓóÌÐòÖУº
hci_inquiry(dev_id, length, num_rsp, NULL, &info, flags);
ÕâÑùÐèÒª°üº¬blueZ Í·ÎļþÈçÏ£º
#include //BT ......