精华内容
下载资源
问答
  • DP1.4协议 关键特性总结

    千次阅读 2020-06-28 11:00:38
    写在前面:本片文章基于DP1.4标准的draft版本,但是和最终版本已经没有太大差别。 总结了Main-Link, AUX, HPD, SST, MST, Training Syntax and Sequence等重要特性。 DP传输信号的关键部分 从Source到Device的...

    写在前面:本片文章基于DP1.4标准的draft版本,但是和最终版本已经没有太大差别。

    总结了Main-Link, AUX, HPD, SST, MST, Training Syntax and Sequence等重要特性。

    DP传输信号的关键部分

    从Source到Device的传输,主要由主链路,AUX通道和HPD构成。

    DP Main-Link 主链路

    单向,1条或2条或4条 AC耦合的、双端差分高速信号链路

    链路传输速率(Link rate):  1.62Gbps, 2.7Gbps, 5.4Gbps, 8.1Gbps/lane. 如果是多条链路同时传输,那么所有通道必须工作在同一个link rate。带宽如下:

    没有单独的时钟链路。

    编码方式:8b/10b编码。易于纠错且利于DC均衡。

    Pixel Data Mapping的例子: 

    AUX 通道

    AC耦合,双端(50欧姆端接电阻),差分信号

    双向,半双工,通过AUX通道的通讯可以实现链路管理和设备控制

    主(Master):DP Source

    从(Slave):DP Sink

    传输方式:1Mbps曼彻斯特编码。如果支持Fast AUX transaction, 那么可以到720Mbps

    基本原则(语法):AUX transaction总是由Upstream发起。 Source和Sink可以通过Native AUX或者I2C over AUX或者USB over AUX的方式通讯。如果通过USB over AUX通讯,那么需要支持Fast AUX。

    硬件设计规则:

    The upstream DP device must weakly pull down the AUX+ line to GND and weakly pull up the AUX- line to DP_PWR each with a resistor in the range 10kΩ to 105kΩ between the AC-coupling capacitor and the upstream device connector to assist detection of the upstream DP device and powered upstream DP device by the downstream device. A nominal 100kΩ resistor value
    is recommended.(Source和Sink两端对AUX有上拉和下拉,应用中汽主要目的是维持驱动能力)
    All downstream devices must have AC-coupling capacitors, regardless of whether they implement upstream DP device detection. The downstream devices must very weakly pull up AUX+ line and very weakly pull down AUX- line with 1MΩ (±5%) resistors between the downstream device connector and the AC-coupling capacitors. When AUX+ line DC voltage is L level, it means an upstream DP device is connected. When AUX- line DC voltage is H level, it means that a powered upstream DP device is connected.(耦合电容对AUX通道也非常重要,一般是0.1uF)
     

    HPD

    HPD是由DP Sink发起的单向中断信号

    有三种HPD scenario:

    Case1: DP sink接入,Sink端拉低HPD电平发起HPD中断。HPD脉冲宽度在0.25ms~2ms之间。DPTX需要再IRQ_HPD_Pulse上升沿后的100ms以内读DPRX DPCD的设备状态。2ms是HPD脉冲的超时时间。

    Case2: DP sink断开连接。当HPD脉冲的低电平持续时间超过2ms,DPTX会等待HPD电平被重新拉高。

    Case3: Hot Plug/Re-plug. DPTX也要读DPCD。

    HPD信号检测标准:

    HPD de-bounce time:

    - DPTX are recommended to implement de-bouncing of the HPD signal on an external connection
    - A period of 100 ms is recommended for the detection of an HPD connect event.
    比如 the event, “HPD High”, is confirmed only after HPD has been asserted continuously for 100 ms.

    SST模式

    Main-Link: 传输

    Link and device management over AUX:发现,配置和维护Link连接。AUX访问DPCD就是这个目的。

    Link Layer: Provides services as instructed or requested by the Stream/Link Policy makers

    Source 和 Sink devices都必须有下面两个policy makers:

    Stream Policy Maker: manages the transport of the stream

    Link Policy Maker: manages the link and is responsible for keeping the link synchronized.

    Lanes data rate确立:DPRX必须通过DPCD寄存器描述其接收能力。DPTX在读取DPRX DPCD后,必须配置DPCD Link Filed
    Configuration reg. 然后开始link training。Mainlink通道的信号传输稳定性和 PCB设计, DP 线, DP connector都有关系。

     

    SST同步传输服务:

    数据mapping:Packing/Unpacking,Stuffing/Unstuffing,Framing/Unframing,Inter-lane skewing/de-skewing

    Stream CLK regeneration

    Main stream attribute data insertion

    Secondary-Data Packet(SDP) optional insertion

     

    AUX通道

    AUX通道的协议沟通最初是由DP Source发起的

    Diagram of DPTX: 超时时间400us

     

    Diagram of DPRX: 超时时间300us

     

    判决:

     

    AUX 通道服务

    数据流传输初始化顺序

    1) Stream Policy maker在初始化传输之前需要先做下面的事情:

    读Sink的EDID;设置Main stream属性数据和CEA861 INFOFRAME

    从Link Policy Maker获取数据:RX接收能力(Number and types of ports available in RX);Link configuration(Total link bandwidth); Link status(Synchronized? Excessive error symbols?)

    2) When a stream is ready for transport, the Stream Policy Maker must start the transport of isochronous stream along with
    stream attributes data.



    Link Training:

    DPTX检测到正确的HPD时间后,Link Policy Maker初始化Link Training

    包括三种Training情况:Full Link training; Fast Link training; No link training

    Link training的关键指标: CR和EQ

    Clock Recovery (CR): Link training begins with the Clock Recovery (CR) sequence. 时钟锁定和差分电压Vpp设置. Locks the receiver CR (clock recovery) PLL when successful.

    Channel Equalization (EQ):Symbol-Lock & Inter-lane Alignment and Pre-emphasis setting. 

    注意: Training发生在读RX DPCD,EDID之后。

    Link training for DPCD:

    CR time out: 100us

    EQ time out: Optional. 400us, 4ms, 8ms, 12ms,16ms

    在Fast training中,没有AUX transaction

     

    CR:

    所有Devices必须支持TPS1和TPS2。 支持HBR2的Device还必须支持TPS3。支持HBR3的Device必须支持TPS4

    CR建立过程:

    The receiver may defer setting LANEx_CR_DINE bits until the optimization is completed

    If the receiver keeps the same value in ADJUST_REQUEST_LANEx_x, increase the voltage swing and/or pre-emphasis level according to the request

    Unless all the LANEx_CR_DONE bit are set, the transmitter must read the ADJUST_REQUEST_LANEx_x, increease the and/or pre-emphasis level according to the request voltage swing

     

    EQ建立过程:

    The Receiver(Downstream) must use the recognition of this training pattern to decide whether the channel equalization is successful or not.

    允许的Vdiff_pp和PEQ 组合

     

     

    Training何时结束?

     

    SDP

     

    Pin assignment:

    Connection

     

    附录

    DPCD地址

    展开全文
  • 使用树莓派,开启他的A2DP功能,实现用手机蓝牙控制树莓派播放歌曲。主要操作过程参考http://wangye.org/blog/archives/921/以及英文博客http://blog.sina.com.cn/s/blog_89f6a9130101fi07.html   本机机型:树莓派...

    使用树莓派,开启他的A2DP功能,实现用手机蓝牙控制树莓派播放歌曲。主要操作过程参考http://wangye.org/blog/archives/921/以及英文博客http://www.instructables.com/id/Turn-your-Raspberry-Pi-into-a-Portable-Bluetooth-A/

     

    本机机型:树莓派2model B

    蓝牙适配器 4.0版本(iphoneandroid机均可以用)

     2.0版本iphone不能使用,android可以,苹果的就是傲娇)

    开机进入图形界面

     

    在开始提解决方法时,重要的是看会看log!本次我们需要关心的是:/var/log/syslog/var/log/bluetoth_dev

     

    主要在前面两个博文上根据自己的需求提出的改进:

     

    1.  配置分组。配置好后会出现各种bug,其中已一个

    raspberrypi pulseaudio[2563]: [pulseaudio]protocol-native.c: Denied access to client with invalid authorization data.

    看到网上的解决方案说:

    关于shairport使用声音服务AccessDenied的问题,你将运行shairport进程的用户加入pulse-access组就可以了。

    来自 <http://wangye.org/blog/archives/922/>

    所以我做的操作是:

    sudo usermod -a -Gpulse-access pi

    sudo usermod -a -G pulse-access root(我自己在使用过程中都是切换到root身份)

     

    1. 修改设备蓝牙的名字和属性

    名字修改没有问题,主要是属性修改,在/etc/bluetooth/main.config中是不会出现问题的,但是在

    /var/lib/bluetooth/<你的蓝牙MAC地址>/config下,修改后每次开机都会产生变化为

    Class 0x4e041c   所以,这里需要我们再修改main.config文件下的class=0x4e041c

    1. 配置蓝牙设备接入步骤

    并没有发现99-input.rules文件,于是就在相应的路径新建了一个文件

    vim /etc/udev/rules.d/99-input.rules

    内容为:

    SUBSYSTEM=="input",GROUP="input", MODE="0660"

    KERNEL=="input[0-9]*",RUN+="/usr/lib/udev/bluetooth"

     

    1. 播放没有声音

    查看系统log,说的是大概是无法开启/usr/lib/udev/bluetooth里面的sink,也是看到网上的解决方法

    2° output audio doesn't work

    in this file: /usr/lib/udev/bluetooth :

    Replace this line:

    AUDIOSINK="alsa_output.platform-bcm2835_AUD0.0.analog-stereo"

    With this:

    AUDIOSINK="alsa_output.0.analog-stereo"

    来自 <http://www.instructables.com/id/Turn-your-Raspberry-Pi-into-a-Portable-Bluetooth-A/?ALLSTEPS>

    替换后就有了!

     

    1. 运行update-rc.d bluetooth-agent defaults报错,导致每次开机服务开不起来。。。

     

    解决办法也是参考他人的

    debian6中使用update-rc.d会报错,如下:

    update-rc.d: usingdependency based boot sequencing

    可以使用 insserv 命令来代替 update-rc.d

    来自 <http://www.cnblogs.com/ac1985482/p/4046355.html>

    所以使用insserv -d bluetooth-agent代替原句!

     

    1. pulseaudio报错

    现在记不清具体是什么错误了,我做的处理是

    [warn] PulseAudio configured for per-user sessions ... (warning). 

    Debian变种版本也会在启动过程中弹出类似的警告信息。为了解决这个问题,键入下面这个命令:leafpad /etc/default/pulseaudio 

    找到这一行:PULSEAUDIO_SYSTEM_START=0 

    把0换成1:

    PULSEAUDIO_SYSTEM_START=1 

    其中,0表示系统模式下不启动PulseAudio,1表示系统模式下启动PulseAudio。

    来自 <http://blog.csdn.net/frank_good/article/details/40424221>

     

    其他的都是参照那两篇博文做的操作。

    出了问题一定记得看log

    另外搜不到搜不到蓝牙的时候尝试操作sudo hciconfig hci0 piscan

    搜到蓝牙连接不上,尝试sudo start-stop-daemon -S -x/usr/bin/bluetooth-agent -c pi -b -- 0000

    再不行就重启试试吧。

     

    最后附上我写的一个简单的脚本操作,再装完系统后,为root创建密码,将需要的文件拷到用户目录。再就是在目录下执行

    chmod 777 bluetooth.sh

    ./bluetooth.sh

    最后重启一下!

     

     

    #!/bin/bash

    echo"==============================================================================="

    echo "使用华中科技大学的源"

    sudo cp -f~/bluetooth/sources.list /etc/apt/sources.list

     

    echo "bluetoothconfig!"

    echo "installapt"

     

    sudoapt-get update -y #更新源列表

    sudoapt-get upgrade -y #升级系统软件

    echo"=============================installvim========================================"

    sudo apt-get install-y vim

    sudo cp -f~/bluetooth/.vimrc /root/.vimrc

    sudo apt-get install-y bluetooth bluez pulseaudio-module-bluetooth python-gobject python-gobject-2bluez-tools

    echo "配置安装的软件"

    echo "============================配置分组规则======================================="

    sudo usermod -a -Glp pi

    sudo usermod -a -Gpulse-access pi

    sudo usermod -a -Gpulse-access root

     

    echo "=========================蓝牙启用A2DP功能======================================"

    sudo cp -f~/bluetooth/audio.conf /etc/bluetooth/audio.conf

    sudo cp -f~/bluetooth/daemon.conf /etc/pulse/daemon.conf

    echo "============================修改名字==========================================="

    sudo cp -f~/bluetooth/main.conf /etc/bluetooth/main.conf

    echo "修改设备里面的名字的方法还有确定这里预留待"

    bluetoothMac=$(ls/var/lib/bluetooth/)

    sudo cp -f~/bluetooth/config /var/lib/bluetooth/*/config

     

    echo "=============================配置蓝牙接入======================================"

    sudo cp -f~/bluetooth/99-input.rules /etc/udev/rules.d/99-input.rules

    sudo mkdir/usr/lib/udev

    sudo cp -f~/bluetooth/bluetooth /usr/lib/udev/bluetooth

    sudo chmod 774/usr/lib/udev/bluetooth

     

    echo "===========================开启蓝牙自动发现功能================================"

    sudo cp -f~/bluetooth/bluetooth-agent /etc/init.d/bluetooth-agent

    sudo chmod 755/etc/init.d/bluetooth-agent

    sudo insserv -dbluetooth-agent

    echo "===========================命令行以pi来登陆===================================="

    sudo cp -f~/bluetooth/inittab /etc/inittab

    sudo cp -f~/bluetooth/pulseaudio /etc/default/pulseaudio 

     

    echo "===========================开启蓝牙自发现======================================"

    sudo hciconfig hci0piscan

    sudostart-stop-daemon -S -x /usr/bin/bluetooth-agent -c pi -b -- 0000



    所有配置文件下载连接<http://download.csdn.net/detail/zhaoqi_0612/9016779>

    展开全文
  • A2DP_v1.3.2.pdf

    2020-01-29 16:23:01
    蓝牙A2DP最新协议版本,A2DP_v1.3.2.pdf;蓝牙A2DP最新协议版本,A2DP_v1.3.2.pdf;蓝牙A2DP最新协议版本,A2DP_v1.3.2.pdf;蓝牙A2DP最新协议版本,A2DP_v1.3.2.pdf;蓝牙A2DP最新协议版本,A2DP_v1.3.2.pdf;蓝牙A...
  • A2dp连接流程(android8及之前版本)

    千次阅读 2019-07-09 13:52:05
    Android P在a2dp协议有些许改动,支持多A2dp设备同时连接,流程上有变化,以下是记录Android O及以前的A2dp设备连接流程,以备我后续忘记时查阅. 正文 先简单讲讲应用层调用绑定和连接过程 扫描到设备后点击设备列表,...

    前言

    Android P在a2dp协议有些许改动,支持多A2dp设备同时连接,流程上有变化,以下是记录Android O及以前的A2dp设备连接流程,以备我后续忘记时查阅.

    正文
    先简单讲讲应用层调用绑定和连接过程
    扫描到设备后点击设备列表,通过反射调用BluetoothDevice的createBond方法发起绑定

     private void createBond(BluetoothDevice device) {
            try {
                Method method = BluetoothDevice.class.getMethod("createBond");
                method.invoke(device);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    发起绑定后会受到绑定状态变化的广播

     public static final String ACTION_BOND_STATE_CHANGED =
                "android.bluetooth.device.action.BOND_STATE_CHANGED";
    

    绑定成功的状态变化为:
    10(BOND_NONE) -> 11(BOND_BONDING) -> 12(BOND_BONDED)
    如果是10 -> 11 - > 10 说明bond失败,可以重新发起bond

    case BluetoothDevice.ACTION_BOND_STATE_CHANGED:
                        int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, 10);
                        Log.i(TAG, "bond state change :bond state is " + bondState);
                        switch (bondState) {
                            case BluetoothDevice.BOND_BONDING:
                               //绑定中
                                break;
                            case BluetoothDevice.BOND_NONE:
                              //绑定失败
                                break;
                            case BluetoothDevice.BOND_BONDED:
                                //绑定成功,去连接设备
                                connect(device);
    
                                break;
    
                        }
                        break;
    

    连接放在线程执行,需要区分不同的deviceType来获取不同的代理对象,关于deviceType我前面写过一个相关分析的博客

    /**
         * 连接设备
         * 具体实现 int deviceType = device.getBluetoothClass().getMajorDeviceClass() = BITMASK & 下面的类型;
         * 不同设备类型该值不同,比如computer蓝牙为256、phone 蓝牙为512、打印机蓝牙为1536等等
         * public static class Major {
         * private static final int BITMASK           = 0x1F00;
         * <p>
         * public static final int MISC              = 0x0000;
         * public static final int COMPUTER          = 0x0100;
         * public static final int PHONE             = 0x0200;
         * public static final int NETWORKING        = 0x0300;
         * public static final int AUDIO_VIDEO       = 0x0400;
         * public static final int PERIPHERAL        = 0x0500;
         * public static final int IMAGING           = 0x0600;
         * public static final int WEARABLE          = 0x0700;
         * public static final int TOY               = 0x0800;
         * public static final int HEALTH            = 0x0900;
         * public static final int UNCATEGORIZED     = 0x1F00;
         * }
         */
        public void connect(final BluetoothDevice device) {
            currentDevice = device;
            //测试,实际需要判断设备类型创建不同的profile
            final int deviceType = device.getBluetoothClass().getMajorDeviceClass();
            new Thread() {
                @Override
                public void run() {
                    if (deviceType == (0x1F00 & 0x0500)) {//4:input_device
                        Log.i(TAG, "connect input device:" + device);
                        adapter.getProfileProxy(mContext, mProfileListener, INPUT_DEVICE);
                    } else if (deviceType == (0x1F00 & 0x0400)) {//AUDIO_VIDEO
                        Log.i(TAG, "connect a2dp device:" + device);
                        adapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.A2DP);
                    } else if (deviceType == (0x1F00 & 0x0200)) {//PHONE
    
                    }
                }
            }.start();
    
    
        }
    

    在回调里面来进行连接操作

     private BluetoothProfile mBluetoothProfile;
        private BluetoothA2dp mA2dp;
        private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
            @Override
            public void onServiceConnected(int profile, BluetoothProfile proxy) {
                Log.i(TAG, "mConnectListener onServiceConnected");
                mBluetoothProfile = proxy;
                //判断连接的profile
                switch (profile) {
                    case BluetoothProfile.A2DP:
                        mA2dp = (BluetoothA2dp) proxy;
                        setPriority(currentDevice, profile);
                        try {
                            //通过反射获取BluetoothA2dp中connect方法(hide的),进行连接。
                            Method connectMethod = BluetoothA2dp.class.getMethod("connect",
                                    BluetoothDevice.class);
                            connectMethod.invoke(mA2dp, currentDevice);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        break;
                    case INPUT_DEVICE:
                        try {
                            //得到BluetoothInputDevice然后反射connect连接设备
                            Class mInputDevice = Class.forName("android.bluetooth.BluetoothInputDevice");
                            Method method = mInputDevice.getMethod("connect", String.class);
                            method.invoke(mInputDevice.newInstance(), currentDevice);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        break;
    
                }
    
    
            }
    
            @Override
            public void onServiceDisconnected(int profile) {
                Log.i(TAG, "mConnectListener onServiceConnected");
            }
        };
    

    连接状态会有广播回调,不同类型的设备连接状态的广播是不一样的,a2dp连接广播为:

     public static final String ACTION_CONNECTION_STATE_CHANGED =
            "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED";
    

    下面就来看看framework层a2dp的连接流程
    应用调用connect后到
    framework/base/core/java/android/bluetooth/BluetoothA2dp.java
    在这里插入图片描述
    可以看到调用了mService.connect(device);
    这里通过binder通信调到了Bluetooth.apk里的:
    package/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
    在这里插入图片描述
    这里
    1,检查权限
    2,判断优先级
    3,检查设备是否支持a2dp和a2dpSink
    4,检查当前设备是否已经连接,或者正在连接

    接下来就到了同目录下的A2dpStateMachine.java的内部类

    private class Connected extends State {
    	@override
    	public boolean processMessage(Message message){
    	}
    }
    

    在这里插入图片描述
    这里
    1,当前要连接的设备和已经连接的设备(mCurrentDevice)是否一致,一致就不往下走
    2,发送广播通知其他进程,状态从disconnected -> connecting
    3,断开mCurrentDevice,if断开失败,发送当前设备连接失败connecting -> disconnected
    4,mTargetDevice = device ,mTargetDevice 为即将要连接的设备
    5,transitionTo(mPending);
    在这里插入图片描述
    将消息延迟,

    未完待续…

    展开全文
  • A2DP_SPEC_V12

    2021-01-20 13:57:51
    A2DP 音频开发基础协议 V12版本的Spec
  • 各个版本协议栈都不一样,最早用的是bluez,进入4.x时代之后,换成了谷歌自己的bluedroid。换就换吧,至少等做完了再用吧,结果4.2、4.3、4.4的bluedroid全都不一样。这就对我等非专业蓝牙开发人员开发蓝牙制造了...

        一直以来,Android对于蓝牙的支持都很混乱,简直可以说是一坨shit。各个版本的协议栈都不一样,最早用的是bluez,进入4.x时代之后,换成了谷歌自己的bluedroid。换就换吧,至少等做完了再用吧,结果4.2、4.3、4.4的bluedroid全都不一样。这就对我等非专业蓝牙开发人员开发蓝牙制造了巨大的麻烦。

        好了,吐槽到此为止,该说正事了。因为公司在做智能家居项目,需要在Android上实现蓝牙A2dp Sink的profile,这样我们的设备就能当蓝牙音箱来用了。我们是用的平台是全至A20,蓝牙模块是博通的一款bt+wifi的集成模块,sdk的版本是Android4.2。据我们了解,Android4.x的官方sdk中蓝牙A2dp只实现了source,也就是只能作为播放音乐的源,将音频数据传出去。博通自己有支持蓝牙A2dp Sink的协议栈,但是只支持Android4.4的。Realtek在Android4.2的协议栈上实现了A2dp Sink,但是受制于我们已经生产出去的版本都是使用的博通的模块,realtek这条路只能死心了。正当我们五路可走的时候,好消息来了,Android5.0发布了,而且“据说”是已经实现了A2dp Sink。好吧,那就移植吧。

        我会将整个的移植分为如下几个部分进行描述:

        1、Android中蓝牙音频系统基础知识;

        2、移植蓝牙协议栈;

        3、实现蓝牙音频播放;

    展开全文
  • 分散式隐私保护邻近跟踪(DP-3T)项目是使用移动设备上的Bluetooth Low Energy功能的COVID-19邻近跟踪的开放协议,可确保个人数据和计算完全保留在个人电话中。它由来自欧洲各地的25多名科学家和学术研究人员组成的...
  • 使用协议缓冲区编译,并将.proto文件移动到 。 升级版本(PostgreSQL,Tomcat,Spring Boot等)。 请参阅以及我们要求对DP3T进行的更改。 安装与入门 从源头建造 要构建项目,您需要运行以下命令: mvn clean ...
  • 在上篇《蓝牙音乐之A2DP》中简要介绍完了A2DP音频流建立过程的协议分析,该过程主要通过协商双方的编码方式信息并设置一个最优的编码方式,最后通过AVDTP_OPEN建立A2DP连接。此连接最重要的是建立 信令通道 和 数据...
  • A2DP Profile 规格

    2017-12-29 16:59:26
    部署最为普遍的两种规格为蓝牙基础率/增强数据率 (BR/EDR)(采用版本为 2.0/2.1)和低耗能 (LE) 蓝牙(采用版本为 4.0/4.1/4.2)。每项部署都有不同的用例,同时采用不同的芯片以满足基本硬件要求。双模芯片也适用于...
  • VPC3+CLF 版本2.03

    2010-12-22 15:02:30
    版本为2.03 全英文版 profibus-dp协议芯片 pdf
  • DP-302打印服务器1.02版

    2011-12-18 12:01:20
    D-Link DP-302 USB接口打印服务器支持Internet打印协议( IPP),从而使用户所连接的打印机即使是在他们办公室以外的地方都可以将文件发出正常打印。该设备还提供了为网络管理员的重要资料的网络打印功能,以便他们...
  • 分散式隐私保护邻近跟踪(DP-3T)项目是使用移动设备上的Bluetooth Low Energy功能的COVID-19邻近跟踪的开放协议,可确保个人数据和计算完全保留在个人电话中。它由来自欧洲各地的25多名科学家和学术研究人员组成的...
  • 关键词:蓝牙 核心技术 协议 版本 历史作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢)欢迎指正错误,共同学习、共同进步!!下载连接:Bluetooth PROFILE SPECIFICATIONS (...
  • 完整的蓝牙应用协议。...如a2dp的1.0、1.1和1.2版本等。 所需的就是有用的,希望给大家用上~!我们的祖国是花园~! 蓝牙应用在4.0之前为标准蓝牙,4.0之后为BLE(低功耗蓝牙)。我这个包里面完整的包含里面的协议。。
  • 括号内为经过测试的推荐版本。 go (1.12.5) node.js (10.15.3) gcc (mingw-w64 v8.1.0) 打包UI资源文件: 我们假设你已经完成了node.js的下载与安装。 执行dp/app/app/ui目录下的webpackUI.ps1脚本文件...
  • 最新历史版本 :Android Bluetooth

    千次阅读 2012-12-17 15:00:18
    (1)Android2.2版 支持的蓝牙核心版本是Bluetooth 2.0 + EDR。 (2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了 Handset/Handfree和A2DP/AVRCP等Profile。 (一些常用的Profile(如HID/DUN/SPP/...
  • 一、Android Bluetooth现状 ...(2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了Handset/Handfree和A2DP/AVRCP等Profile。 (一些常用的Profile(如HID/DUN/SPP/OPP/FTP/PAN等)在现在的Android2.2
  • 蓝牙应用层中A2DP下的Aptx,AAC,MP3,LDAC编码对比及浅谈。 随着无线技术发展,蓝牙已经发布了它的4.0版本。带来了高速.低功耗等种种特点。 不过随着技术的完善,带宽逐渐变大,为什么还是总说蓝牙无音质呢? ...
  • 蓝牙可以分为经典蓝牙和低功耗蓝牙BLE,蓝牙协议3.0版本之前都是低功耗蓝牙,4.0之后的版本中既包括经典蓝牙也包括低功耗蓝牙BLE,我们目前听歌常用的协议为A2DP协议2.1版本为经典蓝牙版本,低功耗蓝牙BLE一般用在...
  • 1 altera a10 在使用quauts 18.1 pro版本时,才支持 dp1.4(8.1Gbps/lane)协议,低于a10或者低于18.1pro版本,则只能支持到 dp1.2(5.4Gbps/lane) 2 目前(2020),绝大部分显示器最高只支持到 dp1.2(5.4Gbps/...
  • DP-V2三个版本 3.Profibus –PA: 主要应用于防爆安全要求高,通讯速度低的过程控 制场合(31.25kbps) 4.Profinet : 是Profibus 向工业以太网的发展,其通讯是建立在 交换式以太网和TCP/IP协议的基础上
  • 问题现象:上报a2dp-sink协议连接状态时,地址值为空导致蓝牙服务进程crash 既然是a2dp-sink的状态变化广播中的地址值为空,那问题肯定就出在a2dp-sink的状态机A2dpSinkStateMachine中。 全面分析完a2dp-sink的状态...
  • 蓝牙耳机音质知识

    2019-12-19 10:40:25
    蓝牙的版本号以数字的形式递进更新,但蓝牙技术却并非一脉相承。蓝牙总体来看有两个分支,分别是传统蓝牙和低功耗蓝牙BLE,其中蓝牙1.1、1.2、2.0、2.1、3.0版本属于传统蓝牙,而...其中,听歌常用的蓝牙A2DP协议属...
  • 关键词:蓝牙核心技术协议 A2DP AVDTP HF HCP BIP BPP…………作者:xubin341719(欢迎转载,请注明作者,请尊重版权。谢谢!)欢迎指正错误。共同学习、共同进步!。下载链接:Bluetooth PROFILE SPECIFICATIONS ...
  • 车载蓝牙模组

    2021-03-03 14:12:41
    1、SPHE888_MODULE 蓝牙模组 : SPHE888_MODULE 型号 SPHE888_MODULE 详情 ... SPHE888_MODULE模组是采用了Sunplus单芯片的HCI蓝牙方案,因内置ROM而无需外挂EEPROM。... 支持协议:A2DP
  • ••••••••• Corona-Warn-App:文档 注意:此自述文件也提供。感谢您的理解,德语版本可能并不总是与英语版本同步。...像DP-3T和TCN协议一样,应用程序和后端基础结构将完全开放源代码许可,并获得!这些应用程
  • Android: Android Bluetooth

    千次阅读 2011-07-20 14:35:42
    Android Bluetooth 一、Android Bluetooth现状(1)Android2.2版 支持的蓝牙核心版本是Bluetooth 2.0 + EDR。(2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了Handset/Handfree和A2DP

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

dp协议版本