Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

ʵս linuxÀ¶ÑÀ±à³ÌÖ®(°Ë) hci ЭÒé Ó¦Óñà³ÌʵÏÖ

  ¶ÔÓÚhci²ãµÄ±à³Ì ÊÇÏ൱¸´Ô ¹¦ÄÜÒ²ÊÇÇ¿´óµÄ,½¨ÒéѧϰÕß È¥¶Ábluez-libÖеÄhciºÍsdp
  ÕâÀï¼òÒª½éÉÜ ÎÒÔÚ¿ª·¢¹«Ë¾µÄÏîÄ¿ÖÐµÄ Ò»¸öСµÄ»ù´¡¶¯×÷. ¸Ã±à³ÌµÄ¹ý³Ì»ù±¾ÀíÇåÁËhciºÍsdpµÄÏνӺÍÓ¦ÓÃ.Ï£Íû¶ÔѧϰÕßÓаïÖú
˵Ã÷Óв»µ½Ö®´¦,Íû´ó¼Ò¶à¶àÑо¿,²»Òª¾ÖÏÞ,ÿ¸öÈËÓÐ×Ô¼ºµÄ·½Ê½,Ò²ÐíÄãµÄÔÚÂß¼­Ëã·¨ÉϱÈÎҵĺÃ!!
//scanÊÇÒ»¸öÀûÓÃhci²ãЭÒé »ñµÃÔ¶³ÌÀ¶ÑÀÉ豸µÄÀ¶ÑÀµØÖ·ºÍÀ¶ÑÀêdzƵĺ¯Êý;
int scan()
{
 
 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);
   printf("\nhci%d is scanning......\n",dev_id);
 //dev_id = lc[scannum].name;
    sock = hci_open_dev( dev_id );
    if (dev_id < 0 || sock < 0) {
        system("reboot");
  perror("opening socket");
        return 0;
    }
 bdaddr_t src;
 bacpy(&src, BDADDR_ANY);
    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));
  int c=0;
  if (sdp_get_channel_opush(&src, &(ii+i)->bdaddr, &c))
  //printf("\n%d\n",c);
  if(c>0)addadr(addr,c);     //´Ë´¦ÊÇÎÒÔÚ×öÏîÄ¿ÖÐ×öµÄÒ»¸öÓëÓ¦ÓóÌÐòÁ¬½ÓµÄ½Ó¿Úº¯Êý,¹¦ÄÜÊÇÍê³ÉÔ¶³ÌÀ¶ÑÀÉ豸µÄµØÖ·ºÍÎļþ´«ÊäͨµÀºÅÌí¼Óµ½


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì£¨Èý£© HCI²ã±à³Ì

1. HCI²ãЭÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI)  ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈЭÒé ......

ʵսLinux Bluetooth±à³Ì(Áù) L2CAP±à³ÌʵÀý

ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
 Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......

ÎÒ²»Ï²»¶linuxµÄÒ»¸öÔ­Òò

ÎÒ²»Ì«Ï²»¶linuxÁË£¬ËäÈ»ÎÒÔÚËûÉÏÃæ¶Ï¶ÏÐøÐøµÄ»¨¹ýһЩʱ¼ä£¬ÏÖÔÚ»ØÍ·À´¿´£¬ËüÒ²ÈÃÎÒÀË·ÑÁ˺ܶàµÄʱ¼ä£¬linuxÂÒÆß°ËÔãµÄÅäÖã¬Èí¼þµÄȱ·¦ÁîÎҺܲ»ÊÊ´Ó£¬¶øÇÒËüÒ²²»ÄÜʹÎÒ°ÑÖ÷ÒªµÄ¾­Àú¼¯ÖÐÔÚÕæÕý¸ÐÐËȤµÄµØ·½£¬¶ø²»ÊÇΪÁË“Õ÷·þ”linuxÕ´Õ´×Ôϲ£¬ÎÒ²»Ï²»¶ÕâÑùµÄlinux£¬ÕâÑùµÄlinuxÌ«³ÌÐòÔ±»¯ÁË¡£ÎÒΪʲôҪ¶ÁÄÇЩ ......

Linuxϵͳµ÷ÓÃ

 ¹¦ÄÜÃèÊö£º
ÔÚÏûÏ¢¶ÓÁÐÉϽøÐÐÊÕ·¢ÏûÏ¢¡£ÎªÁË·¢ËÍÏûÏ¢£¬µ÷Óýø³Ì¶ÔÏûÏ¢¶ÓÁбØÐëÓÐдȨÄÜ¡£½ÓÊÕÏûϢʱ±ØÐëÓжÁȨÄÜ¡£
Ó÷¨£º 
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
ssize_t msgrcv ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ