diff --git a/Android.mk b/Android.mk index de5369d..d206530 100755 --- a/Android.mk +++ b/Android.mk @@ -1,10 +1,19 @@ +# Copyright (C) 2010 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCAL_PATH := $(my-dir) ifeq ($(TARGET_DEVICE),pico) - subdir_makefiles := \ - $(LOCAL_PATH)/libaudio/Android.mk \ -# $(LOCAL_PATH)/libacoustic/Android.mk \ -# $(LOCAL_PATH)/libcamera/Android.mk \ -# $(LOCAL_PATH)/brcm_patchram_plus/Android.mk - include $(subdir_makefiles) -endif \ No newline at end of file +include $(call all-makefiles-under,$(LOCAL_PATH)) +endif diff --git a/AndroidBoard.mk b/AndroidBoard.mk index d053777..87b70f1 100755 --- a/AndroidBoard.mk +++ b/AndroidBoard.mk @@ -1,3 +1,23 @@ +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# AndroidBoard.mk is a legacy mechanism to deal with a few +# edge-cases that can't be managed otherwise. No new rules +# should be added to this file. +# + LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) diff --git a/AndroidProducts.mk b/AndroidProducts.mk index 24acab1..d68d2b2 100755 --- a/AndroidProducts.mk +++ b/AndroidProducts.mk @@ -1,2 +1,18 @@ +# +# Copyright (C) 2011 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/pico.mk diff --git a/BoardConfig.mk b/BoardConfig.mk index 9d6d989..ae7cb58 100755 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -4,7 +4,7 @@ # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -15,13 +15,8 @@ USE_CAMERA_STUB := true -COMMON_GLOBAL_CFLAGS += -DBINDER_COMPAT - -# Needs Review -#BOARD_CAMERA_USE_GETBUFFERINFO := true -# This is needed by libcamera.so -BOARD_USE_NASTY_PTHREAD_CREATE_HACK := true -BOARD_USE_CAF_LIBCAMERA := true +TARGET_GLOBAL_CFLAGS += -mfpu=neon -mfloat-abi=softfp +TARGET_GLOBAL_CPPFLAGS += -mfpu=neon -mfloat-abi=softfp # Arch related defines TARGET_BOARD_PLATFORM := msm7x27a @@ -31,8 +26,7 @@ TARGET_BOARD_PLATFORM_GPU := qcom-adreno200 TARGET_NO_BOOTLOADER := true TARGET_NO_RADIOIMAGE := true -# Yes we do,but let's hash it out -# ARCH_ARM_HAVE_VFP := true +# Yes we do,but let's hash it out TARGET_ARCH_VARIANT := armv7-a-neon TARGET_CPU_ABI := armeabi-v7a TARGET_CPU_ABI2 := armeabi @@ -40,7 +34,6 @@ ARCH_ARM_HAVE_TLS_REGISTER := true TARGET_BOOTLOADER_BOARD_NAME := pico BOARD_NO_SPEAKER := true # msm7627a doesn't have speaker TARGET_CORTEX_CACHE_LINE_32 := true -TARGET_USE_SPARROW_BIONIC_OPTIMIZATION := true # Kernel BOARD_KERNEL_CMDLINE := no_console_suspend=1 console=null @@ -48,12 +41,11 @@ BOARD_KERNEL_BASE := 0x12c00000 BOARD_PAGE_SIZE := 0x00000800 # Additional librarys - TARGET_PROVIDES_LIBAUDIO := true # Fix this up by examining /proc/mtd on a running device BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00400000 -BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00500000 +BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00600000 #kernel don't fit anymore in recovery! BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0eb40000 BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x09600000 BOARD_FLASH_BLOCK_SIZE := 262144 @@ -70,30 +62,34 @@ BOARD_USE_USB_MASS_STORAGE_SWITCH := true TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/usb_mass_storage/lun0/file" BOARD_UMS_LUNFILE := "/sys/devices/platform/usb_mass_storage/lun0/file" -# Bluetooth +# Bluetooth BOARD_HAVE_BLUETOOTH := true BOARD_HAVE_BLUETOOTH_BCM := true TARGET_SPECIFIC_HEADER_PATH := device/htc/pico/include # OpenGL drivers config file path -BOARD_EGL_CFG := device/htc/pico/prebuilt/lib/egl/egl.cfg +BOARD_EGL_CFG := vendor/htc/pico/proprietary/lib/egl/egl.cfg BOARD_USES_QCOM_HARDWARE := true BOARD_USES_QCOM_LIBRPC := true BOARD_USES_QCOM_LIBS := true TARGET_GRALLOC_USES_ASHMEM := true -COMMON_GLOBAL_CFLAGS += -DTARGET_MSM7x27 # Wifi related defines -BOARD_WPA_SUPPLICANT_DRIVER := WEXT +BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X -BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_wext -BOARD_WLAN_DEVICE := bcm4330 -WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/bcm4330.ko" -WIFI_DRIVER_FW_PATH_STA := "/system/etc/firmware/fw_bcm4330b2.bin" -WIFI_DRIVER_FW_PATH_AP := "/system/etc/firmware/fw_bcm4330b2_apsta.bin" -WIFI_DRIVER_MODULE_NAME := "bcm4330" -WIFI_DRIVER_MODULE_ARG := "firmware_path=/system/etc/firmware/fw_bcm4330b2.bin nvram_path=/proc/calibration iface_name=eth0" +BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd +BOARD_HOSTAPD_DRIVER := NL80211 +BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd +BOARD_WLAN_DEVICE := bcmdhd +WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" +WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/bcmdhd.ko" +WIFI_DRIVER_FW_PATH_STA := "/system/etc/firmware/fw_bcm4330_b2.bin" +WIFI_DRIVER_FW_PATH_AP := "/system/etc/firmware/fw_bcm4330_apsta_b2.bin" +WIFI_DRIVER_FW_PATH_P2P := "/system/etc/firmware/fw_bcm4330_p2p_b2.bin" +WIFI_DRIVER_MODULE_NAME := "bcmdhd" +WIFI_DRIVER_MODULE_ARG := "firmware_path=/system/etc/firmware/fw_bcm4330_b2.bin nvram_path=/proc/calibration iface_name=eth0" +WIFI_BAND := 802_11_ABG # Releasetools TARGET_RELEASETOOLS_EXTENSIONS := device/htc/pico/releasetools @@ -104,38 +100,60 @@ BOARD_USES_QCOM_GPS := true BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := pico BOARD_VENDOR_QCOM_GPS_LOC_API_AMSS_VERSION := 50000 -#TARGET_LIBAGL_USE_GRALLOC_COPYBITS := true -DCHECK_FOR_EXTERNAL_FORMAT := true +# Misc +TARGET_BOOTANIMATION_PRELOAD := true + +# Graphics BOARD_USE_SKIA_LCDTEXT := true -BOARD_FORCE_DITHERING := true -USE_OPENGL_RENDERER := true TARGET_USES_GENLOCK := true +USE_OPENGL_RENDERER := true +BOARD_ADRENO_DECIDE_TEXTURE_TARGET := true TARGET_FORCE_CPU_UPLOAD := true BOARD_AVOID_DRAW_TEXTURE_EXTENSION := true -#COMMON_GLOBAL_CFLAGS += -DMISSING_GRALOC_BUFFERS -#COMMON_GLOBAL_CFLAGS += -DMISSING_EGL_PIXEL_FORMAT_YV12 -#COMMON_GLOBAL_CFLAGS += -DMISSING_EGL_EXTERNAL_IMAGE -COMMON_GLOBAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER - -# Browser -WITH_JIT := true -ENABLE_JSC_JIT := true -JS_ENGINE := v8 -HTTP := chrome - -# ICS Stuff +TARGET_USES_C2D_COMPOSITION := false +TARGET_USES_SF_BYPASS := false +TARGET_HAVE_BYPASS := false +TARGET_USES_OVERLAY := false +TARGET_QCOM_HDMI_OUT := false +TARGET_NO_HW_VSYNC := true + +# Caf +TARGET_CPU_SMP := true +TARGET_AVOID_DRAW_TEXTURE_EXTENSION := true +TARGET_USES_16BPPSURFACE_FOR_OPAQUE := true +BOARD_HAS_8BIT_BCHECC_SUPPORT := true +BOARD_KERNEL_BCHECC_SPARESIZE := 160 +BOARD_HAVE_MXT224_CFG := true +TARGET_HAVE_TSLIB := true +MM_AUDIO_OMX_ADEC_EVRC_DISABLED := false +MM_AUDIO_OMX_ADEC_QCELP13_DISABLED := false +MM_AUDIO_FTM_DISABLED := false +MM_AUDIO_MEASUREMENT_DISABLED := false +BOARD_USES_QCNE := true +PROTEUS_DEVICE_API := true +MM_AUDIO_VOEM_DISABLED := false +TARGET_USES_PMEM := true +BOARD_USES_QCOM_AUDIO_SPEECH := true + +# ICS Stuff BOARD_HAS_NO_SELECT_BUTTON := true # RIL -BOARD_USE_NEW_LIBRIL_HTC := true +BOARD_USES_LEGACY_RIL := true +COMMON_GLOBAL_CFLAGS += -DRIL_VERSION_2_SUPPORT -#COMMON_GLOBAL_CFLAGS += -DUSE_htc_ALS_DUMMY +# Camera +BOARD_NEEDS_MEMORYHEAPPMEM := true +CAMERA_USES_SURFACEFLINGER_CLIENT_STUB := true +COMMON_GLOBAL_CFLAGS += -DICS_CAMERA_BLOB +# Add h/w acceleration in browser :) +ENABLE_WEBGL := true WITH_JIT := true ENABLE_JSC_JIT := true JS_ENGINE := v8 -COMMON_GLOBAL_CFLAGS += -DQCOM_HARDWARE -COMMON_GLOBAL_CFLAGS += -DREFRESH_RATE=60 +HTTP := chrome +COMMON_GLOBAL_CFLAGS += -DQCOM_HARDWARE -DREFRESH_RATE=65 # Touch screen compatibility for ICS BOARD_USE_LEGACY_TOUCHSCREEN := true diff --git a/README b/README deleted file mode 100644 index a445e4c..0000000 --- a/README +++ /dev/null @@ -1,19 +0,0 @@ -Device Config for Htc Explorer(Pico) for building AOSP/AOSP-based roms - -Xda Thread- http://forum.xda-developers.com/showthread.php?t=1793026 - -Whats Working- - - WiFi - - Hardware acceleration(but cud use a lil more speed) - - RIL - - Gps(next build) - - Incall Audio only (libaudio still broken) - - Usb Mass Storage - - Audio (many need some tweaks) - - Bluetooth - - Usb tethering - -What Doesnt work- - - Camera - - Video Playback - - Everything else diff --git a/README.md b/README.md new file mode 100644 index 0000000..60ae4cc --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +android_device_htc_pico_jb +========================== + +cm10 device tree for htc pico + +Work in progress \ No newline at end of file diff --git a/UsbController.cpp b/UsbController.cpp deleted file mode 100644 index ec57356..0000000 --- a/UsbController.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - - -#include -#include - -#define LOG_TAG "UsbController" -#include - -#include "UsbController.h" - - -UsbController::UsbController() { -} - -UsbController::~UsbController() { -} - -int UsbController::startRNDIS() { - LOGD("Usb RNDIS start"); - return enableRNDIS(true); -} - -int UsbController::stopRNDIS() { - LOGD("Usb RNDIS stop"); - return enableRNDIS(false); -} - -int UsbController::enableRNDIS(bool enable) { - char value[20]; - int fd = open("/sys/class/usb_composite/ether/enable", O_RDWR); - int count = snprintf(value, sizeof(value), "%d\n", (enable ? 1 : 0)); - write(fd, value, count); - close(fd); - return 0; -} - -bool UsbController::isRNDISStarted() { - char value=0; - int fd = open("/sys/class/usb_composite/ether/enable", O_RDWR); - read(fd, &value, 1); - close(fd); - return (value == '1' ? true : false); -} diff --git a/cm.mk b/cm.mk index 2d4c3c6..0269a75 100644 --- a/cm.mk +++ b/cm.mk @@ -1,35 +1,27 @@ # Prepare for new BootAnimation TARGET_BOOTANIMATION_NAME := vertical-320x480 -## Specify phone tech before including full_phone -$(call inherit-product, vendor/cm/config/gsm.mk) - # Include GSM stuff $(call inherit-product, vendor/cm/config/gsm.mk) -# Inherit from those products. Most specific first -$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) - -#$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk) -$(call inherit-product, device/common/gps/gps_eu_supl.mk) - # Inherit some common cyanogenmod stuff. $(call inherit-product, vendor/cm/config/common_mini_phone.mk) +$(call inherit-product, device/common/gps/gps_eu_supl.mk) +$(call inherit-product, frameworks/native/build/phone-hdpi-512-dalvik-heap.mk) # Inherit device configuration $(call inherit-product, device/htc/pico/pico.mk) -# Include FM-Radio stuff -#$(call inherit-product, vendor/cm/products/bcm_fm_radio.mk) +# Release name and versioning +PRODUCT_RELEASE_NAME := pico +PRODUCT_VERSION_DEVICE_SPECIFIC := -UNOFFICIAL-ALPHA3 +CM_RELEASE := true +# Product name PRODUCT_NAME := cm_pico -PRODUCT_BRAND := htc_europe +PRODUCT_BRAND := HTC PRODUCT_DEVICE := pico -PRODUCT_MODEL := HTC Explorer A310 +PRODUCT_MODEL := HTC Explorer A310e PRODUCT_MANUFACTURER := HTC -PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=pico BUILD_ID=IMLK74 BUILD_FINGERPRINT=htc_asia_india/htc_pico/pico:2.3.5/GRJ90/171430.1:user/release-keys PRIVATE_BUILD_DESC="1.12.720.1 CL171430 release-keys" - -# Release name and versioning -PRODUCT_RELEASE_NAME := pico -PRODUCT_VERSION_DEVICE_SPECIFIC := +PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=pico BUILD_ID=JZO54K BUILD_FINGERPRINT=htc_asia_india/htc_pico/pico:2.3.5/GRJ90/171430.1:user/release-keys PRIVATE_BUILD_DESC="1.12.720.1 CL171430 release-keys" diff --git a/files/etc/AudioFilter.csv b/files/etc/AudioFilter.csv deleted file mode 100644 index 4908ed0..0000000 --- a/files/etc/AudioFilter.csv +++ /dev/null @@ -1,3 +0,0 @@ -A1,AUDFMT IIR,4000,0,8000,0,4000,0,3b58,93de,894e,d845,3b58,93de,3b58,93de,894e,d845,3b58,93de,4000,0,8000,0,4000,0,8732,7616,3903,44d4,862f,4d1a,3a06,e115,8444,d3fe,3bf2,3457,81ac,4228,3e8b,edc2,2,2,2,2,0,0,0,0,FFFF,4 -M1,AUDFMT ADRC,FFFF,1,1,30,0,0,0,0,1,0,106,2550,F333,7ED4,FFC6,4356,282B,2600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -C1,AUDFMT EQ,FFFF,0,190,3,016A,0,1F4,3,016A,6,898,3,016A,0,FA0,3,016A,0,1388,3,016A,0,1F40,3,016A,0,2328,3,016A,0,4650,2,016A \ No newline at end of file diff --git a/files/etc/AudioFilter.csv~ b/files/etc/AudioFilter.csv~ deleted file mode 100644 index 4908ed0..0000000 --- a/files/etc/AudioFilter.csv~ +++ /dev/null @@ -1,3 +0,0 @@ -A1,AUDFMT IIR,4000,0,8000,0,4000,0,3b58,93de,894e,d845,3b58,93de,3b58,93de,894e,d845,3b58,93de,4000,0,8000,0,4000,0,8732,7616,3903,44d4,862f,4d1a,3a06,e115,8444,d3fe,3bf2,3457,81ac,4228,3e8b,edc2,2,2,2,2,0,0,0,0,FFFF,4 -M1,AUDFMT ADRC,FFFF,1,1,30,0,0,0,0,1,0,106,2550,F333,7ED4,FFC6,4356,282B,2600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -C1,AUDFMT EQ,FFFF,0,190,3,016A,0,1F4,3,016A,6,898,3,016A,0,FA0,3,016A,0,1388,3,016A,0,1F40,3,016A,0,2328,3,016A,0,4650,2,016A \ No newline at end of file diff --git a/files/etc/vold.fstab b/files/etc/vold.fstab index db6cdb5..a6e030c 100644 --- a/files/etc/vold.fstab +++ b/files/etc/vold.fstab @@ -14,5 +14,5 @@ ###################### # Mounts the first usable partition of the specified device -dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.1/mmc_host/mmc0 +dev_mount sdcard /storage/sdcard0 auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.1/mmc_host/mmc0 diff --git a/files/init.pico.rc b/files/init.pico.rc index 6183810..fcd8149 100755 --- a/files/init.pico.rc +++ b/files/init.pico.rc @@ -1,20 +1,35 @@ import init.pico.usb.rc on early-init - export EXTERNAL_STORAGE /mnt/sdcard - mkdir /mnt/sdcard 0000 system system - # for backwards compatibility - symlink /mnt/sdcard /sdcard + export EXTERNAL_STORAGE /storage/sdcard0 + mkdir /storage 0050 system sdcard_r + mkdir /storage/sdcard0 0000 system system + symlink /storage/sdcard0 /sdcard + symlink /storage/sdcard0 /mnt/sdcard on post-fs-data + # wifi mkdir /data/misc/wifi 0770 wifi wifi mkdir /data/misc/wifi/sockets 0770 wifi wifi + mkdir /data/misc/wifi/hostapd 0770 wifi wifi + mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi mkdir /data/misc/dhcp 0770 dhcp dhcp chown dhcp dhcp /data/misc/dhcp - + on boot mount debugfs /sys/kernel/debug /sys/kernel/debug +# Define the memory thresholds at which the above process classes will +# be killed. These numbers are in pages (4k). + setprop ro.FOREGROUND_APP_MEM 3584 + setprop ro.VISIBLE_APP_MEM 4096 + setprop ro.SECONDARY_SERVER_MEM 6144 + setprop ro.BACKUP_APP_MEM 6144 + setprop ro.HOME_APP_MEM 6144 + setprop ro.HIDDEN_APP_MEM 7168 + setprop ro.CONTENT_PROVIDER_MEM 7680 + setprop ro.EMPTY_APP_MEM 8192 + # bluetooth power up/down interface chown bluetooth bluetooth /dev/ttyHS0 chmod 0600 /dev/ttyHS0 @@ -41,10 +56,30 @@ on boot chown system system /sys/class/leds/button-backlight/brightness chown system system /sys/class/leds/lcd-backlight/brightness - # flashlight - chown system camera /sys/devices/platform/flashlight.0/leds/flashlight/brightness - chmod 0660 /sys/devices/platform/flashlight.0/leds/flashlight/brightness - + # Power Management + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 122880 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 600000 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ondemand + write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 40000 + + # for CM performance + chown root system /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies + chown root system /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors + chown root system /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq + + # Enable low memory killer to check file pages + write /sys/module/lowmemorykiller/parameters/minfile 0,0,0,5120,5632,6144 + write /sys/module/lowmemorykiller/parameters/check_filepages 1 + + #usb tethering + chmod 0777 /sys/class/usb_composite/* + + # fix for entropy service and some other that failed + # Need for NET + chmod 755 /data/system/appwidgets.xml + chmod 755 /data/system/entropy.dat + chmod 755 /data/system/wallpaper_info.xml + # enable the GPS setprop ro.ril.def.agps.mode 2 @@ -61,25 +96,46 @@ on boot setprop ro.ril.fd.scron.timeout 4 setprop ro.ril.fd.scroff.timeout 3 -service wpa_supplicant /system/bin/wpa_supplicant \ - -Dwext -ieth0 -c/data/misc/wifi/wpa_supplicant.conf -# we will start as root and wpa_supplicant will switch to user wifi -# after setting up the capabilities required for WEXT +service hciattach /system/bin/logwrapper /system/bin/brcm_patchram_plus --no2bytes --tosleep=50000 --enable_hci --baudrate 3000000 --patchram /etc/firmware/BCM4330B1_002.001.003.0221.0228.hcd --scopcm=0,0,0,0,0,0,0,3,3,0 /dev/ttyHS0 + user root + group bluetooth net_bt_admin + disabled + oneshot + +service p2p_supplicant /system/bin/wpa_supplicant \ + -ieth0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -N \ + -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf -e/data/misc/wifi/entropy.bin \ + -puse_p2p_group_interface=1 + # we will start as root and wpa_supplicant will switch to user wifi + # after setting up the capabilities required for WEXT + # user wifi + # group wifi inet keystore class main socket wpa_eth0 dgram 660 wifi wifi disabled oneshot -service dhcpcd_usb0 /system/bin/logwrapper /system/bin/dhcpcd usb0 - user root +service wpa_supplicant /system/bin/wpa_supplicant \ + -Dnl80211 -eth0 -e/data/misc/wifi/entropy.bin \ + -c/data/misc/wifi/wpa_supplicant.conf + # we will start as root and wpa_supplicant will switch to user wifi + # after setting up the capabilities required for WEXT + # user wifi + # group wifi inet keystore + class main + socket wpa_eth0 dgram 660 wifi wifi disabled oneshot - + service dhcpcd_eth0 /system/bin/dhcpcd -ABKL class main disabled oneshot +service dhcpcd_bnep0 /system/bin/dhcpcd -ABKL + class main + disabled + oneshot service dhcpcd_p2p /system/bin/dhcpcd -aABKL class main @@ -91,6 +147,10 @@ service iprenew_eth0 /system/bin/dhcpcd -n disabled oneshot +service iprenew_bnep0 /system/bin/dhcpcd -n + class main + disabled + oneshot service iprenew_p2p /system/bin/dhcpcd -n class main @@ -104,9 +164,4 @@ service bugreport /system/bin/dumpstate -d -v -o /sdcard/bugreports/bugreport oneshot keycodes 115 272 -service hciattach /system/bin/init.qcom.bt.sh - user root - group bluetooth net_bt_admin - disabled - service dspcrashd /system/bin/dspcrashd diff --git a/files/init.pico.usb.rc b/files/init.pico.usb.rc index e0613fd..07152ae 100644 --- a/files/init.pico.usb.rc +++ b/files/init.pico.usb.rc @@ -2,39 +2,59 @@ on boot setprop sys.usb.state adb stop adbd start adbd - + +on property:sys.usb.config=none + stop adbd + exec /system/bin/netcfg usb0 down + write /sys/class/usb_composite/adb/enable 0 + write /sys/class/usb_composite/usb_mass_storage/enable 0 + write /sys/class/usb_composite/rndis/enable 0 + exec /system/bin/netcfg usb0 down + setprop sys.usb.state ${sys.usb.config} + on property:sys.usb.config=adb + exec /system/bin/netcfg usb0 down + write /sys/class/usb_composite/usb_mass_storage/enable 0 + write /sys/class/usb_composite/rndis/enable 0 write /sys/class/usb_composite/adb/enable 1 start adbd - setprop sys.usb.state $sys.usb.config + setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mass_storage + exec /system/bin/netcfg usb0 down + write /sys/class/usb_composite/adb/enable 0 + write /sys/class/usb_composite/rndis/enable 0 write /sys/class/usb_composite/usb_mass_storage/enable 1 - setprop sys.usb.state $sys.usb.config + setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mass_storage,adb + exec /system/bin/netcfg usb0 down + write /sys/class/usb_composite/rndis/enable 0 write /sys/class/usb_composite/usb_mass_storage/enable 1 write /sys/class/usb_composite/adb/enable 1 start adbd - setprop sys.usb.state $sys.usb.config + setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=rndis - start dhcpcd_usb0 - write /sys/class/usb_composite/ether/enable 1 - setprop sys.usb.state $sys.usb.config + exec /system/bin/netcfg usb0 up + write /sys/class/usb_composite/adb/enable 0 + write /sys/class/usb_composite/usb_mass_storage/enable 0 + write /sys/class/usb_composite/rndis/enable 1 + setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=rndis,adb - start dhcpcd_usb0 - write /sys/class/usb_composite/ether/enable 1 + exec /system/bin/netcfg usb0 up + write /sys/class/usb_composite/usb_mass_storage/enable 0 write /sys/class/usb_composite/adb/enable 1 start adbd - setprop sys.usb.state $sys.usb.config + write /sys/class/usb_composite/rndis/enable 1 + setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mass_storage,rndis,adb + exec /system/bin/netcfg usb0 up write /sys/class/usb_composite/usb_mass_storage/enable 1 - start dhcpcd_usb0 - write /sys/class/usb_composite/ether/enable 1 + write /sys/class/usb_composite/rndis/enable 1 write /sys/class/usb_composite/adb/enable 1 start adbd - setprop sys.usb.state $sys.usb.config + setprop sys.usb.state ${sys.usb.config} diff --git a/files/ueventd.pico.rc b/files/ueventd.pico.rc index 6f1a03b..d83efd3 100755 --- a/files/ueventd.pico.rc +++ b/files/ueventd.pico.rc @@ -50,7 +50,7 @@ /dev/adsp/* 0660 system audio /dev/snd/* 0660 system audio /dev/mt9t013 0660 system system -/dev/msm_camera/* 0660 system system +/dev/msm_camera/* 0660 system camera /dev/akm8975_daemon 0640 compass system /dev/akm8975_aot 0640 compass system /dev/akm8973_daemon 0640 compass system @@ -84,6 +84,7 @@ /dev/qmi2 0640 radio radio /dev/bus/usb/* 0660 root usb /dev/usb_accessory 0660 root usb +/dev/rfkill 0660 root wifi # CDMA radio interface MUX /dev/ts0710mux* 0640 radio radio diff --git a/include/linux/ion.h b/include/linux/ion.h new file mode 100644 index 0000000..2519270 --- /dev/null +++ b/include/linux/ion.h @@ -0,0 +1,868 @@ +/* + * include/linux/ion.h + * + * Copyright (C) 2011 Google, Inc. + * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef _LINUX_ION_H +#define _LINUX_ION_H + +#include +#include + +struct ion_handle; +/** + * enum ion_heap_types - list of all possible types of heaps + * @ION_HEAP_TYPE_SYSTEM: memory allocated via vmalloc + * @ION_HEAP_TYPE_SYSTEM_CONTIG: memory allocated via kmalloc + * @ION_HEAP_TYPE_CARVEOUT: memory allocated from a prereserved + * carveout heap, allocations are physically + * contiguous + * @ION_HEAP_TYPE_IOMMU: IOMMU memory + * @ION_HEAP_TYPE_CP: memory allocated from a prereserved + * carveout heap, allocations are physically + * contiguous. Used for content protection. + * @ION_HEAP_END: helper for iterating over heaps + */ +enum ion_heap_type { + ION_HEAP_TYPE_SYSTEM, + ION_HEAP_TYPE_SYSTEM_CONTIG, + ION_HEAP_TYPE_CARVEOUT, + ION_HEAP_TYPE_IOMMU, + ION_HEAP_TYPE_CP, + ION_HEAP_TYPE_CUSTOM, /* must be last so device specific heaps always + are at the end of this enum */ + ION_NUM_HEAPS, +}; + +#define ION_HEAP_SYSTEM_MASK (1 << ION_HEAP_TYPE_SYSTEM) +#define ION_HEAP_SYSTEM_CONTIG_MASK (1 << ION_HEAP_TYPE_SYSTEM_CONTIG) +#define ION_HEAP_CARVEOUT_MASK (1 << ION_HEAP_TYPE_CARVEOUT) +#define ION_HEAP_CP_MASK (1 << ION_HEAP_TYPE_CP) + + +/** + * These are the only ids that should be used for Ion heap ids. + * The ids listed are the order in which allocation will be attempted + * if specified. Don't swap the order of heap ids unless you know what + * you are doing! + * Id's are spaced by purpose to allow new Id's to be inserted in-between (for + * possible fallbacks) + */ + +enum ion_heap_ids { + INVALID_HEAP_ID = -1, + ION_CP_MM_HEAP_ID = 8, + ION_CP_MFC_HEAP_ID = 12, + ION_CP_WB_HEAP_ID = 16, /* 8660 only */ + ION_CAMERA_HEAP_ID = 20, /* 8660 only */ + ION_SF_HEAP_ID = 24, + ION_IOMMU_HEAP_ID = 25, + ION_QSECOM_HEAP_ID = 27, + ION_AUDIO_HEAP_ID = 28, + + ION_MM_FIRMWARE_HEAP_ID = 29, + ION_SYSTEM_HEAP_ID = 30, + + ION_HEAP_ID_RESERVED = 31 /** Bit reserved for ION_SECURE flag */ +}; + +enum ion_fixed_position { + NOT_FIXED, + FIXED_LOW, + FIXED_MIDDLE, + FIXED_HIGH, +}; + +enum cp_mem_usage { + VIDEO_BITSTREAM = 0x1, + VIDEO_PIXEL = 0x2, + VIDEO_NONPIXEL = 0x3, + MAX_USAGE = 0x4, + UNKNOWN = 0x7FFFFFFF, +}; + +/** + * Flag to use when allocating to indicate that a heap is secure. + */ +#define ION_SECURE (1 << ION_HEAP_ID_RESERVED) + +/** + * Macro should be used with ion_heap_ids defined above. + */ +#define ION_HEAP(bit) (1 << (bit)) + +#define ION_VMALLOC_HEAP_NAME "vmalloc" +#define ION_AUDIO_HEAP_NAME "audio" +#define ION_SF_HEAP_NAME "sf" +#define ION_MM_HEAP_NAME "mm" +#define ION_CAMERA_HEAP_NAME "camera_preview" +#define ION_IOMMU_HEAP_NAME "iommu" +#define ION_MFC_HEAP_NAME "mfc" +#define ION_WB_HEAP_NAME "wb" +#define ION_MM_FIRMWARE_HEAP_NAME "mm_fw" +#define ION_QSECOM_HEAP_NAME "qsecom" +#define ION_FMEM_HEAP_NAME "fmem" + +#define CACHED 1 +#define UNCACHED 0 + +#define ION_CACHE_SHIFT 0 + +#define ION_SET_CACHE(__cache) ((__cache) << ION_CACHE_SHIFT) + +#define ION_IS_CACHED(__flags) ((__flags) & (1 << ION_CACHE_SHIFT)) + +/* + * This flag allows clients when mapping into the IOMMU to specify to + * defer un-mapping from the IOMMU until the buffer memory is freed. + */ +#define ION_IOMMU_UNMAP_DELAYED 1 + +#ifdef __KERNEL__ +#include +#include +struct ion_device; +struct ion_heap; +struct ion_mapper; +struct ion_client; +struct ion_buffer; + +/* This should be removed some day when phys_addr_t's are fully + plumbed in the kernel, and all instances of ion_phys_addr_t should + be converted to phys_addr_t. For the time being many kernel interfaces + do not accept phys_addr_t's that would have to */ +#define ion_phys_addr_t unsigned long +#define ion_virt_addr_t unsigned long + +/** + * struct ion_platform_heap - defines a heap in the given platform + * @type: type of the heap from ion_heap_type enum + * @id: unique identifier for heap. When allocating (lower numbers + * will be allocated from first) + * @name: used for debug purposes + * @base: base address of heap in physical memory if applicable + * @size: size of the heap in bytes if applicable + * @memory_type:Memory type used for the heap + * @has_outer_cache: set to 1 if outer cache is used, 0 otherwise. + * @extra_data: Extra data specific to each heap type + */ +struct ion_platform_heap { + enum ion_heap_type type; + unsigned int id; + const char *name; + ion_phys_addr_t base; + size_t size; + enum ion_memory_types memory_type; + unsigned int has_outer_cache; + void *extra_data; +}; + +/** + * struct ion_cp_heap_pdata - defines a content protection heap in the given + * platform + * @permission_type: Memory ID used to identify the memory to TZ + * @align: Alignment requirement for the memory + * @secure_base: Base address for securing the heap. + * Note: This might be different from actual base address + * of this heap in the case of a shared heap. + * @secure_size: Memory size for securing the heap. + * Note: This might be different from actual size + * of this heap in the case of a shared heap. + * @reusable Flag indicating whether this heap is reusable of not. + * (see FMEM) + * @mem_is_fmem Flag indicating whether this memory is coming from fmem + * or not. + * @fixed_position If nonzero, position in the fixed area. + * @virt_addr: Virtual address used when using fmem. + * @iommu_map_all: Indicates whether we should map whole heap into IOMMU. + * @iommu_2x_map_domain: Indicates the domain to use for overmapping. + * @request_region: function to be called when the number of allocations + * goes from 0 -> 1 + * @release_region: function to be called when the number of allocations + * goes from 1 -> 0 + * @setup_region: function to be called upon ion registration + * + */ +struct ion_cp_heap_pdata { + enum ion_permission_type permission_type; + unsigned int align; + ion_phys_addr_t secure_base; /* Base addr used when heap is shared */ + size_t secure_size; /* Size used for securing heap when heap is shared*/ + int reusable; + int mem_is_fmem; + enum ion_fixed_position fixed_position; + int iommu_map_all; + int iommu_2x_map_domain; + ion_virt_addr_t *virt_addr; + int (*request_region)(void *); + int (*release_region)(void *); + void *(*setup_region)(void); +}; + +/** + * struct ion_co_heap_pdata - defines a carveout heap in the given platform + * @adjacent_mem_id: Id of heap that this heap must be adjacent to. + * @align: Alignment requirement for the memory + * @mem_is_fmem Flag indicating whether this memory is coming from fmem + * or not. + * @fixed_position If nonzero, position in the fixed area. + * @request_region: function to be called when the number of allocations + * goes from 0 -> 1 + * @release_region: function to be called when the number of allocations + * goes from 1 -> 0 + * @setup_region: function to be called upon ion registration + * + */ +struct ion_co_heap_pdata { + int adjacent_mem_id; + unsigned int align; + int mem_is_fmem; + enum ion_fixed_position fixed_position; + int (*request_region)(void *); + int (*release_region)(void *); + void *(*setup_region)(void); +}; + +/** + * struct ion_platform_data - array of platform heaps passed from board file + * @has_outer_cache: set to 1 if outer cache is used, 0 otherwise. + * @nr: number of structures in the array + * @request_region: function to be called when the number of allocations goes + * from 0 -> 1 + * @release_region: function to be called when the number of allocations goes + * from 1 -> 0 + * @setup_region: function to be called upon ion registration + * @heaps: array of platform_heap structions + * + * Provided by the board file in the form of platform data to a platform device. + */ +struct ion_platform_data { + unsigned int has_outer_cache; + int nr; + int (*request_region)(void *); + int (*release_region)(void *); + void *(*setup_region)(void); + struct ion_platform_heap heaps[]; +}; + +#ifdef CONFIG_ION + +/** + * ion_reserve() - reserve memory for ion heaps if applicable + * @data: platform data specifying starting physical address and + * size + * + * Calls memblock reserve to set aside memory for heaps that are + * located at specific memory addresses or of specfic sizes not + * managed by the kernel + */ +void ion_reserve(struct ion_platform_data *data); + +/** + * ion_client_create() - allocate a client and returns it + * @dev: the global ion device + * @heap_mask: mask of heaps this client can allocate from + * @name: used for debugging + */ +struct ion_client *ion_client_create(struct ion_device *dev, + unsigned int heap_mask, const char *name); + +/** + * msm_ion_client_create - allocate a client using the ion_device specified in + * drivers/gpu/ion/msm/msm_ion.c + * + * heap_mask and name are the same as ion_client_create, return values + * are the same as ion_client_create. + */ + +struct ion_client *msm_ion_client_create(unsigned int heap_mask, + const char *name); + +/** + * ion_client_destroy() - free's a client and all it's handles + * @client: the client + * + * Free the provided client and all it's resources including + * any handles it is holding. + */ +void ion_client_destroy(struct ion_client *client); + +/** + * ion_alloc - allocate ion memory + * @client: the client + * @len: size of the allocation + * @align: requested allocation alignment, lots of hardware blocks have + * alignment requirements of some kind + * @flags: mask of heaps to allocate from, if multiple bits are set + * heaps will be tried in order from lowest to highest order bit + * + * Allocate memory in one of the heaps provided in heap mask and return + * an opaque handle to it. + */ +struct ion_handle *ion_alloc(struct ion_client *client, size_t len, + size_t align, unsigned int flags); + +/** + * ion_free - free a handle + * @client: the client + * @handle: the handle to free + * + * Free the provided handle. + */ +void ion_free(struct ion_client *client, struct ion_handle *handle); + +/** + * ion_phys - returns the physical address and len of a handle + * @client: the client + * @handle: the handle + * @addr: a pointer to put the address in + * @len: a pointer to put the length in + * + * This function queries the heap for a particular handle to get the + * handle's physical address. It't output is only correct if + * a heap returns physically contiguous memory -- in other cases + * this api should not be implemented -- ion_sg_table should be used + * instead. Returns -EINVAL if the handle is invalid. This has + * no implications on the reference counting of the handle -- + * the returned value may not be valid if the caller is not + * holding a reference. + */ +int ion_phys(struct ion_client *client, struct ion_handle *handle, + ion_phys_addr_t *addr, size_t *len); + +/** + * ion_map_dma - return an sg_table describing a handle + * @client: the client + * @handle: the handle + * + * This function returns the sg_table describing + * a particular ion handle. + */ +struct sg_table *ion_sg_table(struct ion_client *client, + struct ion_handle *handle); + +/** + * ion_map_kernel - create mapping for the given handle + * @client: the client + * @handle: handle to map + * @flags: flags for this mapping + * + * Map the given handle into the kernel and return a kernel address that + * can be used to access this address. If no flags are specified, this + * will return a non-secure uncached mapping. + */ +void *ion_map_kernel(struct ion_client *client, struct ion_handle *handle, + unsigned long flags); + +/** + * ion_unmap_kernel() - destroy a kernel mapping for a handle + * @client: the client + * @handle: handle to unmap + */ +void ion_unmap_kernel(struct ion_client *client, struct ion_handle *handle); + +/** + * ion_share_dma_buf() - given an ion client, create a dma-buf fd + * @client: the client + * @handle: the handle + */ +int ion_share_dma_buf(struct ion_client *client, struct ion_handle *handle); + +/** + * ion_import_dma_buf() - given an dma-buf fd from the ion exporter get handle + * @client: the client + * @fd: the dma-buf fd + * + * Given an dma-buf fd that was allocated through ion via ion_share_dma_buf, + * import that fd and return a handle representing it. If a dma-buf from + * another exporter is passed in this function will return ERR_PTR(-EINVAL) + */ +struct ion_handle *ion_import_dma_buf(struct ion_client *client, int fd); + +/** + * ion_handle_get_flags - get the flags for a given handle + * + * @client - client who allocated the handle + * @handle - handle to get the flags + * @flags - pointer to store the flags + * + * Gets the current flags for a handle. These flags indicate various options + * of the buffer (caching, security, etc.) + */ +int ion_handle_get_flags(struct ion_client *client, struct ion_handle *handle, + unsigned long *flags); + + +/** + * ion_map_iommu - map the given handle into an iommu + * + * @client - client who allocated the handle + * @handle - handle to map + * @domain_num - domain number to map to + * @partition_num - partition number to allocate iova from + * @align - alignment for the iova + * @iova_length - length of iova to map. If the iova length is + * greater than the handle length, the remaining + * address space will be mapped to a dummy buffer. + * @iova - pointer to store the iova address + * @buffer_size - pointer to store the size of the buffer + * @flags - flags for options to map + * @iommu_flags - flags specific to the iommu. + * + * Maps the handle into the iova space specified via domain number. Iova + * will be allocated from the partition specified via partition_num. + * Returns 0 on success, negative value on error. + */ +int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, + int domain_num, int partition_num, unsigned long align, + unsigned long iova_length, unsigned long *iova, + unsigned long *buffer_size, + unsigned long flags, unsigned long iommu_flags); + + +/** + * ion_handle_get_size - get the allocated size of a given handle + * + * @client - client who allocated the handle + * @handle - handle to get the size + * @size - pointer to store the size + * + * gives the allocated size of a handle. returns 0 on success, negative + * value on error + * + * NOTE: This is intended to be used only to get a size to pass to map_iommu. + * You should *NOT* rely on this for any other usage. + */ + +int ion_handle_get_size(struct ion_client *client, struct ion_handle *handle, + unsigned long *size); + +/** + * ion_unmap_iommu - unmap the handle from an iommu + * + * @client - client who allocated the handle + * @handle - handle to unmap + * @domain_num - domain to unmap from + * @partition_num - partition to unmap from + * + * Decrement the reference count on the iommu mapping. If the count is + * 0, the mapping will be removed from the iommu. + */ +void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, + int domain_num, int partition_num); + + +/** + * ion_secure_heap - secure a heap + * + * @client - a client that has allocated from the heap heap_id + * @heap_id - heap id to secure. + * @version - version of content protection + * @data - extra data needed for protection + * + * Secure a heap + * Returns 0 on success + */ +int ion_secure_heap(struct ion_device *dev, int heap_id, int version, + void *data); + +/** + * ion_unsecure_heap - un-secure a heap + * + * @client - a client that has allocated from the heap heap_id + * @heap_id - heap id to un-secure. + * @version - version of content protection + * @data - extra data needed for protection + * + * Un-secure a heap + * Returns 0 on success + */ +int ion_unsecure_heap(struct ion_device *dev, int heap_id, int version, + void *data); + +/** + * msm_ion_secure_heap - secure a heap. Wrapper around ion_secure_heap. + * + * @heap_id - heap id to secure. + * + * Secure a heap + * Returns 0 on success + */ +int msm_ion_secure_heap(int heap_id); + +/** + * msm_ion_unsecure_heap - unsecure a heap. Wrapper around ion_unsecure_heap. + * + * @heap_id - heap id to secure. + * + * Un-secure a heap + * Returns 0 on success + */ +int msm_ion_unsecure_heap(int heap_id); + +/** + * msm_ion_secure_heap_2_0 - secure a heap using 2.0 APIs + * Wrapper around ion_secure_heap. + * + * @heap_id - heap id to secure. + * @usage - usage hint to TZ + * + * Secure a heap + * Returns 0 on success + */ +int msm_ion_secure_heap_2_0(int heap_id, enum cp_mem_usage usage); + +/** + * msm_ion_unsecure_heap - unsecure a heap secured with 3.0 APIs. + * Wrapper around ion_unsecure_heap. + * + * @heap_id - heap id to secure. + * @usage - usage hint to TZ + * + * Un-secure a heap + * Returns 0 on success + */ +int msm_ion_unsecure_heap_2_0(int heap_id, enum cp_mem_usage usage); + +/** + * msm_ion_do_cache_op - do cache operations. + * + * @client - pointer to ION client. + * @handle - pointer to buffer handle. + * @vaddr - virtual address to operate on. + * @len - Length of data to do cache operation on. + * @cmd - Cache operation to perform: + * ION_IOC_CLEAN_CACHES + * ION_IOC_INV_CACHES + * ION_IOC_CLEAN_INV_CACHES + * + * Returns 0 on success + */ +int msm_ion_do_cache_op(struct ion_client *client, struct ion_handle *handle, + void *vaddr, unsigned long len, unsigned int cmd); + +#else +static inline void ion_reserve(struct ion_platform_data *data) +{ + +} + +static inline struct ion_client *ion_client_create(struct ion_device *dev, + unsigned int heap_mask, const char *name) +{ + return ERR_PTR(-ENODEV); +} + +static inline struct ion_client *msm_ion_client_create(unsigned int heap_mask, + const char *name) +{ + return ERR_PTR(-ENODEV); +} + +static inline void ion_client_destroy(struct ion_client *client) { } + +static inline struct ion_handle *ion_alloc(struct ion_client *client, + size_t len, size_t align, unsigned int flags) +{ + return ERR_PTR(-ENODEV); +} + +static inline void ion_free(struct ion_client *client, + struct ion_handle *handle) { } + + +static inline int ion_phys(struct ion_client *client, + struct ion_handle *handle, ion_phys_addr_t *addr, size_t *len) +{ + return -ENODEV; +} + +static inline struct sg_table *ion_sg_table(struct ion_client *client, + struct ion_handle *handle) +{ + return ERR_PTR(-ENODEV); +} + +static inline void *ion_map_kernel(struct ion_client *client, + struct ion_handle *handle, unsigned long flags) +{ + return ERR_PTR(-ENODEV); +} + +static inline void ion_unmap_kernel(struct ion_client *client, + struct ion_handle *handle) { } + +static inline int ion_share_dma_buf(struct ion_client *client, struct ion_handle *handle) +{ + return -ENODEV; +} + +static inline struct ion_handle *ion_import_dma_buf(struct ion_client *client, int fd) +{ + return ERR_PTR(-ENODEV); +} + +static inline int ion_handle_get_flags(struct ion_client *client, + struct ion_handle *handle, unsigned long *flags) +{ + return -ENODEV; +} + +static inline int ion_map_iommu(struct ion_client *client, + struct ion_handle *handle, int domain_num, + int partition_num, unsigned long align, + unsigned long iova_length, unsigned long *iova, + unsigned long *buffer_size, + unsigned long flags, + unsigned long iommu_flags) +{ + return -ENODEV; +} + +static inline void ion_unmap_iommu(struct ion_client *client, + struct ion_handle *handle, int domain_num, + int partition_num) +{ + return; +} + +static inline int ion_secure_heap(struct ion_device *dev, int heap_id, + int version, void *data) +{ + return -ENODEV; + +} + +static inline int ion_unsecure_heap(struct ion_device *dev, int heap_id, + int version, void *data) +{ + return -ENODEV; +} + +static inline int msm_ion_secure_heap(int heap_id) +{ + return -ENODEV; + +} + +static inline int msm_ion_unsecure_heap(int heap_id) +{ + return -ENODEV; +} + +static inline int msm_ion_secure_heap_2_0(int heap_id, enum cp_mem_usage usage) +{ + return -ENODEV; +} + +static inline int msm_ion_unsecure_heap_2_0(int heap_id, + enum cp_mem_usage usage) +{ + return -ENODEV; +} + +static inline int msm_ion_do_cache_op(struct ion_client *client, + struct ion_handle *handle, void *vaddr, + unsigned long len, unsigned int cmd) +{ + return -ENODEV; +} + +#endif /* CONFIG_ION */ +#endif /* __KERNEL__ */ + +/** + * DOC: Ion Userspace API + * + * create a client by opening /dev/ion + * most operations handled via following ioctls + * + */ + +/** + * struct ion_allocation_data - metadata passed from userspace for allocations + * @len: size of the allocation + * @align: required alignment of the allocation + * @flags: flags passed to heap + * @handle: pointer that will be populated with a cookie to use to refer + * to this allocation + * + * Provided by userspace as an argument to the ioctl + */ +struct ion_allocation_data { + size_t len; + size_t align; + unsigned int flags; + struct ion_handle *handle; +}; + +/** + * struct ion_fd_data - metadata passed to/from userspace for a handle/fd pair + * @handle: a handle + * @fd: a file descriptor representing that handle + * + * For ION_IOC_SHARE or ION_IOC_MAP userspace populates the handle field with + * the handle returned from ion alloc, and the kernel returns the file + * descriptor to share or map in the fd field. For ION_IOC_IMPORT, userspace + * provides the file descriptor and the kernel returns the handle. + */ +struct ion_fd_data { + struct ion_handle *handle; + int fd; +}; + +/** + * struct ion_handle_data - a handle passed to/from the kernel + * @handle: a handle + */ +struct ion_handle_data { + struct ion_handle *handle; +}; + +/** + * struct ion_custom_data - metadata passed to/from userspace for a custom ioctl + * @cmd: the custom ioctl function to call + * @arg: additional data to pass to the custom ioctl, typically a user + * pointer to a predefined structure + * + * This works just like the regular cmd and arg fields of an ioctl. + */ +struct ion_custom_data { + unsigned int cmd; + unsigned long arg; +}; + + +/* struct ion_flush_data - data passed to ion for flushing caches + * + * @handle: handle with data to flush + * @fd: fd to flush + * @vaddr: userspace virtual address mapped with mmap + * @offset: offset into the handle to flush + * @length: length of handle to flush + * + * Performs cache operations on the handle. If p is the start address + * of the handle, p + offset through p + offset + length will have + * the cache operations performed + */ +struct ion_flush_data { + struct ion_handle *handle; + int fd; + void *vaddr; + unsigned int offset; + unsigned int length; +}; + +/* struct ion_flag_data - information about flags for this buffer + * + * @handle: handle to get flags from + * @flags: flags of this handle + * + * Takes handle as an input and outputs the flags from the handle + * in the flag field. + */ +struct ion_flag_data { + struct ion_handle *handle; + unsigned long flags; +}; + +#define ION_IOC_MAGIC 'I' + +/** + * DOC: ION_IOC_ALLOC - allocate memory + * + * Takes an ion_allocation_data struct and returns it with the handle field + * populated with the opaque handle for the allocation. + */ +#define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, \ + struct ion_allocation_data) + +/** + * DOC: ION_IOC_FREE - free memory + * + * Takes an ion_handle_data struct and frees the handle. + */ +#define ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data) + +/** + * DOC: ION_IOC_MAP - get a file descriptor to mmap + * + * Takes an ion_fd_data struct with the handle field populated with a valid + * opaque handle. Returns the struct with the fd field set to a file + * descriptor open in the current address space. This file descriptor + * can then be used as an argument to mmap. + */ +#define ION_IOC_MAP _IOWR(ION_IOC_MAGIC, 2, struct ion_fd_data) + +/** + * DOC: ION_IOC_SHARE - creates a file descriptor to use to share an allocation + * + * Takes an ion_fd_data struct with the handle field populated with a valid + * opaque handle. Returns the struct with the fd field set to a file + * descriptor open in the current address space. This file descriptor + * can then be passed to another process. The corresponding opaque handle can + * be retrieved via ION_IOC_IMPORT. + */ +#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data) + +/** + * DOC: ION_IOC_IMPORT - imports a shared file descriptor + * + * Takes an ion_fd_data struct with the fd field populated with a valid file + * descriptor obtained from ION_IOC_SHARE and returns the struct with the handle + * filed set to the corresponding opaque handle. + */ +#define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, int) + +/** + * DOC: ION_IOC_CUSTOM - call architecture specific ion ioctl + * + * Takes the argument of the architecture specific ioctl to call and + * passes appropriate userdata for that ioctl + */ +#define ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, struct ion_custom_data) + + +/** + * DOC: ION_IOC_CLEAN_CACHES - clean the caches + * + * Clean the caches of the handle specified. + */ +#define ION_IOC_CLEAN_CACHES _IOWR(ION_IOC_MAGIC, 7, \ + struct ion_flush_data) +/** + * DOC: ION_MSM_IOC_INV_CACHES - invalidate the caches + * + * Invalidate the caches of the handle specified. + */ +#define ION_IOC_INV_CACHES _IOWR(ION_IOC_MAGIC, 8, \ + struct ion_flush_data) +/** + * DOC: ION_MSM_IOC_CLEAN_CACHES - clean and invalidate the caches + * + * Clean and invalidate the caches of the handle specified. + */ +#define ION_IOC_CLEAN_INV_CACHES _IOWR(ION_IOC_MAGIC, 9, \ + struct ion_flush_data) + +/** + * DOC: ION_IOC_GET_FLAGS - get the flags of the handle + * + * Gets the flags of the current handle which indicate cachability, + * secure state etc. + */ +#define ION_IOC_GET_FLAGS _IOWR(ION_IOC_MAGIC, 10, \ + struct ion_flag_data) +#endif /* _LINUX_ION_H */ diff --git a/include/linux/msm_adsp.h b/include/linux/msm_adsp.h new file mode 100644 index 0000000..ca23ad8 --- /dev/null +++ b/include/linux/msm_adsp.h @@ -0,0 +1,78 @@ +/* include/linux/msm_adsp.h + * + * Copyright (C) 2007 Google, Inc. + * Author: Iliyan Malchev + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#ifndef __LINUX_MSM_ADSP_H +#define __LINUX_MSM_ADSP_H + +#include +#include + +#define ADSP_IOCTL_MAGIC 'q' + +/* ADSP_IOCTL_WRITE_COMMAND */ +struct adsp_command_t { + uint16_t queue; + uint32_t len; /* bytes */ + uint8_t *data; +}; + +/* ADSP_IOCTL_GET_EVENT */ +struct adsp_event_t { + uint16_t type; /* 1 == event (RPC), 0 == message (adsp) */ + uint32_t timeout_ms; /* -1 for infinite, 0 for immediate return */ + uint16_t msg_id; + uint16_t flags; /* 1 == 16--bit event, 0 == 32-bit event */ + uint32_t len; /* size in, number of bytes out */ + uint8_t *data; +}; + +#define ADSP_IOCTL_ENABLE \ + _IOR(ADSP_IOCTL_MAGIC, 1, unsigned) + +#define ADSP_IOCTL_DISABLE \ + _IOR(ADSP_IOCTL_MAGIC, 2, unsigned) + +#define ADSP_IOCTL_DISABLE_ACK \ + _IOR(ADSP_IOCTL_MAGIC, 3, unsigned) + +#define ADSP_IOCTL_WRITE_COMMAND \ + _IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *) + +#define ADSP_IOCTL_GET_EVENT \ + _IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *) + +#define ADSP_IOCTL_SET_CLKRATE \ + _IOR(ADSP_IOCTL_MAGIC, 6, unsigned) + +#define ADSP_IOCTL_DISABLE_EVENT_RSP \ + _IOR(ADSP_IOCTL_MAGIC, 10, unsigned) + +#define ADSP_IOCTL_REGISTER_PMEM \ + _IOW(ADSP_IOCTL_MAGIC, 13, unsigned) + +#define ADSP_IOCTL_UNREGISTER_PMEM \ + _IOW(ADSP_IOCTL_MAGIC, 14, unsigned) + +/* Cause any further GET_EVENT ioctls to fail (-ENODEV) + * until the device is closed and reopened. Useful for + * terminating event dispatch threads + */ +#define ADSP_IOCTL_ABORT_EVENT_READ \ + _IOW(ADSP_IOCTL_MAGIC, 15, unsigned) + +#define ADSP_IOCTL_LINK_TASK \ + _IOW(ADSP_IOCTL_MAGIC, 16, unsigned) + +#endif diff --git a/include/linux/msm_audio.h b/include/linux/msm_audio.h index 1f64ddf..4eb8a65 100644 --- a/include/linux/msm_audio.h +++ b/include/linux/msm_audio.h @@ -1,7 +1,7 @@ /* include/linux/msm_audio.h * * Copyright (C) 2008 Google, Inc. - * Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved. + * Copyright (c) 2012 Code Aurora Forum. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and @@ -64,6 +64,9 @@ unsigned short) #define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, \ struct msm_audio_bitstream_error_info) + +#define AUDIO_SET_SRS_TRUMEDIA_PARAM _IOW(AUDIO_IOCTL_MAGIC, 43, unsigned) + /* Qualcomm extensions */ #define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 80, \ struct msm_audio_stream_config) @@ -133,6 +136,8 @@ #define IIR_ENABLE 0x0004 #define QCONCERT_PLUS_ENABLE 0x0008 #define MBADRC_ENABLE 0x0010 +#define SRS_ENABLE 0x0020 +#define SRS_DISABLE 0x0040 #define AGC_ENABLE 0x0001 #define NS_ENABLE 0x0002 @@ -217,6 +222,28 @@ struct msm_snd_device_config { #define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *) +enum cad_device_path_type { + CAD_DEVICE_PATH_RX, /*For Decoding session*/ + CAD_DEVICE_PATH_TX, /* For Encoding session*/ + CAD_DEVICE_PATH_RX_TX, /* For Voice call */ + CAD_DEVICE_PATH_LB, /* For loopback (FM Analog)*/ + CAD_DEVICE_PATH_MAX +}; + +struct cad_devices_type { + uint32_t rx_device; + uint32_t tx_device; + enum cad_device_path_type pathtype; +}; + +struct msm_cad_device_config { + struct cad_devices_type device; + uint32_t ear_mute; + uint32_t mic_mute; +}; + +#define CAD_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_cad_device_config *) + #define SND_METHOD_VOICE 0 struct msm_snd_volume_config { @@ -227,6 +254,14 @@ struct msm_snd_volume_config { #define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *) +struct msm_cad_volume_config { + struct cad_devices_type device; + uint32_t method; + uint32_t volume; +}; + +#define CAD_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_cad_volume_config *) + /* Returns the number of SND endpoints supported. */ #define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) @@ -249,6 +284,24 @@ struct msm_snd_endpoint { #define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *) #define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *) +/*return the number of CAD endpoints supported. */ + +#define CAD_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) + +struct msm_cad_endpoint { + int id; /* input and output */ + char name[64]; /* output only */ +}; + +/* Takes an index between 0 and one less than the number returned by + * SND_GET_NUM_ENDPOINTS, and returns the CAD index and name of a + * CAD endpoint. On input, the .id field contains the number of the + * endpoint, and on exit it contains the SND index, while .name contains + * the description of the endpoint. + */ + +#define CAD_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_cad_endpoint *) + struct msm_audio_pcm_config { uint32_t pcm_feedback; /* 0 - disable > 0 - enable */ uint32_t buffer_count; /* Number of buffers to allocate */ diff --git a/include/linux/msm_audio_mvs.h b/include/linux/msm_audio_mvs.h new file mode 100644 index 0000000..37a6ee7 --- /dev/null +++ b/include/linux/msm_audio_mvs.h @@ -0,0 +1,112 @@ +#ifndef __MSM_AUDIO_MVS_H +#define __MSM_AUDIO_MVS_H + +#include + +#define AUDIO_GET_MVS_CONFIG _IOW(AUDIO_IOCTL_MAGIC, \ + (AUDIO_MAX_COMMON_IOCTL_NUM + 0), unsigned) +#define AUDIO_SET_MVS_CONFIG _IOR(AUDIO_IOCTL_MAGIC, \ + (AUDIO_MAX_COMMON_IOCTL_NUM + 1), unsigned) + +/* MVS modes */ +#define MVS_MODE_IS733 0x1 +#define MVS_MODE_IS127 0x2 +#define MVS_MODE_4GV_NB 0x3 +#define MVS_MODE_4GV_WB 0x4 +#define MVS_MODE_AMR 0x5 +#define MVS_MODE_EFR 0x6 +#define MVS_MODE_FR 0x7 +#define MVS_MODE_HR 0x8 +#define MVS_MODE_LINEAR_PCM 0x9 +#define MVS_MODE_G711 0xA +#define MVS_MODE_PCM 0xC +#define MVS_MODE_AMR_WB 0xD +#define MVS_MODE_G729A 0xE +#define MVS_MODE_G711A 0xF +#define MVS_MODE_G722 0x10 +#define MVS_MODE_PCM_WB 0x80000000 + +enum msm_audio_amr_mode { + MVS_AMR_MODE_0475, /* AMR 4.75 kbps */ + MVS_AMR_MODE_0515, /* AMR 5.15 kbps */ + MVS_AMR_MODE_0590, /* AMR 5.90 kbps */ + MVS_AMR_MODE_0670, /* AMR 6.70 kbps */ + MVS_AMR_MODE_0740, /* AMR 7.40 kbps */ + MVS_AMR_MODE_0795, /* AMR 7.95 kbps */ + MVS_AMR_MODE_1020, /* AMR 10.20 kbps */ + MVS_AMR_MODE_1220, /* AMR 12.20 kbps */ + MVS_AMR_MODE_0660, /* AMR-WB 6.60 kbps */ + MVS_AMR_MODE_0885, /* AMR-WB 8.85 kbps */ + MVS_AMR_MODE_1265, /* AMR-WB 12.65 kbps */ + MVS_AMR_MODE_1425, /* AMR-WB 14.25 kbps */ + MVS_AMR_MODE_1585, /* AMR-WB 15.85 kbps */ + MVS_AMR_MODE_1825, /* AMR-WB 18.25 kbps */ + MVS_AMR_MODE_1985, /* AMR-WB 19.85 kbps */ + MVS_AMR_MODE_2305, /* AMR-WB 23.05 kbps */ + MVS_AMR_MODE_2385, /* AMR-WB 23.85 kbps */ + MVS_AMR_MODE_UNDEF +}; + +enum msm_audio_voc_rate { + MVS_VOC_0_RATE, /* Blank frame */ + MVS_VOC_8_RATE, /* 1/8 rate */ + MVS_VOC_4_RATE, /* 1/4 rate */ + MVS_VOC_2_RATE, /* 1/2 rate */ + MVS_VOC_1_RATE /* Full rate */ +}; + +enum msm_audio_amr_frame_type { + MVS_AMR_SPEECH_GOOD, /* Good speech frame */ + MVS_AMR_SPEECH_DEGRADED, /* Speech degraded */ + MVS_AMR_ONSET, /* Onset */ + MVS_AMR_SPEECH_BAD, /* Corrupt speech frame (bad CRC) */ + MVS_AMR_SID_FIRST, /* First silence descriptor */ + MVS_AMR_SID_UPDATE, /* Comfort noise frame */ + MVS_AMR_SID_BAD, /* Corrupt SID frame (bad CRC) */ + MVS_AMR_NO_DATA, /* Nothing to transmit */ + MVS_AMR_SPEECH_LOST /* Downlink speech lost */ +}; + +enum msm_audio_g711a_mode { + MVS_G711A_MODE_MULAW, + MVS_G711A_MODE_ALAW +}; + +enum mvs_g722_mode_type { + MVS_G722_MODE_01, + MVS_G722_MODE_02, + MVS_G722_MODE_03, + MVS_G722_MODE_MAX, + MVS_G722_MODE_UNDEF +}; + +enum msm_audio_g711a_frame_type { + MVS_G711A_SPEECH_GOOD, + MVS_G711A_SID, + MVS_G711A_NO_DATA, + MVS_G711A_ERASURE +}; + +enum msm_audio_g729a_frame_type { + MVS_G729A_NO_DATA, + MVS_G729A_SPEECH_GOOD, + MVS_G729A_SID, + MVS_G729A_ERASURE +}; + +struct msm_audio_mvs_config { + uint32_t mvs_mode; + uint32_t rate_type; + uint32_t dtx_mode; +}; + +#define MVS_MAX_VOC_PKT_SIZE 640 + +struct msm_audio_mvs_frame { + uint32_t frame_type; + uint32_t len; + uint8_t voc_pkt[MVS_MAX_VOC_PKT_SIZE]; + +}; + +#endif /* __MSM_AUDIO_MVS_H */ diff --git a/include/linux/msm_audio_voicememo.h b/include/linux/msm_audio_voicememo.h index a832e66..d616c2e 100644 --- a/include/linux/msm_audio_voicememo.h +++ b/include/linux/msm_audio_voicememo.h @@ -1,37 +1,3 @@ -/* Copyright (c) 2009, Code Aurora Forum. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, and the entire permission notice in its entirety, - * including the disclaimer of warranties. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * ALTERNATIVELY, this product may be distributed under the terms of - * the GNU General Public License, version 2, in which case the provisions - * of the GPL version 2 are required INSTEAD OF the BSD license. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF - * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - */ - #ifndef __MSM_AUDIO_VOICEMEMO_H #define __MSM_AUDIO_VOICEMEMO_H diff --git a/include/linux/msm_kgsl.h b/include/linux/msm_kgsl.h index 43dc3ce..7837bad 100644 --- a/include/linux/msm_kgsl.h +++ b/include/linux/msm_kgsl.h @@ -1,31 +1,3 @@ -/* Copyright (c) 2002,2007-2010, Code Aurora Forum. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Code Aurora Forum, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ #ifndef _MSM_KGSL_H #define _MSM_KGSL_H @@ -37,6 +9,7 @@ #define KGSL_CONTEXT_NO_GMEM_ALLOC 2 #define KGSL_CONTEXT_SUBMIT_IB_LIST 4 #define KGSL_CONTEXT_CTX_SWITCH 8 +#define KGSL_CONTEXT_PREAMBLE 16 /* Memory allocayion flags */ #define KGSL_MEMFLAGS_GPUREADONLY 0x01000000 @@ -53,23 +26,43 @@ #define KGSL_FLAGS_RESERVED2 0x00000080 #define KGSL_FLAGS_SOFT_RESET 0x00000100 +/* Clock flags to show which clocks should be controled by a given platform */ +#define KGSL_CLK_SRC 0x00000001 +#define KGSL_CLK_CORE 0x00000002 +#define KGSL_CLK_IFACE 0x00000004 +#define KGSL_CLK_MEM 0x00000008 +#define KGSL_CLK_MEM_IFACE 0x00000010 +#define KGSL_CLK_AXI 0x00000020 + +/* + * Reset status values for context + */ +enum kgsl_ctx_reset_stat { + KGSL_CTX_STAT_NO_ERROR = 0x00000000, + KGSL_CTX_STAT_GUILTY_CONTEXT_RESET_EXT = 0x00000001, + KGSL_CTX_STAT_INNOCENT_CONTEXT_RESET_EXT = 0x00000002, + KGSL_CTX_STAT_UNKNOWN_CONTEXT_RESET_EXT = 0x00000003 +}; + #define KGSL_MAX_PWRLEVELS 5 #define KGSL_CONVERT_TO_MBPS(val) \ - (val*1000*1000U) + (val*1000*1000U) /* device id */ enum kgsl_deviceid { - KGSL_DEVICE_3D0 = 0x00000000, - KGSL_DEVICE_2D0 = 0x00000001, - KGSL_DEVICE_2D1 = 0x00000002, - KGSL_DEVICE_MAX = 0x00000003 + KGSL_DEVICE_3D0 = 0x00000000, + KGSL_DEVICE_2D0 = 0x00000001, + KGSL_DEVICE_2D1 = 0x00000002, + KGSL_DEVICE_MAX = 0x00000003 }; enum kgsl_user_mem_type { KGSL_USER_MEM_TYPE_PMEM = 0x00000000, KGSL_USER_MEM_TYPE_ASHMEM = 0x00000001, - KGSL_USER_MEM_TYPE_ADDR = 0x00000002 + KGSL_USER_MEM_TYPE_ADDR = 0x00000002, + KGSL_USER_MEM_TYPE_ION = 0x00000003, + KGSL_USER_MEM_TYPE_MAX = 0x00000004, }; struct kgsl_devinfo { @@ -81,7 +74,6 @@ struct kgsl_devinfo { unsigned int chip_id; unsigned int mmu_enabled; unsigned int gmem_gpubaseaddr; - /* * This field contains the adreno revision * number 200, 205, 220, etc... @@ -128,6 +120,7 @@ enum kgsl_property_type { KGSL_PROP_MMU_ENABLE = 0x00000006, KGSL_PROP_INTERRUPT_WAITS = 0x00000007, KGSL_PROP_VERSION = 0x00000008, + KGSL_PROP_GPU_RESET_STAT = 0x00000009 }; struct kgsl_shadowprop { @@ -136,53 +129,39 @@ struct kgsl_shadowprop { unsigned int flags; /* contains KGSL_FLAGS_ values */ }; - - struct kgsl_pwrlevel { - unsigned int gpu_freq; - unsigned int bus_freq; + unsigned int gpu_freq; + unsigned int bus_freq; + unsigned int io_fraction; }; struct kgsl_version { - unsigned int drv_major; - unsigned int drv_minor; - unsigned int dev_major; - unsigned int dev_minor; + unsigned int drv_major; + unsigned int drv_minor; + unsigned int dev_major; + unsigned int dev_minor; }; #ifdef __KERNEL__ -#define KGSL_3D0_REG_MEMORY "kgsl_3d0_reg_memory" -#define KGSL_3D0_IRQ "kgsl_3d0_irq" -#define KGSL_2D0_REG_MEMORY "kgsl_2d0_reg_memory" -#define KGSL_2D0_IRQ "kgsl_2d0_irq" -#define KGSL_2D1_REG_MEMORY "kgsl_2d1_reg_memory" -#define KGSL_2D1_IRQ "kgsl_2d1_irq" - -struct kgsl_grp_clk_name { - const char *clk; - const char *pclk; -}; +#define KGSL_3D0_REG_MEMORY "kgsl_3d0_reg_memory" +#define KGSL_3D0_IRQ "kgsl_3d0_irq" +#define KGSL_2D0_REG_MEMORY "kgsl_2d0_reg_memory" +#define KGSL_2D0_IRQ "kgsl_2d0_irq" +#define KGSL_2D1_REG_MEMORY "kgsl_2d1_reg_memory" +#define KGSL_2D1_IRQ "kgsl_2d1_irq" -struct kgsl_device_pwr_data { +struct kgsl_device_platform_data { struct kgsl_pwrlevel pwrlevel[KGSL_MAX_PWRLEVELS]; int init_level; int num_levels; int (*set_grp_async)(void); unsigned int idle_timeout; + bool strtstp_sleepwake; unsigned int nap_allowed; -}; - -struct kgsl_clk_data { - struct kgsl_grp_clk_name name; + unsigned int clk_map; + unsigned int idle_needed; struct msm_bus_scale_pdata *bus_scale_table; -}; - -struct kgsl_device_platform_data { - struct kgsl_device_pwr_data pwr_data; - struct kgsl_clk_data clk; - /* imem_clk_name is for 3d only, not used in 2d devices */ - struct kgsl_grp_clk_name imem_clk_name; const char *iommu_user_ctx_name; const char *iommu_priv_ctx_name; }; @@ -293,11 +272,11 @@ struct kgsl_cmdstream_freememontimestamp { #define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP \ _IOW(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp) - /* Previous versions of this header had incorrectly defined - IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP as a read-only ioctl instead - of a write only ioctl. To ensure binary compatability, the following - #define will be used to intercept the incorrect ioctl - */ +/* Previous versions of this header had incorrectly defined + IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP as a read-only ioctl instead + of a write only ioctl. To ensure binary compatability, the following + #define will be used to intercept the incorrect ioctl +*/ #define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP_OLD \ _IOR(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp) @@ -438,7 +417,6 @@ struct kgsl_cmdwindow_write { #define IOCTL_KGSL_CMDWINDOW_WRITE \ _IOW(KGSL_IOC_TYPE, 0x2e, struct kgsl_cmdwindow_write) - struct kgsl_gpumem_alloc { unsigned long gpuaddr; size_t size; @@ -458,9 +436,9 @@ struct kgsl_cff_syncmem { _IOW(KGSL_IOC_TYPE, 0x30, struct kgsl_cff_syncmem) /* -* A timestamp event allows the user space to register an action following an -* expired timestamp. -*/ + * A timestamp event allows the user space to register an action following an + * expired timestamp. + */ struct kgsl_timestamp_event { int type; /* Type of event (see list below) */ diff --git a/include/linux/msm_mdp.h b/include/linux/msm_mdp.h index d2c8c8b..e489105 100644 --- a/include/linux/msm_mdp.h +++ b/include/linux/msm_mdp.h @@ -32,8 +32,11 @@ #define MSMFB_OVERLAY_SET _IOWR(MSMFB_IOCTL_MAGIC, 135, \ struct mdp_overlay) #define MSMFB_OVERLAY_UNSET _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int) + #define MSMFB_OVERLAY_PLAY _IOW(MSMFB_IOCTL_MAGIC, 137, \ struct msmfb_overlay_data) +#define MSMFB_OVERLAY_QUEUE MSMFB_OVERLAY_PLAY + #define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, \ struct mdp_page_protection) #define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, \ @@ -65,7 +68,9 @@ struct msmfb_data) #define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155) #define MSMFB_MDP_PP _IOWR(MSMFB_IOCTL_MAGIC, 156, struct msmfb_mdp_pp) - +#define MSMFB_OVERLAY_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 160, unsigned int) +#define MSMFB_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 161, unsigned int) +#define MSMFB_METADATA_SET _IOW(MSMFB_IOCTL_MAGIC, 162, struct msmfb_metadata) #define FB_TYPE_3D_PANEL 0x10101010 #define MDP_IMGTYPE2_START 0x10000 #define MSMFB_DRIVER_VERSION 0xF9E8D701 @@ -96,7 +101,10 @@ enum { MDP_Y_CB_CR_H2V2, /* Y, Cb and Cr, planar */ MDP_Y_CRCB_H1V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ MDP_Y_CBCR_H1V1, /* Y and CbCr, pseduo planer w/ Cb is in MSB */ + MDP_YCRCB_H1V1, /* YCrCb interleave */ + MDP_YCBCR_H1V1, /* YCbCr interleave */ MDP_IMGTYPE_LIMIT, + MDP_RGB_BORDERFILL, /* border fill pipe */ MDP_BGR_565 = MDP_IMGTYPE2_START, /* BGR 565 planer */ MDP_FB_FORMAT, /* framebuffer format */ MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */ @@ -179,8 +187,8 @@ struct mdp_img { * {3x3} + {3} ccs matrix */ -#define MDP_CCS_RGB2YUV 0 -#define MDP_CCS_YUV2RGB 1 +#define MDP_CCS_RGB2YUV 0 +#define MDP_CCS_YUV2RGB 1 #define MDP_CCS_SIZE 9 #define MDP_BV_SIZE 3 @@ -271,7 +279,7 @@ struct mdp_overlay { struct msmfb_img src; struct mdp_rect src_rect; struct mdp_rect dst_rect; - uint32_t z_order; /* stage number */ + int z_order; /* stage number */ uint32_t is_fg; /* control alpha & transp */ uint32_t alpha; uint32_t transp_mask; @@ -326,6 +334,7 @@ enum { MDP_BLOCK_DMA_P, MDP_BLOCK_DMA_S, MDP_BLOCK_DMA_E, + MDP_BLOCK_OVERLAY_2, MDP_BLOCK_MAX, }; @@ -356,7 +365,7 @@ struct mdp_histogram_data { uint32_t *c0; uint32_t *c1; uint32_t *c2; - uint32_t extra_info[2]; + uint32_t *extra_info; }; struct mdp_pcc_coeff { @@ -465,7 +474,23 @@ struct msmfb_mdp_pp { } data; }; +enum { + metadata_op_none, + metadata_op_base_blend, + metadata_op_max +}; + +struct mdp_blend_cfg { + uint32_t is_premultiplied; +}; +struct msmfb_metadata { + uint32_t op; + uint32_t flags; + union { + struct mdp_blend_cfg blend_cfg; + } data; +}; struct mdp_page_protection { uint32_t page_protection; }; diff --git a/include/linux/msm_rmnet.h b/include/linux/msm_rmnet.h new file mode 100644 index 0000000..4417f68 --- /dev/null +++ b/include/linux/msm_rmnet.h @@ -0,0 +1,69 @@ +/* Copyright (c) 2010, Code Aurora Forum. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Code Aurora nor + * the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef _MSM_RMNET_H_ +#define _MSM_RMNET_H_ + +/* Bitmap macros for RmNET driver operation mode. */ +#define RMNET_MODE_NONE (0x00) +#define RMNET_MODE_LLP_ETH (0x01) +#define RMNET_MODE_LLP_IP (0x02) +#define RMNET_MODE_QOS (0x04) +#define RMNET_MODE_MASK (RMNET_MODE_LLP_ETH | \ + RMNET_MODE_LLP_IP | \ + RMNET_MODE_QOS) + +#define RMNET_IS_MODE_QOS(mode) \ + ((mode & RMNET_MODE_QOS) == RMNET_MODE_QOS) +#define RMNET_IS_MODE_IP(mode) \ + ((mode & RMNET_MODE_LLP_IP) == RMNET_MODE_LLP_IP) + +/* IOCTL command enum + * Values chosen to not conflict with other drivers in the ecosystem */ +enum rmnet_ioctl_cmds_e { + RMNET_IOCTL_SET_LLP_ETHERNET = 0x000089F1, /* Set Ethernet protocol */ + RMNET_IOCTL_SET_LLP_IP = 0x000089F2, /* Set RAWIP protocol */ + RMNET_IOCTL_GET_LLP = 0x000089F3, /* Get link protocol */ + RMNET_IOCTL_SET_QOS_ENABLE = 0x000089F4, /* Set QoS header enabled */ + RMNET_IOCTL_SET_QOS_DISABLE = 0x000089F5, /* Set QoS header disabled*/ + RMNET_IOCTL_GET_QOS = 0x000089F6, /* Get QoS header state */ + RMNET_IOCTL_GET_OPMODE = 0x000089F7, /* Get operation mode */ + RMNET_IOCTL_OPEN = 0x000089F8, /* Open transport port */ + RMNET_IOCTL_CLOSE = 0x000089F9, /* Close transport port */ + RMNET_IOCTL_MAX +}; + +/* QMI QoS header definition */ +#define QMI_QOS_HDR_S __attribute((__packed__)) qmi_qos_hdr_s +struct QMI_QOS_HDR_S { + unsigned char version; + unsigned char flags; + unsigned long flow_id; +}; + +#endif /* _MSM_RMNET_H_ */ diff --git a/include/linux/msm_rotator.h b/include/linux/msm_rotator.h index e69c36a..a4e4e8d 100644 --- a/include/linux/msm_rotator.h +++ b/include/linux/msm_rotator.h @@ -1,38 +1,5 @@ -/* Copyright (c) 2009, Code Aurora Forum. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, and the entire permission notice in its entirety, - * including the disclaimer of warranties. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * ALTERNATIVELY, this product may be distributed under the terms of - * the GNU General Public License, version 2, in which case the provisions - * of the GPL version 2 are required INSTEAD OF the BSD license. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF - * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - */ - #ifndef __MSM_ROTATOR_H__ +#define __MSM_ROTATOR_H__ #include #include @@ -50,7 +17,6 @@ enum rotator_clk_type { ROTATOR_CORE_CLK, - ROTATOR_AXI_CLK, ROTATOR_PCLK, ROTATOR_IMEM_CLK }; @@ -64,6 +30,8 @@ struct msm_rotator_img_info { unsigned int dst_y; unsigned char rotations; int enable; + unsigned int downscale_ratio; + unsigned int secure; }; struct msm_rotator_data_info { @@ -86,6 +54,10 @@ struct msm_rotator_platform_data { unsigned int hardware_version_number; struct msm_rot_clocks *rotator_clks; const char *regulator_name; +#ifdef CONFIG_MSM_BUS_SCALING + struct msm_bus_scale_pdata *bus_scale_table; +#endif + char rot_iommu_split_domain; }; #endif diff --git a/include/linux/msm_rpcrouter.h b/include/linux/msm_rpcrouter.h new file mode 100644 index 0000000..01d3809 --- /dev/null +++ b/include/linux/msm_rpcrouter.h @@ -0,0 +1,50 @@ +/* include/linux/msm_rpcrouter.h + * + * Copyright (c) 2009, Code Aurora Forum. All rights reserved. + * Copyright (C) 2007 Google, Inc. + * Author: San Mehat + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#ifndef __LINUX_MSM_RPCROUTER_H +#define __LINUX_MSM_RPCROUTER_H + +#include +#include + +#define RPC_ROUTER_VERSION_V1 0x00010000 + +struct rpcrouter_ioctl_server_args { + uint32_t prog; + uint32_t vers; +}; + +#define RPC_ROUTER_IOCTL_MAGIC (0xC1) + +#define RPC_ROUTER_IOCTL_GET_VERSION \ + _IOR(RPC_ROUTER_IOCTL_MAGIC, 0, unsigned int) + +#define RPC_ROUTER_IOCTL_GET_MTU \ + _IOR(RPC_ROUTER_IOCTL_MAGIC, 1, unsigned int) + +#define RPC_ROUTER_IOCTL_REGISTER_SERVER \ + _IOWR(RPC_ROUTER_IOCTL_MAGIC, 2, unsigned int) + +#define RPC_ROUTER_IOCTL_UNREGISTER_SERVER \ + _IOWR(RPC_ROUTER_IOCTL_MAGIC, 3, unsigned int) + +#define RPC_ROUTER_IOCTL_CLEAR_NETRESET \ + _IOWR(RPC_ROUTER_IOCTL_MAGIC, 4, unsigned int) + +#define RPC_ROUTER_IOCTL_GET_CURR_PKT_SIZE \ + _IOR(RPC_ROUTER_IOCTL_MAGIC, 5, unsigned int) + +#endif diff --git a/include/linux/msm_ssbi.h b/include/linux/msm_ssbi.h new file mode 100644 index 0000000..e90398a --- /dev/null +++ b/include/linux/msm_ssbi.h @@ -0,0 +1,50 @@ +/* Copyright (C) 2010 Google, Inc. + * Copyright (c) 2011, Code Aurora Forum. All rights reserved. + * Author: Dima Zavin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef _LINUX_MSM_SSBI_H +#define _LINUX_MSM_SSBI_H + +#include + +struct msm_ssbi_slave_info { + const char *name; + void *platform_data; +}; + +enum msm_ssbi_controller_type { + MSM_SBI_CTRL_SSBI = 0, + MSM_SBI_CTRL_SSBI2, + MSM_SBI_CTRL_PMIC_ARBITER, + FSM_SBI_CTRL_SSBI, +}; + +struct msm_ssbi_platform_data { + struct msm_ssbi_slave_info slave; + enum msm_ssbi_controller_type controller_type; +}; + +#ifdef CONFIG_MSM_SSBI +int msm_ssbi_write(struct device *dev, u16 addr, u8 *buf, int len); +int msm_ssbi_read(struct device *dev, u16 addr, u8 *buf, int len); +#else +static inline int msm_ssbi_write(struct device *dev, u16 addr, u8 *buf, int len) +{ + return -ENXIO; +} +static inline int msm_ssbi_read(struct device *dev, u16 addr, u8 *buf, int len) +{ + return -ENXIO; +} +#endif +#endif diff --git a/include/linux/msm_vidc_dec.h b/include/linux/msm_vidc_dec.h index fc8b5cc..3d8907a 100644 --- a/include/linux/msm_vidc_dec.h +++ b/include/linux/msm_vidc_dec.h @@ -1,32 +1,3 @@ -/* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Code Aurora Forum, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - #ifndef _MSM_VIDC_DEC_H_ #define _MSM_VIDC_DEC_H_ @@ -236,6 +207,9 @@ struct vdec_ioctl_msg { #define VDEC_IOCTL_GET_DISABLE_DMX_SUPPORT \ _IOR(VDEC_IOCTL_MAGIC, 37, struct vdec_ioctl_msg) +#define VDEC_IOCTL_SET_PERF_CLK \ + _IOR(VDEC_IOCTL_MAGIC, 38, struct vdec_ioctl_msg) + enum vdec_picture { PICTURE_TYPE_I, PICTURE_TYPE_P, @@ -543,6 +517,12 @@ struct vdec_framesize { uint32_t bottom; }; +struct vdec_aspectratioinfo { + uint32_t aspect_ratio; + uint32_t par_width; + uint32_t par_height; +}; + struct vdec_output_frameinfo { void __user *bufferaddr; size_t offset; @@ -554,6 +534,7 @@ struct vdec_output_frameinfo { void *input_frame_clientdata; struct vdec_framesize framesize; enum vdec_interlaced_format interlaced_format; + struct vdec_aspectratioinfo aspect_ratio_info; }; union vdec_msgdata { diff --git a/include/linux/msm_vidc_enc.h b/include/linux/msm_vidc_enc.h index bf149eb..519c537 100644 --- a/include/linux/msm_vidc_enc.h +++ b/include/linux/msm_vidc_enc.h @@ -454,6 +454,10 @@ struct venc_ioctl_msg{ #define VEN_IOCTL_GET_EXTRADATA \ _IOR(VEN_IOCTLBASE_ENC, 49, struct venc_ioctl_msg) +/*IOCTL params:SET: InputData - NULL, OutputData - NULL.*/ +#define VEN_IOCTL_SET_SLICE_DELIVERY_MODE \ + _IO(VEN_IOCTLBASE_ENC, 50) + struct venc_switch{ unsigned char status; }; diff --git a/libaudio/Android.mk b/libaudio/Android.mk index 83ac854..881775e 100644 --- a/libaudio/Android.mk +++ b/libaudio/Android.mk @@ -10,10 +10,22 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ AudioHardware.cpp \ - audio_hw_hal.cpp + audio_hw_hal.cpp \ ifeq ($(BOARD_HAVE_BLUETOOTH),true) - LOCAL_CFLAGS += -DWITH_A2DP + LOCAL_CFLAGS += -DWITH_A2DP +endif + +ifeq ($(BOARD_HAVE_QCOM_FM),true) + LOCAL_CFLAGS += -DWITH_QCOM_FM +endif + +ifeq ($(call is-android-codename-in-list,ICECREAM_SANDWICH),true) + LOCAL_CFLAGS += -DREG_KERNEL_UPDATE +endif + +ifeq ($(strip $(BOARD_USES_SRS_TRUEMEDIA)),true) +LOCAL_CFLAGS += -DSRS_PROCESSING endif LOCAL_SHARED_LIBRARIES := \ @@ -22,14 +34,14 @@ LOCAL_SHARED_LIBRARIES := \ libmedia ifneq ($(TARGET_SIMULATOR),true) - LOCAL_SHARED_LIBRARIES += libdl +LOCAL_SHARED_LIBRARIES += libdl endif LOCAL_STATIC_LIBRARIES := \ libmedia_helper \ libaudiohw_legacy -LOCAL_MODULE := audio.primary.$(TARGET_BOARD_PLATFORM) +LOCAL_MODULE := audio.primary.msm7x27a LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw LOCAL_MODULE_TAGS := optional @@ -42,35 +54,18 @@ LOCAL_C_INCLUDES += hardware/libhardware_legacy/include LOCAL_C_INCLUDES += frameworks/base/include LOCAL_C_INCLUDES += system/core/include -include $(BUILD_SHARED_LIBRARY) - - -# The audio policy is implemented on top of legacy policy code -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - AudioPolicyManager.cpp \ - audio_policy_hal.cpp - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libmedia - -LOCAL_STATIC_LIBRARIES := \ - libmedia_helper \ - libaudiopolicy_legacy - -LOCAL_MODULE := audio_policy.$(TARGET_BOARD_PLATFORM) -LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw -LOCAL_MODULE_TAGS := optional - -ifeq ($(BOARD_HAVE_BLUETOOTH),true) - LOCAL_CFLAGS += -DWITH_A2DP -endif - -LOCAL_C_INCLUDES := hardware/libhardware_legacy/audio +#LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include +#LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr include $(BUILD_SHARED_LIBRARY) -endif +# Load audio_policy.conf to system/etc/ +include $(CLEAR_VARS) +LOCAL_MODULE := audio_policy.conf +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) +LOCAL_SRC_FILES := audio_policy.conf +include $(BUILD_PREBUILT) + +endif \ No newline at end of file diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp index 521d429..b1bc089 100644 --- a/libaudio/AudioHardware.cpp +++ b/libaudio/AudioHardware.cpp @@ -1,6 +1,6 @@ /* ** Copyright 2008, The Android Open-Source Project -** Copyright (c) 2011, Code Aurora Forum. All rights reserved. +** Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -18,10 +18,9 @@ #include //#define LOG_NDEBUG 0 -#define LOG_TAG "AudioHardwareMSM72XX" +#define LOG_TAG "AudioHardwareMSM76XXA" #include #include - #include #include #include @@ -34,109 +33,228 @@ // hardware specific functions #include "AudioHardware.h" -#include +#ifdef QCOM_FM_ENABLED +extern "C" { +#include "HardwarePinSwitching.h" +} +#endif +//#include + -#define LOG_SND_RPC 0 // Set to 1 to log sound RPC's +#define COMBO_DEVICE_SUPPORTED // Headset speaker combo device not supported on this target +#define DUALMIC_KEY "dualmic_enabled" +#define TTY_MODE_KEY "tty_mode" +#define ECHO_SUPRESSION "ec_supported" namespace android_audio_legacy { + +#ifdef SRS_PROCESSING +void* SRSParamsG = NULL; +void* SRSParamsW = NULL; +void* SRSParamsC = NULL; +void* SRSParamsHP = NULL; +void* SRSParamsP = NULL; +void* SRSParamsHL = NULL; + +#define SRS_PARAMS_G 1 +#define SRS_PARAMS_W 2 +#define SRS_PARAMS_C 4 +#define SRS_PARAMS_HP 8 +#define SRS_PARAMS_P 16 +#define SRS_PARAMS_HL 32 +#define SRS_PARAMS_ALL 0xFF + +#endif /*SRS_PROCESSING*/ + static int audpre_index, tx_iir_index; static void * acoustic; const uint32_t AudioHardware::inputSamplingRates[] = { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }; +static int get_audpp_filter(void); +static int msm72xx_enable_postproc(bool state); +#ifdef SRS_PROCESSING +static void msm72xx_enable_srs(int flags, bool state); +#endif /*SRS_PROCESSING*/ +static int msm72xx_enable_preproc(bool state); + +// Post processing paramters +static struct rx_iir_filter iir_cfg[3]; +static struct adrc_filter adrc_cfg[3]; +static struct mbadrc_filter mbadrc_cfg[3]; +eqalizer equalizer[3]; +static uint16_t adrc_flag[3]; +static uint16_t mbadrc_flag[3]; +static uint16_t eq_flag[3]; +static uint16_t rx_iir_flag[3]; +static uint16_t agc_flag[3]; +static uint16_t ns_flag[3]; +static uint16_t txiir_flag[3]; +static bool audpp_filter_inited = false; +static bool adrc_filter_exists[3]; +static bool mbadrc_filter_exists[3]; +static int post_proc_feature_mask = 0; +static int new_post_proc_feature_mask = 0; +static bool hpcm_playback_in_progress = false; +#ifdef QCOM_TUNNEL_LPA_ENABLED +static bool lpa_playback_in_progress = false; +#endif + +//Pre processing parameters +static struct tx_iir tx_iir_cfg[9]; +static struct ns ns_cfg[9]; +static struct tx_agc tx_agc_cfg[9]; +static int enable_preproc_mask[9]; + +static int snd_device = -1; + +#define PCM_OUT_DEVICE "/dev/msm_pcm_out" +#define PCM_IN_DEVICE "/dev/msm_pcm_in" +#define PCM_CTL_DEVICE "/dev/msm_pcm_ctl" +#define PREPROC_CTL_DEVICE "/dev/msm_preproc_ctl" +#define VOICE_MEMO_DEVICE "/dev/msm_voicememo" +#ifdef QCOM_FM_ENABLED +#define FM_DEVICE "/dev/msm_fm" +#endif +#define BTHEADSET_VGS "bt_headset_vgs" +#ifdef QCOM_VOIP_ENABLED +#define MVS_DEVICE "/dev/msm_mvs" +#endif + static uint32_t SND_DEVICE_CURRENT=-1; static uint32_t SND_DEVICE_HANDSET=-1; static uint32_t SND_DEVICE_SPEAKER=-1; -static uint32_t SND_DEVICE_HEADSET=-1; static uint32_t SND_DEVICE_BT=-1; -static uint32_t SND_DEVICE_CARKIT=-1; -static uint32_t SND_DEVICE_TTY_FULL=-1; +static uint32_t SND_DEVICE_BT_EC_OFF=-1; +static uint32_t SND_DEVICE_HEADSET=-1; +static uint32_t SND_DEVICE_STEREO_HEADSET_AND_SPEAKER=-1; +static uint32_t SND_DEVICE_IN_S_SADC_OUT_HANDSET=-1; +static uint32_t SND_DEVICE_IN_S_SADC_OUT_SPEAKER_PHONE=-1; +static uint32_t SND_DEVICE_TTY_HEADSET=-1; static uint32_t SND_DEVICE_TTY_HCO=-1; static uint32_t SND_DEVICE_TTY_VCO=-1; -static uint32_t SND_DEVICE_NO_MIC_HEADSET=-1; -static uint32_t SND_DEVICE_FM_HEADSET=-1; +static uint32_t SND_DEVICE_CARKIT=-1; static uint32_t SND_DEVICE_FM_SPEAKER=-1; -static uint32_t SND_DEVICE_HEADSET_AND_SPEAKER=-1; -static uint32_t SND_DEVICE_BT_EC_OFF=-1; - +static uint32_t SND_DEVICE_FM_HEADSET=-1; +static uint32_t SND_DEVICE_NO_MIC_HEADSET=-1; +static uint32_t SND_DEVICE_FM_DIGITAL_STEREO_HEADSET=-1; +static uint32_t SND_DEVICE_FM_DIGITAL_SPEAKER_PHONE=-1; +static uint32_t SND_DEVICE_FM_DIGITAL_BT_A2DP_HEADSET=-1; +static uint32_t SND_DEVICE_FM_ANALOG_STEREO_HEADSET=-1; +static uint32_t SND_DEVICE_FM_ANALOG_STEREO_HEADSET_CODEC=-1; // ---------------------------------------------------------------------------- AudioHardware::AudioHardware() : mInit(false), mMicMute(true), mBluetoothNrec(true), mBluetoothId(0), - mOutput(0), mSndEndpoints(NULL), mCurSndDevice(-1) - + mOutput(0),mBluetoothVGS(false), mSndEndpoints(NULL), mCurSndDevice(-1), mDualMicEnabled(false) +#ifdef QCOM_FM_ENABLED + ,mFmFd(-1),FmA2dpStatus(-1) +#endif +#ifdef QCOM_VOIP_ENABLED +,mVoipFd(-1), mNumVoipStreams(0),mDirectOutput(0) +#endif { + if (get_audpp_filter() == 0) { + audpp_filter_inited = true; + } - int (*snd_get_num)(); - int (*snd_get_endpoint)(int, msm_snd_endpoint *); int (*set_acoustic_parameters)(); - - struct msm_snd_endpoint *ept; - + acoustic = ::dlopen("/system/lib/libhtc_acoustic.so", RTLD_NOW); if (acoustic == NULL ) { - LOGE("Could not open libhtc_acoustic.so"); - /* this is not really an error on non-htc devices... */ - mNumSndEndpoints = 0; - mInit = true; - return; + ALOGE("Could not open libhtc_acoustic.so"); } set_acoustic_parameters = (int (*)(void))::dlsym(acoustic, "set_acoustic_parameters"); if ((*set_acoustic_parameters) == 0 ) { - LOGE("Could not open set_acoustic_parameters()"); - return; + ALOGE("Could not open set_acoustic_parameters()"); } int rc = set_acoustic_parameters(); if (rc < 0) { - LOGE("Could not set acoustic parameters to share memory: %d", rc); -// return; + ALOGE("Could not set acoustic parameters to share memory: %d", rc); } + + m7xsnddriverfd = open("/dev/msm_snd", O_RDWR); + if (m7xsnddriverfd >= 0) { + int rc = ioctl(m7xsnddriverfd, SND_GET_NUM_ENDPOINTS, &mNumSndEndpoints); + if (rc >= 0) { + mSndEndpoints = new msm_snd_endpoint[mNumSndEndpoints]; + mInit = true; + ALOGV("constructed (%d SND endpoints)", rc); + struct msm_snd_endpoint *ept = mSndEndpoints; + for (int cnt = 0; cnt < mNumSndEndpoints; cnt++, ept++) { + ept->id = cnt; + ioctl(m7xsnddriverfd, SND_GET_ENDPOINT, ept); + ALOGV("cnt = %d ept->name = %s ept->id = %d\n", cnt, ept->name, ept->id); +#define CHECK_FOR(desc) if (!strcmp(ept->name, #desc)) SND_DEVICE_##desc = ept->id; + CHECK_FOR(CURRENT); + CHECK_FOR(HANDSET); + CHECK_FOR(SPEAKER); + CHECK_FOR(BT); + CHECK_FOR(BT_EC_OFF); + CHECK_FOR(HEADSET); + CHECK_FOR(NO_MIC_HEADSET); + CHECK_FOR(STEREO_HEADSET_AND_SPEAKER); + CHECK_FOR(IN_S_SADC_OUT_HANDSET); + CHECK_FOR(IN_S_SADC_OUT_SPEAKER_PHONE); + CHECK_FOR(TTY_HEADSET); + CHECK_FOR(TTY_HCO); + CHECK_FOR(TTY_VCO); +#ifdef QCOM_FM_ENABLED + CHECK_FOR(FM_DIGITAL_STEREO_HEADSET); + CHECK_FOR(FM_DIGITAL_SPEAKER_PHONE); + CHECK_FOR(FM_DIGITAL_BT_A2DP_HEADSET); + CHECK_FOR(FM_ANALOG_STEREO_HEADSET); + CHECK_FOR(FM_ANALOG_STEREO_HEADSET_CODEC); +#endif +#undef CHECK_FOR + } + } + else ALOGE("Could not retrieve number of MSM SND endpoints."); - snd_get_num = (int (*)(void))::dlsym(acoustic, "snd_get_num_endpoints"); - if ((*snd_get_num) == 0 ) { - LOGE("Could not open snd_get_num()"); -// return; - } + int AUTO_VOLUME_ENABLED = 0; // setting disabled as default - mNumSndEndpoints = snd_get_num(); - LOGD("mNumSndEndpoints = %d", mNumSndEndpoints); - mSndEndpoints = new msm_snd_endpoint[mNumSndEndpoints]; - mInit = true; - LOGV("constructed %d SND endpoints)", mNumSndEndpoints); - ept = mSndEndpoints; - snd_get_endpoint = (int (*)(int, msm_snd_endpoint *))::dlsym(acoustic, "snd_get_endpoint"); - if ((*snd_get_endpoint) == 0 ) { - LOGE("Could not open snd_get_endpoint()"); - return; - } + static const char *const path = "/system/etc/AutoVolumeControl.txt"; + int txtfd; + struct stat st; + char *read_buf; - for (int cnt = 0; cnt < mNumSndEndpoints; cnt++, ept++) { - ept->id = cnt; - snd_get_endpoint(cnt, ept); -#define CHECK_FOR(desc) \ - if (!strcmp(ept->name, #desc)) { \ - SND_DEVICE_##desc = ept->id; \ - LOGD("BT MATCH " #desc); \ - } else - CHECK_FOR(CURRENT) - CHECK_FOR(HANDSET) - CHECK_FOR(SPEAKER) - CHECK_FOR(BT) - CHECK_FOR(BT_EC_OFF) - CHECK_FOR(HEADSET) - CHECK_FOR(CARKIT) - CHECK_FOR(TTY_FULL) - CHECK_FOR(TTY_VCO) - CHECK_FOR(TTY_HCO) - CHECK_FOR(NO_MIC_HEADSET) - CHECK_FOR(FM_HEADSET) - CHECK_FOR(FM_SPEAKER) - CHECK_FOR(HEADSET_AND_SPEAKER) {} -#undef CHECK_FOR - } + txtfd = open(path, O_RDONLY); + if (txtfd < 0) { + ALOGE("failed to open AUTO_VOLUME_CONTROL %s: %s (%d)", + path, strerror(errno), errno); + } + else { + if (fstat(txtfd, &st) < 0) { + ALOGE("failed to stat %s: %s (%d)", + path, strerror(errno), errno); + close(txtfd); + } + + read_buf = (char *) mmap(0, st.st_size, + PROT_READ | PROT_WRITE, + MAP_PRIVATE, + txtfd, 0); + + if (read_buf == MAP_FAILED) { + ALOGE("failed to mmap parameters file: %s (%d)", + strerror(errno), errno); + close(txtfd); + } + + if(read_buf[0] =='1') + AUTO_VOLUME_ENABLED = 1; + + munmap(read_buf, st.st_size); + close(txtfd); + } + ALOGD("Auto Volume Enabled= %d", AUTO_VOLUME_ENABLED); + ioctl(m7xsnddriverfd, SND_AVC_CTL, &AUTO_VOLUME_ENABLED); + ioctl(m7xsnddriverfd, SND_AGC_CTL, &AUTO_VOLUME_ENABLED); + } else + ALOGE("Could not open MSM SND driver."); } AudioHardware::~AudioHardware() @@ -145,12 +263,23 @@ AudioHardware::~AudioHardware() closeInputStream((AudioStreamIn*)mInputs[index]); } mInputs.clear(); +#ifdef QCOM_VOIP_ENABLED + mVoipInputs.clear(); +#endif closeOutputStream((AudioStreamOut*)mOutput); delete [] mSndEndpoints; if (acoustic) { ::dlclose(acoustic); acoustic = 0; } + if (m7xsnddriverfd > 0) + { + close(m7xsnddriverfd); + m7xsnddriverfd = -1; + } + for (int index = 0; index < 9; index++) { + enable_preproc_mask[index] = 0; + } mInit = false; } @@ -160,28 +289,56 @@ status_t AudioHardware::initCheck() } AudioStreamOut* AudioHardware::openOutputStream( - uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status) + uint32_t devices, audio_output_flags_t flags, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status) { { // scope for the lock Mutex::Autolock lock(mLock); - AudioStreamOutMSM72xx* out; - if (mOutput) { - // only one output stream allowed - out = mOutput; - } else { - //create new output stream - out = new AudioStreamOutMSM72xx(); +#ifdef QCOM_VOIP_ENABLED + // only one output stream allowed + if (mOutput && (devices != AudioSystem::DEVICE_OUT_DIRECTOUTPUT)) { + if (status) { + *status = INVALID_OPERATION; + } + ALOGE(" AudioHardware::openOutputStream Only one output stream allowed \n"); } + if(devices == AudioSystem::DEVICE_OUT_DIRECTOUTPUT) { + + if(mDirectOutput == 0) { + // open direct output stream + ALOGV(" AudioHardware::openOutputStream Direct output stream \n"); + AudioStreamOutDirect* out = new AudioStreamOutDirect(); + status_t lStatus = out->set(this, devices, format, channels, sampleRate); + if (status) { + *status = lStatus; + } + if (lStatus == NO_ERROR) { + mDirectOutput = out; + ALOGV(" \n set sucessful for AudioStreamOutDirect"); + } else { + ALOGE(" \n set Failed for AudioStreamOutDirect"); + delete out; + } + } + else + ALOGE(" \n AudioHardware::AudioStreamOutDirect is already open"); - status_t lStatus = out->set(this, devices, format, channels, sampleRate); - if (status) { - *status = lStatus; + return mDirectOutput; } - if (lStatus == NO_ERROR) { - mOutput = out; - } else { - delete out; + else +#endif + { + // create new output stream + AudioStreamOutMSM72xx* out = new AudioStreamOutMSM72xx(); + status_t lStatus = out->set(this, devices, format, channels, sampleRate); + if (status) { + *status = lStatus; + } + if (lStatus == NO_ERROR) { + mOutput = out; + } else { + delete out; + } } } return mOutput; @@ -189,16 +346,30 @@ AudioStreamOut* AudioHardware::openOutputStream( void AudioHardware::closeOutputStream(AudioStreamOut* out) { Mutex::Autolock lock(mLock); - if (mOutput == 0 || mOutput != out) { - LOGW("Attempt to close invalid output stream"); + if ((mOutput == 0 +#ifdef QCOM_VOIP_ENABLED + && mDirectOutput == 0 +#endif + ) || ((mOutput != out) +#ifdef QCOM_VOIP_ENABLED + && (mDirectOutput != out) +#endif +)) { + ALOGW("Attempt to close invalid output stream"); } - else { + else if (mOutput == out) { delete mOutput; mOutput = 0; } +#ifdef QCOM_VOIP_ENABLED + else if (mDirectOutput == out) { + ALOGV(" deleting mDirectOutput \n"); + delete mDirectOutput; + mDirectOutput = 0; + } +#endif } - AudioStreamIn* AudioHardware::openInputStream( uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status, AudioSystem::audio_in_acoustics acoustic_flags) @@ -209,37 +380,92 @@ AudioStreamIn* AudioHardware::openInputStream( } mLock.lock(); +#ifdef QCOM_VOIP_ENABLED + if(devices == AudioSystem::DEVICE_IN_COMMUNICATION) { + ALOGV("Create Audio stream Voip \n"); + AudioStreamInVoip* inVoip = new AudioStreamInVoip(); + status_t lStatus = NO_ERROR; + lStatus = inVoip->set(this, devices, format, channels, sampleRate, acoustic_flags); + if (status) { + *status = lStatus; + } + if (lStatus != NO_ERROR) { + ALOGE(" Error creating voip input \n"); + mLock.unlock(); + delete inVoip; + return 0; + } + mVoipInputs.add(inVoip); + mLock.unlock(); + return inVoip; + } else +#endif + { + AudioStreamInMSM72xx* in = new AudioStreamInMSM72xx(); + status_t lStatus = in->set(this, devices, format, channels, sampleRate, acoustic_flags); + if (status) { + *status = lStatus; + } + if (lStatus != NO_ERROR) { + mLock.unlock(); + delete in; + return 0; + } - AudioStreamInMSM72xx* in = new AudioStreamInMSM72xx(); - status_t lStatus = in->set(this, devices, format, channels, sampleRate, acoustic_flags); - if (status) { - *status = lStatus; - } - if (lStatus != NO_ERROR) { + mInputs.add(in); mLock.unlock(); - delete in; - return 0; + return in; } - mInputs.add(in); - mLock.unlock(); - - return in; } void AudioHardware::closeInputStream(AudioStreamIn* in) { Mutex::Autolock lock(mLock); - ssize_t index = mInputs.indexOf((AudioStreamInMSM72xx *)in); - if (index < 0) { - LOGW("Attempt to close invalid input stream"); - } else { + ssize_t index = -1; + if((index = mInputs.indexOf((AudioStreamInMSM72xx *)in)) >= 0) { + ALOGV("closeInputStream AudioStreamInMSM72xx"); mLock.unlock(); delete mInputs[index]; mLock.lock(); mInputs.removeAt(index); } +#ifdef QCOM_VOIP_ENABLED + else if ((index = mVoipInputs.indexOf((AudioStreamInVoip *)in)) >= 0) { + ALOGV("closeInputStream mVoipInputs"); + mLock.unlock(); + delete mVoipInputs[index]; + mLock.lock(); + mVoipInputs.removeAt(index); + } +#endif + else { + ALOGE("Attempt to close invalid input stream"); + } +} + +#ifdef QCOM_TUNNEL_LPA_ENABLED +AudioStreamOut* AudioHardware::openOutputSession( + uint32_t devices, int *format, status_t *status, int sessionId, uint32_t samplingRate,uint32_t channels) +{ + AudioSessionOutMSM7xxx* out; + { // scope for the lock + Mutex::Autolock lock(mLock); + + // create new output stream + out = new AudioSessionOutMSM7xxx(); + status_t lStatus = out->set(this, devices, format, sessionId); + if (status) { + *status = lStatus; + } + if (lStatus != NO_ERROR) { + delete out; + out = NULL; + } + } + return out; } +#endif status_t AudioHardware::setMode(int mode) { @@ -288,13 +514,53 @@ status_t AudioHardware::setParameters(const String8& keyValuePairs) AudioParameter param = AudioParameter(keyValuePairs); String8 value; String8 key; + const char BT_NREC_KEY[] = "bt_headset_nrec"; const char BT_NAME_KEY[] = "bt_headset_name"; const char BT_NREC_VALUE_ON[] = "on"; +#ifdef SRS_PROCESSING + int to_set=0; + ALOGV("setParameters() %s", keyValuePairs.string()); + if(strncmp("SRS_Buffer", keyValuePairs.string(), 10) == 0) { + int SRSptr = 0; + String8 keySRSG = String8("SRS_BufferG"), keySRSW = String8("SRS_BufferW"), + keySRSC = String8("SRS_BufferC"), keySRSHP = String8("SRS_BufferHP"), + keySRSP = String8("SRS_BufferP"), keySRSHL = String8("SRS_BufferHL"); + if (param.getInt(keySRSG, SRSptr) == NO_ERROR) { + SRSParamsG = (void*)SRSptr; + to_set |= SRS_PARAMS_G; + } else if (param.getInt(keySRSW, SRSptr) == NO_ERROR) { + SRSParamsW = (void*)SRSptr; + to_set |= SRS_PARAMS_W; + } else if (param.getInt(keySRSC, SRSptr) == NO_ERROR) { + SRSParamsC = (void*)SRSptr; + to_set |= SRS_PARAMS_C; + } else if (param.getInt(keySRSHP, SRSptr) == NO_ERROR) { + SRSParamsHP = (void*)SRSptr; + to_set |= SRS_PARAMS_HP; + } else if (param.getInt(keySRSP, SRSptr) == NO_ERROR) { + SRSParamsP = (void*)SRSptr; + to_set |= SRS_PARAMS_P; + } else if (param.getInt(keySRSHL, SRSptr) == NO_ERROR) { + SRSParamsHL = (void*)SRSptr; + to_set |= SRS_PARAMS_HL; + } + + ALOGD("SetParam SRS flags=0x%x", to_set); + if(hpcm_playback_in_progress +#ifdef QCOM_TUNNEL_LPA_ENABLED + || lpa_playback_in_progress +#endif + ) { + msm72xx_enable_srs(to_set, true); + } - LOGV("setParameters() %s", keyValuePairs.string()); + if(SRSptr) + return NO_ERROR; + } +#endif /*SRS_PROCESSING*/ if (keyValuePairs.length() == 0) return BAD_VALUE; key = String8(BT_NREC_KEY); @@ -303,35 +569,760 @@ status_t AudioHardware::setParameters(const String8& keyValuePairs) mBluetoothNrec = true; } else { mBluetoothNrec = false; - LOGI("Turning noise reduction and echo cancellation off for BT " + ALOGI("Turning noise reduction and echo cancellation off for BT " "headset"); } } + key = String8(BTHEADSET_VGS); + if (param.get(key, value) == NO_ERROR) { + if (value == BT_NREC_VALUE_ON) { + mBluetoothVGS = true; + } else { + mBluetoothVGS = false; + } + } key = String8(BT_NAME_KEY); if (param.get(key, value) == NO_ERROR) { mBluetoothId = 0; for (int i = 0; i < mNumSndEndpoints; i++) { if (!strcasecmp(value.string(), mSndEndpoints[i].name)) { mBluetoothId = mSndEndpoints[i].id; - LOGI("Using custom acoustic parameters for %s", value.string()); + ALOGI("Using custom acoustic parameters for %s", value.string()); break; } } if (mBluetoothId == 0) { - LOGI("Using default acoustic parameters " + ALOGI("Using default acoustic parameters " "(%s not in acoustic database)", value.string()); doRouting(NULL); } } + + key = String8(DUALMIC_KEY); + if (param.get(key, value) == NO_ERROR) { + if (value == "true") { + mDualMicEnabled = true; + ALOGI("DualMike feature Enabled"); + } else { + mDualMicEnabled = false; + ALOGI("DualMike feature Disabled"); + } + doRouting(NULL); + } + + key = String8(TTY_MODE_KEY); + if (param.get(key, value) == NO_ERROR) { + if (value == "full") { + mTtyMode = TTY_FULL; + } else if (value == "hco") { + mTtyMode = TTY_HCO; + } else if (value == "vco") { + mTtyMode = TTY_VCO; + } else { + mTtyMode = TTY_OFF; + } + if(mMode != AudioSystem::MODE_IN_CALL){ + return NO_ERROR; + } + ALOGI("Changed TTY Mode=%s", value.string()); + if((mMode == AudioSystem::MODE_IN_CALL) && + (mCurSndDevice == SND_DEVICE_HEADSET)) + doRouting(NULL); + } + return NO_ERROR; } String8 AudioHardware::getParameters(const String8& keys) { AudioParameter param = AudioParameter(keys); + String8 value; + + String8 key = String8(DUALMIC_KEY); + + if (param.get(key, value) == NO_ERROR) { + value = String8(mDualMicEnabled ? "true" : "false"); + param.add(key, value); + } + + key = String8(BTHEADSET_VGS); + if (param.get(key, value) == NO_ERROR) { + if(mBluetoothVGS) + param.addInt(String8("isVGS"), true); + } + +#if 0 + key = String8("tunneled-input-formats"); + if ( param.get(key,value) == NO_ERROR ) { + param.addInt(String8("AMR"), true ); + if (mMode == AudioSystem::MODE_IN_CALL) { + param.addInt(String8("QCELP"), true ); + param.addInt(String8("EVRC"), true ); + } + } +#endif +#ifdef QCOM_FM_ENABLED + key = String8("Fm-radio"); + if ( param.get(key,value) == NO_ERROR ) { + if (IsFmon()||(mCurSndDevice == SND_DEVICE_FM_ANALOG_STEREO_HEADSET)){ + param.addInt(String8("isFMON"), true ); + } + } +#endif + key = String8(ECHO_SUPRESSION); + if (param.get(key, value) == NO_ERROR) { + value = String8("yes"); + param.add(key, value); + } + + ALOGV("AudioHardware::getParameters() %s", param.toString().string()); return param.toString(); } +int check_and_set_audpp_parameters(char *buf, int size) +{ + char *p, *ps; + static const char *const seps = ","; + int table_num; + int i, j; + int device_id = 0; + int samp_index = 0; + eq_filter_type eq[12]; + int fd; + void *audioeq; + void *(*eq_cal)(int32_t, int32_t, int32_t, uint16_t, int32_t, int32_t *, int32_t *, uint16_t *); + uint16_t numerator[6]; + uint16_t denominator[4]; + uint16_t shift[2]; + + if ((buf[0] == 'A') && ((buf[1] == '1') || (buf[1] == '2') || (buf[1] == '3'))) { + /* IIR filter */ + if(buf[1] == '1') device_id=0; + if(buf[1] == '2') device_id=1; + if(buf[1] == '3') device_id=2; + if (!(p = strtok(buf, ","))) + goto token_err; + + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))) + goto token_err; + /* Table description */ + if (!(p = strtok(NULL, seps))) + goto token_err; + + for (i = 0; i < 48; i++) { + iir_cfg[device_id].iir_params[i] = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + } + rx_iir_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + iir_cfg[device_id].num_bands = (uint16_t)strtol(p, &ps, 16); + + } else if ((buf[0] == 'B') && ((buf[1] == '1') || (buf[1] == '2') || (buf[1] == '3'))) { + /* This is the ADRC record we are looking for. Tokenize it */ + if(buf[1] == '1') device_id=0; + if(buf[1] == '2') device_id=1; + if(buf[1] == '3') device_id=2; + adrc_filter_exists[device_id] = true; + if (!(p = strtok(buf, ","))) + goto token_err; + + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))) + goto token_err; + + /* Table description */ + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[0] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[1] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[2] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[3] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[4] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[5] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[6] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + adrc_cfg[device_id].adrc_params[7] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + + } else if (buf[0] == 'C' && ((buf[1] == '1') || (buf[1] == '2') || (buf[1] == '3'))) { + /* This is the EQ record we are looking for. Tokenize it */ + if(buf[1] == '1') device_id=0; + if(buf[1] == '2') device_id=1; + if(buf[1] == '3') device_id=2; + if (!(p = strtok(buf, ","))) + goto token_err; + + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))) + goto token_err; + /* Table description */ + if (!(p = strtok(NULL, seps))) + goto token_err; + + eq_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + ALOGI("EQ flag = %02x.", eq_flag[device_id]); + + audioeq = ::dlopen("/system/lib/libaudioeq.so", RTLD_NOW); + if (audioeq == NULL) { + ALOGE("audioeq library open failure"); + return -1; + } + eq_cal = (void *(*) (int32_t, int32_t, int32_t, uint16_t, int32_t, int32_t *, int32_t *, uint16_t *))::dlsym(audioeq, "audioeq_calccoefs"); + memset(&equalizer[device_id], 0, sizeof(eqalizer)); + /* Temp add the bands here */ + equalizer[device_id].bands = 8; + for (i = 0; i < equalizer[device_id].bands; i++) { + + eq[i].gain = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + eq[i].freq = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + eq[i].type = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + eq[i].qf = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + + eq_cal(eq[i].gain, eq[i].freq, 48000, eq[i].type, eq[i].qf, (int32_t*)numerator, (int32_t *)denominator, shift); + for (j = 0; j < 6; j++) { + equalizer[device_id].params[ ( i * 6) + j] = numerator[j]; + } + for (j = 0; j < 4; j++) { + equalizer[device_id].params[(equalizer[device_id].bands * 6) + (i * 4) + j] = denominator[j]; + } + equalizer[device_id].params[(equalizer[device_id].bands * 10) + i] = shift[0]; + } + ::dlclose(audioeq); + + } else if ((buf[0] == 'D') && ((buf[1] == '1') || (buf[1] == '2') || (buf[1] == '3'))) { + /* This is the MB_ADRC record we are looking for. Tokenize it */ + if(buf[1] == '1') device_id=0; + if(buf[1] == '2') device_id=1; + if(buf[1] == '3') device_id=2; + mbadrc_filter_exists[device_id] = true; + if (!(p = strtok(buf, ","))) + goto token_err; + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))) + goto token_err; + + /* Table description */ + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].num_bands = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].down_samp_level = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].adrc_delay = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].ext_buf_size = (uint16_t)strtol(p, &ps, 16); + int ext_buf_count = mbadrc_cfg[device_id].ext_buf_size / 2; + + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].ext_partition = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].ext_buf_msw = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].ext_buf_lsw = (uint16_t)strtol(p, &ps, 16); + + for(i = 0;i < mbadrc_cfg[device_id].num_bands; i++) { + for(j = 0; j < 10; j++) { + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].adrc_band[i].adrc_band_params[j] = (uint16_t)strtol(p, &ps, 16); + } + } + + for(i = 0;i < mbadrc_cfg[device_id].ext_buf_size/2; i++) { + if (!(p = strtok(NULL, seps))) + goto token_err; + mbadrc_cfg[device_id].ext_buf.buff[i] = (uint16_t)strtol(p, &ps, 16); + } + if (!(p = strtok(NULL, seps))) + goto token_err; + + mbadrc_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + ALOGV("MBADRC flag = %02x.", mbadrc_flag[device_id]); + }else if ((buf[0] == 'E') || (buf[0] == 'F') || (buf[0] == 'G')){ + //Pre-Processing Features TX_IIR,NS,AGC + switch (buf[1]) { + case '1': + samp_index = 0; + break; + case '2': + samp_index = 1; + break; + case '3': + samp_index = 2; + break; + case '4': + samp_index = 3; + break; + case '5': + samp_index = 4; + break; + case '6': + samp_index = 5; + break; + case '7': + samp_index = 6; + break; + case '8': + samp_index = 7; + break; + case '9': + samp_index = 8; + break; + default: + return -EINVAL; + break; + } + + if (buf[0] == 'E') { + /* TX_IIR filter */ + if (!(p = strtok(buf, ","))){ + goto token_err;} + + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))){ + goto token_err;} + /* Table description */ + if (!(p = strtok(NULL, seps))){ + goto token_err;} + + for (i = 0; i < 48; i++) { + j = (i >= 40)? i : ((i % 2)? (i - 1) : (i + 1)); + tx_iir_cfg[samp_index].iir_params[j] = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))){ + goto token_err;} + } + + tx_iir_cfg[samp_index].active_flag = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))){ + goto token_err;} + + txiir_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + tx_iir_cfg[samp_index].num_bands = (uint16_t)strtol(p, &ps, 16); + + tx_iir_cfg[samp_index].cmd_id = 0; + + ALOGV("TX IIR flag = %02x.", txiir_flag[device_id]); + if (txiir_flag[device_id] != 0) + enable_preproc_mask[samp_index] |= TX_IIR_ENABLE; + } else if(buf[0] == 'F') { + /* AGC filter */ + if (!(p = strtok(buf, ","))) + goto token_err; + + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))) + goto token_err; + /* Table description */ + if (!(p = strtok(NULL, seps))) + goto token_err; + + tx_agc_cfg[samp_index].cmd_id = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + + tx_agc_cfg[samp_index].tx_agc_param_mask = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + + tx_agc_cfg[samp_index].tx_agc_enable_flag = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + + tx_agc_cfg[samp_index].static_gain = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + + tx_agc_cfg[samp_index].adaptive_gain_flag = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + + for (i = 0; i < 19; i++) { + tx_agc_cfg[samp_index].agc_params[i] = (uint16_t)strtol(p, &ps, 16); + if (!(p = strtok(NULL, seps))) + goto token_err; + } + + agc_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + ALOGV("AGC flag = %02x.", agc_flag[device_id]); + if (agc_flag[device_id] != 0) + enable_preproc_mask[samp_index] |= AGC_ENABLE; + } else if ((buf[0] == 'G')) { + /* This is the NS record we are looking for. Tokenize it */ + if (!(p = strtok(buf, ","))) + goto token_err; + + /* Table header */ + table_num = strtol(p + 1, &ps, 10); + if (!(p = strtok(NULL, seps))) + goto token_err; + + /* Table description */ + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].cmd_id = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].ec_mode_new = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].dens_gamma_n = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].dens_nfe_block_size = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].dens_limit_ns = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].dens_limit_ns_d = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].wb_gamma_e = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_cfg[samp_index].wb_gamma_n = (uint16_t)strtol(p, &ps, 16); + + if (!(p = strtok(NULL, seps))) + goto token_err; + ns_flag[device_id] = (uint16_t)strtol(p, &ps, 16); + + ALOGV("NS flag = %02x.", ns_flag[device_id]); + if (ns_flag[device_id] != 0) + enable_preproc_mask[samp_index] |= NS_ENABLE; + } + } + return 0; + +token_err: + ALOGE("malformatted pcm control buffer"); + return -EINVAL; +} + +static int get_audpp_filter(void) +{ + struct stat st; + char *read_buf; + char *next_str, *current_str; + int csvfd; + + ALOGI("get_audpp_filter"); + static const char *const path = + "/system/etc/AudioFilter.csv"; + csvfd = open(path, O_RDONLY); + if (csvfd < 0) { + /* failed to open normal acoustic file ... */ + ALOGE("failed to open AUDIO_NORMAL_FILTER %s: %s (%d).", + path, strerror(errno), errno); + return -1; + } else ALOGI("open %s success.", path); + + if (fstat(csvfd, &st) < 0) { + ALOGE("failed to stat %s: %s (%d).", + path, strerror(errno), errno); + close(csvfd); + return -1; + } + + read_buf = (char *) mmap(0, st.st_size, + PROT_READ | PROT_WRITE, + MAP_PRIVATE, + csvfd, 0); + + if (read_buf == MAP_FAILED) { + ALOGE("failed to mmap parameters file: %s (%d)", + strerror(errno), errno); + close(csvfd); + return -1; + } + + current_str = read_buf; + + while (*current_str != (char)EOF) { + int len; + next_str = strchr(current_str, '\n'); + if (!next_str) + break; + len = next_str - current_str; + *next_str++ = '\0'; + if (check_and_set_audpp_parameters(current_str, len)) { + ALOGI("failed to set audpp parameters, exiting."); + munmap(read_buf, st.st_size); + close(csvfd); + return -1; + } + current_str = next_str; + } + + munmap(read_buf, st.st_size); + close(csvfd); + return 0; +} +#ifdef SRS_PROCESSING +static void msm72xx_enable_srs(int flags, bool state) +{ + int fd = open(PCM_CTL_DEVICE, O_RDWR); + if (fd < 0) { + ALOGE("Cannot open PCM Ctl device for srs params"); + return; + } + + ALOGD("Enable SRS flags=0x%x state= %d",flags,state); + if (state == false) { + if(post_proc_feature_mask & SRS_ENABLE) { + new_post_proc_feature_mask &= SRS_DISABLE; + post_proc_feature_mask &= SRS_DISABLE; + } + if(SRSParamsG) { + unsigned short int backup = ((unsigned short int*)SRSParamsG)[2]; + ((unsigned short int*)SRSParamsG)[2] = 0; + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsG); + ((unsigned short int*)SRSParamsG)[2] = backup; + } + } else { + new_post_proc_feature_mask |= SRS_ENABLE; + post_proc_feature_mask |= SRS_ENABLE; + if(SRSParamsW && (flags & SRS_PARAMS_W)) + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsW); + if(SRSParamsC && (flags & SRS_PARAMS_C)) + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsC); + if(SRSParamsHP && (flags & SRS_PARAMS_HP)) + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsHP); + if(SRSParamsP && (flags & SRS_PARAMS_P)) + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsP); + if(SRSParamsHL && (flags & SRS_PARAMS_HL)) + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsHL); + if(SRSParamsG && (flags & SRS_PARAMS_G)) + ioctl(fd, AUDIO_SET_SRS_TRUMEDIA_PARAM, SRSParamsG); + } + + if (ioctl(fd, AUDIO_ENABLE_AUDPP, &post_proc_feature_mask) < 0) { + ALOGE("enable audpp error"); + } + + close(fd); +} + +#endif /*SRS_PROCESSING*/ +static int msm72xx_enable_postproc(bool state) +{ + /* int fd; + int device_id=0; + + char postProc[128]; + property_get("audio.legacy.postproc",postProc,"0"); + + if(!(strcmp("true",postProc) == 0)){ + ALOGV("Legacy Post Proc disabled."); + return 0; + } + + if (!audpp_filter_inited) + { + ALOGE("Parsing error in AudioFilter.csv."); + return -EINVAL; + } + if(snd_device < 0) { + ALOGE("Enabling/Disabling post proc features for device: %d", snd_device); + return -EINVAL; + } + + if(snd_device == SND_DEVICE_SPEAKER) + { + device_id = 0; + ALOGI("set device to SND_DEVICE_SPEAKER device_id=0"); + } + if(snd_device == SND_DEVICE_HANDSET) + { + device_id = 1; + ALOGI("set device to SND_DEVICE_HANDSET device_id=1"); + } + if(snd_device == SND_DEVICE_HEADSET) + { + device_id = 2; + ALOGI("set device to SND_DEVICE_HEADSET device_id=2"); + } + + fd = open(PCM_CTL_DEVICE, O_RDWR); + if (fd < 0) { + ALOGE("Cannot open PCM Ctl device"); + return -EPERM; + } + + if(mbadrc_filter_exists[device_id] && state) + { + ALOGV("MBADRC Enabled"); + post_proc_feature_mask &= ADRC_DISABLE; + if ((mbadrc_flag[device_id] == 0) && (post_proc_feature_mask & MBADRC_ENABLE)) + { + ALOGV("MBADRC Disable"); + post_proc_feature_mask &= MBADRC_DISABLE; + } + else if(post_proc_feature_mask & MBADRC_ENABLE) + { + ALOGV("MBADRC Enabled %d", post_proc_feature_mask); + + if (ioctl(fd, AUDIO_SET_MBADRC, &mbadrc_cfg[device_id]) < 0) + { + ALOGE("set mbadrc filter error"); + } + } + } + else if (adrc_filter_exists[device_id] && state) + { + post_proc_feature_mask &= MBADRC_DISABLE; + ALOGV("ADRC Enabled %d", post_proc_feature_mask); + + if (adrc_flag[device_id] == 0 && (post_proc_feature_mask & ADRC_ENABLE)) + post_proc_feature_mask &= ADRC_DISABLE; + else if(post_proc_feature_mask & ADRC_ENABLE) + { + ALOGI("ADRC Filter ADRC FLAG = %02x.", adrc_flag[device_id]); + ALOGI("ADRC Filter COMP THRESHOLD = %02x.", adrc_cfg[device_id].adrc_params[0]); + ALOGI("ADRC Filter COMP SLOPE = %02x.", adrc_cfg[device_id].adrc_params[1]); + ALOGI("ADRC Filter COMP RMS TIME = %02x.", adrc_cfg[device_id].adrc_params[2]); + ALOGI("ADRC Filter COMP ATTACK[0] = %02x.", adrc_cfg[device_id].adrc_params[3]); + ALOGI("ADRC Filter COMP ATTACK[1] = %02x.", adrc_cfg[device_id].adrc_params[4]); + ALOGI("ADRC Filter COMP RELEASE[0] = %02x.", adrc_cfg[device_id].adrc_params[5]); + ALOGI("ADRC Filter COMP RELEASE[1] = %02x.", adrc_cfg[device_id].adrc_params[6]); + ALOGI("ADRC Filter COMP DELAY = %02x.", adrc_cfg[device_id].adrc_params[7]); + if (ioctl(fd, AUDIO_SET_ADRC, &adrc_cfg[device_id]) < 0) + { + ALOGE("set adrc filter error."); + } + } + } + else + { + ALOGV("MBADRC and ADRC Disabled"); + post_proc_feature_mask &= (MBADRC_DISABLE | ADRC_DISABLE); + } + + if (eq_flag[device_id] == 0 && (post_proc_feature_mask & EQ_ENABLE)) + post_proc_feature_mask &= EQ_DISABLE; + else if ((post_proc_feature_mask & EQ_ENABLE) && state) + { + ALOGI("Setting EQ Filter"); + if (ioctl(fd, AUDIO_SET_EQ, &equalizer[device_id]) < 0) { + ALOGE("set Equalizer error."); + } + } + + if (rx_iir_flag[device_id] == 0 && (post_proc_feature_mask & RX_IIR_ENABLE)) + post_proc_feature_mask &= RX_IIR_DISABLE; + else if ((post_proc_feature_mask & RX_IIR_ENABLE)&& state) + { + ALOGI("IIR Filter FLAG = %02x.", rx_iir_flag[device_id]); + ALOGI("IIR NUMBER OF BANDS = %02x.", iir_cfg[device_id].num_bands); + ALOGI("IIR Filter N1 = %02x.", iir_cfg[device_id].iir_params[0]); + ALOGI("IIR Filter N2 = %02x.", iir_cfg[device_id].iir_params[1]); + ALOGI("IIR Filter N3 = %02x.", iir_cfg[device_id].iir_params[2]); + ALOGI("IIR Filter N4 = %02x.", iir_cfg[device_id].iir_params[3]); + ALOGI("IIR FILTER M1 = %02x.", iir_cfg[device_id].iir_params[24]); + ALOGI("IIR FILTER M2 = %02x.", iir_cfg[device_id].iir_params[25]); + ALOGI("IIR FILTER M3 = %02x.", iir_cfg[device_id].iir_params[26]); + ALOGI("IIR FILTER M4 = %02x.", iir_cfg[device_id].iir_params[27]); + ALOGI("IIR FILTER M16 = %02x.", iir_cfg[device_id].iir_params[39]); + ALOGI("IIR FILTER SF1 = %02x.", iir_cfg[device_id].iir_params[40]); + if (ioctl(fd, AUDIO_SET_RX_IIR, &iir_cfg[device_id]) < 0) + { + ALOGE("set rx iir filter error."); + } + } + + if(state){ + ALOGI("Enabling post proc features with mask 0x%04x", post_proc_feature_mask); + if (ioctl(fd, AUDIO_ENABLE_AUDPP, &post_proc_feature_mask) < 0) { + ALOGE("enable audpp error"); + close(fd); + return -EPERM; + } + } else{ + if(post_proc_feature_mask & MBADRC_ENABLE) post_proc_feature_mask &= MBADRC_DISABLE; + if(post_proc_feature_mask & ADRC_ENABLE) post_proc_feature_mask &= ADRC_DISABLE; + if(post_proc_feature_mask & EQ_ENABLE) post_proc_feature_mask &= EQ_DISABLE; + if(post_proc_feature_mask & RX_IIR_ENABLE) post_proc_feature_mask &= RX_IIR_DISABLE; + + ALOGI("disabling post proc features with mask 0x%04x", post_proc_feature_mask); + if (ioctl(fd, AUDIO_ENABLE_AUDPP, &post_proc_feature_mask) < 0) { + ALOGE("enable audpp error"); + close(fd); + return -EPERM; + } + } + + close(fd);*/ + return 0; +} static unsigned calculate_audpre_table_index(unsigned index) { @@ -350,32 +1341,43 @@ static unsigned calculate_audpre_table_index(unsigned index) } size_t AudioHardware::getInputBufferSize(uint32_t sampleRate, int format, int channelCount) { - if (format != AudioSystem::PCM_16_BIT) { - LOGW("getInputBufferSize bad format: 0x%x", format); + if ( (format != AudioSystem::PCM_16_BIT) && + (format != AudioSystem::AMR_NB) && + (format != AudioSystem::AAC)){ + ALOGW("getInputBufferSize bad format: 0x%x", format); return 0; } if (channelCount < 1 || channelCount > 2) { - LOGW("getInputBufferSize bad channel count: %d", channelCount); + ALOGW("getInputBufferSize bad channel count: %d", channelCount); return 0; } - return 2048*channelCount; + if(format == AudioSystem::AMR_NB) + return 320*channelCount; + else if (format == AudioSystem::AAC) + return 2048; +#ifdef QCOM_VOIP_ENABLED + else if (sampleRate == AUDIO_HW_VOIP_SAMPLERATE_8K) + return 320*channelCount; + else if (sampleRate == AUDIO_HW_VOIP_SAMPLERATE_16K) + return 640*channelCount; +#endif + else + return 2048*channelCount; } static status_t set_volume_rpc(uint32_t device, uint32_t method, - uint32_t volume) + uint32_t volume, + int m7xsnddriverfd) { - int fd; -#if LOG_SND_RPC - LOGD("rpc_snd_set_volume(%d, %d, %d)\n", device, method, volume); -#endif + + ALOGD("rpc_snd_set_volume(%d, %d, %d)\n", device, method, volume); if (device == -1UL) return NO_ERROR; - fd = open("/dev/msm_snd", O_RDWR); - if (fd < 0) { - LOGE("Can not open snd device"); + if (m7xsnddriverfd < 0) { + ALOGE("Can not open snd device"); return -EPERM; } /* rpc_snd_set_volume( @@ -392,45 +1394,76 @@ static status_t set_volume_rpc(uint32_t device, args.method = method; args.volume = volume; - if (ioctl(fd, SND_SET_VOLUME, &args) < 0) { - LOGE("snd_set_volume error."); - close(fd); + if (ioctl(m7xsnddriverfd, SND_SET_VOLUME, &args) < 0) { + ALOGE("snd_set_volume error."); return -EIO; } - close(fd); return NO_ERROR; } status_t AudioHardware::setVoiceVolume(float v) { if (v < 0.0) { - LOGW("setVoiceVolume(%f) under 0.0, assuming 0.0\n", v); + ALOGW("setVoiceVolume(%f) under 0.0, assuming 0.0\n", v); v = 0.0; } else if (v > 1.0) { - LOGW("setVoiceVolume(%f) over 1.0, assuming 1.0\n", v); + ALOGW("setVoiceVolume(%f) over 1.0, assuming 1.0\n", v); v = 1.0; } + + if(v < 0.4) + v = 0.4; int vol = lrint(v * 5.0); - LOGD("setVoiceVolume(%f)\n", v); - LOGI("Setting in-call volume to %d (available range is 0 to 5)\n", vol); + ALOGD("setVoiceVolume(%f)\n", v); + ALOGI("Setting in-call volume to %d (available range is 2 to 5)\n", vol); + + if ((mCurSndDevice != -1) && ((mCurSndDevice == SND_DEVICE_TTY_HEADSET) || (mCurSndDevice == SND_DEVICE_TTY_VCO))) + { + vol = 1; + ALOGI("For TTY device in FULL or VCO mode, the volume level is set to: %d \n", vol); + } Mutex::Autolock lock(mLock); - set_volume_rpc(SND_DEVICE_CURRENT, SND_METHOD_VOICE, vol); + set_volume_rpc(SND_DEVICE_CURRENT, SND_METHOD_VOICE, vol, m7xsnddriverfd); return NO_ERROR; } -status_t AudioHardware::setMasterVolume(float v) +#ifdef QCOM_FM_ENABLED +status_t AudioHardware::setFmVolume(float v) { + if (v < 0.0) { + ALOGW("setFmVolume(%f) under 0.0, assuming 0.0\n", v); + v = 0.0; + } else if (v > 1.0) { + ALOGW("setFmVolume(%f) over 1.0, assuming 1.0\n", v); + v = 1.0; + } + + int vol = lrint(v * 7.5); + if (vol > 7) + vol = 7; + ALOGD("setFmVolume(%f)\n", v); Mutex::Autolock lock(mLock); - int vol = ceil(v * 5.0); - LOGI("Set master volume to %d.\n", vol); - /* - set_volume_rpc(SND_DEVICE_HANDSET, SND_METHOD_VOICE, vol); - set_volume_rpc(SND_DEVICE_SPEAKER, SND_METHOD_VOICE, vol); - set_volume_rpc(SND_DEVICE_BT, SND_METHOD_VOICE, vol); - set_volume_rpc(SND_DEVICE_HEADSET, SND_METHOD_VOICE, vol); - */ + set_volume_rpc(SND_DEVICE_CURRENT, SND_METHOD_VOICE, vol, m7xsnddriverfd); + return NO_ERROR; +} +#endif + +status_t AudioHardware::setMasterVolume(float v) +{ + Mutex::Autolock lock(mLock); + int vol = ceil(v * 7.0); + ALOGI("Set master volume to %d.\n", vol); + set_volume_rpc(SND_DEVICE_HANDSET, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_SPEAKER, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_BT, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_HEADSET, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_NO_MIC_HEADSET, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_IN_S_SADC_OUT_HANDSET, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_IN_S_SADC_OUT_SPEAKER_PHONE, SND_METHOD_VOICE, vol, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_TTY_HEADSET, SND_METHOD_VOICE, 1, m7xsnddriverfd); + set_volume_rpc(SND_DEVICE_TTY_VCO, SND_METHOD_VOICE, 1, m7xsnddriverfd); // We return an error code here to let the audioflinger do in-software // volume on top of the maximum volume that we set through the SND API. // return error - software mixer will handle it @@ -438,19 +1471,15 @@ status_t AudioHardware::setMasterVolume(float v) } static status_t do_route_audio_rpc(uint32_t device, - bool ear_mute, bool mic_mute) + bool ear_mute, bool mic_mute, int m7xsnddriverfd) { if (device == -1UL) return NO_ERROR; - int fd; -#if LOG_SND_RPC - LOGD("rpc_snd_set_device(%d, %d, %d)\n", device, ear_mute, mic_mute); -#endif + ALOGW("rpc_snd_set_device(%d, %d, %d)\n", device, ear_mute, mic_mute); - fd = open("/dev/msm_snd", O_RDWR); - if (fd < 0) { - LOGE("Can not open snd device"); + if (m7xsnddriverfd < 0) { + ALOGE("Can not open snd device"); return -EPERM; } // RPC call to switch audio path @@ -466,21 +1495,35 @@ static status_t do_route_audio_rpc(uint32_t device, struct msm_snd_device_config args; args.device = device; args.ear_mute = ear_mute ? SND_MUTE_MUTED : SND_MUTE_UNMUTED; + if((device != SND_DEVICE_CURRENT) && (!mic_mute) +#ifdef QCOM_FM_ENABLED + &&(device != SND_DEVICE_FM_DIGITAL_STEREO_HEADSET) + &&(device != SND_DEVICE_FM_DIGITAL_SPEAKER_PHONE) + &&(device != SND_DEVICE_FM_DIGITAL_BT_A2DP_HEADSET) +#endif + ) { + //Explicitly mute the mic to release DSP resources + args.mic_mute = SND_MUTE_MUTED; + if (ioctl(m7xsnddriverfd, SND_SET_DEVICE, &args) < 0) { + ALOGE("snd_set_device error."); + return -EIO; + } + } args.mic_mute = mic_mute ? SND_MUTE_MUTED : SND_MUTE_UNMUTED; - - if (ioctl(fd, SND_SET_DEVICE, &args) < 0) { - LOGE("snd_set_device error."); - close(fd); + if (ioctl(m7xsnddriverfd, SND_SET_DEVICE, &args) < 0) { + ALOGE("snd_set_device error."); return -EIO; } - close(fd); return NO_ERROR; } // always call with mutex held status_t AudioHardware::doAudioRouteOrMute(uint32_t device) { + int rc; + int nEarmute=true; +#if 0 if (device == (uint32_t)SND_DEVICE_BT || device == (uint32_t)SND_DEVICE_CARKIT) { if (mBluetoothId) { device = mBluetoothId; @@ -488,111 +1531,293 @@ status_t AudioHardware::doAudioRouteOrMute(uint32_t device) device = SND_DEVICE_BT_EC_OFF; } } - LOGV("doAudioRouteOrMute() device %x, mMode %d, mMicMute %d", device, mMode, mMicMute); - return do_route_audio_rpc(device, - mMode != AudioSystem::MODE_IN_CALL, mMicMute); +#endif +#ifdef QCOM_FM_ENABLED + if(IsFmon()){ + /* FM needs both Rx path and Tx path to be unmuted */ + nEarmute = false; + mMicMute = false; + } else +#endif + if (mMode == AudioSystem::MODE_IN_CALL) + nEarmute = false; +#ifdef QCOM_VOIP_ENABLED + else if(mMode == AudioSystem::MODE_IN_COMMUNICATION){ + nEarmute = false; + ALOGW("VoipCall in MODE_IN_COMMUNICATION"); + } +#endif + rc = do_route_audio_rpc(device, + nEarmute , mMicMute, m7xsnddriverfd); +#ifdef QCOM_FM_ENABLED + if (( + (device == SND_DEVICE_FM_DIGITAL_STEREO_HEADSET) || + (device == SND_DEVICE_FM_DIGITAL_SPEAKER_PHONE) || + (device == SND_DEVICE_FM_DIGITAL_BT_A2DP_HEADSET)) && + (device != mCurSndDevice)) { + ALOGV("doAudioRouteOrMute():switch to FM mode"); + switch_mode(MODE_FM); + } else if (((mCurSndDevice == SND_DEVICE_FM_DIGITAL_STEREO_HEADSET) || + (mCurSndDevice == SND_DEVICE_FM_DIGITAL_SPEAKER_PHONE) || + (mCurSndDevice == SND_DEVICE_FM_DIGITAL_BT_A2DP_HEADSET)) && + (device != mCurSndDevice)) { + ALOGV("doAudioRouteOrMute():switch to AUX PCM mode"); + switch_mode(MODE_BTSCO); + } +#endif + return rc; } +#ifdef QCOM_FM_ENABLED +bool AudioHardware::isFMAnalog() +{ + char value[PROPERTY_VALUE_MAX]; + bool isAfm = false; + + if (property_get("hw.fm.isAnalog", value, NULL) + && !strcasecmp(value, "true")){ + isAfm = true; + } + + return isAfm; +} +#endif status_t AudioHardware::doRouting(AudioStreamInMSM72xx *input) { /* currently this code doesn't work without the htc libacoustic */ - if (!acoustic) - return 0; Mutex::Autolock lock(mLock); uint32_t outputDevices = mOutput->devices(); status_t ret = NO_ERROR; - int sndDevice = -1; - int (*msm72xx_enable_audpp)(int); - msm72xx_enable_audpp = (int (*)(int))::dlsym(acoustic, "msm72xx_enable_audpp"); - int audProcess = (ADRC_DISABLE | EQ_DISABLE | RX_IIR_DISABLE); + int new_snd_device = -1; +#ifdef QCOM_FM_ENABLED + bool enableDgtlFmDriver = false; +#endif + //int (*msm72xx_enable_audpp)(int); + //msm72xx_enable_audpp = (int (*)(int))::dlsym(acoustic, "msm72xx_enable_audpp"); if (input != NULL) { uint32_t inputDevice = input->devices(); - LOGI("do input routing device %x\n", inputDevice); - if (inputDevice & AudioSystem::DEVICE_IN_BLUETOOTH_SCO_HEADSET) { - LOGI("Routing audio to Bluetooth PCM\n"); - sndDevice = SND_DEVICE_BT; - } else if (inputDevice & AudioSystem::DEVICE_IN_WIRED_HEADSET) { - if ((outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET) && - (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER)) { - LOGI("Routing audio to Wired Headset and Speaker\n"); - sndDevice = SND_DEVICE_HEADSET_AND_SPEAKER; - audProcess = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE); - } else { - LOGI("Routing audio to Wired Headset\n"); - sndDevice = SND_DEVICE_HEADSET; - } - } else { - if (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER) { - LOGI("Routing audio to Speakerphone\n"); - sndDevice = SND_DEVICE_SPEAKER; - audProcess = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE); + ALOGI("do input routing device %x\n", inputDevice); + // ignore routing device information when we start a recording in voice + // call + // Recording will happen through currently active tx device + if(inputDevice == AudioSystem::DEVICE_IN_VOICE_CALL) + return NO_ERROR; + if (inputDevice != 0) { + if (inputDevice & AudioSystem::DEVICE_IN_BLUETOOTH_SCO_HEADSET) { + ALOGI("Routing audio to Bluetooth PCM\n"); + new_snd_device = SND_DEVICE_BT; + } else if (inputDevice & AudioSystem::DEVICE_IN_WIRED_HEADSET) { + ALOGI("Routing audio to Wired Headset\n"); + new_snd_device = SND_DEVICE_HEADSET; +#ifdef QCOM_FM_ENABLED + } else if (inputDevice & AudioSystem::DEVICE_IN_FM_RX_A2DP) { + ALOGI("Routing audio from FM to Bluetooth A2DP\n"); + new_snd_device = SND_DEVICE_FM_DIGITAL_BT_A2DP_HEADSET; + FmA2dpStatus=true; + } else if (inputDevice & AudioSystem::DEVICE_IN_FM_RX) { + ALOGI("Routing audio to FM\n"); + enableDgtlFmDriver = true; +#endif } else { - LOGI("Routing audio to Handset\n"); - sndDevice = SND_DEVICE_HANDSET; + if (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER) { + ALOGI("Routing audio to Speakerphone\n"); + new_snd_device = SND_DEVICE_SPEAKER; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); + } else { + ALOGI("Routing audio to Handset\n"); + new_snd_device = SND_DEVICE_HANDSET; + } } } } - // if inputDevice == 0, restore output routing - if (sndDevice == -1) { + // if inputDevice == 0, restore output routing + if (new_snd_device == -1) { if (outputDevices & (outputDevices - 1)) { if ((outputDevices & AudioSystem::DEVICE_OUT_SPEAKER) == 0) { - LOGW("Hardware does not support requested route combination (%#X)," + ALOGV("Hardware does not support requested route combination (%#X)," " picking closest possible route...", outputDevices); } } - if (outputDevices & - (AudioSystem::DEVICE_OUT_BLUETOOTH_SCO | AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_HEADSET)) { - LOGI("Routing audio to Bluetooth PCM\n"); - sndDevice = SND_DEVICE_BT; - } else if (outputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_CARKIT) { - LOGI("Routing audio to Bluetooth PCM\n"); - sndDevice = SND_DEVICE_CARKIT; + if ((mTtyMode != TTY_OFF) && (mMode == AudioSystem::MODE_IN_CALL) && + (outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET)) { + if (mTtyMode == TTY_FULL) { + ALOGI("Routing audio to TTY FULL Mode\n"); + new_snd_device = SND_DEVICE_TTY_HEADSET; + } else if (mTtyMode == TTY_VCO) { + ALOGI("Routing audio to TTY VCO Mode\n"); + new_snd_device = SND_DEVICE_TTY_VCO; + } else if (mTtyMode == TTY_HCO) { + ALOGI("Routing audio to TTY HCO Mode\n"); + new_snd_device = SND_DEVICE_TTY_HCO; + } +#ifdef COMBO_DEVICE_SUPPORTED } else if ((outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET) && (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER)) { - LOGI("Routing audio to Wired Headset and Speaker\n"); - sndDevice = SND_DEVICE_HEADSET_AND_SPEAKER; - audProcess = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE); - } else if (outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE) { - if (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER) { - LOGI("Routing audio to No microphone Wired Headset and Speaker (%d,%x)\n", mMode, outputDevices); - sndDevice = SND_DEVICE_HEADSET_AND_SPEAKER; - audProcess = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE); - } else { - LOGI("Routing audio to No microphone Wired Headset (%d,%x)\n", mMode, outputDevices); - sndDevice = SND_DEVICE_NO_MIC_HEADSET; + ALOGI("Routing audio to Wired Headset and Speaker\n"); + new_snd_device = SND_DEVICE_STEREO_HEADSET_AND_SPEAKER; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); + } else if ((outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE) && + (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER)) { + ALOGI("Routing audio to No microphone Wired Headset and Speaker (%d,%x)\n", mMode, outputDevices); + new_snd_device = SND_DEVICE_STEREO_HEADSET_AND_SPEAKER; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); +#endif +#ifdef QCOM_FM_ENABLED + } else if ((outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET) && + (outputDevices & AudioSystem::DEVICE_OUT_FM)) { + if( !isFMAnalog() ){ + ALOGI("Routing FM to Wired Headset\n"); + new_snd_device = SND_DEVICE_FM_DIGITAL_STEREO_HEADSET; + enableDgtlFmDriver = true; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); + } else{ + ALOGW("Enabling Anlg FM + codec device\n"); + new_snd_device = SND_DEVICE_FM_ANALOG_STEREO_HEADSET_CODEC; + enableDgtlFmDriver = false; } + } else if ((outputDevices & AudioSystem::DEVICE_OUT_SPEAKER) && + (outputDevices & AudioSystem::DEVICE_OUT_FM)) { + ALOGI("Routing FM to Speakerphone\n"); + new_snd_device = SND_DEVICE_FM_DIGITAL_SPEAKER_PHONE; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); + enableDgtlFmDriver = true; + } else if ( (outputDevices & AudioSystem::DEVICE_OUT_FM) && isFMAnalog()) { + ALOGW("Enabling Anlg FM on wired headset\n"); + new_snd_device = SND_DEVICE_FM_ANALOG_STEREO_HEADSET; + enableDgtlFmDriver = false; +#endif + } else if (outputDevices & + (AudioSystem::DEVICE_OUT_BLUETOOTH_SCO | AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_HEADSET)) { + ALOGI("Routing audio to Bluetooth PCM\n"); + new_snd_device = SND_DEVICE_BT; + } else if (outputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_CARKIT) { + ALOGI("Routing audio to Bluetooth PCM\n"); + new_snd_device = SND_DEVICE_CARKIT; } else if (outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET) { - LOGI("Routing audio to Wired Headset\n"); - sndDevice = SND_DEVICE_HEADSET; + ALOGI("Routing audio to Wired Headset\n"); + new_snd_device = SND_DEVICE_HEADSET; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); + } else if (outputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE){ + ALOGI("Routing audio to No microphone Wired Headset (%d,%x)\n", mMode, outputDevices); + new_snd_device = SND_DEVICE_NO_MIC_HEADSET; } else if (outputDevices & AudioSystem::DEVICE_OUT_SPEAKER) { - LOGI("Routing audio to Speakerphone\n"); - sndDevice = SND_DEVICE_SPEAKER; - audProcess = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE); - } else { - LOGI("Routing audio to Handset\n"); - sndDevice = SND_DEVICE_HANDSET; + ALOGI("Routing audio to Speakerphone\n"); + new_snd_device = SND_DEVICE_SPEAKER; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); + } else if (outputDevices & AudioSystem::DEVICE_OUT_EARPIECE) { + ALOGI("Routing audio to Handset\n"); + new_snd_device = SND_DEVICE_HANDSET; + new_post_proc_feature_mask = (ADRC_ENABLE | EQ_ENABLE | RX_IIR_ENABLE | MBADRC_ENABLE); } } - if (sndDevice != -1 && sndDevice != mCurSndDevice) { - ret = doAudioRouteOrMute(sndDevice); - if ((*msm72xx_enable_audpp) == 0 ) { - LOGE("Could not open msm72xx_enable_audpp()"); - } else { - msm72xx_enable_audpp(audProcess); + if (mDualMicEnabled && mMode == AudioSystem::MODE_IN_CALL) { + if (new_snd_device == SND_DEVICE_HANDSET) { + ALOGI("Routing audio to handset with DualMike enabled\n"); + new_snd_device = SND_DEVICE_IN_S_SADC_OUT_HANDSET; + } else if (new_snd_device == SND_DEVICE_SPEAKER) { + ALOGI("Routing audio to speakerphone with DualMike enabled\n"); + new_snd_device = SND_DEVICE_IN_S_SADC_OUT_SPEAKER_PHONE; } - mCurSndDevice = sndDevice; + } +#ifdef QCOM_FM_ENABLED + if ((mFmFd == -1) && enableDgtlFmDriver ) { + enableFM(); + } else if ((mFmFd != -1) && !enableDgtlFmDriver ) { + disableFM(); + } + + if((outputDevices == 0) && (FmA2dpStatus == true)) + new_snd_device = SND_DEVICE_FM_DIGITAL_BT_A2DP_HEADSET; +#endif + + if (new_snd_device != -1 && new_snd_device != mCurSndDevice) { + ret = doAudioRouteOrMute(new_snd_device); + + //disable post proc first for previous session + if(hpcm_playback_in_progress +#ifdef QCOM_TUNNEL_LPA_ENABLED + || lpa_playback_in_progress +#endif + ) { + msm72xx_enable_postproc(false); +#ifdef SRS_PROCESSING + msm72xx_enable_srs(SRS_PARAMS_ALL, false); +#endif /*SRS_PROCESSING*/ + } + + //enable post proc for new device + snd_device = new_snd_device; + post_proc_feature_mask = new_post_proc_feature_mask; + + if(hpcm_playback_in_progress +#ifdef QCOM_TUNNEL_LPA_ENABLED + || lpa_playback_in_progress +#endif + ){ + msm72xx_enable_postproc(true); +#ifdef SRS_PROCESSING + msm72xx_enable_srs(SRS_PARAMS_ALL, true); +#endif /*SRS_PROCESSING*/ + } + + mCurSndDevice = new_snd_device; } return ret; } +#ifdef QCOM_FM_ENABLED +status_t AudioHardware::enableFM() +{ + ALOGD("enableFM"); + status_t status = NO_INIT; + status = ::open(FM_DEVICE, O_RDWR); + if (status < 0) { + ALOGE("Cannot open FM_DEVICE errno: %d", errno); + goto Error; + } + mFmFd = status; + + status = ioctl(mFmFd, AUDIO_START, 0); + + if (status < 0) { + ALOGE("Cannot do AUDIO_START"); + goto Error; + } + return NO_ERROR; + + Error: + if (mFmFd >= 0) { + ::close(mFmFd); + mFmFd = -1; + } + return NO_ERROR; +} + + +status_t AudioHardware::disableFM() +{ + int status; + ALOGD("disableFM"); + if (mFmFd >= 0) { + status = ioctl(mFmFd, AUDIO_STOP, 0); + if (status < 0) { + ALOGE("Cannot do AUDIO_STOP"); + } + ::close(mFmFd); + mFmFd = -1; + } + + return NO_ERROR; +} +#endif status_t AudioHardware::checkMicMute() { Mutex::Autolock lock(mLock); @@ -648,33 +1873,573 @@ uint32_t AudioHardware::getInputSampleRate(uint32_t sampleRate) return inputSamplingRates[i-1]; } -// getActiveInput_l() must be called with mLock held -AudioHardware::AudioStreamInMSM72xx *AudioHardware::getActiveInput_l() +// getActiveInput_l() must be called with mLock held +AudioHardware::AudioStreamInMSM72xx *AudioHardware::getActiveInput_l() +{ + for (size_t i = 0; i < mInputs.size(); i++) { + // return first input found not being in standby mode + // as only one input can be in this state + if (mInputs[i]->state() > AudioStreamInMSM72xx::AUDIO_INPUT_CLOSED) { + return mInputs[i]; + } + } + + return NULL; +} + +// ---------------------------------------------------------------------------- + + +// VOIP stream class +//.---------------------------------------------------------------------------- +#ifdef QCOM_VOIP_ENABLED +AudioHardware::AudioStreamInVoip::AudioStreamInVoip() : + mHardware(0), mFd(-1), mState(AUDIO_INPUT_CLOSED), mRetryCount(0), + mFormat(AUDIO_HW_IN_FORMAT), mChannels(AUDIO_HW_IN_CHANNELS), + mSampleRate(AUDIO_HW_VOIP_SAMPLERATE_8K), mBufferSize(AUDIO_HW_VOIP_BUFFERSIZE_8K), + mAcoustics((AudioSystem::audio_in_acoustics)0), mDevices(0) +{ +} + + +status_t AudioHardware::AudioStreamInVoip::set( + AudioHardware* hw, uint32_t devices, int *pFormat, uint32_t *pChannels, uint32_t *pRate, + AudioSystem::audio_in_acoustics acoustic_flags) +{ + ALOGE("AudioStreamInVoip::set devices = %u format = %d pChannels = %u Rate = %u \n", + devices, *pFormat, *pChannels, *pRate); + if ((pFormat == 0) ||(*pFormat != AUDIO_HW_IN_FORMAT)) + { + *pFormat = AUDIO_HW_IN_FORMAT; + ALOGE("Audio Format (%d)not supported \n",*pFormat); + return BAD_VALUE; + } + + if (pRate == 0) { + return BAD_VALUE; + } + uint32_t rate = hw->getInputSampleRate(*pRate); + if (rate != *pRate) { + *pRate = rate; + ALOGE(" sample rate does not match\n"); + return BAD_VALUE; + } + + if (pChannels == 0 || (*pChannels & (AudioSystem::CHANNEL_IN_MONO)) == 0) { + *pChannels = AUDIO_HW_IN_CHANNELS; + ALOGE(" Channle count does not match\n"); + return BAD_VALUE; + } + + mHardware = hw; + + ALOGV("AudioStreamInVoip::set(%d, %d, %u)", *pFormat, *pChannels, *pRate); + if (mFd >= 0) { + ALOGE("Audio record already open"); + return -EPERM; + } + + status_t status = NO_INIT; + // open driver + ALOGV("Check if driver is open"); + if(mHardware->mVoipFd >= 0) { + mFd = mHardware->mVoipFd; + // Increment voip stream count + mHardware->mNumVoipStreams++; + ALOGV("MVS driver is already opened, mHardware->mNumVoipStreams = %d \n", + mHardware->mNumVoipStreams); + } + else { + ALOGE("open mvs driver"); + status = ::open(MVS_DEVICE, /*O_WRONLY*/ O_RDWR); + if (status < 0) { + ALOGE("Cannot open %s errno: %d",MVS_DEVICE, errno); + goto Error; + } + mFd = status; + ALOGV("VOPIstreamin : Save the fd %d \n",mFd); + mHardware->mVoipFd = mFd; + // Increment voip stream count + mHardware->mNumVoipStreams++; + ALOGV(" input stream set mHardware->mNumVoipStreams = %d \n", mHardware->mNumVoipStreams); + + // configuration + ALOGV("get mvs config"); + struct msm_audio_mvs_config mvs_config; + status = ioctl(mFd, AUDIO_GET_MVS_CONFIG, &mvs_config); + if (status < 0) { + ALOGE("Cannot read mvs config"); + goto Error; + } + + ALOGV("set mvs config"); + mvs_config.mvs_mode = MVS_MODE_PCM; + status = ioctl(mFd, AUDIO_SET_MVS_CONFIG, &mvs_config); + if (status < 0) { + ALOGE("Cannot set mvs config"); + goto Error; + } + + ALOGV("start mvs"); + status = ioctl(mFd, AUDIO_START, 0); + if (status < 0) { + ALOGE("Cannot start mvs driver"); + goto Error; + } + } + mFormat = *pFormat; + mChannels = *pChannels; + mSampleRate = *pRate; + if(mSampleRate == AUDIO_HW_VOIP_SAMPLERATE_8K) + mBufferSize = 320; + else if(mSampleRate == AUDIO_HW_VOIP_SAMPLERATE_16K) + mBufferSize = 640; + else + { + ALOGE(" unsupported sample rate"); + return -1; + } + + ALOGV(" AudioHardware::AudioStreamInVoip::set after configuring devices\ + = %u format = %d pChannels = %u Rate = %u \n", + devices, mFormat, mChannels, mSampleRate); + + ALOGV(" Set state AUDIO_INPUT_OPENED\n"); + mState = AUDIO_INPUT_OPENED; + + if (!acoustic) + return NO_ERROR; + + return NO_ERROR; + +Error: + if (mFd >= 0) { + ::close(mFd); + mFd = -1; + mHardware->mVoipFd = -1; + } + ALOGE("Error : ret status \n"); + return status; +} + + +AudioHardware::AudioStreamInVoip::~AudioStreamInVoip() +{ + ALOGV("AudioStreamInVoip destructor"); + standby(); + if (mHardware->mNumVoipStreams) + mHardware->mNumVoipStreams--; +} + + + +ssize_t AudioHardware::AudioStreamInVoip::read( void* buffer, ssize_t bytes) +{ + ALOGV("AudioStreamInVoip::read(%p, %ld)", buffer, bytes); + if (!mHardware) return -1; + + size_t count = bytes; + size_t totalBytesRead = 0; + + if (mState < AUDIO_INPUT_OPENED) { + ALOGE(" reopen the device \n"); + AudioHardware *hw = mHardware; + hw->mLock.lock(); + status_t status = set(hw, mDevices, &mFormat, &mChannels, &mSampleRate, mAcoustics); + if (status != NO_ERROR) { + hw->mLock.unlock(); + return -1; + } + hw->mLock.unlock(); + mState = AUDIO_INPUT_STARTED; + bytes = 0; + } else { + ALOGV("AudioStreamInVoip::read : device is already open \n"); + } + + + if(mFormat == AUDIO_HW_IN_FORMAT) + { + if(count < mBufferSize) { + ALOGE("read:: read size requested is less than min input buffer size"); + return 0; + } + + struct msm_audio_mvs_frame audio_mvs_frame; + audio_mvs_frame.frame_type = 0; + while (count >= mBufferSize) { + audio_mvs_frame.len = mBufferSize; + ALOGV("Calling read count = %u mBufferSize = %u \n",count, mBufferSize); + int bytesRead = ::read(mFd, &audio_mvs_frame, sizeof(audio_mvs_frame)); + ALOGV("read_bytes = %d mvs\n", bytesRead); + if (bytesRead > 0) { + memcpy(buffer+totalBytesRead,&audio_mvs_frame.voc_pkt, mBufferSize); + count -= mBufferSize; + totalBytesRead += mBufferSize; + if(!mFirstread) { + mFirstread = true; + break; + } + } else { + ALOGE("retry read count = %d buffersize = %d\n", count, mBufferSize); + if (errno != EAGAIN) return bytesRead; + mRetryCount++; + ALOGW("EAGAIN - retrying"); + } + } + } + return totalBytesRead; +} + +status_t AudioHardware::AudioStreamInVoip::standby() +{ + bool isDriverClosed = false; + if (!mHardware) return -1; + ALOGV(" AudioStreamInVoip::standby = %d \n", mHardware->mNumVoipStreams); + if (mState > AUDIO_INPUT_CLOSED && (mHardware->mNumVoipStreams == 1)) { + int ret = 0; + if (mFd >= 0) { + ret = ioctl(mFd, AUDIO_STOP, NULL); + ALOGV("MVS stop returned %d \n", ret); + ::close(mFd); + mFd = mHardware->mVoipFd = -1; + ALOGE("MVS driver closed"); + isDriverClosed = true; + } + mState = AUDIO_INPUT_CLOSED; + } + return NO_ERROR; +} + +status_t AudioHardware::AudioStreamInVoip::dump(int fd, const Vector& args) +{ + const size_t SIZE = 256; + char buffer[SIZE]; + String8 result; + result.append("AudioStreamInVoip::dump\n"); + snprintf(buffer, SIZE, "\tsample rate: %d\n", sampleRate()); + result.append(buffer); + snprintf(buffer, SIZE, "\tbuffer size: %d\n", bufferSize()); + result.append(buffer); + snprintf(buffer, SIZE, "\tchannels: %d\n", channels()); + result.append(buffer); + snprintf(buffer, SIZE, "\tformat: %d\n", format()); + result.append(buffer); + snprintf(buffer, SIZE, "\tmHardware: %p\n", mHardware); + result.append(buffer); + snprintf(buffer, SIZE, "\tmFd count: %d\n", mFd); + result.append(buffer); + snprintf(buffer, SIZE, "\tmState: %d\n", mState); + result.append(buffer); + snprintf(buffer, SIZE, "\tmRetryCount: %d\n", mRetryCount); + result.append(buffer); + ::write(fd, result.string(), result.size()); + return NO_ERROR; +} + +status_t AudioHardware::AudioStreamInVoip::setParameters(const String8& keyValuePairs) +{ + AudioParameter param = AudioParameter(keyValuePairs); + String8 key = String8(AudioParameter::keyRouting); + status_t status = NO_ERROR; + int device; + ALOGV("AudioStreamInVoip::setParameters() %s", keyValuePairs.string()); + + if (param.getInt(key, device) == NO_ERROR) { + ALOGV("set input routing %x", device); + if (device & (device - 1)) { + status = BAD_VALUE; + } else { + mDevices = device; + status = mHardware->doRouting(this); + } + param.remove(key); + } + + if (param.size()) { + status = BAD_VALUE; + } + return status; +} + +String8 AudioHardware::AudioStreamInVoip::getParameters(const String8& keys) +{ + AudioParameter param = AudioParameter(keys); + String8 value; + String8 key = String8(AudioParameter::keyRouting); + + if (param.get(key, value) == NO_ERROR) { + ALOGV("get routing %x", mDevices); + param.addInt(key, (int)mDevices); + } + + ALOGV("AudioStreamInVoip::getParameters() %s", param.toString().string()); + return param.toString(); +} + +// getActiveInput_l() must be called with mLock held +AudioHardware::AudioStreamInVoip*AudioHardware::getActiveVoipInput_l() +{ + for (size_t i = 0; i < mVoipInputs.size(); i++) { + // return first input found not being in standby mode + // as only one input can be in this state + if (mVoipInputs[i]->state() > AudioStreamInVoip::AUDIO_INPUT_CLOSED) { + return mVoipInputs[i]; + } + } + + return NULL; +} +#endif +// --------------------------------------------------------------------------- +// VOIP stream class end + + +// ---------------------------------------------------------------------------- + +AudioHardware::AudioStreamOutMSM72xx::AudioStreamOutMSM72xx() : + mHardware(0), mFd(-1), mStartCount(0), mRetryCount(0), mStandby(true), mDevices(0) +{ +} + +status_t AudioHardware::AudioStreamOutMSM72xx::set( + AudioHardware* hw, uint32_t devices, int *pFormat, uint32_t *pChannels, uint32_t *pRate) +{ + int lFormat = pFormat ? *pFormat : 0; + uint32_t lChannels = pChannels ? *pChannels : 0; + uint32_t lRate = pRate ? *pRate : 0; + + mHardware = hw; + + // fix up defaults + if (lFormat == 0) lFormat = format(); + if (lChannels == 0) lChannels = channels(); + if (lRate == 0) lRate = sampleRate(); + + // check values + if ((lFormat != format()) || + (lChannels != channels()) || + (lRate != sampleRate())) { + if (pFormat) *pFormat = format(); + if (pChannels) *pChannels = channels(); + if (pRate) *pRate = sampleRate(); + return BAD_VALUE; + } + + if (pFormat) *pFormat = lFormat; + if (pChannels) *pChannels = lChannels; + if (pRate) *pRate = lRate; + + mDevices = devices; + + return NO_ERROR; +} + +AudioHardware::AudioStreamOutMSM72xx::~AudioStreamOutMSM72xx() +{ + if (mFd >= 0) close(mFd); +} + +ssize_t AudioHardware::AudioStreamOutMSM72xx::write(const void* buffer, size_t bytes) +{ + //ALOGE("AudioStreamOutMSM72xx::write(%p, %u)", buffer, bytes); + status_t status = NO_INIT; + size_t count = bytes; + const uint8_t* p = static_cast(buffer); + + if (mStandby) { + + // open driver + ALOGV("open driver"); + status = ::open("/dev/msm_pcm_out", O_RDWR); + if (status < 0) { + ALOGE("Cannot open /dev/msm_pcm_out errno: %d", errno); + goto Error; + } + mFd = status; + + // configuration + ALOGV("get config"); + struct msm_audio_config config; + status = ioctl(mFd, AUDIO_GET_CONFIG, &config); + if (status < 0) { + ALOGE("Cannot read config"); + goto Error; + } + + ALOGV("set config"); + config.channel_count = AudioSystem::popCount(channels()); + config.sample_rate = sampleRate(); + config.buffer_size = bufferSize(); + config.buffer_count = AUDIO_HW_NUM_OUT_BUF; + config.type = CODEC_TYPE_PCM; + status = ioctl(mFd, AUDIO_SET_CONFIG, &config); + if (status < 0) { + ALOGE("Cannot set config"); + goto Error; + } + + ALOGV("buffer_size: %u", config.buffer_size); + ALOGV("buffer_count: %u", config.buffer_count); + ALOGV("channel_count: %u", config.channel_count); + ALOGV("sample_rate: %u", config.sample_rate); + + // fill 2 buffers before AUDIO_START + mStartCount = AUDIO_HW_NUM_OUT_BUF; + mStandby = false; + } + + while (count) { + ssize_t written = ::write(mFd, p, count); + if (written >= 0) { + count -= written; + p += written; + } else { + if (errno != EAGAIN) return written; + mRetryCount++; + ALOGW("EAGAIN - retry"); + } + } + + // start audio after we fill 2 buffers + if (mStartCount) { + if (--mStartCount == 0) { + ioctl(mFd, AUDIO_START, 0); + hpcm_playback_in_progress = true; + post_proc_feature_mask = new_post_proc_feature_mask; + //enable post processing + msm72xx_enable_postproc(true); +#ifdef SRS_PROCESSING + msm72xx_enable_srs(SRS_PARAMS_ALL, true); +#endif /*SRS_PROCESSING*/ + } + } + return bytes; + +Error: + if (mFd >= 0) { + ::close(mFd); + mFd = -1; + } + // Simulate audio output timing in case of error + usleep(bytes * 1000000 / frameSize() / sampleRate()); + + return status; +} + +status_t AudioHardware::AudioStreamOutMSM72xx::standby() +{ + status_t status = NO_ERROR; + if (!mStandby && mFd >= 0) { + //disable post processing + hpcm_playback_in_progress = false; +#ifdef QCOM_TUNNEL_LPA_ENABLED + if(!lpa_playback_in_progress) +#endif + { + msm72xx_enable_postproc(false); +#ifdef SRS_PROCESSING + msm72xx_enable_srs(SRS_PARAMS_ALL, false); +#endif /*SRS_PROCESSING*/ + } + ::close(mFd); + mFd = -1; + } + mStandby = true; + return status; +} + +status_t AudioHardware::AudioStreamOutMSM72xx::dump(int fd, const Vector& args) +{ + const size_t SIZE = 256; + char buffer[SIZE]; + String8 result; + result.append("AudioStreamOutMSM72xx::dump\n"); + snprintf(buffer, SIZE, "\tsample rate: %d\n", sampleRate()); + result.append(buffer); + snprintf(buffer, SIZE, "\tbuffer size: %d\n", bufferSize()); + result.append(buffer); + snprintf(buffer, SIZE, "\tchannels: %d\n", channels()); + result.append(buffer); + snprintf(buffer, SIZE, "\tformat: %d\n", format()); + result.append(buffer); + snprintf(buffer, SIZE, "\tmHardware: %p\n", mHardware); + result.append(buffer); + snprintf(buffer, SIZE, "\tmFd: %d\n", mFd); + result.append(buffer); + snprintf(buffer, SIZE, "\tmStartCount: %d\n", mStartCount); + result.append(buffer); + snprintf(buffer, SIZE, "\tmRetryCount: %d\n", mRetryCount); + result.append(buffer); + snprintf(buffer, SIZE, "\tmStandby: %s\n", mStandby? "true": "false"); + result.append(buffer); + ::write(fd, result.string(), result.size()); + return NO_ERROR; +} + +bool AudioHardware::AudioStreamOutMSM72xx::checkStandby() +{ + return mStandby; +} + + +status_t AudioHardware::AudioStreamOutMSM72xx::setParameters(const String8& keyValuePairs) +{ + AudioParameter param = AudioParameter(keyValuePairs); + String8 key = String8(AudioParameter::keyRouting); + status_t status = NO_ERROR; + int device; + ALOGV("AudioStreamOutMSM72xx::setParameters() %s", keyValuePairs.string()); + + if (param.getInt(key, device) == NO_ERROR) { + mDevices = device; + ALOGV("set output routing %x", mDevices); + status = mHardware->doRouting(NULL); + param.remove(key); + } + + if (param.size()) { + status = BAD_VALUE; + } + return status; +} + +String8 AudioHardware::AudioStreamOutMSM72xx::getParameters(const String8& keys) +{ + AudioParameter param = AudioParameter(keys); + String8 value; + String8 key = String8(AudioParameter::keyRouting); + + if (param.get(key, value) == NO_ERROR) { + ALOGV("get routing %x", mDevices); + param.addInt(key, (int)mDevices); + } + + ALOGV("AudioStreamOutMSM72xx::getParameters() %s", param.toString().string()); + return param.toString(); +} + +status_t AudioHardware::AudioStreamOutMSM72xx::getRenderPosition(uint32_t *dspFrames) { - for (size_t i = 0; i < mInputs.size(); i++) { - // return first input found not being in standby mode - // as only one input can be in this state - if (mInputs[i]->state() > AudioStreamInMSM72xx::AUDIO_INPUT_CLOSED) { - return mInputs[i]; - } - } - - return NULL; + //TODO: enable when supported by driver + return INVALID_OPERATION; } -// ---------------------------------------------------------------------------- -AudioHardware::AudioStreamOutMSM72xx::AudioStreamOutMSM72xx() : - mHardware(0), mFd(-1), mStartCount(0), mRetryCount(0), mStandby(true), mDevices(0) +#ifdef QCOM_VOIP_ENABLED +AudioHardware::AudioStreamOutDirect::AudioStreamOutDirect() : + mHardware(0), mFd(-1), mStartCount(0), mRetryCount(0), mStandby(true), mDevices(0),mChannels(AudioSystem::CHANNEL_OUT_MONO), + mSampleRate(AUDIO_HW_VOIP_SAMPLERATE_8K), mBufferSize(AUDIO_HW_VOIP_BUFFERSIZE_8K) { } -status_t AudioHardware::AudioStreamOutMSM72xx::set( +status_t AudioHardware::AudioStreamOutDirect::set( AudioHardware* hw, uint32_t devices, int *pFormat, uint32_t *pChannels, uint32_t *pRate) { int lFormat = pFormat ? *pFormat : 0; uint32_t lChannels = pChannels ? *pChannels : 0; uint32_t lRate = pRate ? *pRate : 0; + ALOGE("AudioStreamOutDirect::set lFormat = %d lChannels= %u lRate = %u\n", lFormat, lChannels, lRate ); mHardware = hw; // fix up defaults @@ -689,6 +2454,7 @@ status_t AudioHardware::AudioStreamOutMSM72xx::set( if (pFormat) *pFormat = format(); if (pChannels) *pChannels = channels(); if (pRate) *pRate = sampleRate(); + ALOGE(" AudioStreamOutDirect::set return bad values\n"); return BAD_VALUE; } @@ -696,113 +2462,142 @@ status_t AudioHardware::AudioStreamOutMSM72xx::set( if (pChannels) *pChannels = lChannels; if (pRate) *pRate = lRate; - mDevices = devices; + // check values + mFormat = lFormat; + mChannels = lChannels; + mSampleRate = lRate; + if(mSampleRate == AUDIO_HW_VOIP_SAMPLERATE_8K) { + mBufferSize = AUDIO_HW_VOIP_BUFFERSIZE_8K; + } else if(mSampleRate == AUDIO_HW_VOIP_SAMPLERATE_16K) { + mBufferSize = AUDIO_HW_VOIP_BUFFERSIZE_16K; + } else { + ALOGE(" AudioStreamOutDirect::set return bad values\n"); + return BAD_VALUE; + } + + + mDevices = devices; + mHardware->mNumVoipStreams++; return NO_ERROR; } -AudioHardware::AudioStreamOutMSM72xx::~AudioStreamOutMSM72xx() +AudioHardware::AudioStreamOutDirect::~AudioStreamOutDirect() { - if (mFd >= 0) close(mFd); + ALOGV("AudioStreamOutDirect destructor"); + standby(); + if (mHardware->mNumVoipStreams) + mHardware->mNumVoipStreams--; } -ssize_t AudioHardware::AudioStreamOutMSM72xx::write(const void* buffer, size_t bytes) +ssize_t AudioHardware::AudioStreamOutDirect::write(const void* buffer, size_t bytes) { - // LOGD("AudioStreamOutMSM72xx::write(%p, %u)", buffer, bytes); status_t status = NO_INIT; size_t count = bytes; const uint8_t* p = static_cast(buffer); if (mStandby) { - - // open driver - LOGV("open driver"); - status = ::open("/dev/msm_pcm_out", O_RDWR); - if (status < 0) { - LOGE("Cannot open /dev/msm_pcm_out errno: %d", errno); - goto Error; - } - mFd = status; - - // configuration - LOGV("get config"); - struct msm_audio_config config; - status = ioctl(mFd, AUDIO_GET_CONFIG, &config); - if (status < 0) { - LOGE("Cannot read config"); - goto Error; + if(mHardware->mVoipFd >= 0) { + mFd = mHardware->mVoipFd; } + else { + // open driver + ALOGE("open mvs driver"); + status = ::open(MVS_DEVICE, /*O_WRONLY*/ O_RDWR); + if (status < 0) { + ALOGE("Cannot open %s errno: %d",MVS_DEVICE, errno); + goto Error; + } + mFd = status; + mHardware->mVoipFd = mFd; + // configuration + ALOGV("get mvs config"); + struct msm_audio_mvs_config mvs_config; + status = ioctl(mFd, AUDIO_GET_MVS_CONFIG, &mvs_config); + if (status < 0) { + ALOGE("Cannot read mvs config"); + goto Error; + } - LOGV("set config"); - config.channel_count = AudioSystem::popCount(channels()); - config.sample_rate = sampleRate(); - config.buffer_size = bufferSize(); - config.buffer_count = AUDIO_HW_NUM_OUT_BUF; - config.codec_type = CODEC_TYPE_PCM; - status = ioctl(mFd, AUDIO_SET_CONFIG, &config); - if (status < 0) { - LOGE("Cannot set config"); - goto Error; - } + ALOGV("set mvs config"); + mvs_config.mvs_mode = MVS_MODE_PCM; + status = ioctl(mFd, AUDIO_SET_MVS_CONFIG, &mvs_config); + if (status < 0) { + ALOGE("Cannot set mvs config"); + goto Error; + } - LOGV("buffer_size: %u", config.buffer_size); - LOGV("buffer_count: %u", config.buffer_count); - LOGV("channel_count: %u", config.channel_count); - LOGV("sample_rate: %u", config.sample_rate); + ALOGV("start mvs config"); + status = ioctl(mFd, AUDIO_START, 0); + if (status < 0) { + ALOGE("Cannot start mvs driver"); + goto Error; + } - // fill 2 buffers before AUDIO_START - mStartCount = AUDIO_HW_NUM_OUT_BUF; - mStandby = false; + mStandby = false; + } } - + struct msm_audio_mvs_frame audio_mvs_frame; + audio_mvs_frame.frame_type = 0; while (count) { - ssize_t written = ::write(mFd, p, count); - if (written >= 0) { - count -= written; - p += written; + audio_mvs_frame.len = mBufferSize; + memcpy(&audio_mvs_frame.voc_pkt, p, mBufferSize); + // TODO - this memcpy is rendundant can be removed. + ALOGV("write mvs bytes"); + size_t written = ::write(mFd, &audio_mvs_frame, sizeof(audio_mvs_frame)); + ALOGV(" mvs bytes written : %d \n", written); + if (written == 0) { + count -= mBufferSize; + p += mBufferSize; } else { if (errno != EAGAIN) return written; mRetryCount++; - LOGW("EAGAIN - retry"); + ALOGW("EAGAIN - retry"); } } - // start audio after we fill 2 buffers - if (mStartCount) { - if (--mStartCount == 0) { - ioctl(mFd, AUDIO_START, 0); - } - } return bytes; Error: +ALOGE(" write Error \n"); if (mFd >= 0) { ::close(mFd); mFd = -1; + mHardware->mVoipFd = -1; } // Simulate audio output timing in case of error - usleep(bytes * 1000000 / frameSize() / sampleRate()); +// usleep(bytes * 1000000 / frameSize() / sampleRate()); return status; } -status_t AudioHardware::AudioStreamOutMSM72xx::standby() + + +status_t AudioHardware::AudioStreamOutDirect::standby() { + ALOGD("AudioStreamOutDirect::standby()"); status_t status = NO_ERROR; - if (!mStandby && mFd >= 0) { - ::close(mFd); - mFd = -1; - } + int ret = 0; + + ALOGV(" AudioStreamOutDirect::standby mHardware->mNumVoipStreams = %d mFd = %d mStandby %d\n", mHardware->mNumVoipStreams, mFd,mStandby); + if (mFd >= 0 && (mHardware->mNumVoipStreams == 1)) { + ret = ioctl(mFd, AUDIO_STOP, NULL); + ALOGV("MVS stop returned %d \n", ret); + ::close(mFd); + mFd = mHardware->mVoipFd = -1; + ALOGE("MVS driver closed"); + } + mStandby = true; return status; } -status_t AudioHardware::AudioStreamOutMSM72xx::dump(int fd, const Vector& args) +status_t AudioHardware::AudioStreamOutDirect::dump(int fd, const Vector& args) { const size_t SIZE = 256; char buffer[SIZE]; String8 result; - result.append("AudioStreamOutMSM72xx::dump\n"); + result.append("AudioStreamOutDirect::dump\n"); snprintf(buffer, SIZE, "\tsample rate: %d\n", sampleRate()); result.append(buffer); snprintf(buffer, SIZE, "\tbuffer size: %d\n", bufferSize()); @@ -825,23 +2620,23 @@ status_t AudioHardware::AudioStreamOutMSM72xx::dump(int fd, const VectordoRouting(NULL); param.remove(key); } @@ -852,28 +2647,162 @@ status_t AudioHardware::AudioStreamOutMSM72xx::setParameters(const String8& keyV return status; } -String8 AudioHardware::AudioStreamOutMSM72xx::getParameters(const String8& keys) +String8 AudioHardware::AudioStreamOutDirect::getParameters(const String8& keys) { AudioParameter param = AudioParameter(keys); String8 value; String8 key = String8(AudioParameter::keyRouting); if (param.get(key, value) == NO_ERROR) { - LOGV("get routing %x", mDevices); + ALOGV("get routing %x", mDevices); param.addInt(key, (int)mDevices); } - LOGV("AudioStreamOutMSM72xx::getParameters() %s", param.toString().string()); + ALOGV("AudioStreamOutDirect::getParameters() %s", param.toString().string()); return param.toString(); } -status_t AudioHardware::AudioStreamOutMSM72xx::getRenderPosition(uint32_t *dspFrames) +status_t AudioHardware::AudioStreamOutDirect::getRenderPosition(uint32_t *dspFrames) { //TODO: enable when supported by driver return INVALID_OPERATION; } +#endif + +// End AudioStreamOutDirect + +AudioHardware::AudioSessionOutMSM7xxx::AudioSessionOutMSM7xxx() : + mHardware(0), mStartCount(0), mRetryCount(0), mStandby(true), mDevices(0) +#ifdef QCOM_TUNNEL_LPA_ENABLED + ,mLPADriverFd(-1) +#endif +{ +} -// ---------------------------------------------------------------------------- +status_t AudioHardware::AudioSessionOutMSM7xxx::set( + AudioHardware* hw, uint32_t devices, int *pFormat +#ifdef QCOM_TUNNEL_LPA_ENABLED + , int32_t LPADriverFd +#endif + ) +{ + int lFormat = pFormat ? *pFormat : 0; + + mHardware = hw; + mDevices = devices; +#ifdef QCOM_TUNNEL_LPA_ENABLED + if(LPADriverFd >= 0) { + mLPADriverFd = LPADriverFd; + lpa_playback_in_progress = true; + post_proc_feature_mask = new_post_proc_feature_mask; + msm72xx_enable_postproc(true); +#ifdef SRS_PROCESSING + msm72xx_enable_srs(SRS_PARAMS_ALL, true); +#endif /*SRS_PROCESSING*/ + + } +#endif + return NO_ERROR; +} + +AudioHardware::AudioSessionOutMSM7xxx::~AudioSessionOutMSM7xxx() +{ +} + + +status_t AudioHardware::AudioSessionOutMSM7xxx::standby() +{ + + ALOGD("AudioSessionOutMSM7xxx::standby()"); + mStandby = true; +#ifdef QCOM_TUNNEL_LPA_ENABLED + lpa_playback_in_progress = false; +#endif + if(!hpcm_playback_in_progress ){ + msm72xx_enable_postproc(false); +#ifdef SRS_PROCESSING + msm72xx_enable_srs(SRS_PARAMS_ALL, false); +#endif /*SRS_PROCESSING*/ + } + return NO_ERROR; +} + +bool AudioHardware::AudioSessionOutMSM7xxx::checkStandby() +{ + return mStandby; +} + +status_t AudioHardware::AudioSessionOutMSM7xxx::setParameters(const String8& keyValuePairs) +{ + AudioParameter param = AudioParameter(keyValuePairs); + String8 key = String8(AudioParameter::keyRouting); + status_t status = NO_ERROR; + int device; + ALOGV("AudioSessionOutMSM7xxx::setParameters() %s", keyValuePairs.string()); + + if (param.getInt(key, device) == NO_ERROR) { + mDevices = device; + ALOGV("set output routing %x", mDevices); + status = mHardware->doRouting(NULL); + param.remove(key); + } + + if (param.size()) { + status = BAD_VALUE; + } + return status; +} +String8 AudioHardware::AudioSessionOutMSM7xxx::getParameters(const String8& keys) +{ + AudioParameter param = AudioParameter(keys); + String8 value; + String8 key = String8(AudioParameter::keyRouting); + + if (param.get(key, value) == NO_ERROR) { + ALOGV("get routing %x", mDevices); + param.addInt(key, (int)mDevices); + } + + ALOGV("AudioSessionOutMSM7xxx::getParameters() %s", param.toString().string()); + return param.toString(); +} + +status_t AudioHardware::AudioSessionOutMSM7xxx::getRenderPosition(uint32_t *dspFrames) +{ + //TODO: enable when supported by driver + return INVALID_OPERATION; +} + +status_t AudioHardware::AudioSessionOutMSM7xxx::setVolume(float left, float right) +{ + float v = (left + right) / 2; + if (v < 0.0) { + ALOGW("AudioSessionOutMSM7xxx::setVolume(%f) under 0.0, assuming 0.0\n", v); + v = 0.0; + } else if (v > 1.0) { + ALOGW("AudioSessionOutMSM7xxx::setVolume(%f) over 1.0, assuming 1.0\n", v); + v = 1.0; + } + + // Ensure to convert the log volume back to linear for LPA + long vol = v * 10000; + ALOGV("AudioSessionOutMSM7xxx::setVolume(%f)\n", v); + ALOGV("Setting session volume to %ld (available range is 0 to 100)\n", vol); + +#ifdef QCOM_TUNNEL_LPA_ENABLED + if (ioctl(mLPADriverFd,AUDIO_SET_VOLUME, vol)< 0) + ALOGE("LPA volume set failed"); + + ALOGV("LPA volume set failed(%f) succeeded",vol); +#endif + return NO_ERROR; +} + + +//.---------------------------------------------------------------------------- + + +//.---------------------------------------------------------------------------- int AudioHardware::AudioStreamInMSM72xx::InstanceCount = 0; AudioHardware::AudioStreamInMSM72xx::AudioStreamInMSM72xx() : mHardware(0), mFd(-1), mState(AUDIO_INPUT_CLOSED), mRetryCount(0), @@ -890,13 +2819,17 @@ status_t AudioHardware::AudioStreamInMSM72xx::set( { if(AudioStreamInMSM72xx::InstanceCount > 1) { - LOGE("More than one instance of recording not supported"); + ALOGE("More than one instance of recording not supported"); return -EBUSY; } - if (pFormat == 0 || *pFormat != AUDIO_HW_IN_FORMAT) { + if ((pFormat == 0) || + ((*pFormat != AUDIO_HW_IN_FORMAT) && + (*pFormat != AudioSystem::AMR_NB) && + (*pFormat != AudioSystem::AAC))) + { *pFormat = AUDIO_HW_IN_FORMAT; - LOGE("audio format bad value"); + ALOGE("audio format bad value"); return BAD_VALUE; } if (pRate == 0) { @@ -905,50 +2838,55 @@ status_t AudioHardware::AudioStreamInMSM72xx::set( uint32_t rate = hw->getInputSampleRate(*pRate); if (rate != *pRate) { *pRate = rate; + ALOGE(" sample rate does not match\n"); return BAD_VALUE; } - if (pChannels == 0 || (*pChannels != AudioSystem::CHANNEL_IN_MONO && - *pChannels != AudioSystem::CHANNEL_IN_STEREO)) - { + if (pChannels == 0 || (*pChannels & (AudioSystem::CHANNEL_IN_MONO | AudioSystem::CHANNEL_IN_STEREO)) == 0) + { *pChannels = AUDIO_HW_IN_CHANNELS; + ALOGE(" Channel count does not match\n"); return BAD_VALUE; } mHardware = hw; - LOGV("AudioStreamInMSM72xx::set(%d, %d, %u)", *pFormat, *pChannels, *pRate); + ALOGV("AudioStreamInMSM72xx::set(%d, %d, %u)", *pFormat, *pChannels, *pRate); if (mFd >= 0) { - LOGE("Audio record already open"); + ALOGE("Audio record already open"); return -EPERM; } + struct msm_audio_config config; + struct msm_audio_voicememo_config gcfg; + memset(&gcfg,0,sizeof(gcfg)); + status_t status = 0; + if(*pFormat == AUDIO_HW_IN_FORMAT) + { // open audio input device - status_t status = ::open("/dev/msm_pcm_in", O_RDWR); - if (status < 0) { - LOGE("Cannot open /dev/msm_pcm_in errno: %d", errno); - goto Error; - } - mFd = status; + status = ::open(PCM_IN_DEVICE, O_RDWR); + if (status < 0) { + ALOGE("Cannot open %s errno: %d", PCM_IN_DEVICE, errno); + goto Error; + } + mFd = status; - // configuration - LOGV("get config"); - struct msm_audio_config config; - status = ioctl(mFd, AUDIO_GET_CONFIG, &config); - if (status < 0) { - LOGE("Cannot read config"); - goto Error; - } + // configuration + status = ioctl(mFd, AUDIO_GET_CONFIG, &config); + if (status < 0) { + ALOGE("Cannot read config"); + goto Error; + } - LOGV("set config"); + ALOGV("set config"); config.channel_count = AudioSystem::popCount(*pChannels); config.sample_rate = *pRate; config.buffer_size = bufferSize(); config.buffer_count = 2; - config.codec_type = CODEC_TYPE_PCM; + config.type = CODEC_TYPE_PCM; status = ioctl(mFd, AUDIO_SET_CONFIG, &config); if (status < 0) { - LOGE("Cannot set config"); + ALOGE("Cannot set config"); if (ioctl(mFd, AUDIO_GET_CONFIG, &config) == 0) { if (config.channel_count == 1) { *pChannels = AudioSystem::CHANNEL_IN_MONO; @@ -960,50 +2898,165 @@ status_t AudioHardware::AudioStreamInMSM72xx::set( goto Error; } - LOGV("confirm config"); + ALOGV("confirm config"); status = ioctl(mFd, AUDIO_GET_CONFIG, &config); if (status < 0) { - LOGE("Cannot read config"); + ALOGE("Cannot read config"); goto Error; } - LOGV("buffer_size: %u", config.buffer_size); - LOGV("buffer_count: %u", config.buffer_count); - LOGV("channel_count: %u", config.channel_count); - LOGV("sample_rate: %u", config.sample_rate); - LOGV("input device: %x", devices); + ALOGV("buffer_size: %u", config.buffer_size); + ALOGV("buffer_count: %u", config.buffer_count); + ALOGV("channel_count: %u", config.channel_count); + ALOGV("sample_rate: %u", config.sample_rate); + ALOGV("input device: %x", devices); mDevices = devices; mFormat = AUDIO_HW_IN_FORMAT; mChannels = *pChannels; mSampleRate = config.sample_rate; mBufferSize = config.buffer_size; + } + else if( (*pFormat == AudioSystem::AMR_NB)) + { + + // open vocie memo input device + status = ::open(VOICE_MEMO_DEVICE, O_RDWR); + if (status < 0) { + ALOGE("Cannot open Voice Memo device for read"); + goto Error; + } + mFd = status; + /* Config param */ + if(ioctl(mFd, AUDIO_GET_CONFIG, &config)) + { + ALOGE(" Error getting buf config param AUDIO_GET_CONFIG \n"); + goto Error; + } + + ALOGV("The Config buffer size is %d", config.buffer_size); + ALOGV("The Config buffer count is %d", config.buffer_count); + ALOGV("The Config Channel count is %d", config.channel_count); + ALOGV("The Config Sample rate is %d", config.sample_rate); + + mDevices = devices; + mChannels = *pChannels; + mSampleRate = config.sample_rate; + + if (mDevices == AudioSystem::DEVICE_IN_VOICE_CALL) + { + if ((mChannels & AudioSystem::CHANNEL_IN_VOICE_DNLINK) && + (mChannels & AudioSystem::CHANNEL_IN_VOICE_UPLINK)) { + ALOGI("Recording Source: Voice Call Both Uplink and Downlink"); + gcfg.rec_type = RPC_VOC_REC_BOTH; + } else if (mChannels & AudioSystem::CHANNEL_IN_VOICE_DNLINK) { + ALOGI("Recording Source: Voice Call DownLink"); + gcfg.rec_type = RPC_VOC_REC_FORWARD; + } else if (mChannels & AudioSystem::CHANNEL_IN_VOICE_UPLINK) { + ALOGI("Recording Source: Voice Call UpLink"); + gcfg.rec_type = RPC_VOC_REC_REVERSE; + } + } + else { + ALOGI("Recording Source: Mic/Headset"); + gcfg.rec_type = RPC_VOC_REC_REVERSE; + } + + gcfg.rec_interval_ms = 0; // AV sync + gcfg.auto_stop_ms = 0; + + switch (*pFormat) + { + case AudioSystem::AMR_NB: + { + ALOGI("Recording Format: AMR_NB"); + gcfg.capability = RPC_VOC_CAP_AMR; // RPC_VOC_CAP_AMR (64) + gcfg.max_rate = RPC_VOC_AMR_RATE_1220; // Max rate (Fixed frame) + gcfg.min_rate = RPC_VOC_AMR_RATE_1220; // Min rate (Fixed frame length) + gcfg.frame_format = RPC_VOC_PB_AMR; // RPC_VOC_PB_AMR + mFormat = AudioSystem::AMR_NB; + mBufferSize = 320; + break; + } + + default: + break; + } + + gcfg.dtx_enable = 0; + gcfg.data_req_ms = 20; + + /* Set Via config param */ + if (ioctl(mFd, AUDIO_SET_VOICEMEMO_CONFIG, &gcfg)) + { + ALOGE("Error: AUDIO_SET_VOICEMEMO_CONFIG failed\n"); + goto Error; + } + + if (ioctl(mFd, AUDIO_GET_VOICEMEMO_CONFIG, &gcfg)) + { + ALOGE("Error: AUDIO_GET_VOICEMEMO_CONFIG failed\n"); + goto Error; + } + + ALOGV("After set rec_type = 0x%8x\n",gcfg.rec_type); + ALOGV("After set rec_interval_ms = 0x%8x\n",gcfg.rec_interval_ms); + ALOGV("After set auto_stop_ms = 0x%8x\n",gcfg.auto_stop_ms); + ALOGV("After set capability = 0x%8x\n",gcfg.capability); + ALOGV("After set max_rate = 0x%8x\n",gcfg.max_rate); + ALOGV("After set min_rate = 0x%8x\n",gcfg.min_rate); + ALOGV("After set frame_format = 0x%8x\n",gcfg.frame_format); + ALOGV("After set dtx_enable = 0x%8x\n",gcfg.dtx_enable); + ALOGV("After set data_req_ms = 0x%8x\n",gcfg.data_req_ms); + } + else if(*pFormat == AudioSystem::AAC) { + // open AAC input device + status = ::open(PCM_IN_DEVICE, O_RDWR); + if (status < 0) { + ALOGE("Cannot open AAC input device for read"); + goto Error; + } + mFd = status; + + /* Config param */ + if(ioctl(mFd, AUDIO_GET_CONFIG, &config)) + { + ALOGE(" Error getting buf config param AUDIO_GET_CONFIG \n"); + goto Error; + } + + ALOGV("The Config buffer size is %d", config.buffer_size); + ALOGV("The Config buffer count is %d", config.buffer_count); + ALOGV("The Config Channel count is %d", config.channel_count); + ALOGV("The Config Sample rate is %d", config.sample_rate); + + mDevices = devices; + mChannels = *pChannels; + mSampleRate = *pRate; + mBufferSize = 2048; + mFormat = *pFormat; + + config.channel_count = AudioSystem::popCount(*pChannels); + config.sample_rate = *pRate; + config.type = 1; // Configuring PCM_IN_DEVICE to AAC format + + if (ioctl(mFd, AUDIO_SET_CONFIG, &config)) { + ALOGE(" Error in setting config of msm_pcm_in device \n"); + goto Error; + } + } //mHardware->setMicMute_nosync(false); mState = AUDIO_INPUT_OPENED; - if (!acoustic) - return NO_ERROR; + //if (!acoustic) + // return NO_ERROR; audpre_index = calculate_audpre_table_index(mSampleRate); - tx_iir_index = (audpre_index * 2) + (hw->checkOutputStandby() ? 0 : 1); - LOGD("audpre_index = %d, tx_iir_index = %d\n", audpre_index, tx_iir_index); - - /** - * If audio-preprocessing failed, we should not block record. - */ - int (*msm72xx_set_audpre_params)(int, int); - msm72xx_set_audpre_params = (int (*)(int, int))::dlsym(acoustic, "msm72xx_set_audpre_params"); - status = msm72xx_set_audpre_params(audpre_index, tx_iir_index); - if (status < 0) - LOGE("Cannot set audpre parameters"); - - int (*msm72xx_enable_audpre)(int, int, int); - msm72xx_enable_audpre = (int (*)(int, int, int))::dlsym(acoustic, "msm72xx_enable_audpre"); - mAcoustics = acoustic_flags; - status = msm72xx_enable_audpre((int)acoustic_flags, audpre_index, tx_iir_index); - if (status < 0) - LOGE("Cannot enable audpre"); - + if(audpre_index < 0) { + ALOGE("wrong sampling rate"); + status = -EINVAL; + goto Error; + } return NO_ERROR; Error: @@ -1014,24 +3067,110 @@ status_t AudioHardware::AudioStreamInMSM72xx::set( return status; } +static int msm72xx_enable_preproc(bool state) +{ + uint16_t mask = 0x0000; + + if (audpp_filter_inited) + { + int fd; + + fd = open(PREPROC_CTL_DEVICE, O_RDWR); + if (fd < 0) { + ALOGE("Cannot open PreProc Ctl device"); + return -EPERM; + } + + if (enable_preproc_mask[audpre_index] & AGC_ENABLE) { + /* Setting AGC Params */ + ALOGI("AGC Filter Param1= %02x.", tx_agc_cfg[audpre_index].cmd_id); + ALOGI("AGC Filter Param2= %02x.", tx_agc_cfg[audpre_index].tx_agc_param_mask); + ALOGI("AGC Filter Param3= %02x.", tx_agc_cfg[audpre_index].tx_agc_enable_flag); + ALOGI("AGC Filter Param4= %02x.", tx_agc_cfg[audpre_index].static_gain); + ALOGI("AGC Filter Param5= %02x.", tx_agc_cfg[audpre_index].adaptive_gain_flag); + ALOGI("AGC Filter Param6= %02x.", tx_agc_cfg[audpre_index].agc_params[0]); + ALOGI("AGC Filter Param7= %02x.", tx_agc_cfg[audpre_index].agc_params[18]); + if ((enable_preproc_mask[audpre_index] & AGC_ENABLE) && + (ioctl(fd, AUDIO_SET_AGC, &tx_agc_cfg[audpre_index]) < 0)) + { + ALOGE("set AGC filter error."); + } + } + + if (enable_preproc_mask[audpre_index] & NS_ENABLE) { + /* Setting NS Params */ + ALOGI("NS Filter Param1= %02x.", ns_cfg[audpre_index].cmd_id); + ALOGI("NS Filter Param2= %02x.", ns_cfg[audpre_index].ec_mode_new); + ALOGI("NS Filter Param3= %02x.", ns_cfg[audpre_index].dens_gamma_n); + ALOGI("NS Filter Param4= %02x.", ns_cfg[audpre_index].dens_nfe_block_size); + ALOGI("NS Filter Param5= %02x.", ns_cfg[audpre_index].dens_limit_ns); + ALOGI("NS Filter Param6= %02x.", ns_cfg[audpre_index].dens_limit_ns_d); + ALOGI("NS Filter Param7= %02x.", ns_cfg[audpre_index].wb_gamma_e); + ALOGI("NS Filter Param8= %02x.", ns_cfg[audpre_index].wb_gamma_n); + if ((enable_preproc_mask[audpre_index] & NS_ENABLE) && + (ioctl(fd, AUDIO_SET_NS, &ns_cfg[audpre_index]) < 0)) + { + ALOGE("set NS filter error."); + } + } + + if (enable_preproc_mask[audpre_index] & TX_IIR_ENABLE) { + /* Setting TX_IIR Params */ + ALOGI("TX_IIR Filter Param1= %02x.", tx_iir_cfg[audpre_index].cmd_id); + ALOGI("TX_IIR Filter Param2= %02x.", tx_iir_cfg[audpre_index].active_flag); + ALOGI("TX_IIR Filter Param3= %02x.", tx_iir_cfg[audpre_index].num_bands); + ALOGI("TX_IIR Filter Param4= %02x.", tx_iir_cfg[audpre_index].iir_params[0]); + ALOGI("TX_IIR Filter Param5= %02x.", tx_iir_cfg[audpre_index].iir_params[1]); + ALOGI("TX_IIR Filter Param6 %02x.", tx_iir_cfg[audpre_index].iir_params[47]); + if ((enable_preproc_mask[audpre_index] & TX_IIR_ENABLE) && + (ioctl(fd, AUDIO_SET_TX_IIR, &tx_iir_cfg[audpre_index]) < 0)) + { + ALOGE("set TX IIR filter error."); + } + } + + if (state == true) { + /*Setting AUDPRE_ENABLE*/ + if (ioctl(fd, AUDIO_ENABLE_AUDPRE, &enable_preproc_mask[audpre_index]) < 0) { + ALOGE("set AUDPRE_ENABLE error."); + } + } else { + /*Setting AUDPRE_ENABLE*/ + if (ioctl(fd, AUDIO_ENABLE_AUDPRE, &mask) < 0) { + ALOGE("set AUDPRE_ENABLE error."); + } + } + close(fd); + } + + return NO_ERROR; +} + AudioHardware::AudioStreamInMSM72xx::~AudioStreamInMSM72xx() { - LOGV("AudioStreamInMSM72xx destructor"); + ALOGV("AudioStreamInMSM72xx destructor"); AudioStreamInMSM72xx::InstanceCount--; standby(); } ssize_t AudioHardware::AudioStreamInMSM72xx::read( void* buffer, ssize_t bytes) { - LOGV("AudioStreamInMSM72xx::read(%p, %ld)", buffer, bytes); + ALOGV("AudioStreamInMSM72xx::read(%p, %ld)", buffer, bytes); if (!mHardware) return -1; size_t count = bytes; + size_t aac_framesize= bytes; uint8_t* p = static_cast(buffer); + uint32_t* recogPtr = (uint32_t *)p; + uint16_t* frameCountPtr; + uint16_t* frameSizePtr; if (mState < AUDIO_INPUT_OPENED) { - Mutex::Autolock lock(mHardware->mLock); - if (set(mHardware, mDevices, &mFormat, &mChannels, &mSampleRate, mAcoustics) != NO_ERROR) { + AudioHardware *hw = mHardware; + hw->mLock.lock(); + status_t status = set(hw, mDevices, &mFormat, &mChannels, &mSampleRate, mAcoustics); + hw->mLock.unlock(); + if (status != NO_ERROR) { return -1; } mFirstread = false; @@ -1040,38 +3179,78 @@ ssize_t AudioHardware::AudioStreamInMSM72xx::read( void* buffer, ssize_t bytes) if (mState < AUDIO_INPUT_STARTED) { mState = AUDIO_INPUT_STARTED; // force routing to input device - mHardware->clearCurDevice(); - mHardware->doRouting(this); +#ifdef QCOM_FM_ENABLED + if (mDevices != AudioSystem::DEVICE_IN_FM_RX) { + mHardware->clearCurDevice(); + mHardware->doRouting(this); + } +#endif if (ioctl(mFd, AUDIO_START, 0)) { - LOGE("Error starting record"); + ALOGE("Error starting record"); standby(); return -1; } + msm72xx_enable_preproc(true); } - while (count) { - ssize_t bytesRead = ::read(mFd, buffer, count); - if (bytesRead >= 0) { + // Resetting the bytes value, to return the appropriate read value + bytes = 0; + if (mFormat == AudioSystem::AAC) + { + *((uint32_t*)recogPtr) = 0x51434F4D ;// ('Q','C','O', 'M') Number to identify format as AAC by higher layers + recogPtr++; + frameCountPtr = (uint16_t*)recogPtr; + *frameCountPtr = 0; + p += 3*sizeof(uint16_t); + count -= 3*sizeof(uint16_t); + } + while (count > 0) { + + if (mFormat == AudioSystem::AAC) { + frameSizePtr = (uint16_t *)p; + p += sizeof(uint16_t); + if(!(count > 2)) break; + count -= sizeof(uint16_t); + } + + ssize_t bytesRead = ::read(mFd, p, count); + if (bytesRead > 0) { count -= bytesRead; p += bytesRead; + bytes += bytesRead; + + if (mFormat == AudioSystem::AAC){ + *frameSizePtr = bytesRead; + (*frameCountPtr)++; + } if(!mFirstread) { mFirstread = true; break; } + + } + else if(bytesRead == 0) + { + ALOGI("Bytes Read = %d ,Buffer no longer sufficient",bytesRead); + break; } else { if (errno != EAGAIN) return bytesRead; mRetryCount++; - LOGW("EAGAIN - retrying"); + ALOGW("EAGAIN - retrying"); } } + if (mFormat == AudioSystem::AAC) + return aac_framesize; + return bytes; } status_t AudioHardware::AudioStreamInMSM72xx::standby() { if (mState > AUDIO_INPUT_CLOSED) { + msm72xx_enable_preproc(false); if (mFd >= 0) { ::close(mFd); mFd = -1; @@ -1080,8 +3259,18 @@ status_t AudioHardware::AudioStreamInMSM72xx::standby() } if (!mHardware) return -1; // restore output routing if necessary - mHardware->clearCurDevice(); - mHardware->doRouting(this); +#ifdef QCOM_FM_ENABLED + if (!mHardware->IsFmon()) +#endif + { + mHardware->clearCurDevice(); + mHardware->doRouting(this); + } +#ifdef QCOM_FM_ENABLED + if(mHardware->IsFmA2dpOn()) + mHardware->SwitchOffFmA2dp(); +#endif + return NO_ERROR; } @@ -1117,10 +3306,10 @@ status_t AudioHardware::AudioStreamInMSM72xx::setParameters(const String8& keyVa String8 key = String8(AudioParameter::keyRouting); status_t status = NO_ERROR; int device; - LOGV("AudioStreamInMSM72xx::setParameters() %s", keyValuePairs.string()); + ALOGV("AudioStreamInMSM72xx::setParameters() %s", keyValuePairs.string()); if (param.getInt(key, device) == NO_ERROR) { - LOGV("set input routing %x", device); + ALOGD("set input routing %x", device); if (device & (device - 1)) { status = BAD_VALUE; } else { @@ -1143,11 +3332,11 @@ String8 AudioHardware::AudioStreamInMSM72xx::getParameters(const String8& keys) String8 key = String8(AudioParameter::keyRouting); if (param.get(key, value) == NO_ERROR) { - LOGV("get routing %x", mDevices); + ALOGV("get routing %x", mDevices); param.addInt(key, (int)mDevices); } - LOGV("AudioStreamInMSM72xx::getParameters() %s", param.toString().string()); + ALOGV("AudioStreamInMSM72xx::getParameters() %s", param.toString().string()); return param.toString(); } diff --git a/libaudio/AudioHardware.h b/libaudio/AudioHardware.h index 0dc6ba1..dccb0f5 100644 --- a/libaudio/AudioHardware.h +++ b/libaudio/AudioHardware.h @@ -1,6 +1,6 @@ /* ** Copyright 2008, The Android Open-Source Project -** Copyright (c) 2011, Code Aurora Forum. All rights reserved. +** Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -28,6 +28,10 @@ extern "C" { #include +#include +#ifdef QCOM_VOIP_ENABLED +#include +#endif } namespace android_audio_legacy { @@ -38,24 +42,32 @@ using android::Mutex; // Kernel driver interface // -#define SAMP_RATE_INDX_8000 0 -#define SAMP_RATE_INDX_11025 1 -#define SAMP_RATE_INDX_12000 2 -#define SAMP_RATE_INDX_16000 3 -#define SAMP_RATE_INDX_22050 4 -#define SAMP_RATE_INDX_24000 5 -#define SAMP_RATE_INDX_32000 6 -#define SAMP_RATE_INDX_44100 7 -#define SAMP_RATE_INDX_48000 8 +#define SAMP_RATE_INDX_8000 0 +#define SAMP_RATE_INDX_11025 1 +#define SAMP_RATE_INDX_12000 2 +#define SAMP_RATE_INDX_16000 3 +#define SAMP_RATE_INDX_22050 4 +#define SAMP_RATE_INDX_24000 5 +#define SAMP_RATE_INDX_32000 6 +#define SAMP_RATE_INDX_44100 7 +#define SAMP_RATE_INDX_48000 8 #define EQ_MAX_BAND_NUM 12 #define ADRC_ENABLE 0x0001 -#define ADRC_DISABLE 0x0000 +#define ADRC_DISABLE 0xFFFE #define EQ_ENABLE 0x0002 -#define EQ_DISABLE 0x0000 -#define RX_IIR_ENABLE 0x0004 -#define RX_IIR_DISABLE 0x0000 +#define EQ_DISABLE 0xFFFD +#define RX_IIR_ENABLE 0x0004 +#define RX_IIR_DISABLE 0xFFFB +#define MBADRC_ENABLE 0x0010 +#define MBADRC_DISABLE 0xFFEF +#define SRS_ENABLE 0x0020 +#define SRS_DISABLE 0xFFDF + +#define AGC_ENABLE 0x0001 +#define NS_ENABLE 0x0002 +#define TX_IIR_ENABLE 0x0004 struct eq_filter_type { int16_t gain; @@ -74,13 +86,8 @@ struct rx_iir_filter { uint16_t iir_params[48]; }; -struct msm_audio_config { - uint32_t buffer_size; - uint32_t buffer_count; - uint32_t channel_count; - uint32_t sample_rate; - uint32_t codec_type; - uint32_t unused[3]; +struct adrc_filter { + uint16_t adrc_params[8]; }; struct msm_audio_stats { @@ -88,6 +95,60 @@ struct msm_audio_stats { uint32_t unused[3]; }; +struct tx_iir { + uint16_t cmd_id; + uint16_t active_flag; + uint16_t num_bands; + uint16_t iir_params[48]; +}; + +struct ns { + uint16_t cmd_id; + uint16_t ec_mode_new; + uint16_t dens_gamma_n; + uint16_t dens_nfe_block_size; + uint16_t dens_limit_ns; + uint16_t dens_limit_ns_d; + uint16_t wb_gamma_e; + uint16_t wb_gamma_n; +}; + +struct tx_agc { + uint16_t cmd_id; + uint16_t tx_agc_param_mask; + uint16_t tx_agc_enable_flag; + uint16_t static_gain; + int16_t adaptive_gain_flag; + uint16_t agc_params[19]; +}; + +struct adrc_config { + uint16_t adrc_band_params[10]; +}; + +struct adrc_ext_buf { + int16_t buff[196]; +}; + +struct mbadrc_filter { + uint16_t num_bands; + uint16_t down_samp_level; + uint16_t adrc_delay; + uint16_t ext_buf_size; + uint16_t ext_partition; + uint16_t ext_buf_msw; + uint16_t ext_buf_lsw; + struct adrc_config adrc_band[5]; + struct adrc_ext_buf ext_buf; +}; + +enum tty_modes { + TTY_OFF = 0, + TTY_VCO = 1, + TTY_HCO = 2, + TTY_FULL = 3 +}; + #define CODEC_TYPE_PCM 0 #define AUDIO_HW_NUM_OUT_BUF 2 // Number of buffers in audio driver for output // TODO: determine actual audio DSP and hardware latency @@ -97,6 +158,13 @@ struct msm_audio_stats { #define AUDIO_HW_IN_CHANNELS (AudioSystem::CHANNEL_IN_MONO) // Default audio input channel mask #define AUDIO_HW_IN_BUFFERSIZE 2048 // Default audio input buffer size #define AUDIO_HW_IN_FORMAT (AudioSystem::PCM_16_BIT) // Default audio input sample format +#ifdef QCOM_VOIP_ENABLED +#define AUDIO_HW_VOIP_BUFFERSIZE_8K 320 +#define AUDIO_HW_VOIP_BUFFERSIZE_16K 640 +#define AUDIO_HW_VOIP_SAMPLERATE_8K 8000 +#define AUDIO_HW_VOIP_SAMPLERATE_16K 16000 +#endif + // ---------------------------------------------------------------------------- using android_audio_legacy::AudioHardwareBase; using android_audio_legacy::AudioStreamOut; @@ -107,13 +175,19 @@ class AudioHardware : public AudioHardwareBase { class AudioStreamOutMSM72xx; class AudioStreamInMSM72xx; - +#ifdef QCOM_VOIP_ENABLED + class AudioStreamOutDirect; + class AudioStreamInVoip; +#endif public: AudioHardware(); virtual ~AudioHardware(); virtual status_t initCheck(); virtual status_t setVoiceVolume(float volume); +#ifdef QCOM_FM_ENABLED + virtual status_t setFmVolume(float volume); +#endif virtual status_t setMasterVolume(float volume); virtual status_t setMode(int mode); @@ -128,11 +202,20 @@ class AudioHardware : public AudioHardwareBase // create I/O streams virtual AudioStreamOut* openOutputStream( uint32_t devices, + audio_output_flags_t flags, int *format=0, uint32_t *channels=0, uint32_t *sampleRate=0, status_t *status=0); - +#ifdef QCOM_TUNNEL_LPA_ENABLED + virtual AudioStreamOut* openOutputSession( + uint32_t devices, + int *format=0, + status_t *status=0, + int sessionId=-1, + uint32_t samplingRate=0, + uint32_t channels=0); +#endif virtual AudioStreamIn* openInputStream( uint32_t devices, @@ -147,7 +230,12 @@ class AudioHardware : public AudioHardwareBase virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount); void clearCurDevice() { mCurSndDevice = -1; } - +#ifdef QCOM_FM_ENABLED + int IsFmon() const { return (mFmFd != -1); } + int IsFmA2dpOn() const { return FmA2dpStatus; } + void SwitchOffFmA2dp() { FmA2dpStatus = false; } + bool isFMAnalog(); +#endif protected: virtual status_t dump(int fd, const Vector& args); @@ -160,7 +248,14 @@ class AudioHardware : public AudioHardwareBase uint32_t getInputSampleRate(uint32_t sampleRate); bool checkOutputStandby(); status_t doRouting(AudioStreamInMSM72xx *input); +#ifdef QCOM_FM_ENABLED + status_t enableFM(); + status_t disableFM(); +#endif AudioStreamInMSM72xx* getActiveInput_l(); +#ifdef QCOM_VOIP_ENABLED + AudioStreamInVoip* getActiveVoipInput_l(); +#endif class AudioStreamOutMSM72xx : public AudioStreamOut { public: @@ -176,8 +271,7 @@ class AudioHardware : public AudioHardwareBase virtual size_t bufferSize() const { return 4800; } virtual uint32_t channels() const { return AudioSystem::CHANNEL_OUT_STEREO; } virtual int format() const { return AudioSystem::PCM_16_BIT; } -// virtual uint32_t latency() const { return (1000*AUDIO_HW_NUM_OUT_BUF*(bufferSize()/frameSize()))/sampleRate()+AUDIO_HW_OUT_LATENCY_MS; } - virtual uint32_t latency() const { return 109; } + virtual uint32_t latency() const { return (1000*AUDIO_HW_NUM_OUT_BUF*(bufferSize()/frameSize()))/sampleRate()+AUDIO_HW_OUT_LATENCY_MS; } virtual status_t setVolume(float left, float right) { return INVALID_OPERATION; } virtual ssize_t write(const void* buffer, size_t bytes); virtual status_t standby(); @@ -187,8 +281,6 @@ class AudioHardware : public AudioHardwareBase virtual String8 getParameters(const String8& keys); uint32_t devices() { return mDevices; } virtual status_t getRenderPosition(uint32_t *dspFrames); - virtual status_t addAudioEffect(effect_handle_t effect){return INVALID_OPERATION;} - virtual status_t removeAudioEffect(effect_handle_t effect){return INVALID_OPERATION;} private: AudioHardware* mHardware; @@ -198,7 +290,45 @@ class AudioHardware : public AudioHardwareBase bool mStandby; uint32_t mDevices; }; +#ifdef QCOM_VOIP_ENABLED + class AudioStreamOutDirect : public AudioStreamOut { + public: + AudioStreamOutDirect(); + virtual ~AudioStreamOutDirect(); + status_t set(AudioHardware* mHardware, + uint32_t devices, + int *pFormat, + uint32_t *pChannels, + uint32_t *pRate); + virtual uint32_t sampleRate() const { return 8000; } + // must be 32-bit aligned - driver only seems to like 4800 + virtual size_t bufferSize() const { return 320; } + virtual uint32_t channels() const { return mChannels; } + virtual int format() const {return AudioSystem::PCM_16_BIT; } + virtual uint32_t latency() const { return (1000*AUDIO_HW_NUM_OUT_BUF*(bufferSize()/frameSize()))/sampleRate()+AUDIO_HW_OUT_LATENCY_MS; } + virtual status_t setVolume(float left, float right) { return INVALID_OPERATION; } + virtual ssize_t write(const void* buffer, size_t bytes); + virtual status_t standby(); + virtual status_t dump(int fd, const Vector& args); + bool checkStandby(); + virtual status_t setParameters(const String8& keyValuePairs); + virtual String8 getParameters(const String8& keys); + uint32_t devices() { return mDevices; } + virtual status_t getRenderPosition(uint32_t *dspFrames); + private: + AudioHardware* mHardware; + int mFd; + int mRetryCount; + int mStartCount; + bool mStandby; + uint32_t mDevices; + uint32_t mChannels; + uint32_t mSampleRate; + size_t mBufferSize; + int mFormat; + }; +#endif class AudioStreamInMSM72xx : public AudioStreamIn { public: enum input_state { @@ -228,8 +358,8 @@ class AudioHardware : public AudioHardwareBase virtual unsigned int getInputFramesLost() const { return 0; } uint32_t devices() { return mDevices; } int state() const { return mState; } - virtual status_t addAudioEffect(effect_handle_t effect){return INVALID_OPERATION;} - virtual status_t removeAudioEffect(effect_handle_t effect){return INVALID_OPERATION;} + virtual status_t addAudioEffect(effect_interface_s**) { return 0;} + virtual status_t removeAudioEffect(effect_interface_s**) { return 0;} private: AudioHardware* mHardware; @@ -245,18 +375,117 @@ class AudioHardware : public AudioHardwareBase bool mFirstread; static int InstanceCount; }; + class AudioSessionOutMSM7xxx : public AudioStreamOut { + public: + AudioSessionOutMSM7xxx(); + virtual ~AudioSessionOutMSM7xxx(); + status_t set(AudioHardware* mHardware, + uint32_t devices, + int *pFormat +#ifdef QCOM_TUNNEL_LPA_ENABLED + ,int32_t sessionId +#endif + ); + virtual uint32_t sampleRate() const { return 44100; } + // must be 32-bit aligned - driver only seems to like 4800 + virtual size_t bufferSize() const { return 4800; } + virtual uint32_t channels() const { return AudioSystem::CHANNEL_OUT_STEREO; } + virtual int format() const { return AudioSystem::MP3; } + virtual uint32_t latency() const { return 0; } + virtual status_t setVolume(float left, float right); + virtual ssize_t write(const void* buffer, size_t bytes) {return 0;}; + virtual status_t standby(); + virtual status_t dump(int fd, const Vector& args) {return 0;}; + bool checkStandby(); + virtual status_t setParameters(const String8& keyValuePairs); + virtual String8 getParameters(const String8& keys); + uint32_t devices() { return mDevices; } + virtual status_t getRenderPosition(uint32_t *dspFrames); + + private: + AudioHardware* mHardware; + int mStartCount; + int mRetryCount; + bool mStandby; + uint32_t mDevices; + int mLPADriverFd; + }; +#ifdef QCOM_VOIP_ENABLED + class AudioStreamInVoip : public AudioStreamInMSM72xx { + public: + enum input_state { + AUDIO_INPUT_CLOSED, + AUDIO_INPUT_OPENED, + AUDIO_INPUT_STARTED + }; + + AudioStreamInVoip(); + virtual ~AudioStreamInVoip(); + status_t set(AudioHardware* mHardware, + uint32_t devices, + int *pFormat, + uint32_t *pChannels, + uint32_t *pRate, + AudioSystem::audio_in_acoustics acoustics); + virtual size_t bufferSize() const { return 320; } + virtual uint32_t channels() const {ALOGD(" AudioStreamInVoip: channels %d \n",mChannels); return mChannels; } + virtual int format() const { return AUDIO_HW_IN_FORMAT; } + virtual uint32_t sampleRate() const { return 8000; } + virtual status_t setGain(float gain) { return INVALID_OPERATION; } + virtual ssize_t read(void* buffer, ssize_t bytes); + virtual status_t dump(int fd, const Vector& args); + virtual status_t standby(); + virtual status_t setParameters(const String8& keyValuePairs); + virtual String8 getParameters(const String8& keys); + virtual unsigned int getInputFramesLost() const { return 0; } + uint32_t devices() { return mDevices; } + int state() const { return mState; } + private: + AudioHardware* mHardware; + int mFd; + int mState; + int mRetryCount; + int mFormat; + uint32_t mChannels; + uint32_t mSampleRate; + size_t mBufferSize; + AudioSystem::audio_in_acoustics mAcoustics; + uint32_t mDevices; + bool mFirstread; +#ifdef QCOM_FM_ENABLED + uint32_t mFmRec; +#endif + }; +#endif static const uint32_t inputSamplingRates[]; bool mInit; bool mMicMute; +#ifdef QCOM_FM_ENABLED + int mFmFd; + int FmA2dpStatus; +#endif bool mBluetoothNrec; + bool mBluetoothVGS; uint32_t mBluetoothId; AudioStreamOutMSM72xx* mOutput; +#ifdef QCOM_VOIP_ENABLED + AudioStreamOutDirect* mDirectOutput; +#endif SortedVector mInputs; - +#ifdef QCOM_VOIP_ENABLED + SortedVector mVoipInputs; +#endif msm_snd_endpoint *mSndEndpoints; int mNumSndEndpoints; int mCurSndDevice; + int m7xsnddriverfd; + bool mDualMicEnabled; + int mTtyMode; +#ifdef QCOM_VOIP_ENABLED + int mVoipFd; + int mNumVoipStreams; +#endif friend class AudioStreamInMSM72xx; Mutex mLock; diff --git a/libaudio/AudioPolicyManager.cpp b/libaudio/AudioPolicyManager.cpp deleted file mode 100644 index c22ee1b..0000000 --- a/libaudio/AudioPolicyManager.cpp +++ /dev/null @@ -1,792 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * Copyright (c) 2011, Code Aurora Forum. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "AudioPolicyManager" -//#define LOG_NDEBUG 0 -#include -#include "AudioPolicyManager.h" -#include -#include -#include // for property_get - -namespace android_audio_legacy { - - - -// ---------------------------------------------------------------------------- -// AudioPolicyManager for msm7k platform -// Common audio policy manager code is implemented in AudioPolicyManagerBase class -// ---------------------------------------------------------------------------- - -// --- class factory - - -extern "C" AudioPolicyInterface* createAudioPolicyManager(AudioPolicyClientInterface *clientInterface) -{ - return new AudioPolicyManager(clientInterface); -} - -extern "C" void destroyAudioPolicyManager(AudioPolicyInterface *interface) -{ - delete interface; -} - - -void AudioPolicyManager::setPhoneState(int state) -{ - LOGE("setPhoneState() state %d", state); - uint32_t newDevice = 0; - if (state < 0 || state >= AudioSystem::NUM_MODES) { - LOGW("setPhoneState() invalid state %d", state); - return; - } - - if (state == mPhoneState ) { - LOGW("setPhoneState() setting same state %d", state); - return; - } - - // if leaving call state, handle special case of active streams - // pertaining to sonification strategy see handleIncallSonification() - if (isInCall()) { - LOGV("setPhoneState() in call state management: new state is %d", state); - for (int stream = 0; stream < AudioSystem::NUM_STREAM_TYPES; stream++) { - AudioPolicyManagerBase::handleIncallSonification(stream, false, true); - } - } - - // store previous phone state for management of sonification strategy below - int oldState = mPhoneState; - mPhoneState = state; - // force routing command to audio hardware when starting call - // even if no device change is needed - bool force = (mPhoneState == AudioSystem::MODE_IN_CALL); - - // are we entering or starting a call - if (!isStateInCall(oldState) && isStateInCall(state)) { - LOGV(" Entering call in setPhoneState()"); - // force routing command to audio hardware when starting a call - // even if no device change is needed - force = true; - } else if (isStateInCall(oldState) && !isStateInCall(state)) { - LOGV(" Exiting call in setPhoneState()"); - // force routing command to audio hardware when exiting a call - // even if no device change is needed - force = true; - } else if (isStateInCall(state) && (state != oldState)) { - LOGV(" Switching between telephony and VoIP in setPhoneState()"); - // force routing command to audio hardware when switching between telephony and VoIP - // even if no device change is needed - force = true; - } - - // check for device and output changes triggered by new phone state - newDevice = getNewDevice(mHardwareOutput, false); -#ifdef WITH_A2DP - AudioPolicyManagerBase::checkOutputForAllStrategies(); - AudioPolicyManagerBase::checkA2dpSuspend(); -#endif - AudioPolicyManagerBase::updateDeviceForStrategy(); - - AudioOutputDescriptor *hwOutputDesc = mOutputs.valueFor(mHardwareOutput); - - // force routing command to audio hardware when ending call - // even if no device change is needed - if (isStateInCall(oldState) && newDevice == 0) { - newDevice = hwOutputDesc->device(); - force = true; - } - - // when changing from ring tone to in call mode, mute the ringing tone - // immediately and delay the route change to avoid sending the ring tone - // tail into the earpiece or headset. - int delayMs = 0; - if (isStateInCall(state) && oldState == AudioSystem::MODE_RINGTONE) { - // delay the device change command by twice the output latency to have some margin - // and be sure that audio buffers not yet affected by the mute are out when - // we actually apply the route change - delayMs = hwOutputDesc->mLatency*2; - setStreamMute(AudioSystem::RING, true, mHardwareOutput); - } - - // change routing is necessary - setOutputDevice(mHardwareOutput, newDevice, force, delayMs); - - // if entering in call state, handle special case of active streams - // pertaining to sonification strategy see handleIncallSonification() - if (isStateInCall(state)) { - LOGV("setPhoneState() in call state management: new state is %d", state); - // unmute the ringing tone after a sufficient delay if it was muted before - // setting output device above - if (oldState == AudioSystem::MODE_RINGTONE) { - setStreamMute(AudioSystem::RING, false, mHardwareOutput, MUTE_TIME_MS); - } - for (int stream = 0; stream < AudioSystem::NUM_STREAM_TYPES; stream++) { - AudioPolicyManagerBase::handleIncallSonification(stream, true, true); - } - } - - // Flag that ringtone volume must be limited to music volume until we exit MODE_RINGTONE - if (state == AudioSystem::MODE_RINGTONE && - (hwOutputDesc->mRefCount[AudioSystem::MUSIC])) { -// (systemTime() - mMusicStopTime) < seconds(SONIFICATION_HEADSET_MUSIC_DELAY))) { - mLimitRingtoneVolume = true; - } else { - mLimitRingtoneVolume = false; - } -} - - -uint32_t AudioPolicyManager::getDeviceForStrategy(routing_strategy strategy, bool fromCache) -{ - uint32_t device = 0; - - if (fromCache) { - LOGV("getDeviceForStrategy() from cache strategy %d, device %x", strategy, mDeviceForStrategy[strategy]); - return mDeviceForStrategy[strategy]; - } - - switch (strategy) { - case STRATEGY_DTMF: - if (mPhoneState != AudioSystem::MODE_IN_CALL) { - // when off call, DTMF strategy follows the same rules as MEDIA strategy - device = getDeviceForStrategy(STRATEGY_MEDIA, false); - break; - } - // when in call, DTMF and PHONE strategies follow the same rules - // FALL THROUGH - - case STRATEGY_PHONE: - // for phone strategy, we first consider the forced use and then the available devices by order - // of priority - switch (mForceUse[AudioSystem::FOR_COMMUNICATION]) { - case AudioSystem::FORCE_BT_SCO: - if (mPhoneState != AudioSystem::MODE_IN_CALL || strategy != STRATEGY_DTMF) { - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_CARKIT; - if (device) break; - } - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_HEADSET; - if (device) break; - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_SCO; - if (device) break; - // if SCO device is requested but no SCO device is available, fall back to default case - // FALL THROUGH - - default: // FORCE_NONE - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE; - if (device) break; - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET; - if (device) break; -#ifdef WITH_A2DP - // when not in a phone call, phone strategy should route STREAM_VOICE_CALL to A2DP - if (mPhoneState != AudioSystem::MODE_IN_CALL) { - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP; - if (device) break; - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES; - if (device) break; - } -#endif - if (mPhoneState == AudioSystem::MODE_RINGTONE) - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER; - if (device) break; - - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_EARPIECE; - if (device == 0) { - LOGE("getDeviceForStrategy() earpiece device not found"); - } - break; - - case AudioSystem::FORCE_SPEAKER: - if (mPhoneState != AudioSystem::MODE_IN_CALL || strategy != STRATEGY_DTMF) { - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_CARKIT; - if (device) break; - } -#ifdef WITH_A2DP - // when not in a phone call, phone strategy should route STREAM_VOICE_CALL to - // A2DP speaker when forcing to speaker output - if (mPhoneState != AudioSystem::MODE_IN_CALL) { - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER; - if (device) break; - } -#endif - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER; - if (device == 0) { - LOGE("getDeviceForStrategy() speaker device not found"); - } - break; - } - break; - - case STRATEGY_SONIFICATION: - - // If incall, just select the STRATEGY_PHONE device: The rest of the behavior is handled by - // handleIncallSonification(). - if (mPhoneState == AudioSystem::MODE_IN_CALL) { - device = getDeviceForStrategy(STRATEGY_PHONE, false); - break; - } - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER; - if (device == 0) { - LOGE("getDeviceForStrategy() speaker device not found"); - } - // The second device used for sonification is the same as the device used by media strategy - // FALL THROUGH - case STRATEGY_MEDIA: { - switch (mForceUse[AudioSystem::FOR_MEDIA]) { - default:{ - uint32_t device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; -#ifdef WITH_A2DP - if ((mA2dpOutput != 0) && !mA2dpSuspended && - (strategy == STRATEGY_MEDIA || a2dpUsedForSonification())) { - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP; - } - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES; - } - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER; - } - } -#endif - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE; - } - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET; - } - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER; - } - if (device2 == 0) { - device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_EARPIECE; - } - - // device is DEVICE_OUT_SPEAKER if we come from case STRATEGY_SONIFICATION, 0 otherwise - device |= device2; - } - break; - case AudioSystem::FORCE_SPEAKER: - device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER; - break; - } - -// Do not play media stream if in call and the requested device would change the hardware - // output routing - if (mPhoneState == AudioSystem::MODE_IN_CALL && - !AudioSystem::isA2dpDevice((AudioSystem::audio_devices)device) && - device != getDeviceForStrategy(STRATEGY_PHONE)) { - device = 0; - LOGV("getDeviceForStrategy() incompatible media and phone devices"); - } - } break; - - default: - LOGW("getDeviceForStrategy() unknown strategy: %d", strategy); - break; - } - - LOGV("getDeviceForStrategy() strategy %d, device %x", strategy, device); - return device; -} - -status_t AudioPolicyManager::setDeviceConnectionState(AudioSystem::audio_devices device, - AudioSystem::device_connection_state state, - const char *device_address) -{ - - LOGV("setDeviceConnectionState() device: %x, state %d, address %s", device, state, device_address); - - // connect/disconnect only 1 device at a time - if (AudioSystem::popCount(device) != 1) return BAD_VALUE; - - if (strlen(device_address) >= MAX_DEVICE_ADDRESS_LEN) { - LOGE("setDeviceConnectionState() invalid address: %s", device_address); - return BAD_VALUE; - } - - // handle output devices - if (AudioSystem::isOutputDevice(device)) { - -#ifndef WITH_A2DP - if (AudioSystem::isA2dpDevice(device)) { - LOGE("setDeviceConnectionState() invalid device: %x", device); - return BAD_VALUE; - } -#endif - - switch (state) - { - // handle output device connection - case AudioSystem::DEVICE_STATE_AVAILABLE: - if (mAvailableOutputDevices & device) { - LOGW("setDeviceConnectionState() device already connected: %x", device); - return INVALID_OPERATION; - } - LOGV("setDeviceConnectionState() connecting device %x", device); - - // register new device as available - mAvailableOutputDevices |= device; - -#ifdef WITH_A2DP - // handle A2DP device connection - if (AudioSystem::isA2dpDevice(device)) { - status_t status = handleA2dpConnection(device, device_address); - if (status != NO_ERROR) { - mAvailableOutputDevices &= ~device; - return status; - } - } else -#endif - { - if (AudioSystem::isBluetoothScoDevice(device)) { - LOGV("setDeviceConnectionState() BT SCO device, address %s", device_address); - // keep track of SCO device address - mScoDeviceAddress = String8(device_address, MAX_DEVICE_ADDRESS_LEN); - } - } - break; - // handle output device disconnection - case AudioSystem::DEVICE_STATE_UNAVAILABLE: { - if (!(mAvailableOutputDevices & device)) { - LOGW("setDeviceConnectionState() device not connected: %x", device); - return INVALID_OPERATION; - } - - - LOGV("setDeviceConnectionState() disconnecting device %x", device); - // remove device from available output devices - mAvailableOutputDevices &= ~device; - -#ifdef WITH_A2DP - // handle A2DP device disconnection - if (AudioSystem::isA2dpDevice(device)) { - status_t status = handleA2dpDisconnection(device, device_address); - if (status != NO_ERROR) { - mAvailableOutputDevices |= device; - return status; - } - } else -#endif - { - if (AudioSystem::isBluetoothScoDevice(device)) { - mScoDeviceAddress = ""; - } - } - } break; - - default: - LOGE("setDeviceConnectionState() invalid state: %x", state); - return BAD_VALUE; - } - - // request routing change if necessary - uint32_t newDevice = getNewDevice(mHardwareOutput, false); -#ifdef WITH_A2DP - AudioPolicyManagerBase::checkOutputForAllStrategies(); - // A2DP outputs must be closed after checkOutputForAllStrategies() is executed - if (state == AudioSystem::DEVICE_STATE_UNAVAILABLE && AudioSystem::isA2dpDevice(device)) { - closeA2dpOutputs(); - } - checkA2dpSuspend(); -#endif - updateDeviceForStrategy(); - setOutputDevice(mHardwareOutput, newDevice); - - if (device == AudioSystem::DEVICE_OUT_WIRED_HEADSET) { - device = AudioSystem::DEVICE_IN_WIRED_HEADSET; - } else if (device == AudioSystem::DEVICE_OUT_BLUETOOTH_SCO || - device == AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_HEADSET || - device == AudioSystem::DEVICE_OUT_BLUETOOTH_SCO_CARKIT) { - device = AudioSystem::DEVICE_IN_BLUETOOTH_SCO_HEADSET; - } else { - return NO_ERROR; - } - } - // handle input devices - if (AudioSystem::isInputDevice(device)) { - - switch (state) - { - // handle input device connection - case AudioSystem::DEVICE_STATE_AVAILABLE: { - if (mAvailableInputDevices & device) { - LOGW("setDeviceConnectionState() device already connected: %d", device); - return INVALID_OPERATION; - } - mAvailableInputDevices |= device; - } - break; - - // handle input device disconnection - case AudioSystem::DEVICE_STATE_UNAVAILABLE: { - if (!(mAvailableInputDevices & device)) { - LOGW("setDeviceConnectionState() device not connected: %d", device); - return INVALID_OPERATION; - } - mAvailableInputDevices &= ~device; - } break; - - default: - LOGE("setDeviceConnectionState() invalid state: %x", state); - return BAD_VALUE; - } - - audio_io_handle_t activeInput = getActiveInput(); - if (activeInput != 0) { - AudioInputDescriptor *inputDesc = mInputs.valueFor(activeInput); - uint32_t newDevice = getDeviceForInputSource(inputDesc->mInputSource); - if (newDevice != inputDesc->mDevice) { - LOGV("setDeviceConnectionState() changing device from %x to %x for input %d", - inputDesc->mDevice, newDevice, activeInput); - inputDesc->mDevice = newDevice; - AudioParameter param = AudioParameter(); - param.addInt(String8(AudioParameter::keyRouting), (int)newDevice); - mpClientInterface->setParameters(activeInput, param.toString()); - } - } - - return NO_ERROR; - } - - LOGW("setDeviceConnectionState() invalid device: %x", device); - return BAD_VALUE; -} - -void AudioPolicyManager::setForceUse(AudioSystem::force_use usage, AudioSystem::forced_config config) -{ - LOGV("setForceUse() usage %d, config %d, mPhoneState %d", usage, config, mPhoneState); - - bool forceVolumeReeval = false; - switch(usage) { - case AudioSystem::FOR_COMMUNICATION: - if (config != AudioSystem::FORCE_SPEAKER && config != AudioSystem::FORCE_BT_SCO && - config != AudioSystem::FORCE_NONE) { - LOGW("setForceUse() invalid config %d for FOR_COMMUNICATION", config); - return; - } - mForceUse[usage] = config; - break; - case AudioSystem::FOR_MEDIA: - if (config != AudioSystem::FORCE_HEADPHONES && config != AudioSystem::FORCE_BT_A2DP && - config != AudioSystem::FORCE_WIRED_ACCESSORY && config != AudioSystem::FORCE_NONE && - config != AudioSystem::FORCE_SPEAKER) { - LOGW("setForceUse() invalid config %d for FOR_MEDIA", config); - return; - } - mForceUse[usage] = config; - { - uint32_t device = getDeviceForStrategy(STRATEGY_MEDIA); - setOutputDevice(mHardwareOutput, device); - } - break; - case AudioSystem::FOR_RECORD: - if (config != AudioSystem::FORCE_BT_SCO && config != AudioSystem::FORCE_WIRED_ACCESSORY && - config != AudioSystem::FORCE_NONE) { - LOGW("setForceUse() invalid config %d for FOR_RECORD", config); - return; - } - mForceUse[usage] = config; - break; - case AudioSystem::FOR_DOCK: - if (config != AudioSystem::FORCE_NONE && config != AudioSystem::FORCE_BT_CAR_DOCK && - config != AudioSystem::FORCE_BT_DESK_DOCK && config != AudioSystem::FORCE_WIRED_ACCESSORY) { - LOGW("setForceUse() invalid config %d for FOR_DOCK", config); - } - forceVolumeReeval = true; - mForceUse[usage] = config; - break; - default: - LOGW("setForceUse() invalid usage %d", usage); - break; - } - - // check for device and output changes triggered by new phone state - uint32_t newDevice = getNewDevice(mHardwareOutput, false); -#ifdef WITH_A2DP - checkOutputForAllStrategies(); - checkA2dpSuspend(); -#endif - updateDeviceForStrategy(); - setOutputDevice(mHardwareOutput, newDevice); - if (forceVolumeReeval) { - applyStreamVolumes(mHardwareOutput, newDevice); - } - - audio_io_handle_t activeInput = getActiveInput(); - if (activeInput != 0) { - AudioInputDescriptor *inputDesc = mInputs.valueFor(activeInput); - newDevice = getDeviceForInputSource(inputDesc->mInputSource); - if (newDevice != inputDesc->mDevice) { - LOGV("setForceUse() changing device from %x to %x for input %d", - inputDesc->mDevice, newDevice, activeInput); - inputDesc->mDevice = newDevice; - AudioParameter param = AudioParameter(); - param.addInt(String8(AudioParameter::keyRouting), (int)newDevice); - mpClientInterface->setParameters(activeInput, param.toString()); - } - } - -} - -uint32_t AudioPolicyManager::getDeviceForInputSource(int inputSource) -{ - uint32_t device; - - switch(inputSource) { - case AUDIO_SOURCE_DEFAULT: - case AUDIO_SOURCE_MIC: - case AUDIO_SOURCE_VOICE_RECOGNITION: - case AUDIO_SOURCE_VOICE_COMMUNICATION: - if (mForceUse[AudioSystem::FOR_RECORD] == AudioSystem::FORCE_BT_SCO && - mAvailableInputDevices & AudioSystem::DEVICE_IN_BLUETOOTH_SCO_HEADSET) { - device = AudioSystem::DEVICE_IN_BLUETOOTH_SCO_HEADSET; - } else if (mAvailableInputDevices & AudioSystem::DEVICE_IN_WIRED_HEADSET) { - device = AudioSystem::DEVICE_IN_WIRED_HEADSET; - } else { - device = AudioSystem::DEVICE_IN_BUILTIN_MIC; - } - break; - case AUDIO_SOURCE_CAMCORDER: - if (hasBackMicrophone()) { - device = AudioSystem::DEVICE_IN_BACK_MIC; - } else { - device = AudioSystem::DEVICE_IN_BUILTIN_MIC; - } - break; - case AUDIO_SOURCE_VOICE_UPLINK: - case AUDIO_SOURCE_VOICE_DOWNLINK: - case AUDIO_SOURCE_VOICE_CALL: - device = AudioSystem::DEVICE_IN_VOICE_CALL; - break; - - default: - LOGW("getInput() invalid input source %d", inputSource); - device = 0; - break; - } - LOGV("getDeviceForInputSource()input source %d, device %08x", inputSource, device); - return device; -} - -status_t AudioPolicyManager::startOutput(audio_io_handle_t output, - AudioSystem::stream_type stream, - int session) -{ - LOGI("startOutput() output %d, stream %d, session %d", output, stream, session); - ssize_t index = mOutputs.indexOfKey(output); - if (index < 0) { - LOGW("startOutput() unknow output %d", output); - return BAD_VALUE; - } - - AudioOutputDescriptor *outputDesc = mOutputs.valueAt(index); - routing_strategy strategy = getStrategy((AudioSystem::stream_type)stream); - -#ifdef WITH_A2DP - if (mA2dpOutput != 0 && !a2dpUsedForSonification() && strategy == STRATEGY_SONIFICATION) { - setStrategyMute(STRATEGY_MEDIA, true, mA2dpOutput); - } -#endif - - // incremenent usage count for this stream on the requested output: - // NOTE that the usage count is the same for duplicated output and hardware output which is - // necassary for a correct control of hardware output routing by startOutput() and stopOutput() - outputDesc->changeRefCount(stream, 1); - - uint32_t NewDevice = AudioPolicyManagerBase::getNewDevice(output); - setOutputDevice(output, NewDevice, true); - - // handle special case for sonification while in call - if (isInCall()) { - AudioPolicyManagerBase::handleIncallSonification(stream, true, false); - } - - // apply volume rules for current stream and device if necessary - checkAndSetVolume(stream, mStreams[stream].mIndexCur, output, outputDesc->device()); - - return NO_ERROR; -} - -status_t AudioPolicyManager::stopOutput(audio_io_handle_t output, - AudioSystem::stream_type stream, - int session) -{ - LOGV("stopOutput() output %d, stream %d, session %d", output, stream, session); - ssize_t index = mOutputs.indexOfKey(output); - if (index < 0) { - LOGW("stopOutput() unknow output %d", output); - return BAD_VALUE; - } - - AudioOutputDescriptor *outputDesc = mOutputs.valueAt(index); - routing_strategy strategy = AudioPolicyManagerBase::getStrategy((AudioSystem::stream_type)stream); - - // handle special case for sonification while in call - if (isInCall()) { - AudioPolicyManagerBase::handleIncallSonification(stream, false, false); - } - - if (outputDesc->mRefCount[stream] > 0) { - // decrement usage count of this stream on the output - outputDesc->changeRefCount(stream, -1); - // store time at which the last music track was stopped - see computeVolume() -#if 0 //TODO - if (stream == AudioSystem::MUSIC) { - mMusicStopTime = systemTime(); - } -#endif - uint32_t newDevice = AudioPolicyManagerBase::getNewDevice(mHardwareOutput, false); - - - setOutputDevice(output, newDevice); - -#ifdef WITH_A2DP - if (mA2dpOutput != 0 && !a2dpUsedForSonification() && strategy == STRATEGY_SONIFICATION) { - setStrategyMute(STRATEGY_MEDIA, false, mA2dpOutput, mOutputs.valueFor(mHardwareOutput)->mLatency*2); - } -#endif - if (output != mHardwareOutput) { - setOutputDevice(mHardwareOutput, AudioPolicyManagerBase::getNewDevice(mHardwareOutput), true); - } - return NO_ERROR; - } else { - LOGW("stopOutput() refcount is already 0 for output %d", output); - return INVALID_OPERATION; - } -} - - -void AudioPolicyManager::setOutputDevice(audio_io_handle_t output, uint32_t device, bool force, int delayMs) -{ - LOGV("setOutputDevice() output %d device %x delayMs %d", output, device, delayMs); - AudioOutputDescriptor *outputDesc = mOutputs.valueFor(output); - - - if (outputDesc->isDuplicated()) { - setOutputDevice(outputDesc->mOutput1->mId, device, force, delayMs); - setOutputDevice(outputDesc->mOutput2->mId, device, force, delayMs); - return; - } -#ifdef WITH_A2DP - // filter devices according to output selected - if (output == mA2dpOutput) { - device &= AudioSystem::DEVICE_OUT_ALL_A2DP; - } else { - device &= ~AudioSystem::DEVICE_OUT_ALL_A2DP; - } -#endif - - uint32_t prevDevice = (uint32_t)outputDesc->device(); - // Do not change the routing if: - // - the requestede device is 0 - // - the requested device is the same as current device and force is not specified. - // Doing this check here allows the caller to call setOutputDevice() without conditions - if ((device == 0 || device == prevDevice) && !force) { - LOGV("setOutputDevice() setting same device %x or null device for output %d", device, output); - return; - } - - outputDesc->mDevice = device; - // mute media streams if both speaker and headset are selected - if (device == (AudioSystem::DEVICE_OUT_SPEAKER | AudioSystem::DEVICE_OUT_WIRED_HEADSET) || - device == (AudioSystem::DEVICE_OUT_SPEAKER | AudioSystem::DEVICE_OUT_WIRED_HEADPHONE) - ){ - setStrategyMute(STRATEGY_MEDIA, true, output); - // wait for the PCM output buffers to empty before proceeding with the rest of the command - usleep(outputDesc->mLatency*2*1000); - } - - // do the routing - AudioParameter param = AudioParameter(); - param.addInt(String8(AudioParameter::keyRouting), (int)device); - mpClientInterface->setParameters(mHardwareOutput, param.toString(), delayMs); - // update stream volumes according to new device - applyStreamVolumes(output, device, delayMs); - - // if changing from a combined headset + speaker route, unmute media streams - if (prevDevice == (AudioSystem::DEVICE_OUT_SPEAKER | AudioSystem::DEVICE_OUT_WIRED_HEADSET) || - prevDevice == (AudioSystem::DEVICE_OUT_SPEAKER | AudioSystem::DEVICE_OUT_WIRED_HEADPHONE) - ){ - setStrategyMute(STRATEGY_MEDIA, false, output, delayMs); - } -} - -status_t AudioPolicyManager::checkAndSetVolume(int stream, int index, audio_io_handle_t output, uint32_t device, int delayMs, bool force) -{ - - // do not change actual stream volume if the stream is muted - if (mOutputs.valueFor(output)->mMuteCount[stream] != 0) { - LOGV("checkAndSetVolume() stream %d muted count %d", stream, mOutputs.valueFor(output)->mMuteCount[stream]); - return NO_ERROR; - } - - // do not change in call volume if bluetooth is connected and vice versa - if ((stream == AudioSystem::VOICE_CALL && mForceUse[AudioSystem::FOR_COMMUNICATION] == AudioSystem::FORCE_BT_SCO) || - (stream == AudioSystem::BLUETOOTH_SCO && mForceUse[AudioSystem::FOR_COMMUNICATION] != AudioSystem::FORCE_BT_SCO)) { - LOGV("checkAndSetVolume() cannot set stream %d volume with force use = %d for comm", - stream, mForceUse[AudioSystem::FOR_COMMUNICATION]); - return INVALID_OPERATION; - } - - float volume = computeVolume(stream, index, output, device); - // We actually change the volume if: - // - the float value returned by computeVolume() changed - // - the force flag is set - if (volume != mOutputs.valueFor(output)->mCurVolume[stream] || - (stream == AudioSystem::VOICE_CALL) || - force) { - mOutputs.valueFor(output)->mCurVolume[stream] = volume; - LOGV("setStreamVolume() for output %d stream %d, volume %f, delay %d", output, stream, volume, delayMs); - if (stream == AudioSystem::VOICE_CALL || - stream == AudioSystem::DTMF || - stream == AudioSystem::BLUETOOTH_SCO) { - // offset value to reflect actual hardware volume that never reaches 0 - // 1% corresponds roughly to first step in VOICE_CALL stream volume setting (see AudioService.java) - volume = 0.01 + 0.99 * volume; - } - mpClientInterface->setStreamVolume((AudioSystem::stream_type)stream, volume, output, delayMs); - } - - if (stream == AudioSystem::VOICE_CALL || - stream == AudioSystem::BLUETOOTH_SCO) { - float voiceVolume; - // Force voice volume to max for bluetooth SCO as volume is managed by the headset - if (stream == AudioSystem::VOICE_CALL) { - voiceVolume = (float)index/(float)mStreams[stream].mIndexMax; - } else { - String8 key ("bt_headset_vgs"); - mpClientInterface->getParameters(output,key); - AudioParameter result(mpClientInterface->getParameters(0,key)); - int value; - if(result.getInt(String8("isVGS"),value) == NO_ERROR){ - LOGD("BT-SCO Voice Volume %f",(float)index/(float)mStreams[stream].mIndexMax); - voiceVolume = 1.0; - } else { - voiceVolume = (float)index/(float)mStreams[stream].mIndexMax; - } - } - if ((voiceVolume >= 0 && output == mHardwareOutput) - ) { - mpClientInterface->setVoiceVolume(voiceVolume, delayMs); - mLastVoiceVolume = voiceVolume; - } - } - return NO_ERROR; - -} -}; // namespace android diff --git a/libaudio/AudioPolicyManager.h b/libaudio/AudioPolicyManager.h deleted file mode 100644 index 1729ef3..0000000 --- a/libaudio/AudioPolicyManager.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * Copyright (C) 2011, Code Aurora Forum. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include -#include -#include -#include -#include - - -namespace android_audio_legacy { - -class AudioPolicyManager: public AudioPolicyManagerBase -{ - -public: - AudioPolicyManager(AudioPolicyClientInterface *clientInterface) - : AudioPolicyManagerBase(clientInterface) {} - - virtual ~AudioPolicyManager() {} - - virtual status_t setDeviceConnectionState(AudioSystem::audio_devices device, - AudioSystem::device_connection_state state, - const char *device_address); - - virtual uint32_t getDeviceForStrategy(routing_strategy strategy, bool fromCache = true); - virtual void setForceUse(AudioSystem::force_use usage, AudioSystem::forced_config config); -protected: - // true is current platform implements a back microphone - virtual bool hasBackMicrophone() const { return false; } -#ifdef WITH_A2DP - // true is current platform supports suplication of notifications and ringtones over A2DP output - virtual bool a2dpUsedForSonification() const { return true; } -#endif - // check that volume change is permitted, compute and send new volume to audio hardware - status_t checkAndSetVolume(int stream, int index, audio_io_handle_t output, uint32_t device, int delayMs = 0, bool force = false); - // select input device corresponding to requested audio source - virtual uint32_t getDeviceForInputSource(int inputSource); - // change the route of the specified output - virtual void setPhoneState(int state); - virtual void setOutputDevice(audio_io_handle_t output,uint32_t device,bool force = false,int delayMs = 0); - virtual status_t startOutput(audio_io_handle_t output,AudioSystem::stream_type stream,int session = 0); - virtual status_t stopOutput(audio_io_handle_t output,AudioSystem::stream_type stream,int session = 0); - - -}; -}; diff --git a/libaudio/HardwarePinSwitching.c b/libaudio/HardwarePinSwitching.c new file mode 100755 index 0000000..3966f1c --- /dev/null +++ b/libaudio/HardwarePinSwitching.c @@ -0,0 +1,240 @@ +/* + * Copyright (c) 2011, Code Aurora Forum. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Code Aurora nor + * the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "BTFMPinSwitching" +#include +//#define DEBUG_CHK 1 + +#define BT_PCM_BCLK_MODE 0x88 +#define BT_PCM_DIN_MODE 0x89 +#define BT_PCM_DOUT_MODE 0x8A +#define BT_PCM_SYNC_MODE 0x8B +#define FM_I2S_SD_MODE 0x8E +#define FM_I2S_WS_MODE 0x8F +#define FM_I2S_SCK_MODE 0x90 +#define I2C_PIN_CTL 0x15 +#define I2C_NORMAL 0x40 + + +#define MARIMBA_ADDR (0x0C) +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) + +#define LINE_LEN 80 +#define FM_DEVICE_PATH "/dev/i2c-1" + + +/*============================================================== +FUNCTION: do_rdwr +==============================================================*/ + +static int do_rdwr(int fd, struct i2c_msg *msgs, int nmsgs) { + struct i2c_rdwr_ioctl_data msgset; + msgset.msgs = msgs; + msgset.nmsgs = nmsgs; + + if (NULL == msgs || nmsgs <= 0) { + return -1; + } + + if (ioctl(fd, I2C_RDWR, &msgset) < 0) { + return -1; + } + + return 0; +} +/*============================================================== +FUNCTION: marimba_read +=============================================================*/ +static int marimba_read(int fd, unsigned char offset, unsigned char* buf, int count) +{ + + unsigned char offset_data[] = {offset}; + struct i2c_msg msgs[2]; + msgs[0].addr = MARIMBA_ADDR; + msgs[0].flags = 0; + msgs[0].buf = (__u8*)offset_data; + msgs[0].len = ARRAY_SIZE(offset_data); + msgs[1].addr = MARIMBA_ADDR; + msgs[1].flags = I2C_M_RD; + msgs[1].buf = (__u8*)buf; + msgs[1].len = count; + + return do_rdwr(fd, msgs, ARRAY_SIZE(msgs)); +} +/*============================================================== +FUNCTION: marimba_write +==============================================================*/ +/** +* This function provides bus interface to write to the Marimba chip +* +* @return int - negative number on failure. +* +*/ +static int marimba_write +( + int fd, + unsigned char offset, + const unsigned char* buf, + unsigned char len +) +{ + unsigned char offset_data[((1 + len) * sizeof(unsigned char))]; + struct i2c_msg msgs[1]; + msgs[0].addr = MARIMBA_ADDR; + msgs[0].flags = 0; + msgs[0].buf = (__u8*)offset_data; + msgs[0].len = (1 + len) * sizeof(*offset_data); + + if (NULL == offset_data) { + return -1; + } + + offset_data[0] = offset; + memcpy(offset_data + 1, buf, len); + + return do_rdwr(fd, msgs, ARRAY_SIZE(msgs)); +} + +/*============================================================== +FUNCTION: switch_pins +==============================================================*/ +/** +* This function provides interface to change the mode of operation +* from I2S mode to AUX PCM or vice versa. This function programs the +* wcn2243 registers to TRISTATE or ON mode. +* +* @return int - negative number on failure. +* +*/ +static int switch_pins( int fd, int nPath ) +{ + unsigned char value =0; + unsigned char reg =0; + int retval = -1; + unsigned char set = I2C_PIN_CTL; // SET PIN CTL mode + unsigned char unset = I2C_NORMAL; // UNSET PIN CTL MODE + if(nPath == MODE_FM ) { + // as we need to switch path to FM we need to move + // BT AUX PCM lines to PIN CONTROL mode then move + // FM to normal mode. + for( reg = BT_PCM_BCLK_MODE; reg <= BT_PCM_SYNC_MODE; reg++ ) { +#ifdef DEBUG_CHK + retval = marimba_read(fd, reg,&value, 1); + ALOGD("value read is:%d\n",value); +#endif + retval = marimba_write(fd, reg, &set,1); + if (retval < 0) { + goto err_all; + } + } + for( reg = FM_I2S_SD_MODE; reg <= FM_I2S_SCK_MODE; reg++ ) { +#ifdef DEBUG_CHK + retval = marimba_read(fd, reg,&value, 1); + ALOGD("value read is:%d\n",value); +#endif + retval = marimba_write(fd, reg, &unset,1); + if (retval < 0) { + goto err_all; + } + } + } else { + // as we need to switch path to AUXPCM we need to move + // FM I2S lines to PIN CONTROL mode then move + // BT AUX_PCM to normal mode. + for( reg = FM_I2S_SD_MODE; reg <= FM_I2S_SCK_MODE; reg++ ) { +#ifdef DEBUG_CHK + retval = marimba_read(fd, reg,&value, 1); + ALOGD("value read is:%d\n",value); +#endif + retval = marimba_write(fd, reg, &set,1); + if (retval < 0) { + goto err_all; + } + } + for( reg = BT_PCM_BCLK_MODE; reg <= BT_PCM_SYNC_MODE; reg++ ) { +#ifdef DEBUG_CHK + retval = marimba_read(fd, reg,&value, 1); + ALOGD("value read is:%d\n",value); +#endif + retval = marimba_write(fd, reg, &unset,1); + if (retval < 0) { + goto err_all; + } + } + } + ALOGD("switch pin called with : %d\n",nPath); + return 0; + +err_all: + return retval; +} + +/*============================================================== +FUNCTION: switch_mode +==============================================================*/ +/** +* This function provides interface to change the mode of operation +* from I2S mode to AUX PCM or vice versa. This function programs the +* wcn2243 registers to TRISTATE or ON mode. +* +* @return int - negative number on failure. +* +*/ +extern int switch_mode( int nMode ) { + int i2cfd = -1, rc= -1 ; +#ifdef REG_KERNEL_UPDATE + //media server doesnt have permissions to update + return 0; +#endif +#ifdef WITH_QCOM_FM + i2cfd = open(FM_DEVICE_PATH, O_RDWR); + if( i2cfd >= 0) { + rc = switch_pins(i2cfd, nMode); + close(i2cfd); + } + if( 0 != rc ) { + ALOGE("switch mode failed with error:%d",rc); + } +#else + ALOGE("switch mode failed because QCOM_FM feature is not available"); +#endif + return rc; +} diff --git a/libaudio/HardwarePinSwitching.h b/libaudio/HardwarePinSwitching.h new file mode 100755 index 0000000..0522dc3 --- /dev/null +++ b/libaudio/HardwarePinSwitching.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2011, Code Aurora Forum. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Code Aurora nor + * the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ANDROID_HARDWARE_PIN_SWITCHING_H +#define ANDROID_HARDWARE_PIN_SWITCHING_H + + + +#define MODE_FM 0 +#define MODE_BTSCO 1 + + +int switch_mode( int nMode ); + + + +#endif // ANDROID_HARDWARE_PIN_SWITCHING_H diff --git a/libaudio/audio_hw_hal.cpp b/libaudio/audio_hw_hal.cpp index c12d71f..5d5afcb 100644 --- a/libaudio/audio_hw_hal.cpp +++ b/libaudio/audio_hw_hal.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2011 The Android Open Source Project + * Copyright (c) 2012, Code Aurora Forum. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +15,7 @@ * limitations under the License. */ -#define LOG_TAG "qcom_audio_hw_hal" +#define LOG_TAG "audio.primary.msm7627a" //#define LOG_NDEBUG 0 #include @@ -26,7 +27,6 @@ #include #include - namespace android_audio_legacy { extern "C" { @@ -66,7 +66,7 @@ static int out_set_sample_rate(struct audio_stream *stream, uint32_t rate) struct qcom_stream_out *out = reinterpret_cast(stream); - LOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); + ALOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); /* TODO: implement this */ return 0; } @@ -78,29 +78,25 @@ static size_t out_get_buffer_size(const struct audio_stream *stream) return out->qcom_out->bufferSize(); } -static uint32_t out_get_channels(const struct audio_stream *stream) +static audio_channel_mask_t out_get_channels(const struct audio_stream *stream) { const struct qcom_stream_out *out = reinterpret_cast(stream); -#ifdef USES_AUDIO_LEGACY - return out->qcom_out->channels() >> 2; -#else return out->qcom_out->channels(); -#endif } -static int out_get_format(const struct audio_stream *stream) +static audio_format_t out_get_format(const struct audio_stream *stream) { const struct qcom_stream_out *out = reinterpret_cast(stream); - return out->qcom_out->format(); + return (audio_format_t)out->qcom_out->format(); } -static int out_set_format(struct audio_stream *stream, int format) +static int out_set_format(struct audio_stream *stream, audio_format_t format) { struct qcom_stream_out *out = reinterpret_cast(stream); - LOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); + ALOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); /* TODO: implement me */ return 0; } @@ -177,6 +173,12 @@ static int out_remove_audio_effect(const struct audio_stream *stream, effect_han return 0; } +static int out_get_next_write_timestamp(const struct audio_stream_out *stream, + int64_t *timestamp) +{ + return -EINVAL; +} + /** audio_stream_in implementation **/ static uint32_t in_get_sample_rate(const struct audio_stream *stream) { @@ -190,7 +192,7 @@ static int in_set_sample_rate(struct audio_stream *stream, uint32_t rate) struct qcom_stream_in *in = reinterpret_cast(stream); - LOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); + ALOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); /* TODO: implement this */ return 0; } @@ -202,25 +204,25 @@ static size_t in_get_buffer_size(const struct audio_stream *stream) return in->qcom_in->bufferSize(); } -static uint32_t in_get_channels(const struct audio_stream *stream) +static audio_channel_mask_t in_get_channels(const struct audio_stream *stream) { const struct qcom_stream_in *in = reinterpret_cast(stream); return in->qcom_in->channels(); } -static int in_get_format(const struct audio_stream *stream) +static audio_format_t in_get_format(const struct audio_stream *stream) { const struct qcom_stream_in *in = reinterpret_cast(stream); - return in->qcom_in->format(); + return (audio_format_t)in->qcom_in->format(); } -static int in_set_format(struct audio_stream *stream, int format) +static int in_set_format(struct audio_stream *stream, audio_format_t format) { struct qcom_stream_in *in = reinterpret_cast(stream); - LOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); + ALOGE("(%s:%d) %s: Implement me!", __FILE__, __LINE__, __func__); /* TODO: implement me */ return 0; } @@ -316,11 +318,18 @@ static uint32_t adev_get_supported_devices(const struct audio_hw_device *dev) AUDIO_DEVICE_OUT_WIRED_HEADSET | AUDIO_DEVICE_OUT_WIRED_HEADPHONE | AUDIO_DEVICE_OUT_AUX_DIGITAL | + AUDIO_DEVICE_OUT_ALL_SCO | AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET | AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET | - AUDIO_DEVICE_OUT_ALL_SCO | +#ifdef QCOM_FM_ENABLED +// AUDIO_DEVICE_OUT_FM | +#endif +#ifdef QCOM_VOIP_ENABLED +// AUDIO_DEVICE_OUT_DIRECTOUTPUT | +#endif AUDIO_DEVICE_OUT_DEFAULT | /* IN */ + AUDIO_DEVICE_IN_VOICE_CALL | AUDIO_DEVICE_IN_COMMUNICATION | AUDIO_DEVICE_IN_AMBIENT | AUDIO_DEVICE_IN_BUILTIN_MIC | @@ -328,6 +337,10 @@ static uint32_t adev_get_supported_devices(const struct audio_hw_device *dev) AUDIO_DEVICE_IN_AUX_DIGITAL | AUDIO_DEVICE_IN_BACK_MIC | AUDIO_DEVICE_IN_ALL_SCO | +#ifdef QCOM_FM_ENABLED +// AUDIO_DEVICE_IN_FM_RX | +// AUDIO_DEVICE_IN_FM_RX_A2DP | +#endif AUDIO_DEVICE_IN_DEFAULT); } @@ -350,7 +363,20 @@ static int adev_set_master_volume(struct audio_hw_device *dev, float volume) return qadev->hwif->setMasterVolume(volume); } -static int adev_set_mode(struct audio_hw_device *dev, int mode) +static int adev_get_master_volume(struct audio_hw_device *dev, float *volume) { + + struct qcom_audio_device *qadev = to_ladev(dev); + return qadev->hwif->getMasterVolume(volume); +} +#ifdef QUALCOMM_FEATURES_ENABLED +static int adev_set_fm_volume(struct audio_hw_device *dev, float volume) +{ + struct qcom_audio_device *qadev = to_ladev(dev); + return qadev->hwif->setFmVolume(volume); +} +#endif + +static int adev_set_mode(struct audio_hw_device *dev, audio_mode_t mode) { struct qcom_audio_device *qadev = to_ladev(dev); return qadev->hwif->setMode(mode); @@ -385,18 +411,19 @@ static char * adev_get_parameters(const struct audio_hw_device *dev, } static size_t adev_get_input_buffer_size(const struct audio_hw_device *dev, - uint32_t sample_rate, int format, - int channel_count) + const struct audio_config *config) { const struct qcom_audio_device *qadev = to_cladev(dev); - return qadev->hwif->getInputBufferSize(sample_rate, format, channel_count); + return qadev->hwif->getInputBufferSize(config->sample_rate, config->format, popcount(config->channel_mask)); } -static int adev_open_output_stream(struct audio_hw_device *dev, +#ifdef QUALCOMM_FEATURES_ENABLED +static int adev_open_output_session(struct audio_hw_device *dev, uint32_t devices, int *format, - uint32_t *channels, - uint32_t *sample_rate, + int sessionId, + uint32_t samplingRate, + uint32_t channels, struct audio_stream_out **stream_out) { struct qcom_audio_device *qadev = to_ladev(dev); @@ -408,13 +435,48 @@ static int adev_open_output_stream(struct audio_hw_device *dev, if (!out) return -ENOMEM; - out->qcom_out = qadev->hwif->openOutputStream(devices, format, channels, - sample_rate, &status); + out->qcom_out = qadev->hwif->openOutputSession(devices, format,&status,sessionId,samplingRate,channels); + if (!out->qcom_out) { + ret = status; + goto err_open; + } -#ifdef USES_AUDIO_LEGACY - *channels = *channels >> 2; + out->stream.common.standby = out_standby; + out->stream.common.set_parameters = out_set_parameters; + out->stream.set_volume = out_set_volume; + + *stream_out = &out->stream; + return 0; + +err_open: + free(out); + *stream_out = NULL; + return ret; +} #endif +static int adev_open_output_stream(struct audio_hw_device *dev, + audio_io_handle_t handle, + audio_devices_t devices, + audio_output_flags_t flags, + struct audio_config *config, + struct audio_stream_out **stream_out) +{ + struct qcom_audio_device *qadev = to_ladev(dev); + status_t status; + struct qcom_stream_out *out; + int ret; + + out = (struct qcom_stream_out *)calloc(1, sizeof(*out)); + if (!out) + return -ENOMEM; + + out->qcom_out = qadev->hwif->openOutputStream(devices, + flags, + (int *)&config->format, + &config->channel_mask, + &config->sample_rate, + &status); if (!out->qcom_out) { ret = status; goto err_open; @@ -436,6 +498,7 @@ static int adev_open_output_stream(struct audio_hw_device *dev, out->stream.set_volume = out_set_volume; out->stream.write = out_write; out->stream.get_render_position = out_get_render_position; + out->stream.get_next_write_timestamp = out_get_next_write_timestamp; *stream_out = &out->stream; return 0; @@ -458,10 +521,10 @@ static void adev_close_output_stream(struct audio_hw_device *dev, /** This method creates and opens the audio hardware input stream */ static int adev_open_input_stream(struct audio_hw_device *dev, - uint32_t devices, int *format, - uint32_t *channels, uint32_t *sample_rate, - audio_in_acoustics_t acoustics, - struct audio_stream_in **stream_in) + audio_io_handle_t handle, + audio_devices_t devices, + audio_config *config, + audio_stream_in **stream_in) { struct qcom_audio_device *qadev = to_ladev(dev); status_t status; @@ -472,9 +535,11 @@ static int adev_open_input_stream(struct audio_hw_device *dev, if (!in) return -ENOMEM; - in->qcom_in = qadev->hwif->openInputStream(devices, format, channels, - sample_rate, &status, - (AudioSystem::audio_in_acoustics)acoustics); + in->qcom_in = qadev->hwif->openInputStream(devices, (int *)&config->format, + &config->channel_mask, + &config->sample_rate, + &status, + (AudioSystem::audio_in_acoustics)0); if (!in->qcom_in) { ret = status; goto err_open; @@ -554,7 +619,7 @@ static int qcom_adev_open(const hw_module_t* module, const char* name, return -ENOMEM; qadev->device.common.tag = HARDWARE_DEVICE_TAG; - qadev->device.common.version = 0; + qadev->device.common.version = AUDIO_DEVICE_API_VERSION_1_0; qadev->device.common.module = const_cast(module); qadev->device.common.close = qcom_adev_close; @@ -562,6 +627,10 @@ static int qcom_adev_open(const hw_module_t* module, const char* name, qadev->device.init_check = adev_init_check; qadev->device.set_voice_volume = adev_set_voice_volume; qadev->device.set_master_volume = adev_set_master_volume; + qadev->device.get_master_volume = adev_get_master_volume; +#ifdef QUALCOMM_FEATURES_ENABLED + qadev->device.set_fm_volume = adev_set_fm_volume; +#endif qadev->device.set_mode = adev_set_mode; qadev->device.set_mic_mute = adev_set_mic_mute; qadev->device.get_mic_mute = adev_get_mic_mute; @@ -569,6 +638,9 @@ static int qcom_adev_open(const hw_module_t* module, const char* name, qadev->device.get_parameters = adev_get_parameters; qadev->device.get_input_buffer_size = adev_get_input_buffer_size; qadev->device.open_output_stream = adev_open_output_stream; +#ifdef QUALCOMM_FEATURES_ENABLED + qadev->device.open_output_session = adev_open_output_session; +#endif qadev->device.close_output_stream = adev_close_output_stream; qadev->device.open_input_stream = adev_open_input_stream; qadev->device.close_input_stream = adev_close_input_stream; @@ -611,4 +683,4 @@ struct qcom_audio_module HAL_MODULE_INFO_SYM = { }; // extern "C" -}; // namespace android_audio_legacy +}; // namespace android diff --git a/libaudio/audio_policy.conf b/libaudio/audio_policy.conf new file mode 100644 index 0000000..172dd90 --- /dev/null +++ b/libaudio/audio_policy.conf @@ -0,0 +1,57 @@ +# +# Audio policy configuration for generic device builds (goldfish audio HAL - emulator) +# + +# Global configuration section: lists input and output devices always present on the device +# as well as the output device selected by default. +# Devices are designated by a string that corresponds to the enum in audio.h + +global_configuration { + attached_output_devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE + default_output_device AUDIO_DEVICE_OUT_SPEAKER + attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_VOICE_CALL +} + +# audio hardware module section: contains descriptors for all audio hw modules present on the +# device. Each hw module node is named after the corresponding hw module library base name. +# For instance, "primary" corresponds to audio.primary..so. +# The "primary" module is mandatory and must include at least one output with +# AUDIO_OUTPUT_FLAG_PRIMARY flag. +# Each module descriptor contains one or more output profile descriptors and zero or more +# input profile descriptors. Each profile lists all the parameters supported by a given output +# or input stream category. +# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding +# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n". + +audio_hw_modules { + primary { + outputs { + primary { + sampling_rates 44100 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_FM + flags AUDIO_OUTPUT_FLAG_PRIMARY + } + } + inputs { + primary { + sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 + channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_VOICE_CALL_MONO|AUDIO_CHANNEL_IN_VOICE_DNLINK_MONO|AUDIO_CHANNEL_IN_VOICE_UPLINK_MONO + formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_AMR_NB|AUDIO_FORMAT_EVRC|AUDIO_FORMAT_QCELP + devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_AUX_DIGITAL|AUDIO_DEVICE_IN_VOICE_CALL + } + } + } + a2dp { + outputs { + primary { + sampling_rates 48000 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_ALL_A2DP + flags AUDIO_OUTPUT_FLAG_PRIMARY + } + } + } +} diff --git a/libaudio/audio_policy_hal.cpp b/libaudio/audio_policy_hal.cpp deleted file mode 100644 index 3388a8d..0000000 --- a/libaudio/audio_policy_hal.cpp +++ /dev/null @@ -1,427 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "qcom_audio_policy_hal" -//#define LOG_NDEBUG 0 - - -#include - -#include -#include -#include -#include - -#include -#include - -#include "AudioPolicyCompatClient.h" - -namespace android_audio_legacy { - -extern "C" { - -struct qcom_ap_module { - struct audio_policy_module module; -}; - -struct qcom_ap_device { - struct audio_policy_device device; -}; - -struct qcom_audio_policy { - struct audio_policy policy; - - void *service; - struct audio_policy_service_ops *aps_ops; - AudioPolicyCompatClient *service_client; - AudioPolicyInterface *apm; -}; - -static inline struct qcom_audio_policy * to_qap(struct audio_policy *pol) -{ - return reinterpret_cast(pol); -} - -static inline const struct qcom_audio_policy * to_cqap(const struct audio_policy *pol) -{ - return reinterpret_cast(pol); -} - - -static int ap_set_device_connection_state(struct audio_policy *pol, - audio_devices_t device, - audio_policy_dev_state_t state, - const char *device_address) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->setDeviceConnectionState( - (AudioSystem::audio_devices)device, - (AudioSystem::device_connection_state)state, - device_address); -} - -static audio_policy_dev_state_t ap_get_device_connection_state( - const struct audio_policy *pol, - audio_devices_t device, - const char *device_address) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return (audio_policy_dev_state_t)qap->apm->getDeviceConnectionState( - (AudioSystem::audio_devices)device, - device_address); -} - -static void ap_set_phone_state(struct audio_policy *pol, int state) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->setPhoneState(state); -} - - /* indicate a change in ringer mode */ -static void ap_set_ringer_mode(struct audio_policy *pol, uint32_t mode, - uint32_t mask) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->setRingerMode(mode, mask); -} - - /* force using a specific device category for the specified usage */ -static void ap_set_force_use(struct audio_policy *pol, - audio_policy_force_use_t usage, - audio_policy_forced_cfg_t config) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->setForceUse((AudioSystem::force_use)usage, - (AudioSystem::forced_config)config); -} - - /* retreive current device category forced for a given usage */ -static audio_policy_forced_cfg_t ap_get_force_use( - const struct audio_policy *pol, - audio_policy_force_use_t usage) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return (audio_policy_forced_cfg_t)qap->apm->getForceUse( - (AudioSystem::force_use)usage); -} - -/* if can_mute is true, then audio streams that are marked ENFORCED_AUDIBLE - * can still be muted. */ -static void ap_set_can_mute_enforced_audible(struct audio_policy *pol, - bool can_mute) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->setSystemProperty("ro.camera.sound.forced", can_mute ? "0" : "1"); -} - -static int ap_init_check(const struct audio_policy *pol) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return qap->apm->initCheck(); -} - -static audio_io_handle_t ap_get_output(struct audio_policy *pol, - audio_stream_type_t stream, - uint32_t sampling_rate, - uint32_t format, - uint32_t channels, - audio_policy_output_flags_t flags) -{ - struct qcom_audio_policy *qap = to_qap(pol); - - LOGV("%s: tid %d", __func__, gettid()); - return qap->apm->getOutput((AudioSystem::stream_type)stream, - sampling_rate, format, channels, - (AudioSystem::output_flags)flags); -} - -static int ap_start_output(struct audio_policy *pol, audio_io_handle_t output, - audio_stream_type_t stream, int session) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->startOutput(output, (AudioSystem::stream_type)stream, - session); -} - -static int ap_stop_output(struct audio_policy *pol, audio_io_handle_t output, - audio_stream_type_t stream, int session) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->stopOutput(output, (AudioSystem::stream_type)stream, - session); -} - -static void ap_release_output(struct audio_policy *pol, - audio_io_handle_t output) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->releaseOutput(output); -} - -static audio_io_handle_t ap_get_input(struct audio_policy *pol, int inputSource, - uint32_t sampling_rate, - uint32_t format, - uint32_t channels, - audio_in_acoustics_t acoustics) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->getInput(inputSource, sampling_rate, format, channels, - (AudioSystem::audio_in_acoustics)acoustics); -} - -static int ap_start_input(struct audio_policy *pol, audio_io_handle_t input) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->startInput(input); -} - -static int ap_stop_input(struct audio_policy *pol, audio_io_handle_t input) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->stopInput(input); -} - -static void ap_release_input(struct audio_policy *pol, audio_io_handle_t input) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->releaseInput(input); -} - -static void ap_init_stream_volume(struct audio_policy *pol, - audio_stream_type_t stream, int index_min, - int index_max) -{ - struct qcom_audio_policy *qap = to_qap(pol); - qap->apm->initStreamVolume((AudioSystem::stream_type)stream, index_min, - index_max); -} - -static int ap_set_stream_volume_index(struct audio_policy *pol, - audio_stream_type_t stream, - int index) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->setStreamVolumeIndex((AudioSystem::stream_type)stream, - index); -} - -static int ap_get_stream_volume_index(const struct audio_policy *pol, - audio_stream_type_t stream, - int *index) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return qap->apm->getStreamVolumeIndex((AudioSystem::stream_type)stream, - index); -} - -static uint32_t ap_get_strategy_for_stream(const struct audio_policy *pol, - audio_stream_type_t stream) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return qap->apm->getStrategyForStream((AudioSystem::stream_type)stream); -} - -static uint32_t ap_get_devices_for_stream(const struct audio_policy *pol, - audio_stream_type_t stream) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return qap->apm->getDevicesForStream((AudioSystem::stream_type)stream); -} - -static audio_io_handle_t ap_get_output_for_effect(struct audio_policy *pol, - struct effect_descriptor_s *desc) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->getOutputForEffect(desc); -} - -static int ap_register_effect(struct audio_policy *pol, - struct effect_descriptor_s *desc, - audio_io_handle_t io, - uint32_t strategy, - int session, - int id) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->registerEffect(desc, io, strategy, session, id); -} - -static int ap_unregister_effect(struct audio_policy *pol, int id) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->unregisterEffect(id); -} - -static int ap_set_effect_enabled(struct audio_policy *pol, int id, bool enabled) -{ - struct qcom_audio_policy *qap = to_qap(pol); - return qap->apm->setEffectEnabled(id, enabled); -} - -static bool ap_is_stream_active(const struct audio_policy *pol, int stream, - uint32_t in_past_ms) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return qap->apm->isStreamActive(stream, in_past_ms); -} - -static int ap_dump(const struct audio_policy *pol, int fd) -{ - const struct qcom_audio_policy *qap = to_cqap(pol); - return qap->apm->dump(fd); -} - -static int create_qcom_ap(const struct audio_policy_device *device, - struct audio_policy_service_ops *aps_ops, - void *service, - struct audio_policy **ap) -{ - struct qcom_audio_policy *qap; - int ret; - - if (!service || !aps_ops) - return -EINVAL; - - qap = (struct qcom_audio_policy *)calloc(1, sizeof(*qap)); - if (!qap) - return -ENOMEM; - - qap->policy.set_device_connection_state = ap_set_device_connection_state; - qap->policy.get_device_connection_state = ap_get_device_connection_state; - qap->policy.set_phone_state = ap_set_phone_state; - qap->policy.set_ringer_mode = ap_set_ringer_mode; - qap->policy.set_force_use = ap_set_force_use; - qap->policy.get_force_use = ap_get_force_use; - qap->policy.set_can_mute_enforced_audible = - ap_set_can_mute_enforced_audible; - qap->policy.init_check = ap_init_check; - qap->policy.get_output = ap_get_output; - qap->policy.start_output = ap_start_output; - qap->policy.stop_output = ap_stop_output; - qap->policy.release_output = ap_release_output; - qap->policy.get_input = ap_get_input; - qap->policy.start_input = ap_start_input; - qap->policy.stop_input = ap_stop_input; - qap->policy.release_input = ap_release_input; - qap->policy.init_stream_volume = ap_init_stream_volume; - qap->policy.set_stream_volume_index = ap_set_stream_volume_index; - qap->policy.get_stream_volume_index = ap_get_stream_volume_index; - qap->policy.get_strategy_for_stream = ap_get_strategy_for_stream; - qap->policy.get_devices_for_stream = ap_get_devices_for_stream; - qap->policy.get_output_for_effect = ap_get_output_for_effect; - qap->policy.register_effect = ap_register_effect; - qap->policy.unregister_effect = ap_unregister_effect; - qap->policy.set_effect_enabled = ap_set_effect_enabled; - qap->policy.is_stream_active = ap_is_stream_active; - qap->policy.dump = ap_dump; - - qap->service = service; - qap->aps_ops = aps_ops; - qap->service_client = - new AudioPolicyCompatClient(aps_ops, service); - if (!qap->service_client) { - ret = -ENOMEM; - goto err_new_compat_client; - } - - qap->apm = createAudioPolicyManager(qap->service_client); - if (!qap->apm) { - ret = -ENOMEM; - goto err_create_apm; - } - - *ap = &qap->policy; - return 0; - -err_create_apm: - delete qap->service_client; -err_new_compat_client: - free(qap); - *ap = NULL; - return ret; -} - -static int destroy_qcom_ap(const struct audio_policy_device *ap_dev, - struct audio_policy *ap) -{ - struct qcom_audio_policy *qap = to_qap(ap); - - if (!qap) - return 0; - - if (qap->apm) - destroyAudioPolicyManager(qap->apm); - if (qap->service_client) - delete qap->service_client; - free(qap); - return 0; -} - -static int qcom_ap_dev_close(hw_device_t* device) -{ - if (device) - free(device); - return 0; -} - -static int qcom_ap_dev_open(const hw_module_t* module, const char* name, - hw_device_t** device) -{ - struct qcom_ap_device *dev; - - if (strcmp(name, AUDIO_POLICY_INTERFACE) != 0) - return -EINVAL; - - dev = (struct qcom_ap_device *)calloc(1, sizeof(*dev)); - if (!dev) - return -ENOMEM; - - dev->device.common.tag = HARDWARE_DEVICE_TAG; - dev->device.common.version = 0; - dev->device.common.module = const_cast(module); - dev->device.common.close = qcom_ap_dev_close; - dev->device.create_audio_policy = create_qcom_ap; - dev->device.destroy_audio_policy = destroy_qcom_ap; - - *device = &dev->device.common; - - return 0; -} - -static struct hw_module_methods_t qcom_ap_module_methods = { - open: qcom_ap_dev_open -}; - -struct qcom_ap_module HAL_MODULE_INFO_SYM = { - module: { - common: { - tag: HARDWARE_MODULE_TAG, - version_major: 1, - version_minor: 0, - id: AUDIO_POLICY_HARDWARE_MODULE_ID, - name: "QCOM Audio Policy HAL", - author: "Code Aurora Forum", - methods: &qcom_ap_module_methods, - dso : NULL, - reserved : {0}, - }, - }, -}; - -}; // extern "C" - -}; // namespace android_audio_legacy diff --git a/libsurfaceflinger_client/Android.mk b/libsurfaceflinger_client/Android.mk new file mode 100644 index 0000000..e0c5f90 --- /dev/null +++ b/libsurfaceflinger_client/Android.mk @@ -0,0 +1,14 @@ +ifeq ($(CAMERA_USES_SURFACEFLINGER_CLIENT_STUB),true) + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := + +LOCAL_SHARED_LIBRARIES := + +LOCAL_MODULE := libsurfaceflinger_client + +include $(BUILD_SHARED_LIBRARY) + +endif diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index ec74ddd..eb0f60d 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -20,6 +20,9 @@ + true + false + true - - com.google.android.location.NetworkLocationProvider - - - com.google.android.location.GeocodeProvider - true - + - 160 - 225 - 320 - 640 - 1280 - 2600 - 5800 - 8000 - 10240 + 1 + 3 + 5 + 17 + 29 + 714 + 1231 + 1497 + 1762 + 65535 - 41 - 51 - 61 - 71 - 95 - 130 - 186 - 208 - 231 - 255 + 30 + 40 + 55 + 65 + 80 + 100 + 120 + 160 + 200 + 220 + 255 + 255 255 255 255 @@ -111,14 +111,11 @@ 0 0 0 + 0 - - com.android.wallpaper/.nexus.NexusWallpaper - - 41 + 10 @@ -131,7 +128,7 @@ "mobile,0,0,0,-1,true" "mobile_mms,2,0,2,60000,true" "mobile_supl,3,0,2,60000,true" - "mobile_dun,4,0,3,60000,true" + "mobile_dun,4,0,4,60000,true" "mobile_hipri,5,0,3,60000,true" "mobile_bluetooth,7,7,1,-1,true" "wifi_p2p,13,1,0,-1,true" @@ -139,11 +136,20 @@ - - "1,1" - "0,1" - "7,1" - + + 0 + 1 + 5 + 7 + + + + 5 + + + 1000 + + "bnep\\d" + + + + + "rmnet\\d" + + - - - - 0 - 1 - 5 - 7 - + + true true @@ -176,10 +189,14 @@ true + + false + false true - + + false diff --git a/overlay/frameworks/base/core/res/res/values/config.xml~ b/overlay/frameworks/base/core/res/res/values/config.xml~ deleted file mode 100644 index c0acb38..0000000 --- a/overlay/frameworks/base/core/res/res/values/config.xml~ +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - 0 - - - true - - - com.google.android.location.NetworkLocationProvider - - - com.google.android.location.GeocodeProvider - - - true - - - - 160 - 225 - 320 - 640 - 1280 - 2600 - 5800 - 8000 - 10240 - - - - - 41 - 51 - 61 - 71 - 95 - 130 - 186 - 208 - 231 - 255 - - - - - 255 - 255 - 255 - 255 - 255 - 0 - 0 - 0 - 0 - 0 - - - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - com.android.wallpaper/.nexus.NexusWallpaper - - - 41 - - - - - - "wifi,1,1,1,-1,true" - "mobile,0,0,0,-1,true" - "mobile_mms,2,0,2,60000,true" - "mobile_supl,3,0,2,60000,true" - "mobile_dun,4,0,3,60000,true" - "mobile_hipri,5,0,3,60000,true" - "mobile_bluetooth,7,7,1,-1,true" - "wifi_p2p,13,1,0,-1,true" - - - - - "1,1" - "0,1" - "7,1" - - - - - "usb0" - - - - - "wl0.1" - - - - - "bnep\\d" - - - - - - 0 - 1 - 5 - 7 - - - - true - - - true - - - false - - - true - - diff --git a/overlay/frameworks/base/core/res/res/xml/power_profile.xml b/overlay/frameworks/base/core/res/res/xml/power_profile.xml new file mode 100644 index 0000000..a8b1413 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/xml/power_profile.xml @@ -0,0 +1,52 @@ + + + 0 + 100 + 142 + 0.3 + 35690 + 160 + 4 + 120 + 220 + 88 + 88 + 300 + 170 + 1230 + 70 + + 3 + 3 + + + 245000 + 384000 + 460800 + 499200 + 576000 + 614400 + 652800 + 691200 + 768000 + 806400 + 844800 + 998400 + + 2.8 + + 66.6 + 84 + 90.8 + 96 + 105 + 111.5 + 117.3 + 123.6 + 134.5 + 141.8 + 148.5 + 168.4 + + + diff --git a/overlay/frameworks/base/core/res/res/xml/storage_list.xml b/overlay/frameworks/base/core/res/res/xml/storage_list.xml index 6265977..aa0a076 100644 --- a/overlay/frameworks/base/core/res/res/xml/storage_list.xml +++ b/overlay/frameworks/base/core/res/res/xml/storage_list.xml @@ -28,17 +28,15 @@ emulated: (boolean) the storage is emulated via the FUSE sdcard daemon mtpReserve: (integer) number of megabytes of storage MTP should reserve for free storage (used for emulated storage that is shared with system's data partition) - allowMassStorage: (boolean) true if this volume can be shared via USB mass storage - maxFileSize: (integer) maximum file size in megabytes A storage should not have both emulated and removable set to true --> - + + diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml new file mode 100644 index 0000000..d8d3dd1 --- /dev/null +++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml @@ -0,0 +1,31 @@ + + + + true + true + 60000 + 0 + + 50 + + false + 100% + 100% + true + diff --git a/pico.mk b/pico.mk index 86e6a37..3b0f9a9 100644 --- a/pico.mk +++ b/pico.mk @@ -15,30 +15,30 @@ # proprietary side of the device # Inherit from those products. Most specific first -# We havent decided what props we need,yet -# $(call inherit-product-if-exists, vendor/htc/pico/pico-vendor.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) + +DEVICE_PACKAGE_OVERLAYS += device/htc/pico/overlay # Video decoding PRODUCT_PACKAGES += \ libstagefrighthw \ libmm-omxcore \ - libOmxCore \ - libOmxVidEnc + libOmxCore # Graphics PRODUCT_PACKAGES += \ - gralloc.msm7x27a \ copybit.msm7x27a \ + gralloc.msm7x27a \ hwcomposer.msm7x27a \ libtilerenderer \ libQcomUI # Audio PRODUCT_PACKAGES += \ - libacoustic \ audio.primary.msm7x27a \ audio_policy.msm7x27a \ audio.a2dp.default \ + audio_policy.conf \ libaudioutils # Other @@ -50,29 +50,30 @@ PRODUCT_PACKAGES += \ # Camera PRODUCT_PACKAGES += \ - camera.msm7x27a + camera.default # Misc PRODUCT_PACKAGES += \ - com.android.future.usb.accessory - -## Hardware properties -PRODUCT_COPY_FILES += \ - frameworks/base/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ - frameworks/base/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ - frameworks/base/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml \ - frameworks/base/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \ - frameworks/base/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \ - frameworks/base/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ - frameworks/base/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ - frameworks/base/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ - frameworks/base/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \ - frameworks/base/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ - frameworks/base/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \ - frameworks/base/data/etc/platform.xml:system/etc/permissions/platform.xml \ - frameworks/base/data/etc/android.software.sip.xml:system/etc/permissions/android.software.sip.xml \ - frameworks/base/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ - frameworks/base/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml + com.android.future.usb.accessory \ + FileManager + +# Hardware properties +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ + frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ + frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml \ + frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \ + frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \ + frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ + frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ + frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \ + frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ + frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \ + frameworks/native/data/etc/android.software.sip.xml:system/etc/permissions/android.software.sip.xml \ + frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ + frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \ + frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml # Init PRODUCT_COPY_FILES += \ @@ -80,27 +81,39 @@ PRODUCT_COPY_FILES += \ device/htc/pico/files/ueventd.pico.rc:root/ueventd.pico.rc \ device/htc/pico/files/init.pico.usb.rc:root/init.pico.usb.rc \ -## Camera -#PRODUCT_COPY_FILES += \ -# device/samsung/trebon/prebuilt/system/lib/hw/camera.trebon.so:system/lib/hw/camera.trebon.so \ -# device/samsung/trebon/prebuilt/system/lib/libcamera.so:system/lib/libcamera.so \ -# device/samsung/trebon/prebuilt/system/lib/lib/system/libcamera_client.so:system/lib/libcamera_client.so \ -# device/samsung/trebon/prebuilt/system/lib/lib/system/libcameraservice.so:system/lib/libcameraservice.so \ -# device/samsung/trebon/prebuilt/system/lib/libmm-adspsvc.so:system/lib/libmm-adspsvc.so \ -# device/samsung/trebon/prebuilt/system/lib/libmmgsdilib.so:system/lib/libmmgsdilib.so \ -# device/samsung/trebon/prebuilt/system/lib/libmmipl.so:system/lib/libmmipl.so \ -# device/samsung/trebon/prebuilt/system/lib/libmmjpeg.so:system/lib/libmmjpeg.so \ -# device/samsung/trebon/prebuilt/system/lib/libmm-omxcore.so:system/lib/libmm-omxcore.so \ -# device/samsung/trebon/prebuilt/system/lib/liboemcamera.so:system/lib/liboemcamera.so +# Camera +PRODUCT_COPY_FILES += \ + vendor/htc/pico/proprietary/lib/hw/camera.default.so:system/lib/hw/camera.default.so \ + vendor/htc/pico/proprietary/lib/liboemcamera.so:system/lib/liboemcamera.so \ + vendor/htc/pico/proprietary/lib/libmmipl.so:system/lib/libmmipl.so \ + vendor/htc/pico/proprietary/lib/libmmjpeg.so:system/lib/libmmjpeg.so \ + vendor/htc/pico/proprietary/lib/libcameraface.so:system/lib/libcameraface.so \ + vendor/htc/pico/proprietary/lib/libcamerapp.so:system/lib/libcamerapp.so \ + vendor/htc/pico/proprietary/lib/libOlaEngine.so:system/lib/libOlaEngine.so \ + vendor/htc/pico/proprietary/lib/libchromatix_mt9t013_default_video.so:system/lib/libchromatix_mt9t013_default_video.so \ + vendor/htc/pico/proprietary/lib/libchromatix_mt9t013_preview.so:system/lib/libchromatix_mt9t013_preview.so \ + vendor/htc/pico/proprietary/bin/awb_camera:system/bin/awb_camera \ + vendor/htc/pico/proprietary/bin/lsc_camera:system/bin/lsc_camera \ + vendor/htc/pico/proprietary/bin/mm-qcamera-daemon:system/bin/mm-qcamera-daemon \ + device/htc/pico/prebuilt/etc/media_profiles.xml:system/etc/media_profiles.xml \ + device/htc/pico/prebuilt/etc/media_codecs.xml:system/etc/media_codecs.xml \ + +# OMX +PRODUCT_COPY_FILES += \ + vendor/htc/pico/proprietary/lib/libmm-adspsvc.so:system/lib/libmm-adspsvc.so \ + vendor/htc/pico/proprietary/lib/libOmxH264Dec.so:system/lib/libOmxH264Dec.so \ + vendor/htc/pico/proprietary/lib/libOmxMpeg4Dec.so:system/lib/libOmxMpeg4Dec.so \ + vendor/htc/pico/proprietary/lib/libOmxVidEnc.so:system/lib/libOmxVidEnc.so \ + vendor/htc/pico/proprietary/lib/libmmosal.so:system/lib/libmmosal.so \ + vendor/htc/pico/proprietary/lib/libmmparser.so:system/lib/libmmparser.so \ + vendor/htc/pico/proprietary/lib/libmmparser_divxdrmlib.so:system/lib/libmmparser_divxdrmlib.so \ + vendor/htc/pico/proprietary/lib/libdivxdrmdecrypt.so:system/lib/libdivxdrmdecrypt.so \ # Set usb type ADDITIONAL_DEFAULT_PROPERTIES += \ persist.sys.usb.config=mass_storage \ persist.service.adb.enable=1 -$(call inherit-product, build/target/product/full.mk) -DEVICE_PACKAGE_OVERLAYS += device/htc/pico/overlay - # Publish that we support the live wallpaper feature. PRODUCT_COPY_FILES += \ packages/wallpapers/LivePicker/android.software.live_wallpaper.xml:/system/etc/permissions/android.software.live_wallpaper.xml @@ -118,86 +131,64 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/htc/pico/files/etc/vold.fstab:system/etc/vold.fstab -# Prebuilt Binaries -# Don't work on 4.0.4 because from 2.3.5! And we don't need this ! - # Prebuilt Modules PRODUCT_COPY_FILES += \ - device/htc/pico/prebuilt/bcm4330.ko:system/lib/modules/bcm4330.ko \ - device/htc/pico/prebuilt/kineto_gan.ko:system/lib/modules/kineto_gan.ko + device/htc/pico/prebuilt/bcmdhd.ko:system/lib/modules/bcmdhd.ko \ + device/htc/pico/prebuilt/kineto_gan.ko:system/lib/modules/kineto_gan.ko \ device/htc/pico/prebuilt/cifs.ko:system/lib/modules/cifs.ko \ - + device/htc/pico/prebuilt/tun.ko:system/lib/modules/tun.ko \ + # Wifi PRODUCT_COPY_FILES += \ device/htc/pico/files/etc/wifi/wpa_supplicant.conf:system/etc/wifi/wpa_supplicant.conf \ device/htc/pico/files/etc/dhcpd/dhcpcd.conf:system/etc/dhcpcd/dhcpcd.conf \ - device/htc/pico/prebuilt/etc/firmware/fw_bcm4330.bin:system/etc/firmware/fw_bcm4330.bin \ - device/htc/pico/prebuilt/etc/firmware/fw_bcm4330_apsta.bin:system/etc/firmware/fw_bcm4330_apsta.bin \ - device/htc/pico/prebuilt/etc/firmware/fw_bcm4330b2.bin:system/etc/firmware/fw_bcm4330b2.bin \ - device/htc/pico/prebuilt/etc/firmware/fw_bcm4330b2_apsta.bin:system/etc/firmware/fw_bcm4330b2_apsta.bin \ + device/htc/pico/prebuilt/etc/firmware/fw_bcm4330_b2.bin:system/etc/firmware/fw_bcm4330_b2.bin \ + device/htc/pico/prebuilt/etc/firmware/fw_bcm4330_apsta_b2.bin:system/etc/firmware/fw_bcm4330_apsta_b2.bin \ + device/htc/pico/prebuilt/etc/firmware/fw_bcm4330_p2p_b2.bin:system/etc/firmware/fw_bcm4330_p2p_b2.bin \ # Audio # Need all audio filters PRODUCT_COPY_FILES += \ device/htc/pico/prebuilt/etc/AudioFilter.csv:system/etc/AudioFilter.csv \ - device/htc/pico/files/etc/media_profiles.xml:system/etc/media_profiles.xml \ device/htc/pico/prebuilt/etc/AudioBTID.csv:system/etc/AudioBTID.csv \ device/htc/pico/prebuilt/etc/AudioPara4.csv:system/etc/AudioPara4.csv \ device/htc/pico/prebuilt/etc/AudioPara4_WB.csv:system/etc/AudioPara4_WB.csv \ device/htc/pico/prebuilt/etc/AudioPreProcess.csv:system/etc/AudioPreProcess.csv \ + device/htc/pico/prebuilt/etc/AudioFilter_HP.csv:system/etc/AudioFilter_HP.csv \ vendor/htc/pico/proprietary/lib/libaudioeq.so:system/lib/libaudioeq.so \ vendor/htc/pico/proprietary/lib/libhtc_acoustic.so:system/lib/libhtc_acoustic.so \ - -# Device permissions -PRODUCT_COPY_FILES += \ - frameworks/base/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \ - frameworks/base/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ - frameworks/base/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ - frameworks/base/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ - frameworks/base/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ - frameworks/base/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ - frameworks/base/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ - frameworks/base/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \ - frameworks/base/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml + # Sensors PRODUCT_COPY_FILES += \ - device/htc/pico/prebuilt/lib/hw/sensors.pico.so:system/lib/hw/sensors.pico.so \ + vendor/htc/pico/proprietary/lib/hw/sensors.pico.so:system/lib/hw/sensors.pico.so \ + +# 3D(Jellybean Blobs-Early Stage) +PRODUCT_COPY_FILES += \ + device/htc/pico/prebuilt/etc/firmware/yamato_pfp.fw:system/etc/firmware/yamato_pfp.fw \ + device/htc/pico/prebuilt/etc/firmware/yamato_pm4.fw:system/etc/firmware/yamato_pm4.fw \ + device/htc/pico/prebuilt/etc/firmware/leia_pfp_470.fw:system/etc/firmware/leia_pfp_470.fw \ + device/htc/pico/prebuilt/etc/firmware/leia_pm4_470.fw:system/etc/firmware/leia_pm4_470.fw \ + device/htc/pico/prebuilt/lib/libC2D2.so:system/lib/libC2D2.so \ + device/htc/pico/prebuilt/lib/libgsl.so:system/lib/libgsl.so \ + device/htc/pico/prebuilt/lib/libc2d2_z180.so:system/lib/libc2d2_z180.so \ + device/htc/pico/prebuilt/lib/libOpenVG.so:system/lib/libOpenVG.so \ + device/htc/pico/prebuilt/lib/libsc-a2xx.so:system/lib/libsc-a2xx.so \ + device/htc/pico/prebuilt/lib/egl/eglsubAndroid.so:system/lib/egl/eglsubAndroid.so \ + device/htc/pico/prebuilt/lib/egl/libEGL_adreno200.so:system/lib/egl/libEGL_adreno200.so \ + device/htc/pico/prebuilt/lib/egl/libGLESv1_CM_adreno200.so:system/lib/egl/libGLESv1_CM_adreno200.so \ + device/htc/pico/prebuilt/lib/egl/libGLESv2_adreno200.so:system/lib/egl/libGLESv2_adreno200.so \ + device/htc/pico/prebuilt/lib/egl/libGLESv2S3D_adreno200.so:system/lib/egl/libGLESv2S3D_adreno200.so \ + device/htc/pico/prebuilt/lib/egl/libq3dtools_adreno200.so:system/lib/egl/libq3dtools_adreno200.so -# GPS -# Don't work on 4.0.4 because from 2.3.5! You need to compile it with yourself - -# 3D(ICS Blobs) -PRODUCT_COPY_FILES += \ - vendor/htc/pico/proprietary/etc/firmware/yamato_pfp.fw:system/etc/firmware/yamato_pfp.fw \ - vendor/htc/pico/proprietary/etc/firmware/yamato_pm4.fw:system/etc/firmware/yamato_pm4.fw \ - vendor/htc/pico/proprietary/lib/libC2D2.so:system/lib/libC2D2.so \ - vendor/htc/pico/proprietary/lib/libgsl.so:system/lib/libgsl.so \ - vendor/htc/pico/proprietary/lib/libOpenVG.so:system/lib/libOpenVG.so \ - vendor/htc/pico/proprietary/lib/libsc-a2xx.so:system/lib/libsc-a2xx.so \ - vendor/htc/pico/proprietary/lib/egl/eglsubAndroid.so:system/lib/egl/eglsubAndroid.so \ - vendor/htc/pico/proprietary/lib/egl/libEGL_adreno200.so:system/lib/egl/libEGL_adreno200.so \ - vendor/htc/pico/proprietary/lib/egl/libGLESv1_CM_adreno200.so:system/lib/egl/libGLESv1_CM_adreno200.so \ - vendor/htc/pico/proprietary/lib/egl/libGLESv2_adreno200.so:system/lib/egl/libGLESv2_adreno200.so \ - vendor/htc/pico/proprietary/lib/egl/libq3dtools_adreno200.so:system/lib/egl/libq3dtools_adreno200.so - -# Camera -# Don't work on 4.0.4 because from 2.3.5! An - # RIL PRODUCT_COPY_FILES += \ vendor/htc/pico/proprietary/lib/libhtc_ril.so:system/lib/libhtc_ril.so \ -#CHROMATIX -# Don't work on 4.0.4 because from 2.3.5! We don't need this! - -# Don't work on 4.0.4 because from 2.3.5! You need to compile it with yourself -PRODUCT_COPY_FILES += \ - vendor/htc/pico/proprietary/etc/gps.conf:system/etc \ - vendor/htc/pico/proprietary/etc/spn-conf.xml:system/etc - # Audio DSP Profiles PRODUCT_COPY_FILES += \ + device/htc/pico/prebuilt/etc/soundimage/srs_global.cfg:system/etc/soundimage/srs_global.cfg \ + device/htc/pico/prebuilt/etc/soundimage/srs_bypass.cfg:system/etc/soundimage/srs_bypass.cfg \ device/htc/pico/prebuilt/etc/soundimage/srsfx_trumedia_51.cfg:system/etc/soundimage/srsfx_trumedia_51.cfg \ device/htc/pico/prebuilt/etc/soundimage/srsfx_trumedia_movie.cfg:system/etc/soundimage/srsfx_trumedia_movie.cfg \ device/htc/pico/prebuilt/etc/soundimage/srsfx_trumedia_voice.cfg:system/etc/soundimage/srsfx_trumedia_voice.cfg \ @@ -206,7 +197,6 @@ PRODUCT_COPY_FILES += \ # Bluetooth PRODUCT_COPY_FILES += \ - device/htc/pico/prebuilt/init.qcom.bt.sh:system/bin/init.qcom.bt.sh \ vendor/htc/pico/proprietary/etc/firmware/BCM4330B1_002.001.003.0221.0228.hcd:system/etc/firmware/BCM4330B1_002.001.003.0221.0228.hcd \ # Keylayouts @@ -225,14 +215,8 @@ PRODUCT_COPY_FILES += \ device/htc/pico/prebuilt/usr/idc/himax-touchscreen.idc:system/usr/idc/himax-touchscreen.idc \ device/htc/pico/prebuilt/usr/idc/synaptics-rmi-touchscreen.idc:system/usr/idc/synaptics-rmi-touchscreen.idc \ - - -# Camera -# Don't work on 4.0.4 because from 2.3.5! Need open source drivers for ics from qualcomm or need hack for 2.3.5 proprietary - PRODUCT_PROPERTY_OVERRIDES += \ ro.product.camera=pico \ - debug.camcorder.disablemeta=1 \ ro.com.google.locationfeatures=1 \ ro.com.google.networklocation=1 \ ro.com.google.gmsversion=2.3_r6 \ @@ -242,14 +226,10 @@ PRODUCT_PROPERTY_OVERRIDES += \ ro.telephony.call_ring.multiple=false \ ro.vold.umsdirtyratio=20 -PRODUCT_PROPERTY_OVERRIDES += \ - media.stagefright.enable-player=true \ - media.stagefright.enable-meta=false \ - media.stagefright.enable-scan=false \ - media.stagefright.enable-http=true \ - media.stagefright.enable-aac=true \ - media.stagefright.enable-qcp=true - -PRODUCT_LOCALES := en_GB +PRODUCT_NAME := cm_pico +PRODUCT_BRAND := HTC +PRODUCT_DEVICE := pico +PRODUCT_MODEL := HTC Explorer A310e +PRODUCT_MANUFACTURER := HTC PRODUCT_AAPT_CONFIG := normal mdpi PRODUCT_AAPT_PREF_CONFIG := mdpi diff --git a/prebuilt/bcm4330.ko b/prebuilt/bcm4330.ko deleted file mode 100644 index 379cafa..0000000 Binary files a/prebuilt/bcm4330.ko and /dev/null differ diff --git a/prebuilt/bcmdhd.ko b/prebuilt/bcmdhd.ko new file mode 100644 index 0000000..9f51d1b Binary files /dev/null and b/prebuilt/bcmdhd.ko differ diff --git a/prebuilt/cifs.ko b/prebuilt/cifs.ko index f35bee4..60b95d5 100644 Binary files a/prebuilt/cifs.ko and b/prebuilt/cifs.ko differ diff --git a/prebuilt/compcache b/prebuilt/compcache deleted file mode 100644 index 7811553..0000000 --- a/prebuilt/compcache +++ /dev/null @@ -1,49 +0,0 @@ -#!/system/bin/sh -# -# Compcache zram manager -# shade@chemlab.org (cyanogen) -#Modded by Dorimanx! - -case "$1" in - start) -if [ -e /system/lib/modules/zram.ko ]; then -insmod /system/lib/modules/zram.ko num_devices=3 -fi - sync - echo 3 > /proc/sys/vm/drop_caches - echo 60 > /proc/sys/vm/swappiness - if [ -e /dev/block/zram0 ]; then - echo $(($2*1000)) > /sys/block/zram0/disksize - echo $(($2*1000)) > /sys/block/zram1/disksize - echo $(($2*1000)) > /sys/block/zram2/disksize - mkswap /dev/block/zram0 >/dev/null - mkswap /dev/block/zram1 >/dev/null - mkswap /dev/block/zram2 >/dev/null - swapon /dev/block/zram0 -p 20 >/dev/null 2>&1 - swapon /dev/block/zram1 -p 20 >/dev/null 2>&1 - swapon /dev/block/zram2 -p 20 >/dev/null 2>&1 - - swapon /dev/block/zram0 >/dev/null 2>&1 - swapon /dev/block/zram1 >/dev/null 2>&1 - swapon /dev/block/zram2 >/dev/null 2>&1 - fi - ;; - - stop) - swapoff /dev/block/zram0 >/dev/null 2>&1 - swapoff /dev/block/zram1 >/dev/null 2>&1 - swapoff /dev/block/zram2 >/dev/null 2>&1 - rmmod /system/lib/modules/zram.ko >/dev/null 2>&1 - ;; - stats) - if [ -e /dev/block/zram0 ]; then - /system/bin/zram_stats - fi - ;; - *) - echo "Usage: $0 {start |stop|stats}" - exit 1 -esac - -exit 0 - diff --git a/prebuilt/etc/AudioFilter.csv b/prebuilt/etc/AudioFilter.csv old mode 100644 new mode 100755 index cc15d82..58808b5 --- a/prebuilt/etc/AudioFilter.csv +++ b/prebuilt/etc/AudioFilter.csv @@ -1,5 +1,4 @@ -Header,PIO_20110721 -A1,AUDFMT IIR,4000,0,8000,0,4000,0,3b58,93de,894e,d845,3b58,93de,3b58,93de,894e,d845,3b58,93de,4000,0,8000,0,4000,0,8732,7616,3903,44d4,862f,4d1a,3a06,e115,8444,d3fe,3bf2,3457,81ac,4228,3e8b,edc2,2,2,2,2,0,0,0,0,FFFF,4 -B1,AUDFMT ADRC,FFFF,2600,b333,106,7f7d,3096,7ff7,4356,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -C1,AUDFMT EQ,FFFF,0,190,3,016A,0,1F4,3,016A,6,898,3,016A,0,FA0,3,016A,0,1388,3,016A,0,1F40,3,016A,0,2328,3,016A,0,4650,2,016A -D1,AUDFMT ADRC,FFFF,1,1,30,0,0,0,0,1,0,106,2550,F333,7ED4,FFC6,4356,282B,2600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +Header,GOFU_20120309,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +A1,AUDFMT IIR,4000,0,8000,0,4000,0,3b58,93de,894e,d845,3b58,93de,3b58,93de,894e,d845,3b58,93de,4000,0,8000,0,4000,0,8732,7616,3903,44d4,862f,4d1a,3a06,e115,8444,d3fe,3bf2,3457,81ac,4228,3e8b,edc2,2,2,2,2,0,0,0,0,FFFF,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +M1,AUDFMT ADRC,FFFF,1,1,30,0,0,0,0,1,0,106,2550,F333,7ED4,FFC6,4356,282B,2600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +C1,AUDFMT EQ,0,0,190,3,016A,0,1F4,3,016A,6,898,3,016A,0,FA0,3,016A,0,1388,3,016A,0,1F40,3,016A,0,2328,3,016A,0,4650,2,016A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/prebuilt/etc/AudioFilter_HP.csv b/prebuilt/etc/AudioFilter_HP.csv new file mode 100755 index 0000000..58808b5 --- /dev/null +++ b/prebuilt/etc/AudioFilter_HP.csv @@ -0,0 +1,4 @@ +Header,GOFU_20120309,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +A1,AUDFMT IIR,4000,0,8000,0,4000,0,3b58,93de,894e,d845,3b58,93de,3b58,93de,894e,d845,3b58,93de,4000,0,8000,0,4000,0,8732,7616,3903,44d4,862f,4d1a,3a06,e115,8444,d3fe,3bf2,3457,81ac,4228,3e8b,edc2,2,2,2,2,0,0,0,0,FFFF,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +M1,AUDFMT ADRC,FFFF,1,1,30,0,0,0,0,1,0,106,2550,F333,7ED4,FFC6,4356,282B,2600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +C1,AUDFMT EQ,0,0,190,3,016A,0,1F4,3,016A,6,898,3,016A,0,FA0,3,016A,0,1388,3,016A,0,1F40,3,016A,0,2328,3,016A,0,4650,2,016A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/prebuilt/etc/AudioPara4.csv b/prebuilt/etc/AudioPara4.csv old mode 100644 new mode 100755 index 32f4c1a..216f7c4 --- a/prebuilt/etc/AudioPara4.csv +++ b/prebuilt/etc/AudioPara4.csv @@ -1,184 +1,199 @@ -Header,PIO_20110928 -A0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A2,HTC_VOC_CODEC_SPEAKER_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,2,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A3,HTC_VOC_CODEC_SPEAKER_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,2,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A4,HTC_VOC_CODEC_HEADSET_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A5,HTC_VOC_CODEC_HEADSET_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A8,HTC_VOC_CODEC_CARKIT_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A9,HTC_VOC_CODEC_CARKIT_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,71,36,61,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,71,36,61,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,10,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,10,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,3F,44,4,45,0,46,F,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,3F,44,4,45,0,46,F,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,8,3D,8,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U2,HTC_VOC_CODEC_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U3,HTC_VOC_CODEC_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,8,3D,8,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U4,HTC_VOC_CODEC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U5,HTC_VOC_CODEC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U8,HTC_VOC_CODEC_CARKIT_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U9,HTC_VOC_CODEC_CARKIT_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,38,3D,38,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U24,HTC_VOC_CODEC_INTERL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,34,3D,34,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U25,HTC_VOC_CODEC_EXTERNAL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,18,3D,18,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U26,HTC_VOC_CODEC_BT_VR,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -D0,HTC_VOC_CODEC_EARCUPLE_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D1,HTC_VOC_CODEC_EARCUPLE_MIDI,C,3,C,0,0,1,1,C,0,0,6,0,0,0,22,0,804 -D2,HTC_VOC_CODEC_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D3,HTC_VOC_CODEC_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,6,0,0,0,22,0,804 -D4,HTC_VOC_CODEC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D5,HTC_VOC_CODEC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,6,C0,0,0,22,0,804 -D6,HTC_VOC_CODEC_BT_VOICE,f003,0,0,3,C,2,2,0,C,0,0,0,1,0,7a2,3,800 -D7,HTC_VOC_CODEC_BT_MIDI,f003,0,0,3,C,2,2,0,C,0,0,0,1,0,7a2,3,800 -D8,HTC_VOC_CODEC_CARKIT_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D9,HTC_VOC_CODEC_CARKIT_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D10,HTC_VOC_CODEC_TTY_FULL_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D11,HTC_VOC_CODEC_TTY_FULL_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D12,HTC_VOC_CODEC_TTY_VCO_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D13,HTC_VOC_CODEC_TTY_VCO_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D14,HTC_VOC_CODEC_TTY_HCO_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D15,HTC_VOC_CODEC_TTY_HCO_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,6,C0,0,0,22,0,804 -D18,HTC_VOC_CODEC_FMHEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D19,HTC_VOC_CODEC_FMHEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D22,HTC_VOC_CODEC_FMSPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D23,HTC_VOC_CODEC_FMSPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -F0,PHONE_HEADSET_VOL0,0,4000,16B5,0,7FB2,16B5,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F1,PHONE_HEADSET_VOL1,1,4000,1C96,0,7FB2,1C96,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F2,PHONE_HEADSET_VOL2,2,4000,2861,0,7FB2,2861,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F3,PHONE_HEADSET_VOL3,3,4000,32D6,0,7FB2,32D6,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F4,PHONE_HEADSET_VOL4,4,4000,4000,0,7FB2,4000,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,200,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F5,PHONE_HEADSET_VOL5,5,4000,4000,0,7FB2,656E,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,258,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F6,PHONE_HANDSFREE_VOL0,0,4000,4000,0,7FB2,16B5,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,168C,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F7,PHONE_HANDSFREE_VOL1,1,4000,4000,0,7FB2,2013,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,168C,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F8,PHONE_HANDSFREE_VOL2,2,4000,4000,0,7FB2,2D4E,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,168C,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F9,PHONE_HANDSFREE_VOL3,3,4000,4000,0,7FB2,4000,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,168C,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4000,7D0,0,C8,100,100,300,200,300,200,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F10,PHONE_HANDSFREE_VOL4,4,4000,4000,0,7FB2,656E,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,179f,0,14,2000,168C,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F11,PHONE_HANDSFREE_VOL5,5,4000,4000,0,7FB2,B45F,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,179f,0,14,2000,168C,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F12,PHONE_EARCUPLE_VOL0,0,4000,197A,0,7FB2,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,C8,2ee0,fa0,FFFF,0,34,7F,115,FE8E,FC9E,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F13,PHONE_EARCUPLE_VOL1,1,4000,2861,0,7FB2,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,C8,2ee0,fa0,FFFF,0,34,7F,115,FE8E,FC9E,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F14,PHONE_EARCUPLE_VOL2,2,4000,4000,0,7FB2,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,C8,2ee0,fa0,FFFF,0,34,7F,115,FE8E,FC9E,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F15,PHONE_EARCUPLE_VOL3,3,4000,4000,0,7FB2,2861,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,C8,2ee0,fa0,FFFF,0,34,7F,115,FE8E,FC9E,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F16,PHONE_EARCUPLE_VOL4,4,4000,4000,0,7FB2,4000,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,200,64,1388,C8,2ee0,fa0,FFFF,0,34,7F,115,FE8E,FC9E,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F17,PHONE_EARCUPLE_VOL5,5,4000,4000,0,7FB2,656E,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,200,64,1388,C8,2ee0,fa0,FFFF,0,34,7F,115,FE8E,FC9E,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F18,PHONE_BTHEADSET,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F19,PHONE_CARKIT,5,4000,4000,0,7FB2,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,417,FC95,60,EC7D,01D8,F16B,3D23,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F20,PHONE_TTY_FULL,0,4000,1100,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F21,PHONE_TTY_VCO,0,4000,2600,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F22,PHONE_TTY_HCO,0,4000,4000,0,4000,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,FB93,FBF6,F2C6,FDCC,93,141F,382A,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F23,CE_REC_INC_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F24,CE_REC_EXT_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F25,CE_PLAYBACK_HEADSET,5,4000,3900,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F26,CE_PLAYBACK_HANDSFREE,5,4000,32DF,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F27,PHONE_HAC,5,4000,7FB2,0,5A67,7FB2,FFFF,2D33,0,A00,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,200,50,300,200,64,1388,1c2,2ee0,fa0,FFFF,0,CB,FC41,F6B3,F9B8,5AE,5A9E,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F28,VT_HANDSFREE_VOL0,0,4000,4000,0,5092,16B5,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F29,VT_HANDSFREE_VOL1,1,4000,4000,0,5092,2013,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F30,VT_HANDSFREE_VOL2,2,4000,4000,0,5092,2D4E,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F31,VT_HANDSFREE_VOL3,3,4000,4000,0,5092,4000,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4000,7D0,0,C8,100,100,300,200,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F32,VT_HANDSFREE_VOL4,4,4000,4000,0,5092,5A67,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F33,VT_HANDSFREE_VOL5,5,4000,4000,0,5092,7FB2,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F34,CE_PLAYBACK_HEADSET_RING,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,00fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G0,Default,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G1,HTC BH S100,5,4000,4000,0,4000,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,14,800,2000,2000,fa,C8,1,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2EE0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G2,HTC BH M100,5,4000,4000,0,5A67,5A67,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G3,Motorola H500,5,4000,4000,0,7FB2,7FB2,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G4,Nokia HS-36W,5,4000,4000,0,7FB2,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,40,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G5,PLT 510v.D,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G6,M2500 by Plantronics,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G7,Nokia HDW-3,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G8,HBH-608,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G9,HBH-DS970,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,30,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G10,i.Tech BlueBAND,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G11,Nokia BH-800,5,4000,4000,0,7FB2,5A67,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,78,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,60,100,800,400,400,300,258,32,1ca8,300,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G12,Motorola H700,5,4000,4000,0,5A67,5A67,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G13,HTC BH M200,5,4000,4000,0,4000,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G14,Jabra JX10,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,60,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G15,320Plantronics,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G16,640Plantronics,5,4000,4000,0,7FB2,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,20,161,400,200,400,300,258,32,1ca8,400,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G17,Jabra BT500,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,161,800,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G18,Motorola HT820,5,4000,4000,0,5092,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF10,FCC8,F8A0,F4F2,F04B,65AD,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G19,HBH-IV840,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G20,6XXPlantronics,5,4000,4000,0,7FB2,A0C2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,0,0,0,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G21,3xxPlantronics,5,4000,4000,0,5A67,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,80,800,1500,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G22,HBH-PV710,5,4000,4000,0,71CF,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,80,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G23,Motorola H670,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,80,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G24,HBM-300,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,70,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G25,Nokia BH-208,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,70,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G26,Samsung WEP410,5,4000,4000,0,7FB2,2D4E,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,150,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G27,Jabra BT8010,5,4000,4000,0,7FB2,71CF,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,30,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G28,Motorola S9,5,4000,4000,0,7FB2,4000,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G29,Jabra BT620s,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,270,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G30,Nokia BH-902,5,4000,4000,0,71CF,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,70,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G31,HBH-DS220,5,4000,4000,0,4000,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G32,HBH-DS980,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,30,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G33,BT_EC_OFF,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,11,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G34,8XXPlantronics,5,4000,4000,0,7FB2,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179F,0,0,800,2000,2000,fa,190,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G35,Palm Headset,5,4000,4000,0,4000,4000,FFFF,2000,0,C80,FF03,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,149F,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G36,Jawbone,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G37,Jawbone1234,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G38,590Plantronics,5,4000,4000,0,7FB2,4000,FFFF,2000,0,780,FF03,2400,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,149F,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,50,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,F76E,FD79,FD34,FCFB,FCCF,FCB3,3F6B,0,13,ffdc,fdaa,ff4e,f955,fa96,3ebe,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G39,Audi UHV 6384,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,FFC1,FEFD,FDD1,FC8B,FB8D,7B32,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G40,BlueConnect(tm),5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G41,HandsFreeLink TM,5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G42,Parrot 3400LS,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G43,BMW,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G44,Motorola H350,5,4000,4000,0,656E ,CA62 ,FFFF ,2000,0,C80,FF03 ,2300,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,0,7F65 ,0,780,FF9A ,1B0C ,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,179F ,0,96,800,5A30 ,2000,1A4 ,A0 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,4C00 ,1A00 ,0,20,161,800,200,1912,300,258,190,1CA8 ,50,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G45,Jabra BT135,5,4000,4000,0,7FB2 ,4000,FFFF ,4000,0,1180,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,FFFF ,2880,0,0C80 ,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,179F ,0,78,800,5A30 ,2000,1A4 ,C8 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,5208,1F40 ,0,20,161,800,200,1912,300,258,190,1CA8 ,C8 ,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G46,Jabra BT160,5,4000,4000,0,6500,6000,FFFF,2000,0,1180,FF03,2000,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,179F,0,70,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G47,Motorola H721,5,4000,4000,0,71CF,2D4E,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,200,800,2000,2000,fa,46,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,20,100,200,200,400,300,258,32,1ca8,1000,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G48,Jabra BT8040,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,4,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G49,DoCoMo Wireless P01,5,4000,4000,0,FEC9,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G50,SoundLeaf+,5,4000,4000,0,B45F,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,50,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G51,Nokia BH-103,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,A2,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G52,Jabra BT530,5,4000,4000,0,656E ,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G53,Jabra BT3030,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G54,JKDAP3265,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G55,JKDAP3264,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G56,Jabra BT5010,5,4000,4000,0,5A67,B45F,FFFF,2D33,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,980,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G57,Motorola H12,5,4000,4000,0,47CF,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G58,Nokia BH-703,5,4000,4000,0,656E ,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G59,Motorola H710,5,4000,4000,0,7FB2,5A67,0,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G60,Jabra BT2050,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G61,Jabra BT2070,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G62,Bluetooth headset,5,4000,4000,0,7FB2,B45F,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1214,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G63,i.Air 301,5,4000,4000,0,A0C2,B45F,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,F8,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,258,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G64,BH M300,5,4000,4000,0,8F47,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,4,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FFB5,009C,FF35,FA49,F000,3C90,FFFF,0,FFD1,FFF7,FFE6,FBB6,F340,3C90,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G65,Clip Music 801,5,4000,4000,0,47CF,5092,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,300,32,1100,C8,2D55,100,FFFF,0,FF9C,6BD,FDD0,F2BA,FAEA,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G66,Clip Naro 601,5,4000,4000,0,CA62,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G67,Motorola H790,5,4000,4000,0,656E ,2013,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G68,MW600,5,4000,4000,0,7FB2,B45F,ffff,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G69,Nokia BH-505,5,4000,4000,0,5A67,B45F,ffff,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G70,Motorola S10-HD,5,4000,4000,0,4000,B45F,ffff,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G71,HTC BH M400,5,4000,4000,0,B45F,7FB2,FFFF,7F65,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,0,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G72,Jabra EXTREME,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,100,100,200,200,1912,300,150,32,1ca8,C8,2D55,100,0,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +Header,GOFU_20120511,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +A0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A2,HTC_VOC_CODEC_SPEAKER_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,2,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A3,HTC_VOC_CODEC_SPEAKER_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,2,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A4,HTC_VOC_CODEC_HEADSET_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A5,HTC_VOC_CODEC_HEADSET_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A8,HTC_VOC_CODEC_CARKIT_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A9,HTC_VOC_CODEC_CARKIT_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,71,36,61,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,71,36,61,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,14,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,14,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,14,43,3F,44,4,45,0,46,B,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,14,43,3F,44,4,45,0,46,B,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,2C,3D,2C,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,10,3D,10,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U2,HTC_VOC_CODEC_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U3,HTC_VOC_CODEC_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,10,3D,10,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U4,HTC_VOC_CODEC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U5,HTC_VOC_CODEC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U8,HTC_VOC_CODEC_CARKIT_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U9,HTC_VOC_CODEC_CARKIT_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,38,3D,38,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U24,HTC_VOC_CODEC_INTERL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,34,3D,34,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U25,HTC_VOC_CODEC_EXTERNAL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,18,3D,18,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U26,HTC_VOC_CODEC_BT_VR,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U27,HTC_VOC_CODEC_FMHEADSET_SH,35,63,36,63,37,FF,38,7F,39,F,3A,0,3B,0,3C,94,3D,94,3E,18,3F,18,40,5,41,1C,42,18,43,0,44,0,45,0,46,3,47,0,48,80,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +D0,HTC_VOC_CODEC_EARCUPLE_VOICE,C,3,C,0,0,1,1,C,0,0,3,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D1,HTC_VOC_CODEC_EARCUPLE_MIDI,C,3,C,0,0,1,1,C,0,0,6,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D2,HTC_VOC_CODEC_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,3,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D3,HTC_VOC_CODEC_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,6,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D4,HTC_VOC_CODEC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,3,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D5,HTC_VOC_CODEC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,6,C0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D6,HTC_VOC_CODEC_BT_VOICE,f003,0,0,3,C,2,2,0,C,0,0,0,1,0,7a2,3,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D7,HTC_VOC_CODEC_BT_MIDI,f003,0,0,3,C,2,2,0,C,0,0,0,1,0,7a2,3,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D8,HTC_VOC_CODEC_CARKIT_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D9,HTC_VOC_CODEC_CARKIT_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D10,HTC_VOC_CODEC_TTY_FULL_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D11,HTC_VOC_CODEC_TTY_FULL_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D12,HTC_VOC_CODEC_TTY_VCO_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D13,HTC_VOC_CODEC_TTY_VCO_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D14,HTC_VOC_CODEC_TTY_HCO_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D15,HTC_VOC_CODEC_TTY_HCO_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,6,C0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D18,HTC_VOC_CODEC_FMHEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D19,HTC_VOC_CODEC_FMHEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D22,HTC_VOC_CODEC_FMSPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D23,HTC_VOC_CODEC_FMSPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +F0,PHONE_HEADSET_VOL0,0,4000,16B5,1B3,7FB2,16B5,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F1,PHONE_HEADSET_VOL1,1,4000,1C96,1B3,7FB2,1C96,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F2,PHONE_HEADSET_VOL2,2,4000,2861,1B3,7FB2,2861,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F3,PHONE_HEADSET_VOL3,3,4000,32D6,1B3,7FB2,32D6,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F4,PHONE_HEADSET_VOL4,4,4000,4000,1B3,7FB2,4000,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,200,64,1449,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F5,PHONE_HEADSET_VOL5,5,4000,4000,1B3,7FB2,656E,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,258,64,1449,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F6,PHONE_HANDSFREE_VOL0,0,3FD6,4000,0,7FB2,16B5,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F7,PHONE_HANDSFREE_VOL1,1,3FD6,4000,0,7FB2,2013,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F8,PHONE_HANDSFREE_VOL2,2,3FD6,4000,0,7FB2,2D4E,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F9,PHONE_HANDSFREE_VOL3,3,3FD6,4000,0,7FB2,4000,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F10,PHONE_HANDSFREE_VOL4,4,3FD6,4000,0,7FB2,656E,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,179f,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,280,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F11,PHONE_HANDSFREE_VOL5,5,3FD6,4000,0,7FB2,8F47,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,179f,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,280,800,fa0,FFFF,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F12,PHONE_EARCUPLE_VOL0,0,4000,1013,0,4000,2013,FFFF,2D33,0,C80,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,0,0,0,0,0,0,0,0,FFFF,005F,FDCB,354,FD8D,FF69,405,3F65,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F13,PHONE_EARCUPLE_VOL1,1,4000,197A,0,4000,2013,FFFF,2D33,0,C80,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,0,0,0,0,0,0,0,0,FFFF,005F,FDCB,354,FD8D,FF69,405,3F65,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F14,PHONE_EARCUPLE_VOL2,2,4000,2861,0,4000,2013,FFFF,2D33,0,C80,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,0,0,0,0,0,0,0,0,FFFF,005F,FDCB,354,FD8D,FF69,405,3F65,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F15,PHONE_EARCUPLE_VOL3,3,4000,4000,0,4000,2013,FFFF,2D33,0,C80,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,0,0,0,0,0,0,0,0,FFFF,005F,FDCB,354,FD8D,FF69,405,3F65,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F16,PHONE_EARCUPLE_VOL4,4,4000,4000,0,4000,32D6,FFFF,2D33,0,C80,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,0,0,0,0,0,0,0,0,FFFF,005F,FDCB,354,FD8D,FF69,405,3F65,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F17,PHONE_EARCUPLE_VOL5,5,4000,4000,0,4000,5092,FFFF,2D33,0,C80,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,0,0,0,0,0,0,0,0,FFFF,005F,FDCB,354,FD8D,FF69,405,3F65,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F18,PHONE_BTHEADSET,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F19,PHONE_CARKIT,5,4000,4000,0,7FB2,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,417,FC95,60,EC7D,01D8,F16B,3D23,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F20,PHONE_TTY_FULL,0,4000,1100,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F21,PHONE_TTY_VCO,0,4000,2600,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F22,PHONE_TTY_HCO,0,4000,4000,0,4000,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,FB93,FBF6,F2C6,FDCC,93,141F,382A,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F23,CE_REC_INC_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F24,CE_REC_EXT_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F25,CE_PLAYBACK_HEADSET,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F26,CE_PLAYBACK_HANDSFREE,5,4000,2861,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F27,PHONE_HAC,5,4000,7FB2,0,5A67,7FB2,FFFF,2D33,0,A00,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,200,50,300,200,64,1388,1c2,2ee0,fa0,FFFF,0,CB,FC41,F6B3,F9B8,5AE,5A9E,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F28,VT_HANDSFREE_VOL0,0,4000,4000,0,5092,16B5,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F29,VT_HANDSFREE_VOL1,1,4000,4000,0,5092,2013,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F30,VT_HANDSFREE_VOL2,2,4000,4000,0,5092,2D4E,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F31,VT_HANDSFREE_VOL3,3,4000,4000,0,5092,4000,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4000,7D0,0,C8,100,100,300,200,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F32,VT_HANDSFREE_VOL4,4,4000,4000,0,5092,5A67,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F33,VT_HANDSFREE_VOL5,5,4000,4000,0,5092,7FB2,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F34,CE_PLAYBACK_HEADSET_RING,5,4000,2861,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,00fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F35,CE_PLAYBACK_RECEIVER,5,4000,1C96,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G0,Default,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G1,HTC BH S100,5,4000,4000,0,4000,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,78,800,2000,2000,fa,C8,1,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2EE0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G2,HTC BH M100,5,4000,4000,0,5A67,5A67,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G3,Motorola H500,5,4000,4000,0,7FB2,7FB2,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G4,Nokia HS-36W,5,4000,4000,0,7FB2,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,A4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G5,PLT 510v.D,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G6,M2500 by Plantronics,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G7,Nokia HDW-3,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G8,HBH-608,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G9,HBH-DS970,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,94,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G10,i.Tech BlueBAND,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G11,Nokia BH-800,5,4000,4000,0,7FB2,5A67,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,DC,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,60,100,800,400,400,300,258,32,1ca8,300,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G12,Motorola H700,5,4000,4000,0,5A67,5A67,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G13,HTC BH M200,5,4000,4000,0,4000,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G14,Jabra JX10,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,C4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G15,320Plantronics,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G16,640Plantronics,5,4000,4000,0,7FB2,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,20,161,400,200,400,300,258,32,1ca8,400,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G17,Jabra BT500,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,161,800,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G18,Motorola HT820,5,4000,4000,0,5092,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF10,FCC8,F8A0,F4F2,F04B,65AD,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G19,HBH-IV840,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G20,6XXPlantronics,5,4000,4000,0,7FB2,A0C2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,0,0,0,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G21,3xxPlantronics,5,4000,4000,0,5A67,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,E4,800,1500,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G22,HBH-PV710,5,4000,4000,0,71CF,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,E4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G23,Motorola H670,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,E4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G24,HBM-300,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,D4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G25,Nokia BH-208,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,D4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G26,Samsung WEP410,5,4000,4000,0,7FB2,2D4E,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,150,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G27,Jabra BT8010,5,4000,4000,0,7FB2,71CF,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,94,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G28,Motorola S9,5,4000,4000,0,7FB2,4000,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G29,Jabra BT620s,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,2D4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G30,Nokia BH-902,5,4000,4000,0,71CF,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,D4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G31,HBH-DS220,5,4000,4000,0,4000,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G32,HBH-DS980,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,94,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G33,BT_EC_OFF,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,75,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G34,8XXPlantronics,5,4000,4000,0,7FB2,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179F,0,64,800,2000,2000,fa,190,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G35,Palm Headset,5,4000,4000,0,4000,4000,FFFF,2000,0,C80,FF03,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,149F,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G36,Jawbone,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G37,Jawbone1234,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G38,590Plantronics,5,4000,4000,0,7FB2,4000,FFFF,2000,0,780,FF03,2400,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,149F,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,50,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,F76E,FD79,FD34,FCFB,FCCF,FCB3,3F6B,0,13,ffdc,fdaa,ff4e,f955,fa96,3ebe,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G39,Audi UHV 6384,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,FFC1,FEFD,FDD1,FC8B,FB8D,7B32,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G40,BlueConnect(tm),5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G41,HandsFreeLink TM,5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G42,Parrot 3400LS,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G43,BMW,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G44,Motorola H350,5,4000,4000,0,656E ,CA62 ,FFFF ,2000,0,C80,FF03 ,2300,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,0,7F65 ,0,780,FF9A ,1B0C ,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,179F ,0,FA,800,5A30 ,2000,1A4 ,A0 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,4C00 ,1A00 ,0,20,161,800,200,1912,300,258,190,1CA8 ,50,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G45,Jabra BT135,5,4000,4000,0,7FB2 ,4000,FFFF ,4000,0,1180,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,FFFF ,2880,0,0C80 ,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,179F ,0,DC,800,5A30 ,2000,1A4 ,C8 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,5208,1F40 ,0,20,161,800,200,1912,300,258,190,1CA8 ,C8 ,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G46,Jabra BT160,5,4000,4000,0,6500,6000,FFFF,2000,0,1180,FF03,2000,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,179F,0,D4,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G47,Motorola H721,5,4000,4000,0,71CF,2D4E,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,264,800,2000,2000,fa,46,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,20,100,200,200,400,300,258,32,1ca8,1000,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G48,Jabra BT8040,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,4,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G49,DoCoMo Wireless P01,5,4000,4000,0,FEC9,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G50,SoundLeaf+,5,4000,4000,0,B45F,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,B4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G51,Nokia BH-103,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,106,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G52,Jabra BT530,5,4000,4000,0,656E ,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G53,Jabra BT3030,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G54,JKDAP3265,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G55,JKDAP3264,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G56,Jabra BT5010,5,4000,4000,0,5A67,B45F,FFFF,2D33,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,980,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G57,Motorola H12,5,4000,4000,0,47CF,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G58,Nokia BH-703,5,4000,4000,0,656E ,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G59,Motorola H710,5,4000,4000,0,7FB2,5A67,0,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G60,Jabra BT2050,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G61,Jabra BT2070,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G62,Bluetooth headset,5,4000,4000,0,7FB2,B45F,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1214,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G63,i.Air 301,5,4000,4000,0,A0C2,B45F,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,15C,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,258,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G64,BH M300,5,4000,4000,0,8F47,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,4,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FFB5,009C,FF35,FA49,F000,3C90,FFFF,0,FFD1,FFF7,FFE6,FBB6,F340,3C90,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G65,Clip Music 801,5,4000,4000,0,47CF,5092,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,300,32,1100,C8,2D55,100,FFFF,0,FF9C,6BD,FDD0,F2BA,FAEA,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G66,Clip Naro 601,5,4000,4000,0,CA62,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G67,Motorola H790,5,4000,4000,0,656E ,2013,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G68,MW600,5,4000,4000,0,FEC9,FEC9,ffff,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G69,Nokia BH-505,5,4000,4000,0,5A67,FEC9,ffff,2000,0,1000,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1000,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G70,Motorola S10-HD,5,4000,4000,0,4000,FEC9,ffff,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G71,HTC BH M400,5,4000,4000,0,B45F,7FB2,FFFF,7F65,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149F,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,0,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G72,Jabra EXTREME,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,100,100,200,200,1912,300,150,32,1ca8,C8,2D55,100,0,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G73,JABRA WAVE,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0000,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G74,VH700,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,20,300,800,300,1912,300,258,32,1ca8,300,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G75,HTC Car V100,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179F,0,64,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,300,800,300,1912,300,258,32,1ca8,300,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G76,PLT_BB903+,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0000,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G77,BlueAnt Q2 V1.1,5,4000,4000,0,7FB2,4000,FFFF,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0000,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G78,Jawbone ICON,5,4000,4000,0,E314,4000,FFFF,2000,0,C80,FF01,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179F,0,100,800,2000,2000,300,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,7208,1880,0,150,150,800,150,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G79,Jawbone ERA,5,4000,4000,0,CA62,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,78,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G80,Motorola Finiti,5,4000,4000,0,CA62,7FB2,FFFF,2000,0,1000,FF01,1F00,FF01,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0000,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G81,JABRA STONE2,5,4000,4000,0,B460,4000,FFFF,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0000,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G82,HTC BH M500,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0000,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G83,PLT_VoyagerPRO,5,4000,4000,0,7FB2,5092,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179F,0,50,800,2000,2000,5DC,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,2008,778,0,0,200,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G84,Nokia BH-111,5,4000,4000,0,7FB2,4D4E,FFFF,2000,0,1180,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G85,Motorola HX550,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,1000,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0004,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 diff --git a/prebuilt/etc/AudioPara4_WB.csv b/prebuilt/etc/AudioPara4_WB.csv old mode 100644 new mode 100755 index 9312631..cc705d1 --- a/prebuilt/etc/AudioPara4_WB.csv +++ b/prebuilt/etc/AudioPara4_WB.csv @@ -1,179 +1,199 @@ -Header,PIO_WB_20110913 -A0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A2,HTC_VOC_CODEC_SPEAKER_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A3,HTC_VOC_CODEC_SPEAKER_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A4,HTC_VOC_CODEC_HEADSET_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A5,HTC_VOC_CODEC_HEADSET_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A8,HTC_VOC_CODEC_CARKIT_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A9,HTC_VOC_CODEC_CARKIT_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,10,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,10,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,0,42,4,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -A23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,0,42,4,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,1C,3D,1C,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,8,3D,8,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U2,HTC_VOC_CODEC_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,0,3F,0,40,0,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U3,HTC_VOC_CODEC_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,8,3D,8,3E,0,3F,0,40,0,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U4,HTC_VOC_CODEC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U5,HTC_VOC_CODEC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,18,3D,18,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U8,HTC_VOC_CODEC_CARKIT_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U9,HTC_VOC_CODEC_CARKIT_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,38,3D,38,3E,0,3F,0,40,0,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,0,3F,0,40,0,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U24,HTC_VOC_CODEC_INTERL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,34,3D,34,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U25,HTC_VOC_CODEC_EXTERNAL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,18,3D,18,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -U26,HTC_VOC_CODEC_BT_VR,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -D0,HTC_VOC_CODEC_EARCUPLE_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D1,HTC_VOC_CODEC_EARCUPLE_MIDI,C,3,C,0,0,1,1,C,0,0,6,0,0,0,22,0,804 -D2,HTC_VOC_CODEC_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D3,HTC_VOC_CODEC_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,6,0,0,0,22,0,804 -D4,HTC_VOC_CODEC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D5,HTC_VOC_CODEC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,6,C0,0,0,22,0,804 -D6,HTC_VOC_CODEC_BT_VOICE,f003,0,0,3,C,2,2,0,C,0,0,0,1,0,7a2,3,800 -D7,HTC_VOC_CODEC_BT_MIDI,f003,0,0,3,C,2,2,0,C,0,0,0,1,0,7a2,3,800 -D8,HTC_VOC_CODEC_CARKIT_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D9,HTC_VOC_CODEC_CARKIT_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D10,HTC_VOC_CODEC_TTY_FULL_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D11,HTC_VOC_CODEC_TTY_FULL_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D12,HTC_VOC_CODEC_TTY_VCO_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D13,HTC_VOC_CODEC_TTY_VCO_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D14,HTC_VOC_CODEC_TTY_HCO_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D15,HTC_VOC_CODEC_TTY_HCO_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,2,0,0,0,22,0,804 -D17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,6,C0,0,0,22,0,804 -D18,HTC_VOC_CODEC_FMHEADSET_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D19,HTC_VOC_CODEC_FMHEADSET_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D22,HTC_VOC_CODEC_FMSPEAKER_VOICE,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -D23,HTC_VOC_CODEC_FMSPEAKER_MIDI,C,3,C,0,0,1,1,C,0,0,7,0,0,0,22,0,804 -F0,PHONE_HEADSET_VOL0,0,4000,2013,0,7FB2,2013,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F1,PHONE_HEADSET_VOL1,1,4000,2861,0,7FB2,2861,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F2,PHONE_HEADSET_VOL2,2,4000,32D6,0,7FB2,32D6,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F3,PHONE_HEADSET_VOL3,3,4000,4000,0,7FB2,4000,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F4,PHONE_HEADSET_VOL4,4,4000,4000,0,7FB2,656E,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,200,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F5,PHONE_HEADSET_VOL5,5,4000,4000,0,7FB2,A0C2,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,258,64,1ca8,1c2,2ee0,fa0,FFFF,0,FF68,FB13,FC56,114,EDCE,47FB,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F6,PHONE_HANDSFREE_VOL0,0,4000,4000,0,5092,1C96,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,200,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F7,PHONE_HANDSFREE_VOL1,1,4000,4000,0,5092,2861,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,200,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F8,PHONE_HANDSFREE_VOL2,2,4000,4000,0,5092,390A,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,C8,100,100,200,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F9,PHONE_HANDSFREE_VOL3,3,4000,4000,0,5092,5092,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4000,7D0,0,100,100,100,400,200,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F10,PHONE_HANDSFREE_VOL4,4,4000,4000,0,5092,71CF,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,100,100,200,400,200,300,258,64,1ca8,300,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F11,PHONE_HANDSFREE_VOL5,5,4000,4000,0,5092,A0C2,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,100,100,200,400,400,300,258,64,1ca8,800,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F12,PHONE_EARCUPLE_VOL0,0,4000,4000,0,2D4E,1209,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,100,2ee0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F13,PHONE_EARCUPLE_VOL1,1,4000,4000,0,2D4E,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,100,2ee0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F14,PHONE_EARCUPLE_VOL2,2,4000,4000,0,2D4E,23FD,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,100,2ee0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F15,PHONE_EARCUPLE_VOL3,3,4000,4000,0,2D4E,32D6,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,0,100,100,200,50,300,150,64,1388,100,2ee0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F16,PHONE_EARCUPLE_VOL4,4,4000,4000,0,2D4E,47CF,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,200,50,300,200,64,1388,1c2,2ee0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F17,PHONE_EARCUPLE_VOL5,5,4000,4000,0,2D4E,71CF,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,200,50,300,200,64,1388,1c2,2ee0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F18,PHONE_BTHEADSET,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F19,PHONE_CARKIT,5,4000,4000,0,7FB2,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,417,FC95,60,EC7D,01D8,F16B,3D23,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F20,PHONE_TTY_FULL,0,4000,3900,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F21,PHONE_TTY_VCO,0,4000,2600,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F22,PHONE_TTY_HCO,0,4000,4000,0,4000,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,FB93,FBF6,F2C6,FDCC,93,141F,382A,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F23,CE_REC_INC_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F24,CE_REC_EXT_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F25,CE_PLAYBACK_HEADSET,5,4000,2D00,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F26,CE_PLAYBACK_HANDSFREE,5,4000,4A50,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F27,PHONE_HAC,5,4000,4000,0,5092,A0C2,0,2D33,0,780,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,200,50,300,200,64,1388,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F28,VT_HANDSFREE_VOL0,0,4000,4000,0,5092,1C96,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,200,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F29,VT_HANDSFREE_VOL1,1,4000,4000,0,5092,2861,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,200,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F30,VT_HANDSFREE_VOL2,2,4000,4000,0,5092,390A,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,C8,100,100,200,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F31,VT_HANDSFREE_VOL3,3,4000,4000,0,5092,5092,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4000,7D0,0,100,100,100,400,200,300,200,64,1ca8,1c2,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F32,VT_HANDSFREE_VOL4,4,4000,4000,0,5092,71CF,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,100,100,200,400,200,300,258,64,1ca8,300,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F33,VT_HANDSFREE_VOL5,5,4000,4000,0,5092,A0C2,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,179f,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,100,100,200,400,400,300,258,64,1ca8,800,800,fa0,0,0,FEA3,FC7B,FB72,FB72,FB31,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -F34,CE_PLAYBACK_HEADSET_RING,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,149f,0,14,800,2000,2000,00fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G0,Default,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G1,HTC BH S100,5,4000,4000,0,4000,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,14,800,2000,2000,fa,46,1,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,1c2,2EE0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G2,HTC BH M100,5,4000,4000,0,5A67,5A67,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G3,Motorola H500,5,4000,4000,0,7FB2,7FB2,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G4,Nokia HS-36W,5,4000,4000,0,7FB2,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,40,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G5,PLT 510v.D,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G6,M2500 by Plantronics,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G7,Nokia HDW-3,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G8,HBH-608,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G9,HBH-DS970,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,30,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G10,i.Tech BlueBAND,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G11,Nokia BH-800,5,4000,4000,0,7FB2,5A67,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,78,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,60,100,800,400,400,300,258,32,1ca8,300,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G12,Motorola H700,5,4000,4000,0,5A67,5A67,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G13,HTC BH M200,5,4000,4000,0,4000,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G14,Jabra JX10,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,60,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G15,320Plantronics,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G16,640Plantronics,5,4000,4000,0,7FB2,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,20,161,400,200,400,300,258,32,1ca8,400,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G17,Jabra BT500,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,161,800,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G18,Motorola HT820,5,4000,4000,0,5092,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF10,FCC8,F8A0,F4F2,F04B,65AD,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G19,HBH-IV840,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G20,6XXPlantronics,5,4000,4000,0,7FB2,A0C2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,0,0,0,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G21,3xxPlantronics,5,4000,4000,0,5A67,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,80,800,1500,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G22,HBH-PV710,5,4000,4000,0,71CF,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,80,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G23,Motorola H670,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,80,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G24,HBM-300,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,70,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G25,Nokia BH-208,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,70,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G26,Samsung WEP410,5,4000,4000,0,7FB2,2D4E,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,150,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G27,Jabra BT8010,5,4000,4000,0,7FB2,71CF,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,30,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G28,Motorola S9,5,4000,4000,0,7FB2,4000,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G29,Jabra BT620s,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,270,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G30,Nokia BH-902,5,4000,4000,0,71CF,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,70,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G31,HBH-DS220,5,4000,4000,0,4000,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G32,HBH-DS980,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,30,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G33,BT_EC_OFF,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,11,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G34,8XXPlantronics,5,4000,4000,0,7FB2,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179F,0,0,800,2000,2000,fa,190,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G35,Palm Headset,5,4000,4000,0,4000,4000,FFFF,2000,0,C80,FF03,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,149F,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G36,Jawbone,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G37,Jawbone1234,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G38,590Plantronics,5,4000,4000,0,7FB2,4000,FFFF,2000,0,780,FF03,2400,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,149F,0,78,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,50,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,F76E,FD79,FD34,FCFB,FCCF,FCB3,3F6B,0,13,ffdc,fdaa,ff4e,f955,fa96,3ebe,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G39,Audi UHV 6384,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,FFC1,FEFD,FDD1,FC8B,FB8D,7B32,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G40,BlueConnect(tm),5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G41,HandsFreeLink TM,5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G42,Parrot 3400LS,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G43,BMW,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,0,0,78,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G44,Motorola H350,5,4000,4000,0,656E ,CA62 ,FFFF ,2000,0,C80,FF03 ,2300,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,0,7F65 ,0,780,FF9A ,1B0C ,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,179F ,0,96,800,5A30 ,2000,1A4 ,A0 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,4C00 ,1A00 ,0,20,161,800,200,1912,300,258,190,1CA8 ,50,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G45,Jabra BT135,5,4000,4000,0,7FB2 ,4000,FFFF ,4000,0,1180,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,FFFF ,2880,0,0C80 ,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,179F ,0,78,800,5A30 ,2000,1A4 ,C8 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,5208,1F40 ,0,20,161,800,200,1912,300,258,190,1CA8 ,C8 ,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G46,Jabra BT160,5,4000,4000,0,6500,6000,FFFF,2000,0,1180,FF03,2000,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,179F,0,70,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G47,Motorola H721,5,4000,4000,0,71CF,2D4E,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,200,800,2000,2000,fa,46,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,20,100,200,200,400,300,258,32,1ca8,1000,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G48,Jabra BT8040,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,4,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G49,DoCoMo Wireless P01,5,4000,4000,0,FEC9,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G50,SoundLeaf+,5,4000,4000,0,B45F,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,50,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G51,Nokia BH-103,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,A2,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G52,Jabra BT530,5,4000,4000,0,656E ,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G53,Jabra BT3030,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G54,JKDAP3265,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G55,JKDAP3264,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G56,Jabra BT5010,5,4000,4000,0,5A67,B45F,FFFF,2D33,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,980,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G57,Motorola H12,5,4000,4000,0,47CF,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G58,Nokia BH-703,5,4000,4000,0,656E ,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G59,Motorola H710,5,4000,4000,0,7FB2,5A67,0,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G60,Jabra BT2050,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G61,Jabra BT2070,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G62,Bluetooth headset,5,4000,4000,0,7FB2,B45F,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1214,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G63,i.Air 301,5,4000,4000,0,A0C2,B45F,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,F8,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,258,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G64,BH M300,5,4000,4000,0,8F47,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,4,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FFB5,009C,FF35,FA49,F000,3C90,FFFF,0,FFD1,FFF7,FFE6,FBB6,F340,3C90,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G65,Clip Music 801,5,4000,4000,0,47CF,5092,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,300,32,1100,C8,2D55,100,FFFF,0,FF9C,6BD,FDD0,F2BA,FAEA,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G66,Clip Naro 601,5,4000,4000,0,CA62,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,179F,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 -G67,Motorola H790,5,4000,4000,0,656E ,2013,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,179f,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +Header,GOFU-WB_20120511,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +A0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,71,36,61,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A2,HTC_VOC_CODEC_SPEAKER_VOICE,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,2,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A3,HTC_VOC_CODEC_SPEAKER_MIDI,35,69,36,69,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,2,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A4,HTC_VOC_CODEC_HEADSET_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A5,HTC_VOC_CODEC_HEADSET_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A8,HTC_VOC_CODEC_CARKIT_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A9,HTC_VOC_CODEC_CARKIT_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,71,36,61,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,71,36,61,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,1,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,63,36,63,37,0,38,0,39,3,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,14,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,63,36,63,37,0,38,0,39,F,3A,0,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,1C,42,14,43,3F,44,0,45,0,46,F,47,0,48,0,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,6B,36,6B,37,0,38,0,39,3,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,0,43,0,44,4,45,40,46,0,47,0,48,0,49,0,4A,1E,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,14,43,3F,44,4,45,0,46,B,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +A23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,69,36,69,37,0,38,0,39,F,3A,80,3B,0,3C,0,3D,0,3E,0,3F,0,40,0,41,10,42,14,43,3F,44,4,45,0,46,B,47,0,48,0,49,0,4A,6,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U0,HTC_VOC_CODEC_EARCUPLE_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U1,HTC_VOC_CODEC_EARCUPLE_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,10,3D,10,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U2,HTC_VOC_CODEC_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U3,HTC_VOC_CODEC_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,10,3D,10,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U4,HTC_VOC_CODEC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,24,3D,24,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U5,HTC_VOC_CODEC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U6,HTC_VOC_CODEC_BT_VOICE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U7,HTC_VOC_CODEC_BT_MIDI,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U8,HTC_VOC_CODEC_CARKIT_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U9,HTC_VOC_CODEC_CARKIT_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U10,HTC_VOC_CODEC_TTY_FULL_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U11,HTC_VOC_CODEC_TTY_FULL_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,3C,3D,3C,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U12,HTC_VOC_CODEC_TTY_VCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U13,HTC_VOC_CODEC_TTY_VCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U14,HTC_VOC_CODEC_TTY_HCO_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U15,HTC_VOC_CODEC_TTY_HCO_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,A0,3D,A0,3E,8,3F,80,40,5,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U18,HTC_VOC_CODEC_FMHEADSET_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,28,3D,28,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U19,HTC_VOC_CODEC_FMHEADSET_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,44,3D,44,3E,0,3F,80,40,5,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U22,HTC_VOC_CODEC_FMSPEAKER_VOICE,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,38,3D,38,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U23,HTC_VOC_CODEC_FMSPEAKER_MIDI,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,20,3D,20,3E,0,3F,0,40,0,41,0,42,1,43,0,44,4,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U24,HTC_VOC_CODEC_INTERL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,34,3D,34,3E,0,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U25,HTC_VOC_CODEC_EXTERNAL_MIC_VR,35,0,36,0,37,FF,38,0,39,0,3A,0,3B,0,3C,18,3D,18,3E,8,3F,80,40,5,41,0,42,1,43,0,44,0,45,0,46,0,47,0,48,0,49,0,4A,0,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U26,HTC_VOC_CODEC_BT_VR,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +U27,HTC_VOC_CODEC_FMHEADSET_SH,35,63,36,63,37,FF,38,7F,39,F,3A,0,3B,0,3C,94,3D,94,3E,18,3F,18,40,5,41,1C,42,18,43,0,44,0,45,0,46,3,47,0,48,80,49,0,4A,18,4B,0,4C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +D0,HTC_VOC_CODEC_EARCUPLE_VOICE,C,3,C,0,0,1,1,C,0,3,3,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D1,HTC_VOC_CODEC_EARCUPLE_MIDI,C,3,C,0,0,1,1,C,0,3,6,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D2,HTC_VOC_CODEC_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,3,3,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D3,HTC_VOC_CODEC_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,3,6,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D4,HTC_VOC_CODEC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,3,3,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D5,HTC_VOC_CODEC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,3,6,C0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D6,HTC_VOC_CODEC_BT_VOICE,f003,0,0,3,C,2,2,0,C,3,0,0,1,0,7a2,3,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D7,HTC_VOC_CODEC_BT_MIDI,f003,0,0,3,C,2,2,0,C,3,0,0,1,0,7a2,3,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D8,HTC_VOC_CODEC_CARKIT_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D9,HTC_VOC_CODEC_CARKIT_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D10,HTC_VOC_CODEC_TTY_FULL_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D11,HTC_VOC_CODEC_TTY_FULL_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D12,HTC_VOC_CODEC_TTY_VCO_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D13,HTC_VOC_CODEC_TTY_VCO_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D14,HTC_VOC_CODEC_TTY_HCO_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D15,HTC_VOC_CODEC_TTY_HCO_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D16,HTC_VOC_CODEC_NO_MIC_HEADSET_VOICE,C,3,C,0,0,1,1,C,0,3,2,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D17,HTC_VOC_CODEC_NO_MIC_HEADSET_MIDI,C,3,C,0,0,1,1,C,0,3,6,C0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D18,HTC_VOC_CODEC_FMHEADSET_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D19,HTC_VOC_CODEC_FMHEADSET_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D20,HTC_VOC_CODEC_HEADSET_SPEAKER_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D21,HTC_VOC_CODEC_HEADSET_SPEAKER_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D22,HTC_VOC_CODEC_FMSPEAKER_VOICE,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +D23,HTC_VOC_CODEC_FMSPEAKER_MIDI,C,3,C,0,0,1,1,C,0,3,7,0,0,0,22,0,804,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +F0,PHONE_HEADSET_VOL0,0,4000,16B5,1B3,7FB2,16B5,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F1,PHONE_HEADSET_VOL1,1,4000,1C96,1B3,7FB2,1C96,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F2,PHONE_HEADSET_VOL2,2,4000,2861,1B3,7FB2,2861,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F3,PHONE_HEADSET_VOL3,3,4000,32D6,1B3,7FB2,32D6,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,150,64,1449,1c2,2ee0,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F4,PHONE_HEADSET_VOL4,4,4000,4000,1B3,7FB2,4000,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,200,64,1449,1c2,2ee0,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F5,PHONE_HEADSET_VOL5,5,4000,4000,1B3,7FB2,656E,FFFF,2D33,0,C80,FF9A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,100,200,100,300,258,64,1449,1c2,2ee0,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F6,PHONE_HANDSFREE_VOL0,0,3FD6,4000,0,7FB2,16B5,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F7,PHONE_HANDSFREE_VOL1,1,3FD6,4000,0,7FB2,2013,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F8,PHONE_HANDSFREE_VOL2,2,3FD6,4000,0,7FB2,2D4E,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F9,PHONE_HANDSFREE_VOL3,3,3FD6,4000,0,7FB2,4000,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,1c2,800,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F10,PHONE_HANDSFREE_VOL4,4,3FD6,4000,0,7FB2,656E,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,17ff,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,280,800,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F11,PHONE_HANDSFREE_VOL5,5,3FD6,4000,0,7FB2,8F47,FFFF,5A30,0,1180,FF1A,1E00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,17ff,0,0,800,2000,2000,80,100,2,190,40,20,36B0,40,41a0,800,63,4E20,4E20,1,2550,2070,0,075,075,100,820,300,300,258,64,1ca8,280,800,fa0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F12,PHONE_EARCUPLE_VOL0,0,4000,1013,0,4000,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F13,PHONE_EARCUPLE_VOL1,1,4000,197A,0,4000,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F14,PHONE_EARCUPLE_VOL2,2,4000,2861,0,4000,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F15,PHONE_EARCUPLE_VOL3,3,4000,4000,0,4000,197A,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F16,PHONE_EARCUPLE_VOL4,4,4000,4000,0,4000,2861,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F17,PHONE_EARCUPLE_VOL5,5,4000,4000,0,4000,4000,FFFF,2D33,0,A00,FF9A,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,47A3,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,10,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4E20,4E20,1,4A38,1770,0,100,100,100,200,400,250,300,64,1CA8,1C2,2ee0,fa0,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,FFFF,FFC1,02B9,FEA8,FCF7,382,016A,3F7C,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F18,PHONE_BTHEADSET,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F19,PHONE_CARKIT,5,4000,4000,0,7FB2,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,417,FC95,60,EC7D,01D8,F16B,3D23,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F20,PHONE_TTY_FULL,0,4000,1100,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F21,PHONE_TTY_VCO,0,4000,2600,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F22,PHONE_TTY_HCO,0,4000,4000,0,4000,5A67,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,FB93,FBF6,F2C6,FDCC,93,141F,382A,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F23,CE_REC_INC_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F24,CE_REC_EXT_MIC,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F25,CE_PLAYBACK_HEADSET,5,4000,4000,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F26,CE_PLAYBACK_HANDSFREE,5,4000,2861,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F27,PHONE_HAC,5,4000,7FB2,0,5A67,7FB2,FFFF,2D33,0,A00,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,1000,1500,2000,fa,46,2,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,200,50,300,200,64,1388,1c2,2ee0,fa0,FFFF,0,CB,FC41,F6B3,F9B8,5AE,5A9E,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F28,VT_HANDSFREE_VOL0,0,4000,4000,0,5092,16B5,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F29,VT_HANDSFREE_VOL1,1,4000,4000,0,5092,2013,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3600,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F30,VT_HANDSFREE_VOL2,2,4000,4000,0,5092,2D4E,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,3F00,7D0,0,C8,100,100,300,150,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F31,VT_HANDSFREE_VOL3,3,4000,4000,0,5092,4000,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,6000,800,7fff,17ff,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4000,7D0,0,C8,100,100,300,200,300,200,64,1ca8,1c2,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F32,VT_HANDSFREE_VOL4,4,4000,4000,0,5092,5A67,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,200A,7F65,32F4,800,7fff,17ff,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F33,VT_HANDSFREE_VOL5,5,4000,4000,0,5092,7FB2,FFFF,3FD9,0,C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF9A,2080,F333,01EC,FFEE,5A67,7F65,32F4,800,7fff,17ff,0,14,2000,2000,2000,80,c8,2,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,2,4A38,7D0,0,C8,100,200,300,200,300,258,64,1ca8,280,800,fa0,0,0,FEFA,FD64,FB7E,F9AE,F9DB,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F34,CE_PLAYBACK_HEADSET_RING,5,4000,2861,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14ff,0,14,800,2000,2000,00fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +F35,CE_PLAYBACK_RECEIVER,5,4000,1C96,0,4000,4000,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,0,0,14,800,2000,2000,fa,46,1,2ff,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,4a38,1770,0,100,100,400,200,400,300,258,190,1ca8,1c2,2ee0,fa0,FFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G0,Default,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G1,HTC BH S100,5,4000,4000,0,4000,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,78,800,2000,2000,fa,C8,1,190,40,20,4650,40,41a0,800,63,4DFF,4DFF,1,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2EE0,fa0,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G2,HTC BH M100,5,4000,4000,0,5A67,5A67,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,1180,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G3,Motorola H500,5,4000,4000,0,7FB2,7FB2,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G4,Nokia HS-36W,5,4000,4000,0,7FB2,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,A4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G5,PLT 510v.D,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G6,M2500 by Plantronics,5,4000,4000,0,4000,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G7,Nokia HDW-3,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G8,HBH-608,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G9,HBH-DS970,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,94,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G10,i.Tech BlueBAND,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G11,Nokia BH-800,5,4000,4000,0,7FB2,5A67,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,DC,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,60,100,800,400,400,300,258,32,1ca8,300,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G12,Motorola H700,5,4000,4000,0,5A67,5A67,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G13,HTC BH M200,5,4000,4000,0,4000,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G14,Jabra JX10,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,C4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G15,320Plantronics,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G16,640Plantronics,5,4000,4000,0,7FB2,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,20,161,400,200,400,300,258,32,1ca8,400,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G17,Jabra BT500,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,161,800,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G18,Motorola HT820,5,4000,4000,0,5092,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF10,FCC8,F8A0,F4F2,F04B,65AD,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G19,HBH-IV840,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G20,6XXPlantronics,5,4000,4000,0,7FB2,A0C2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,0,0,0,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G21,3xxPlantronics,5,4000,4000,0,5A67,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,E4,800,1500,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G22,HBH-PV710,5,4000,4000,0,71CF,4000,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,E4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G23,Motorola H670,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,E4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,100,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G24,HBM-300,5,4000,4000,0,7FB2,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,D4,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G25,Nokia BH-208,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,D4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G26,Samsung WEP410,5,4000,4000,0,7FB2,2D4E,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,0,100,200,150,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G27,Jabra BT8010,5,4000,4000,0,7FB2,71CF,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,94,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G28,Motorola S9,5,4000,4000,0,7FB2,4000,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,BB8,0,40,100,400,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G29,Jabra BT620s,5,4000,4000,0,5A67,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,2D4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G30,Nokia BH-902,5,4000,4000,0,71CF,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,D4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G31,HBH-DS220,5,4000,4000,0,4000,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G32,HBH-DS980,5,4000,4000,0,5092,7FB2,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,94,800,2000,2000,fa,78,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,10,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G33,BT_EC_OFF,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,75,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G34,8XXPlantronics,5,4000,4000,0,7FB2,7FB2,0,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,F00,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17FF,0,64,800,2000,2000,fa,190,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,4000,BB8,0,40,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G35,Palm Headset,5,4000,4000,0,4000,4000,FFFF,2000,0,C80,FF03,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,14FF,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G36,Jawbone,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G37,Jawbone1234,5,4000,4000,0,4000,7FB2,0,7F65,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1214,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G38,590Plantronics,5,4000,4000,0,7FB2,4000,FFFF,2000,0,780,FF03,2400,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,14FF,0,DC,800,5A30,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,50,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,F76E,FD79,FD34,FCFB,FCCF,FCB3,3F6B,0,13,ffdc,fdaa,ff4e,f955,fa96,3ebe,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G39,Audi UHV 6384,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,FFC1,FEFD,FDD1,FC8B,FB8D,7B32,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G40,BlueConnect(tm),5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G41,HandsFreeLink TM,5,4000,4000,0,5A67,4000,0,2000,0,780,FF9A,2100,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2100,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G42,Parrot 3400LS,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,780,FF9A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G43,BMW,5,4000,4000,0,7FB2,4000,0,2000,0,780,FF9A,2080,F333,01EC,FFEE,200A,7F65,0,ED00,600,0,2000,0,0C80,FF9A,2080,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,60,0,DC,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5DC0,2EE0,0,106,161,800,2BC,1912,300,258,190,1CA8,300,2D55,100,FFFF,0,FFA1,FE78,FCB2,FAC4,F944,78BA,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G44,Motorola H350,5,4000,4000,0,656E ,CA62 ,FFFF ,2000,0,C80,FF03 ,2300,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,0,7F65 ,0,780,FF9A ,1B0C ,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,17FF ,0,FA,800,5A30 ,2000,1A4 ,A0 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,4C00 ,1A00 ,0,20,161,800,200,1912,300,258,190,1CA8 ,50,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G45,Jabra BT135,5,4000,4000,0,7FB2 ,4000,FFFF ,4000,0,1180,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,0,0,0,FFFF ,2880,0,0C80 ,FF03 ,2400,F333 ,01EC ,FFEE ,200A ,7F65 ,7FFF ,800,21DB ,17FF ,0,DC,800,5A30 ,2000,1A4 ,C8 ,2,190,40,20,3977,40,408A ,800,63,4DFF,4DFF,2,5208,1F40 ,0,20,161,800,200,1912,300,258,190,1CA8 ,C8 ,2D55 ,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G46,Jabra BT160,5,4000,4000,0,6500,6000,FFFF,2000,0,1180,FF03,2000,F333,01EC,FFEE,200A,7F65,0,ED00,600,FFFF,2000,0,0C80,FF03,2400,F333,01EC,FFEE,200A,7F65,7FFF,800,21DB,17FF,0,D4,800,2000,2000,1A4,C8,2,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,50,161,800,200,1912,300,258,190,1CA8,C8,2D55,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G47,Motorola H721,5,4000,4000,0,71CF,2D4E,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,264,800,2000,2000,fa,46,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,20,100,200,200,400,300,258,32,1ca8,1000,2D55,100,FFFF,0,FF21,FD5D,FB9C,FA19,F8A4,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G48,Jabra BT8040,5,4000,4000,0,7FB2,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,64,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G49,DoCoMo Wireless P01,5,4000,4000,0,FEC9,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G50,SoundLeaf+,5,4000,4000,0,B45F,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,B4,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G51,Nokia BH-103,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,106,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G52,Jabra BT530,5,4000,4000,0,656E ,B45F,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FF2D,FD74,FBA1,F9F6,F864,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G53,Jabra BT3030,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,20,100,200,200,400,300,258,64,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G54,JKDAP3265,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G55,JKDAP3264,5,4000,4000,0,FEC9,4000,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,1000,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,100,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,FFFF,0,0,0,0,0,0,7000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G56,Jabra BT5010,5,4000,4000,0,5A67,B45F,FFFF,2D33,0,780,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2D33,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,980,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G57,Motorola H12,5,4000,4000,0,47CF,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G58,Nokia BH-703,5,4000,4000,0,656E ,7FB2,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G59,Motorola H710,5,4000,4000,0,7FB2,5A67,0,2000,0,780,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,1200,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G60,Jabra BT2050,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G61,Jabra BT2070,5,4000,4000,0,A0C2,FEC9,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FFF4,FEDA,3B6,1B1,DAC3,50C3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G62,Bluetooth headset,5,4000,4000,0,7FB2,B45F,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1214,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G63,i.Air 301,5,4000,4000,0,A0C2,B45F,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,15C,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,258,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G64,BH M300,5,4000,4000,0,8F47,7FB2,FFFF,2000,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,64,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,100,100,200,200,400,300,200,64,1ca8,C8,2D55,100,FFFF,0,FFB5,009C,FF35,FA49,F000,3C90,FFFF,0,FFD1,FFF7,FFE6,FBB6,F340,3C90,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G65,Clip Music 801,5,4000,4000,0,47CF,5092,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,300,32,1100,C8,2D55,100,FFFF,0,FF9C,6BD,FDD0,F2BA,FAEA,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G66,Clip Naro 601,5,4000,4000,0,CA62,B45F,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7FFF,800,7FFF,17FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G67,Motorola H790,5,4000,4000,0,656E ,2013,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17ff,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G68,MW600,5,4000,4000,0,FEC9,FEC9,ffff,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G69,Nokia BH-505,5,4000,4000,0,5A67,FEC9,ffff,2000,0,1000,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1000,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G70,Motorola S10-HD,5,4000,4000,0,4000,FEC9,ffff,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,3F00,7D0,0,40,100,200,200,400,300,258,32,1ca8,C8,2D55,100,FFFF,0,0,0,0,0,0,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G71,HTC BH M400,5,4000,4000,0,B45F,7FB2,FFFF,7F65,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,3FD9,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,14FF,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,40,100,400,200,400,300,258,32,1ca8,C8,2D55,100,0,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G72,Jabra EXTREME,5,4000,4000,0,7FB2,5A67,0,2D33,0,C80,FF1A,1D80,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,100,100,200,200,1912,300,150,32,1ca8,C8,2D55,100,0,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G73,JABRA WAVE,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G74,VH700,5,4000,4000,0,5A67,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,20,300,800,300,1912,300,258,32,1ca8,300,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G75,HTC Car V100,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17FF,0,64,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,300,800,300,1912,300,258,32,1ca8,300,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G76,PLT_BB903+,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G77,BlueAnt Q2 V1.1,5,4000,4000,0,7FB2,4000,FFFF,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G78,Jawbone ICON,5,4000,4000,0,E314,4000,FFFF,2000,0,C80,FF01,1F00,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17FF,0,100,800,2000,2000,300,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,7208,1880,0,150,150,800,150,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G79,Jawbone ERA,5,4000,4000,0,CA62,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2080,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,78,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G80,Motorola Finiti,5,4000,4000,0,CA62,7FB2,FFFF,2000,0,1000,FF01,1F00,FF01,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G81,JABRA STONE2,5,4000,4000,0,B460,4000,FFFF,2000,0,C80,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G82,HTC BH M500,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,60,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G83,PLT_VoyagerPRO,5,4000,4000,0,7FB2,5092,FFFF,2000,0,C80,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,17FF,0,50,800,2000,2000,5DC,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,2008,778,0,0,200,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G84,Nokia BH-111,5,4000,4000,0,7FB2,4D4E,FFFF,2000,0,1180,FF01,2580,F333,01EC,FFEE,200A,7F65,0,ED00,0,FFFF,2000,0,0C80,FF01,2580,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,20,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,0000,0,0,0,0,0,0,0,0000,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 +G85,Motorola HX550,5,4000,4000,0,7FB2,7FB2,FFFF,2000,0,1000,FF01,2080,F333,01EC,FFEE,200A,7F65,0,ED00,0,0,3FD9,0,C80,FF1A,1B0C,F333,01EC,FFEE,200A,7F65,7fff,800,7fff,64,0,84,800,2000,2000,fa,C8,1,190,40,20,3977,40,408A,800,63,4DFF,4DFF,2,5208,1F40,0,106,161,800,200,1912,300,258,32,1ca8,C8,2D55,100,FFFF,0,FF80,FBDB,FCEB,E8,F0B1,3C90,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,FFFF,4000,4000,0 diff --git a/prebuilt/etc/AudioPreProcess.csv b/prebuilt/etc/AudioPreProcess.csv old mode 100644 new mode 100755 index c06704d..be90369 --- a/prebuilt/etc/AudioPreProcess.csv +++ b/prebuilt/etc/AudioPreProcess.csv @@ -16,7 +16,7 @@ A14,IIR_44_1K_Normal,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 A15,IIR_44_1K_FullDuplex,4000,0,9d5d,6505,2b91,6905,24d6,753e,c864,4b25,1575,4492,24d6,753e,c5ef,d699,1dd9,c731,4000,0,9cfc,cab3,3a6d,451,9138,dde1,3449,49db,8d0f,663b,34b3,849d,9794,c7a8,3536,282b,9ccd,cc84,3a63,6626,2,2,2,2,0,0,0,0,0,4 A16,IIR_48K_Normal,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,4 A17,IIR_48K_FullDuplex,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,4 -B0,AGC_8K,FFFF,B3F3,0,1C80,FF9A,2580,F333,ffee,7f69,8097,7F65,2D33,fff9,20,4,F38A,d1b1,30,FFFC,fff3,1ec +B0,AGC_8K,0000,B3F3,0,1C80,FF9A,2580,F333,ffee,7f69,8097,7F65,2D33,fff9,20,4,F38A,d1b1,30,FFFC,fff3,1ec B1,AGC_11_025K,0,2000,0,2000,FF9A,2880,F333,ffee,7f69,8097,2000,2000,fff9,20,4,F38A,d1b1,30,FFFC,fff3,01ec B2,AGC_12K,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 B3,AGC_16K,0,2000,0,2000,FF9A,2880,F333,fff7,7f69,8097,2000,2000,fffc,20,4,DF1C,E00B,30,FFF6,FD4B,00F6 @@ -25,7 +25,7 @@ B5,AGC_24K,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 B6,AGC_32K,0,2000,0,2000,FF9A,2880,F333,ffee,7f69,8097,2000,2000,fff9,20,4,EEFD,CA75,30,FFFB,7E9B,01ec B7,AGC_44_1K,0,2000,0,2000,FF9A,2880,F333,ffee,7f69,8097,2000,2000,fff9,20,4,F38A,D708,30,FFFC,BB10,01ec B8,AGC_48K,0,2000,0,2000,FF9A,2880,F333,ffee,7f69,8097,2000,2000,fff9,20,4,F488,1001,30,FFFC,FF10,01ec -C0,NS_8K,FFFF,200,64,287A,287A,1,8 +C0,NS_8K,0000,200,64,287A,287A,1,8 C1,NS_11_025K,0,0,0,0,0,0,0 C2,NS_12K,0,0,0,0,0,0,0 C3,NS_16K,0,200,64,287A,287A,1,8 diff --git a/prebuilt/etc/audio_effects.conf b/prebuilt/etc/audio_effects.conf new file mode 100644 index 0000000..7f934ca --- /dev/null +++ b/prebuilt/etc/audio_effects.conf @@ -0,0 +1,133 @@ +# List of effect libraries to load. Each library element must contain a "path" element +# giving the full path of the library .so file. +# libraries { +# { +# path +# } +# } +libraries { + bundle { + path /system/lib/soundfx/libbundlewrapper.so + } + reverb { + path /system/lib/soundfx/libreverbwrapper.so + } + visualizer { + path /system/lib/soundfx/libvisualizer.so + } + pre_processing { + path /system/lib/soundfx/libaudiopreprocessing.so + } + SRS { + path /system/lib/soundfx/libsrsfx.so + } +} + +# list of effects to load. Each effect element must contain a "library" and a "uuid" element. +# The value of the "library" element must correspond to the name of one library element in the +# "libraries" element. +# The name of the effect element is indicative, only the value of the "uuid" element +# designates the effect. +# The uuid is the implementation specific UUID as specified by the effect vendor. This is not the +# generic effect type UUID. +# effects { +# { +# library +# uuid +# } +# ... +# } + +effects { + dynamic_bass_boost { + library SRS + uuid f7a247b0-1a7b-11e0-bb0d-2a30dfd72085 + } + srsgeq5 { + library SRS + uuid f7a247c2-1a7b-11e0-bb0d-2a30dfd72085 + } + wowhd { + library SRS + uuid f7a247d2-1a7b-11e0-bb0d-2a30dfd72085 + } + virtualizer { + library bundle + uuid 1d4033c0-8557-11df-9f2d-0002a5d5c51b + } + volume { + library bundle + uuid 119341a0-8469-11df-81f9-0002a5d5c51b + } + reverb_env_aux { + library reverb + uuid 4a387fc0-8ab3-11df-8bad-0002a5d5c51b + } + reverb_env_ins { + library reverb + uuid c7a511a0-a3bb-11df-860e-0002a5d5c51b + } + reverb_pre_aux { + library reverb + uuid f29a1400-a3bb-11df-8ddc-0002a5d5c51b + } + reverb_pre_ins { + library reverb + uuid 172cdf00-a3bc-11df-a72f-0002a5d5c51b + } + visualizer { + library visualizer + uuid d069d9e0-8329-11df-9168-0002a5d5c51b + } + agc { + library pre_processing + uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b + } + aec { + library pre_processing + uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b + } + ns { + library pre_processing + uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b + } +} +# Audio preprocessor configurations. +# The pre processor configuration consists in a list of elements each describing +# pre processor settings for a given input source. Valid input source names are: +# "mic", "camcorder", "voice_recognition", "voice_communication" +# Each input source element contains a list of effects elements. The name of the effect +# element must be the name of one of the effects in the "effects" list of the file. +# Each effect element may optionally contain a list of parameters and their +# default value to apply when the pre processor effect is created. +# A parameter is defined by a "param" element and a "value" element. Each of these elements +# consists in one or more elements specifying a type followed by a value. +# The types defined are: "int", "short", "float", "bool" and "string" +# When both "param" and "value" are a single int, a simple form is allowed where just +# the param and value pair is present in the parameter description +# pre_processing { +# { +# { +# { +# param { +# int|short|float|bool|string +# [ int|short|float|bool|string ] +# ... +# } +# value { +# int|short|float|bool|string +# [ int|short|float|bool|string ] +# ... +# } +# } +# { } +# ... +# } +# ... +# } +# ... +# } + +# +# TODO: add default audio pre processor configurations after debug and tuning phase +# diff --git a/prebuilt/etc/firmware/bcm4329.hcd b/prebuilt/etc/firmware/bcm4329.hcd deleted file mode 100644 index 094a3e3..0000000 Binary files a/prebuilt/etc/firmware/bcm4329.hcd and /dev/null differ diff --git a/prebuilt/etc/firmware/fw_bcm4330.bin b/prebuilt/etc/firmware/fw_bcm4330.bin deleted file mode 100644 index 914a395..0000000 Binary files a/prebuilt/etc/firmware/fw_bcm4330.bin and /dev/null differ diff --git a/prebuilt/etc/firmware/fw_bcm4330_apsta.bin b/prebuilt/etc/firmware/fw_bcm4330_apsta.bin deleted file mode 100644 index 9d719d1..0000000 Binary files a/prebuilt/etc/firmware/fw_bcm4330_apsta.bin and /dev/null differ diff --git a/prebuilt/etc/firmware/fw_bcm4330_apsta_b2.bin b/prebuilt/etc/firmware/fw_bcm4330_apsta_b2.bin new file mode 100644 index 0000000..ed4839f Binary files /dev/null and b/prebuilt/etc/firmware/fw_bcm4330_apsta_b2.bin differ diff --git a/prebuilt/etc/firmware/fw_bcm4330_b2.bin b/prebuilt/etc/firmware/fw_bcm4330_b2.bin new file mode 100644 index 0000000..149ca02 Binary files /dev/null and b/prebuilt/etc/firmware/fw_bcm4330_b2.bin differ diff --git a/prebuilt/etc/firmware/fw_bcm4330_p2p_b2.bin b/prebuilt/etc/firmware/fw_bcm4330_p2p_b2.bin new file mode 100644 index 0000000..fa47b06 Binary files /dev/null and b/prebuilt/etc/firmware/fw_bcm4330_p2p_b2.bin differ diff --git a/prebuilt/etc/firmware/fw_bcm4330b2.bin b/prebuilt/etc/firmware/fw_bcm4330b2.bin deleted file mode 100644 index 2621590..0000000 Binary files a/prebuilt/etc/firmware/fw_bcm4330b2.bin and /dev/null differ diff --git a/prebuilt/etc/firmware/fw_bcm4330b2_apsta.bin b/prebuilt/etc/firmware/fw_bcm4330b2_apsta.bin deleted file mode 100644 index fea7571..0000000 Binary files a/prebuilt/etc/firmware/fw_bcm4330b2_apsta.bin and /dev/null differ diff --git a/prebuilt/etc/firmware/leia_pfp_470.fw b/prebuilt/etc/firmware/leia_pfp_470.fw new file mode 100644 index 0000000..cb2bdd3 Binary files /dev/null and b/prebuilt/etc/firmware/leia_pfp_470.fw differ diff --git a/prebuilt/etc/firmware/leia_pm4_470.fw b/prebuilt/etc/firmware/leia_pm4_470.fw new file mode 100644 index 0000000..cd0a3ff Binary files /dev/null and b/prebuilt/etc/firmware/leia_pm4_470.fw differ diff --git a/prebuilt/etc/firmware/yamato_pfp.fw b/prebuilt/etc/firmware/yamato_pfp.fw index ca824e3..61a576e 100644 Binary files a/prebuilt/etc/firmware/yamato_pfp.fw and b/prebuilt/etc/firmware/yamato_pfp.fw differ diff --git a/prebuilt/etc/firmware/yamato_pm4.fw b/prebuilt/etc/firmware/yamato_pm4.fw index d416caf..b45ea20 100644 Binary files a/prebuilt/etc/firmware/yamato_pm4.fw and b/prebuilt/etc/firmware/yamato_pm4.fw differ diff --git a/prebuilt/etc/gps.conf b/prebuilt/etc/gps.conf deleted file mode 100755 index e14f89a..0000000 --- a/prebuilt/etc/gps.conf +++ /dev/null @@ -1,54 +0,0 @@ -NTP_SERVER=es.pool.ntp.org -NTP_SERVER=0.es.pool.ntp.org -NTP_SERVER=1.es.pool.ntp.org -NTP_SERVER=2.es.pool.ntp.org -NTP_SERVER=3.es.pool.ntp.org -NTP_SERVER=0.europe.pool.ntp.org -NTP_SERVER=1.europe.pool.ntp.org -NTP_SERVER=2.europe.pool.ntp.org -NTP_SERVER=3.europe.pool.ntp.org - -XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin -XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin -XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin - -# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info -# 4 - Debug, 5 - Verbose -DEBUG_LEVEL =0 - -# Intermediate position report, 1=enable, 0=disable -INTERMEDIATE_POS=0 - -# Accuracy threshold for intermediate positions -# less accurate positions are ignored, 0 for passing all positions -ACCURACY_THRES=0 - -# Report supl ref location as position, 1=enable, 0=disable -REPORT_POSITION_USE_SUPL_REFLOC=1 - -# Wiper (wifi positioning), 1=enable, 0=disable -ENABLE_WIPER=1 - -################################ -##### AGPS server settings ##### -################################ - -# FOR SUPL SUPPORT, set the following -SUPL_HOST=supl.google.com -SUPL_PORT=7276 -SUPL_NO_SECURE_PORT=3425 -SUPL_SECURE_PORT=7275 -SUPL_TLS_HOST=FQDN -SUPL_TLS_CERT=/etc/SuplRootCert - -# FOR C2K PDE SUPPORT, set the following -C2K_HOST=c2k.pde.com -C2K_PORT=1234 - -CURRENT_CARRIER=common -DEFAULT_AGPS_ENABLE=TRUE -DEFAULT_SSL_ENABLE=FALSE - -# TRUE for "User Plane", FALSE for "Control Plane" -DEFAULT_USER_PLANE=TRUE - diff --git a/prebuilt/etc/init.d/93zram b/prebuilt/etc/init.d/93zram deleted file mode 100644 index fe136ca..0000000 --- a/prebuilt/etc/init.d/93zram +++ /dev/null @@ -1,6 +0,0 @@ -#!/system/bin/sh -sysctl -w vm.swappiness=70 -echo "1" > /sys/block/zram0/reset -echo $((30*1024*1024)) > /sys/block/zram0/disksize -mkswap /dev/block/zram0 -swapon /dev/block/zram0 diff --git a/prebuilt/etc/media_codecs.xml b/prebuilt/etc/media_codecs.xml new file mode 100644 index 0000000..2371ea2 --- /dev/null +++ b/prebuilt/etc/media_codecs.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/files/etc/media_profiles.xml b/prebuilt/etc/media_profiles.xml similarity index 98% rename from files/etc/media_profiles.xml rename to prebuilt/etc/media_profiles.xml index 84008c6..f00bdb7 100644 --- a/files/etc/media_profiles.xml +++ b/prebuilt/etc/media_profiles.xml @@ -77,12 +77,12 @@ --> - +