易截截图软件、单文件、免安装、纯绿色、仅160KB

实战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等协议都是软件形式提出的(Bluez中是以kernel层程序)。在Module这一端:Link Manager, BB, 等协议都是硬件中firmware提供的。
而HCI则比较特殊,它一部分在软件中实现,用来给上层协议和程序提供访问接口(Bluez中,hci.c hci_usb.c,hci_sock.c等).另一部分也是在Firmware中实现,用来将软件部分的指令等用底层协议明白的方式传递给底层。
居于PC的上层程序与协议和居于Modules的下层协议之间通过HCI沟通,有4种不同形式的传输:Commands, Event, ACL Data, SCO/eSCO Data。
1.1. HCI Command:
HCI Command是Host向Modules发送命令的一种方式。HCI Command Packet结构如下:
OpCode用来唯一标识HCI Command.它由2部分组成,10bit的Opcode Command. 6bit的Opcode Group。
1.1.1: OpCode Group:
Linux Kernel(BlueZ)中,~/include/net/bluetooth/hci.h中定义了OpCode Group。
#define OGF_LINK_CTL 0x01
#define OGF_LINK_POLICY 0x02  
#define OGF_HOST_CTL 0x03
#define OGF_INFO_PARAM 0x04
#define OGF_STATUS_PARAM 0x05
它们代表了不同的Command Group:
OGF_LINK_CTL: Link control,这个Command Group中的Command允许Host控制与其它bluetooth device 的连接。
OGF_LINK_POLICY :Link Policy。这个Command Group中的Command允许调整Link Manager control.
OGF_HOST_CTL: Control and Baseband.
1.1.2: Opcode Command: 
用来在同一个Group内唯一识别Command。~/include/net/bluetooth/hci.h中定义。
1.2: HCI Event:
Modules向Host发送一些信息,使用HCI Event。Event Packet结构如下:
HCI Event分3种:Command complete Event, Command States Event,Command Subsequently Completend.
Command complete Event: 如果Host发送的Command可以立刻有结果,则会发送此类Event。也就是说,如果发送的Command只与本地Modules有关,不与remote设备打交道,则使用Command complete Event。例如:HCI_Read_Buffer_Size.
Command States Event:如果Host发送


相关文档:

用Linux下Perl脚本连接SQLServer

准备工作:
  用到的perl 扩展组件(modules)在上篇贴出.( win32::odbc 模块
)下载组件后按照Readme文件安装倒响应目录.配置好相应的odbc数据源.
  
  程序实现:
  使用
  use
Win32::ODBC;
  
  语句包含应使用的模块是win32::odbc,写出数据库
连接字符串
  
  $DSN = "DSN =
My DSN ......

rhel5 挂载非Linux分区的方法

方法一
mount -o iocharset=cp936 /dev/hda5  /mnt/d
方法二
rhel5 挂载非Linux分区的方法
今天终于安装好了rhel5 client,在配置开发环境的时候遇到了第一个问题:登录后桌面上没有读到我的Windows文件分区。很
多工具都在那里存着,所以,一定要把它找出来。
先是在书上找到了挂载其它分区的方法,在终端内用 ......

How to write a Linux driver

1. wrote driver function file(s) .
2. stored in the proper folder, eg: character driver stored in folder  drivers/char/
3. modified Makefile in this folder(eg: drivers/char/)
        -added configuration at somewhere: type like that "obj-$(CONFIG_TESTD ......

Linux 0.12内核

在应用程序开发时,也经常需要如下的定时器. 这里对定时器做了一个优化,就是在插入队列中时进行了一次排序,使得检测时不需要遍历整个链表,只需把排在前面的几个到时的任务取出来就可以了。
static struct timer_list {
     long jiffies;
     void (*fn)();
   ......

Linux不需要磁盘碎片整理





Linux不需要磁盘碎片整理。
以下引自linux官方网站对碎片的解说:来源于
http://www.linux.org/docs/ldp/howto/Partition/appendix.html#fragmentation

引用:
10.4. Some facts about file systems and fragmentation
Disk
space is administered by the operating system in units of ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号