summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--device-husky.mk8
-rw-r--r--device-ripcurrent.mk8
-rw-r--r--uwb/Android.bp70
-rw-r--r--uwb/UWB-calibration.conf142
-rw-r--r--uwb/calibration-CE.conf130
-rw-r--r--uwb/calibration-FCC.conf130
-rw-r--r--uwb/calibration-JP.conf87
-rw-r--r--uwb/calibration-RESTRICTED.conf3
-rw-r--r--uwb/calibration-TW.conf130
-rw-r--r--uwb/calibration-default.conf130
-rw-r--r--uwb/calibration.conf39
-rw-r--r--uwb/configuration.conf132
-rw-r--r--uwb/uwb_calibration.mk14
13 files changed, 876 insertions, 147 deletions
diff --git a/device-husky.mk b/device-husky.mk
index 439698c..a004aca 100644
--- a/device-husky.mk
+++ b/device-husky.mk
@@ -25,6 +25,10 @@ LOCAL_PATH := device/google/shusky
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
USE_UWBFIELDTESTQM := true
endif
+ifeq ($(filter factory_husky, $(TARGET_PRODUCT)),)
+ include device/google/shusky/uwb/uwb_calibration.mk
+endif
+
$(call inherit-product-if-exists, vendor/google_devices/shusky/prebuilts/device-vendor-husky.mk)
$(call inherit-product-if-exists, vendor/google_devices/zuma/prebuilts/device-vendor.mk)
@@ -250,6 +254,10 @@ PRODUCT_PACKAGES += \
# Trusty liboemcrypto.so
PRODUCT_SOONG_NAMESPACES += vendor/google_devices/shusky/prebuilts
+# UWB
+PRODUCT_SOONG_NAMESPACES += \
+ device/google/shusky/uwb
+
# Location
# SDK build system
include device/google/gs-common/gps/brcm/device.mk
diff --git a/device-ripcurrent.mk b/device-ripcurrent.mk
index 89eabbd..6cf6410 100644
--- a/device-ripcurrent.mk
+++ b/device-ripcurrent.mk
@@ -23,6 +23,10 @@ TARGET_BOARD_KERNEL_HEADERS := device/google/shusky-kernel/kernel-headers
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
USE_UWBFIELDTESTQM := true
endif
+ifeq ($(filter factory_ripcurrent, $(TARGET_PRODUCT)),)
+ include device/google/shusky/uwb/uwb_calibration.mk
+endif
+
$(call inherit-product-if-exists, vendor/google_devices/shusky/prebuilts/device-vendor-ripcurrent.mk)
$(call inherit-product-if-exists, vendor/google_devices/zuma/prebuilts/device-vendor.mk)
@@ -208,6 +212,10 @@ PRODUCT_PACKAGES += \
# Trusty liboemcrypto.so
PRODUCT_SOONG_NAMESPACES += vendor/google_devices/shusky/prebuilts
+# UWB
+PRODUCT_SOONG_NAMESPACES += \
+ device/google/shusky/uwb
+
# Location
# SDK build system
include device/google/gs-common/gps/brcm/device.mk
diff --git a/uwb/Android.bp b/uwb/Android.bp
new file mode 100644
index 0000000..617b368
--- /dev/null
+++ b/uwb/Android.bp
@@ -0,0 +1,70 @@
+//
+// Copyright (C) 2021 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.
+
+soong_namespace {}
+
+prebuilt_defaults {
+ name: "conf_defaults",
+ vendor: true,
+ sub_dir: "uwb",
+}
+
+prebuilt_etc {
+ name: "configuration.conf",
+ src: "configuration.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration.conf",
+ src: "calibration.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration-default.conf",
+ src: "calibration-default.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration-CE.conf",
+ src: "calibration-CE.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration-FCC.conf",
+ src: "calibration-FCC.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration-JP.conf",
+ src: "calibration-JP.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration-TW.conf",
+ src: "calibration-TW.conf",
+ defaults: ["conf_defaults"],
+}
+
+prebuilt_etc {
+ name: "calibration-RESTRICTED.conf",
+ src: "calibration-RESTRICTED.conf",
+ defaults: ["conf_defaults"],
+}
diff --git a/uwb/UWB-calibration.conf b/uwb/UWB-calibration.conf
deleted file mode 100644
index 52a528d..0000000
--- a/uwb/UWB-calibration.conf
+++ /dev/null
@@ -1,142 +0,0 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
-[CCC]wifi_coex_time_gap=10
-[CCC]ap_coop_mode=1
-[CCC]antenna_selection=4
-ant0.ch5.prf16.ant_delay=16450
-ant0.ch5.prf16.tx_power=0
-ant0.ch5.prf16.pg_count=0
-ant0.ch5.prf16.pg_delay=0
-ant0.ch5.prf64.ant_delay=16450
-ant0.ch5.prf64.tx_power=0
-ant0.ch5.prf64.pg_count=0
-ant0.ch5.prf64.pg_delay=0
-ant0.ch9.prf16.ant_delay=16450
-ant0.ch9.prf16.tx_power=0
-ant0.ch9.prf16.pg_count=0
-ant0.ch9.prf16.pg_delay=0
-ant0.ch9.prf64.ant_delay=16450
-ant0.ch9.prf64.tx_power=0
-ant0.ch9.prf64.pg_count=0
-ant0.ch9.prf64.pg_delay=0
-ant0.port=0
-ant0.selector_gpio=7
-ant0.selector_gpio_value=0
-ant1.ch5.prf16.ant_delay=16450
-ant1.ch5.prf16.tx_power=0
-ant1.ch5.prf16.pg_count=0
-ant1.ch5.prf16.pg_delay=0
-ant1.ch5.prf64.ant_delay=16450
-ant1.ch5.prf64.tx_power=0
-ant1.ch5.prf64.pg_count=0
-ant1.ch5.prf64.pg_delay=0
-ant1.ch9.prf16.ant_delay=16450
-ant1.ch9.prf16.tx_power=0
-ant1.ch9.prf16.pg_count=0
-ant1.ch9.prf16.pg_delay=0
-ant1.ch9.prf64.ant_delay=16450
-ant1.ch9.prf64.tx_power=0
-ant1.ch9.prf64.pg_count=0
-ant1.ch9.prf64.pg_delay=0
-ant1.port=0
-ant1.selector_gpio=7
-ant1.selector_gpio_value=1
-ant2.ch5.prf16.ant_delay=16450
-ant2.ch5.prf16.tx_power=0
-ant2.ch5.prf16.pg_count=0
-ant2.ch5.prf16.pg_delay=0
-ant2.ch5.prf64.ant_delay=16450
-ant2.ch5.prf64.tx_power=0
-ant2.ch5.prf64.pg_count=0
-ant2.ch5.prf64.pg_delay=0
-ant2.ch9.prf16.ant_delay=16450
-ant2.ch9.prf16.tx_power=0
-ant2.ch9.prf16.pg_count=0
-ant2.ch9.prf16.pg_delay=0
-ant2.ch9.prf64.ant_delay=16450
-ant2.ch9.prf64.tx_power=0
-ant2.ch9.prf64.pg_count=0
-ant2.ch9.prf64.pg_delay=0
-ant2.port=1
-ant2.selector_gpio=6
-ant2.selector_gpio_value=0
-ant3.ch5.prf16.ant_delay=16450
-ant3.ch5.prf16.tx_power=0
-ant3.ch5.prf16.pg_count=0
-ant3.ch5.prf16.pg_delay=0
-ant3.ch5.prf64.ant_delay=16450
-ant3.ch5.prf64.tx_power=0
-ant3.ch5.prf64.pg_count=0
-ant3.ch5.prf64.pg_delay=0
-ant3.ch9.prf16.ant_delay=16450
-ant3.ch9.prf16.tx_power=0
-ant3.ch9.prf16.pg_count=0
-ant3.ch9.prf16.pg_delay=0
-ant3.ch9.prf64.ant_delay=16450
-ant3.ch9.prf64.tx_power=0
-ant3.ch9.prf64.pg_count=0
-ant3.ch9.prf64.pg_delay=0
-ant3.port=1
-ant3.selector_gpio=6
-ant3.selector_gpio_value=1
-ant0.ant1.ch5.pdoa_offset=0
-ant0.ant1.ch9.pdoa_offset=0
-ant0.ant2.ch5.pdoa_offset=0
-ant0.ant2.ch9.pdoa_offset=0
-ant1.ant2.ch5.pdoa_offset=2173
-ant1.ant2.ch9.pdoa_offset=3555
-ant0.ant3.ch5.pdoa_offset=0
-ant0.ant3.ch9.pdoa_offset=0
-ant1.ant3.ch5.pdoa_offset=3845
-ant1.ant3.ch9.pdoa_offset=647
-ant2.ant3.ch5.pdoa_offset=0
-ant2.ant3.ch9.pdoa_offset=0
-ch5.pll_locking_code=0
-ch9.pll_locking_code=0
-ant1.ant2.ch5.pdoa_lut=3d:ea:7b:0a:66:ea:c3:09:a4:ea:0a:09:cd:ea:66:08:0a:eb:ae:07:33:eb:f6:06:48:eb:52:06:71:eb:9a:05:c3:eb:e1:04:e1:ec:29:04:c3:ef:85:03:a4:f4:cd:02:14:f8:14:02:b8:fa:5c:01:8f:fc:b8:00:e1:fe:00:00:48:01:48:ff:85:03:a4:fe:ae:05:ec:fd:00:08:33:fd:d7:09:7b:fc:85:0b:d7:fb:0a:0d:1f:fb:66:0e:66:fa:33:0f:ae:f9:00:10:0a:f9:a4:10:52:f8:1f:11:9a:f7:5c:11:f6:f6:9a:11:3d:f6:ae:11:85:f5
-ant1.ant2.ch9.pdoa_lut=c3:ed:7b:0a:29:ee:c3:09:3d:ee:0a:09:cd:ee:66:08:c3:ef:ae:07:f6:f0:f6:06:3d:f2:52:06:52:f2:9a:05:cd:f2:e1:04:5c:f3:29:04:c3:f3:85:03:b8:f4:cd:02:71:f7:14:02:52:fa:5c:01:85:fd:b8:00:00:00:00:00:0a:01:48:ff:5c:01:a4:fe:14:02:ec:fd:5c:03:33:fd:48:05:7b:fc:b8:06:d7:fb:14:08:1f:fb:33:09:66:fa:ec:09:ae:f9:3d:0a:0a:f9:0a:0b:52:f8:1f:0b:9a:f7:48:0b:f6:f6:85:0b:3d:f6:9a:0b:85:f5
-ant1.ant3.ch5.pdoa_lut=66:ec:7b:0a:e1:ec:c3:09:14:ee:0a:09:d7:ef:66:08:8f:f2:ae:07:00:f6:f6:06:cd:f6:52:06:33:f7:9a:05:d7:f7:e1:04:48:f9:29:04:33:fd:85:03:d7:fd:cd:02:3d:fe:14:02:ec:ff:5c:01:14:00:b8:00:3d:00:00:00:cd:02:48:ff:29:04:a4:fe:a4:04:ec:fd:85:05:33:fd:e1:06:7b:fc:b8:08:d7:fb:14:0a:1f:fb:e1:0a:66:fa:1f:0b:0a:f9:1f:0b:ae:f9:5c:0b:52:f8:c3:0b:9a:f7:52:0c:f6:f6:0a:0d:3d:f6:00:0e:85:f5
-ant1.ant3.ch9.pdoa_lut=0a:ef:7b:0a:c3:ef:c3:09:00:f0:0a:09:14:f0:66:08:7b:f0:ae:07:48:f1:f6:06:00:f2:52:06:c3:f3:9a:05:00:f6:e1:04:d7:f7:29:04:1f:f9:85:03:ae:f9:cd:02:e1:fa:14:02:e1:fc:5c:01:b8:fe:b8:00:c3:ff:00:00:00:02:48:ff:5c:05:a4:fe:52:08:ec:fd:14:0a:33:fd:e1:0a:7b:fc:14:0c:d7:fb:14:0e:1f:fb:1f:0f:66:fa:00:10:ae:f9:b8:10:0a:f9:29:12:52:f8:00:14:9a:f7:7b:16:f6:f6:d7:17:3d:f6:29:18:85:f5
-xtal_trim=23
-temperature_reference=85
-smart_tx_power=1
-auto_sleep_margin=20000
-restricted_channels=0
-[HAL]aoa_capability=1
-[HAL]ant_sets.ch5.range.rx_ant_set_nonranging = 6
-[HAL]ant_sets.ch5.range.rx_ant_set_ranging = 3
-[HAL]ant_sets.ch5.range.tx_ant_set_nonranging = 0
-[HAL]ant_sets.ch5.range.tx_ant_set_ranging = 0
-[HAL]ant_sets.ch5.azimuth.rx_ant_set_nonranging = 6
-[HAL]ant_sets.ch5.azimuth.rx_ant_set_ranging = 3
-[HAL]ant_sets.ch5.azimuth.tx_ant_set_nonranging = 0
-[HAL]ant_sets.ch5.azimuth.tx_ant_set_ranging = 0
-[HAL]ant_sets.ch9.range.rx_ant_set_nonranging = 6
-[HAL]ant_sets.ch9.range.rx_ant_set_ranging = 3
-[HAL]ant_sets.ch9.range.tx_ant_set_nonranging = 0
-[HAL]ant_sets.ch9.range.tx_ant_set_ranging = 0
-[HAL]ant_sets.ch5.elevation.rx_ant_set_nonranging = 6
-[HAL]ant_sets.ch5.elevation.rx_ant_set_ranging = 1
-[HAL]ant_sets.ch5.elevation.tx_ant_set_nonranging = 0
-[HAL]ant_sets.ch5.elevation.tx_ant_set_ranging = 0
-[HAL]ant_sets.ch9.elevation.rx_ant_set_nonranging = 6
-[HAL]ant_sets.ch9.elevation.rx_ant_set_ranging = 1
-[HAL]ant_sets.ch9.elevation.tx_ant_set_nonranging = 0
-[HAL]ant_sets.ch9.elevation.tx_ant_set_ranging = 0
-[HAL]ant_sets.ch9.azimuth.rx_ant_set_nonranging = 6
-[HAL]ant_sets.ch9.azimuth.rx_ant_set_ranging = 3
-[HAL]ant_sets.ch9.azimuth.tx_ant_set_nonranging = 0
-[HAL]ant_sets.ch9.azimuth.tx_ant_set_ranging = 0
-[HAL]minimum_system_offset_uwbtime0=500
-coex_gpio=4
-coex_delay_us=1000
-coex_margin_us=500
-coex_interval_us=2000
diff --git a/uwb/calibration-CE.conf b/uwb/calibration-CE.conf
new file mode 100644
index 0000000..7c05dd8
--- /dev/null
+++ b/uwb/calibration-CE.conf
@@ -0,0 +1,130 @@
+# CE calibration file
+
+# ANT0 CH5 configuration
+#3C3C3C3C FF 0x34 0xFFFFFFFF
+#3E3E3E3E FF 0x34 0xFFFFFFFF
+#38403838 FF 0x34 0xFFFFFFFF
+#33333333 FF 0x34 0xFFFFFFFF
+#37373737 FF 0x34 0xFFFFFFFF
+#37373737 FF 0x34 0xFFFFFFFF
+#32323232 FF 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch5.ref_frame0.tx_power_index=3C:3C:3C:3C
+ant0.ch5.ref_frame1.tx_power_index=3E:3E:3E:3E
+ant0.ch5.ref_frame2.tx_power_index=38:38:40:38
+ant0.ch5.ref_frame3.tx_power_index=33:33:33:33
+ant0.ch5.ref_frame4.tx_power_index=37:37:37:37
+ant0.ch5.ref_frame5.tx_power_index=37:37:37:37
+ant0.ch5.ref_frame6.tx_power_index=32:32:32:32
+ant0.ch5.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch5.ref_frame0.post_tx_power_index=0xff
+ant0.ch5.ref_frame1.post_tx_power_index=0xff
+ant0.ch5.ref_frame2.post_tx_power_index=0xff
+ant0.ch5.ref_frame3.post_tx_power_index=0xff
+ant0.ch5.ref_frame4.post_tx_power_index=0xff
+ant0.ch5.ref_frame5.post_tx_power_index=0xff
+ant0.ch5.ref_frame6.post_tx_power_index=0xff
+ant0.ch5.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch5.pg_delay=0x34
+
+# max gating gain
+ant0.ch5.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT0 CH9 CONFIGURATION
+#3B3B3B3B FF 0x34 0xFFFFFFFF
+#3C3C3C3C FF 0x34 0xFFFFFFFF
+#3A423A3A FF 0x34 0xFFFFFFFF
+#36363636 FF 0x34 0xFFFFFFFF
+#32323232 FF 0x34 0xFFFFFFFF
+#31313131 FF 0x34 0xFFFFFFFF
+#37373737 FF 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch9.ref_frame0.tx_power_index=3B:3B:3B:3B
+ant0.ch9.ref_frame1.tx_power_index=3C:3C:3C:3C
+ant0.ch9.ref_frame2.tx_power_index=3A:3A:42:3A
+ant0.ch9.ref_frame3.tx_power_index=36:36:36:36
+ant0.ch9.ref_frame4.tx_power_index=32:32:32:32
+ant0.ch9.ref_frame5.tx_power_index=31:31:31:31
+ant0.ch9.ref_frame6.tx_power_index=37:37:37:37
+ant0.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch9.ref_frame0.post_tx_power_index=0xff
+ant0.ch9.ref_frame1.post_tx_power_index=0xff
+ant0.ch9.ref_frame2.post_tx_power_index=0xff
+ant0.ch9.ref_frame3.post_tx_power_index=0xff
+ant0.ch9.ref_frame4.post_tx_power_index=0xff
+ant0.ch9.ref_frame5.post_tx_power_index=0xff
+ant0.ch9.ref_frame6.post_tx_power_index=0xff
+ant0.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch9.pg_delay=0x34
+
+# max gating gain
+ant0.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT1 CH9 CONFIGURATION
+#41414141 FF 0x34 0xFFFFFFFF
+#45454545 FF 0x34 0xFFFFFFFF
+#3E463E3E FF 0x34 0xFFFFFFFF
+#37373737 FF 0x34 0xFFFFFFFF
+#40404040 FF 0x34 0xFFFFFFFF
+#3B3B3B3B FF 0x34 0xFFFFFFFF
+#39393939 FF 0x34 0xFFFFFFFF
+
+# tx power
+ant1.ch9.ref_frame0.tx_power_index=41:41:41:41
+ant1.ch9.ref_frame1.tx_power_index=45:45:45:45
+ant1.ch9.ref_frame2.tx_power_index=3E:3E:46:3E
+ant1.ch9.ref_frame3.tx_power_index=37:37:37:37
+ant1.ch9.ref_frame4.tx_power_index=40:40:40:40
+ant1.ch9.ref_frame5.tx_power_index=3B:3B:3B:3B
+ant1.ch9.ref_frame6.tx_power_index=39:39:39:39
+ant1.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant1.ch9.ref_frame0.post_tx_power_index=0xff
+ant1.ch9.ref_frame1.post_tx_power_index=0xff
+ant1.ch9.ref_frame2.post_tx_power_index=0xff
+ant1.ch9.ref_frame3.post_tx_power_index=0xff
+ant1.ch9.ref_frame4.post_tx_power_index=0xff
+ant1.ch9.ref_frame5.post_tx_power_index=0xff
+ant1.ch9.ref_frame6.post_tx_power_index=0xff
+ant1.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant1.ch9.pg_delay=0x34
+
+# max gating gain
+ant1.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+restricted_channels=0x0000
+alternate_pulse_shape=0x00
diff --git a/uwb/calibration-FCC.conf b/uwb/calibration-FCC.conf
new file mode 100644
index 0000000..a154b7c
--- /dev/null
+++ b/uwb/calibration-FCC.conf
@@ -0,0 +1,130 @@
+# FCC calibration file
+
+# ANT0 CH5 configuration
+#41414141 34 0x34 0xFFFFFFFF
+#48484848 33 0x34 0xFFFFFFFF
+#3C443C3C 36 0x34 0xFFFFFFFF
+#33333333 33 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#3B3B3B3B 32 0x34 0xFFFFFFFF
+#32323232 32 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch5.ref_frame0.tx_power_index=41:41:41:41
+ant0.ch5.ref_frame1.tx_power_index=48:48:48:48
+ant0.ch5.ref_frame2.tx_power_index=3C:3C:44:3C
+ant0.ch5.ref_frame3.tx_power_index=33:33:33:33
+ant0.ch5.ref_frame4.tx_power_index=3E:3E:3E:3E
+ant0.ch5.ref_frame5.tx_power_index=3B:3B:3B:3B
+ant0.ch5.ref_frame6.tx_power_index=32:32:32:32
+ant0.ch5.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch5.ref_frame0.post_tx_power_index=0x34
+ant0.ch5.ref_frame1.post_tx_power_index=0x33
+ant0.ch5.ref_frame2.post_tx_power_index=0x36
+ant0.ch5.ref_frame3.post_tx_power_index=0x33
+ant0.ch5.ref_frame4.post_tx_power_index=0x32
+ant0.ch5.ref_frame5.post_tx_power_index=0x32
+ant0.ch5.ref_frame6.post_tx_power_index=0x32
+ant0.ch5.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch5.pg_delay=0x34
+
+# max gating gain
+ant0.ch5.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT0 CH9 CONFIGURATION
+#45454545 32 0x34 0xFFFFFFFF
+#45454545 32 0x34 0xFFFFFFFF
+#3F473F3F 32 0x34 0xFFFFFFFF
+#3B3B3B3B 32 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#37373737 32 0x34 0xFFFFFFFF
+#39393939 32 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch9.ref_frame0.tx_power_index=45:45:45:45
+ant0.ch9.ref_frame1.tx_power_index=45:45:45:45
+ant0.ch9.ref_frame2.tx_power_index=3F:3F:47:3F
+ant0.ch9.ref_frame3.tx_power_index=3B:3B:3B:3B
+ant0.ch9.ref_frame4.tx_power_index=3E:3E:3E:3E
+ant0.ch9.ref_frame5.tx_power_index=37:37:37:37
+ant0.ch9.ref_frame6.tx_power_index=39:39:39:39
+ant0.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch9.ref_frame0.post_tx_power_index=0x32
+ant0.ch9.ref_frame1.post_tx_power_index=0x32
+ant0.ch9.ref_frame2.post_tx_power_index=0x32
+ant0.ch9.ref_frame3.post_tx_power_index=0x32
+ant0.ch9.ref_frame4.post_tx_power_index=0x32
+ant0.ch9.ref_frame5.post_tx_power_index=0x32
+ant0.ch9.ref_frame6.post_tx_power_index=0x32
+ant0.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch9.pg_delay=0x34
+
+# max gating gain
+ant0.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT1 CH9 CONFIGURATION
+#44444444 32 0x34 0xFFFFFFFF
+#4B4B4B4B 32 0x34 0xFFFFFFFF
+#41494141 32 0x34 0xFFFFFFFF
+#3A3A3A3A 32 0x34 0xFFFFFFFF
+#40404040 32 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#34343434 32 0x34 0xFFFFFFFF
+
+# tx power
+ant1.ch9.ref_frame0.tx_power_index=44:44:44:44
+ant1.ch9.ref_frame1.tx_power_index=4B:4B:4B:4B
+ant1.ch9.ref_frame2.tx_power_index=41:41:49:41
+ant1.ch9.ref_frame3.tx_power_index=3A:3A:3A:3A
+ant1.ch9.ref_frame4.tx_power_index=40:40:40:40
+ant1.ch9.ref_frame5.tx_power_index=3E:3E:3E:3E
+ant1.ch9.ref_frame6.tx_power_index=34:34:34:34
+ant1.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant1.ch9.ref_frame0.post_tx_power_index=0x32
+ant1.ch9.ref_frame1.post_tx_power_index=0x32
+ant1.ch9.ref_frame2.post_tx_power_index=0x32
+ant1.ch9.ref_frame3.post_tx_power_index=0x32
+ant1.ch9.ref_frame4.post_tx_power_index=0x32
+ant1.ch9.ref_frame5.post_tx_power_index=0x32
+ant1.ch9.ref_frame6.post_tx_power_index=0x32
+ant1.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant1.ch9.pg_delay=0x34
+
+# max gating gain
+ant1.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+restricted_channels=0x0000
+alternate_pulse_shape=0x00
diff --git a/uwb/calibration-JP.conf b/uwb/calibration-JP.conf
new file mode 100644
index 0000000..063e97f
--- /dev/null
+++ b/uwb/calibration-JP.conf
@@ -0,0 +1,87 @@
+# JP calibration file
+# ANT0 CH9 CONFIGURATION
+#41414141 FF 29 0xFFFFFFFF
+#4C4C4C4C FF 29 0xFFFFFFFF
+#3C463C3C FF 29 0xFFFFFFFF
+#32323232 FF 29 0xFFFFFFFF
+#41414141 FF 29 0xFFFFFFFF
+#40404040 FF 29 0xFFFFFFFF
+#35353535 FF 29 0xFFFFFFFF
+
+# tx power
+ant0.ch9.ref_frame0.tx_power_index=41:41:41:41
+ant0.ch9.ref_frame1.tx_power_index=4C:4C:4C:4C
+ant0.ch9.ref_frame2.tx_power_index=3C:3C:46:3C
+ant0.ch9.ref_frame3.tx_power_index=32:32:32:32
+ant0.ch9.ref_frame4.tx_power_index=41:41:41:41
+ant0.ch9.ref_frame5.tx_power_index=40:40:40:40
+ant0.ch9.ref_frame6.tx_power_index=35:35:35:35
+ant0.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch9.ref_frame0.post_tx_power_index=0xff
+ant0.ch9.ref_frame1.post_tx_power_index=0xff
+ant0.ch9.ref_frame2.post_tx_power_index=0xff
+ant0.ch9.ref_frame3.post_tx_power_index=0xff
+ant0.ch9.ref_frame4.post_tx_power_index=0xff
+ant0.ch9.ref_frame5.post_tx_power_index=0xff
+ant0.ch9.ref_frame6.post_tx_power_index=0xff
+ant0.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch9.pg_delay=0x29
+
+# max gating gain
+ant0.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT1 CH9 CONFIGURATION
+#43434343 FF 28 0xFFFFFFFF
+#47474747 FF 27 0xFFFFFFFF
+#3E483E3E FF 28 0xFFFFFFFF
+#34343434 FF 28 0xFFFFFFFF
+#3C3C3C3C FF 27 0xFFFFFFFF
+#3B3B3B3B FF 27 0xFFFFFFFF
+#30303030 FF 27 0xFFFFFFFF
+
+# tx power
+ant1.ch9.ref_frame0.tx_power_index=43:43:43:43
+ant1.ch9.ref_frame1.tx_power_index=47:47:47:47
+ant1.ch9.ref_frame2.tx_power_index=3E:3E:48:3E
+ant1.ch9.ref_frame3.tx_power_index=34:34:34:34
+ant1.ch9.ref_frame4.tx_power_index=3C:3C:3C:3C
+ant1.ch9.ref_frame5.tx_power_index=3B:3B:3B:3B
+ant1.ch9.ref_frame6.tx_power_index=30:30:30:30
+ant1.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant1.ch9.ref_frame0.post_tx_power_index=0xff
+ant1.ch9.ref_frame1.post_tx_power_index=0xff
+ant1.ch9.ref_frame2.post_tx_power_index=0xff
+ant1.ch9.ref_frame3.post_tx_power_index=0xff
+ant1.ch9.ref_frame4.post_tx_power_index=0xff
+ant1.ch9.ref_frame5.post_tx_power_index=0xff
+ant1.ch9.ref_frame6.post_tx_power_index=0xff
+ant1.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant1.ch9.pg_delay=0x28
+
+# max gating gain
+ant1.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+restricted_channels=0x0020
+alternate_pulse_shape=0x01
diff --git a/uwb/calibration-RESTRICTED.conf b/uwb/calibration-RESTRICTED.conf
new file mode 100644
index 0000000..64363e5
--- /dev/null
+++ b/uwb/calibration-RESTRICTED.conf
@@ -0,0 +1,3 @@
+# RESTRICTED calibration file, UWB disabled
+
+restricted_channels=0xFFFF
diff --git a/uwb/calibration-TW.conf b/uwb/calibration-TW.conf
new file mode 100644
index 0000000..c052b0d
--- /dev/null
+++ b/uwb/calibration-TW.conf
@@ -0,0 +1,130 @@
+# TW calibration file (FCC w Ch5 disabled)
+
+# ANT0 CH5 configuration
+#41414141 34 0x34 0xFFFFFFFF
+#48484848 33 0x34 0xFFFFFFFF
+#3C443C3C 36 0x34 0xFFFFFFFF
+#33333333 33 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#3B3B3B3B 32 0x34 0xFFFFFFFF
+#32323232 32 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch5.ref_frame0.tx_power_index=41:41:41:41
+ant0.ch5.ref_frame1.tx_power_index=48:48:48:48
+ant0.ch5.ref_frame2.tx_power_index=3C:3C:44:3C
+ant0.ch5.ref_frame3.tx_power_index=33:33:33:33
+ant0.ch5.ref_frame4.tx_power_index=3E:3E:3E:3E
+ant0.ch5.ref_frame5.tx_power_index=3B:3B:3B:3B
+ant0.ch5.ref_frame6.tx_power_index=32:32:32:32
+ant0.ch5.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch5.ref_frame0.post_tx_power_index=0x34
+ant0.ch5.ref_frame1.post_tx_power_index=0x33
+ant0.ch5.ref_frame2.post_tx_power_index=0x36
+ant0.ch5.ref_frame3.post_tx_power_index=0x33
+ant0.ch5.ref_frame4.post_tx_power_index=0x32
+ant0.ch5.ref_frame5.post_tx_power_index=0x32
+ant0.ch5.ref_frame6.post_tx_power_index=0x32
+ant0.ch5.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch5.pg_delay=0x34
+
+# max gating gain
+ant0.ch5.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT0 CH9 CONFIGURATION
+#45454545 32 0x34 0xFFFFFFFF
+#45454545 32 0x34 0xFFFFFFFF
+#3F473F3F 32 0x34 0xFFFFFFFF
+#3B3B3B3B 32 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#37373737 32 0x34 0xFFFFFFFF
+#39393939 32 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch9.ref_frame0.tx_power_index=45:45:45:45
+ant0.ch9.ref_frame1.tx_power_index=45:45:45:45
+ant0.ch9.ref_frame2.tx_power_index=3F:3F:47:3F
+ant0.ch9.ref_frame3.tx_power_index=3B:3B:3B:3B
+ant0.ch9.ref_frame4.tx_power_index=3E:3E:3E:3E
+ant0.ch9.ref_frame5.tx_power_index=37:37:37:37
+ant0.ch9.ref_frame6.tx_power_index=39:39:39:39
+ant0.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch9.ref_frame0.post_tx_power_index=0x32
+ant0.ch9.ref_frame1.post_tx_power_index=0x32
+ant0.ch9.ref_frame2.post_tx_power_index=0x32
+ant0.ch9.ref_frame3.post_tx_power_index=0x32
+ant0.ch9.ref_frame4.post_tx_power_index=0x32
+ant0.ch9.ref_frame5.post_tx_power_index=0x32
+ant0.ch9.ref_frame6.post_tx_power_index=0x32
+ant0.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch9.pg_delay=0x34
+
+# max gating gain
+ant0.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT1 CH9 CONFIGURATION
+#44444444 32 0x34 0xFFFFFFFF
+#4B4B4B4B 32 0x34 0xFFFFFFFF
+#41494141 32 0x34 0xFFFFFFFF
+#3A3A3A3A 32 0x34 0xFFFFFFFF
+#40404040 32 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#34343434 32 0x34 0xFFFFFFFF
+
+# tx power
+ant1.ch9.ref_frame0.tx_power_index=44:44:44:44
+ant1.ch9.ref_frame1.tx_power_index=4B:4B:4B:4B
+ant1.ch9.ref_frame2.tx_power_index=41:41:49:41
+ant1.ch9.ref_frame3.tx_power_index=3A:3A:3A:3A
+ant1.ch9.ref_frame4.tx_power_index=40:40:40:40
+ant1.ch9.ref_frame5.tx_power_index=3E:3E:3E:3E
+ant1.ch9.ref_frame6.tx_power_index=34:34:34:34
+ant1.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant1.ch9.ref_frame0.post_tx_power_index=0x32
+ant1.ch9.ref_frame1.post_tx_power_index=0x32
+ant1.ch9.ref_frame2.post_tx_power_index=0x32
+ant1.ch9.ref_frame3.post_tx_power_index=0x32
+ant1.ch9.ref_frame4.post_tx_power_index=0x32
+ant1.ch9.ref_frame5.post_tx_power_index=0x32
+ant1.ch9.ref_frame6.post_tx_power_index=0x32
+ant1.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant1.ch9.pg_delay=0x34
+
+# max gating gain
+ant1.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+restricted_channels=0x0020
+alternate_pulse_shape=0x00
diff --git a/uwb/calibration-default.conf b/uwb/calibration-default.conf
new file mode 100644
index 0000000..a154b7c
--- /dev/null
+++ b/uwb/calibration-default.conf
@@ -0,0 +1,130 @@
+# FCC calibration file
+
+# ANT0 CH5 configuration
+#41414141 34 0x34 0xFFFFFFFF
+#48484848 33 0x34 0xFFFFFFFF
+#3C443C3C 36 0x34 0xFFFFFFFF
+#33333333 33 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#3B3B3B3B 32 0x34 0xFFFFFFFF
+#32323232 32 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch5.ref_frame0.tx_power_index=41:41:41:41
+ant0.ch5.ref_frame1.tx_power_index=48:48:48:48
+ant0.ch5.ref_frame2.tx_power_index=3C:3C:44:3C
+ant0.ch5.ref_frame3.tx_power_index=33:33:33:33
+ant0.ch5.ref_frame4.tx_power_index=3E:3E:3E:3E
+ant0.ch5.ref_frame5.tx_power_index=3B:3B:3B:3B
+ant0.ch5.ref_frame6.tx_power_index=32:32:32:32
+ant0.ch5.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch5.ref_frame0.post_tx_power_index=0x34
+ant0.ch5.ref_frame1.post_tx_power_index=0x33
+ant0.ch5.ref_frame2.post_tx_power_index=0x36
+ant0.ch5.ref_frame3.post_tx_power_index=0x33
+ant0.ch5.ref_frame4.post_tx_power_index=0x32
+ant0.ch5.ref_frame5.post_tx_power_index=0x32
+ant0.ch5.ref_frame6.post_tx_power_index=0x32
+ant0.ch5.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch5.pg_delay=0x34
+
+# max gating gain
+ant0.ch5.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch5.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT0 CH9 CONFIGURATION
+#45454545 32 0x34 0xFFFFFFFF
+#45454545 32 0x34 0xFFFFFFFF
+#3F473F3F 32 0x34 0xFFFFFFFF
+#3B3B3B3B 32 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#37373737 32 0x34 0xFFFFFFFF
+#39393939 32 0x34 0xFFFFFFFF
+
+# tx power
+ant0.ch9.ref_frame0.tx_power_index=45:45:45:45
+ant0.ch9.ref_frame1.tx_power_index=45:45:45:45
+ant0.ch9.ref_frame2.tx_power_index=3F:3F:47:3F
+ant0.ch9.ref_frame3.tx_power_index=3B:3B:3B:3B
+ant0.ch9.ref_frame4.tx_power_index=3E:3E:3E:3E
+ant0.ch9.ref_frame5.tx_power_index=37:37:37:37
+ant0.ch9.ref_frame6.tx_power_index=39:39:39:39
+ant0.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant0.ch9.ref_frame0.post_tx_power_index=0x32
+ant0.ch9.ref_frame1.post_tx_power_index=0x32
+ant0.ch9.ref_frame2.post_tx_power_index=0x32
+ant0.ch9.ref_frame3.post_tx_power_index=0x32
+ant0.ch9.ref_frame4.post_tx_power_index=0x32
+ant0.ch9.ref_frame5.post_tx_power_index=0x32
+ant0.ch9.ref_frame6.post_tx_power_index=0x32
+ant0.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant0.ch9.pg_delay=0x34
+
+# max gating gain
+ant0.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant0.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+# ANT1 CH9 CONFIGURATION
+#44444444 32 0x34 0xFFFFFFFF
+#4B4B4B4B 32 0x34 0xFFFFFFFF
+#41494141 32 0x34 0xFFFFFFFF
+#3A3A3A3A 32 0x34 0xFFFFFFFF
+#40404040 32 0x34 0xFFFFFFFF
+#3E3E3E3E 32 0x34 0xFFFFFFFF
+#34343434 32 0x34 0xFFFFFFFF
+
+# tx power
+ant1.ch9.ref_frame0.tx_power_index=44:44:44:44
+ant1.ch9.ref_frame1.tx_power_index=4B:4B:4B:4B
+ant1.ch9.ref_frame2.tx_power_index=41:41:49:41
+ant1.ch9.ref_frame3.tx_power_index=3A:3A:3A:3A
+ant1.ch9.ref_frame4.tx_power_index=40:40:40:40
+ant1.ch9.ref_frame5.tx_power_index=3E:3E:3E:3E
+ant1.ch9.ref_frame6.tx_power_index=34:34:34:34
+ant1.ch9.ref_frame7.tx_power_index=FE:FE:FE:FE
+
+# pp cw tx pwr
+ant1.ch9.ref_frame0.post_tx_power_index=0x32
+ant1.ch9.ref_frame1.post_tx_power_index=0x32
+ant1.ch9.ref_frame2.post_tx_power_index=0x32
+ant1.ch9.ref_frame3.post_tx_power_index=0x32
+ant1.ch9.ref_frame4.post_tx_power_index=0x32
+ant1.ch9.ref_frame5.post_tx_power_index=0x32
+ant1.ch9.ref_frame6.post_tx_power_index=0x32
+ant1.ch9.ref_frame7.post_tx_power_index=0xff
+
+# pg delay
+ant1.ch9.pg_delay=0x34
+
+# max gating gain
+ant1.ch9.ref_frame0.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame1.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame2.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame3.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame4.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame5.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame6.max_gating_gain=0xFFFFFFFF
+ant1.ch9.ref_frame7.max_gating_gain=0xFFFFFFFF
+
+restricted_channels=0x0000
+alternate_pulse_shape=0x00
diff --git a/uwb/calibration.conf b/uwb/calibration.conf
new file mode 100644
index 0000000..7dee896
--- /dev/null
+++ b/uwb/calibration.conf
@@ -0,0 +1,39 @@
+# common calibration file
+ant0.ch5.ant_delay=37:40:00:00
+ant0.ch9.ant_delay=37:40:00:00
+
+ant1.ch5.ant_delay=3a:40:00:00
+ant1.ch9.ant_delay=3a:40:00:00
+
+ant2.ch5.ant_delay=38:40:00:00
+ant2.ch9.ant_delay=38:40:00:00
+
+ant3.ch5.ant_delay=38:40:00:00
+ant3.ch9.ant_delay=38:40:00:00
+
+ant_grp1.ch9.pdoa.axisx.offset=e2:0c
+ant_grp1.ch9.pdoa.axisy.offset=00:00
+
+ant_grp2.ch9.pdoa.axisx.offset=00:00
+ant_grp2.ch9.pdoa.axisy.offset=7f:10
+
+xtal_trim=0x30
+
+# signed in 2s complement FF -> -0.25 dB
+ant0.ch5.pa_gain_offset=0x00
+ant0.ch9.pa_gain_offset=0x00
+
+ant1.ch5.pa_gain_offset=0x00
+ant1.ch9.pa_gain_offset=0x00
+
+ant2.ch5.pa_gain_offset=0x00
+ant2.ch9.pa_gain_offset=0x00
+
+ant3.ch5.pa_gain_offset=0x00
+ant3.ch9.pa_gain_offset=0x00
+
+#Coex
+wifi_coex_mode=01
+wifi_coex_time_gap=01
+ch5.wifi_coex_enabled=01
+ch9.wifi_coex_enabled=01
diff --git a/uwb/configuration.conf b/uwb/configuration.conf
new file mode 100644
index 0000000..1320904
--- /dev/null
+++ b/uwb/configuration.conf
@@ -0,0 +1,132 @@
+[FIRA]ant_sets.ch5.range.rx_ant_set_nonranging = 0
+[FIRA]ant_sets.ch5.range.rx_ant_set_ranging = 0
+[FIRA]ant_sets.ch5.range.tx_ant_set_nonranging = 0
+[FIRA]ant_sets.ch5.range.tx_ant_set_ranging = 0
+[FIRA]ant_sets.ch5.azimuth.rx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch5.azimuth.rx_ant_set_ranging = 1
+[FIRA]ant_sets.ch5.azimuth.tx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch5.azimuth.tx_ant_set_ranging = 1
+[FIRA]ant_sets.ch5.elevation.rx_ant_set_nonranging = 2
+[FIRA]ant_sets.ch5.elevation.rx_ant_set_ranging = 2
+[FIRA]ant_sets.ch5.elevation.tx_ant_set_nonranging = 2
+[FIRA]ant_sets.ch5.elevation.tx_ant_set_ranging = 2
+[FIRA]ant_sets.ch5.azimuth_elevation.rx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch5.azimuth_elevation.rx_ant_set_ranging_azimuth = 1
+[FIRA]ant_sets.ch5.azimuth_elevation.rx_ant_set_ranging_elevation = 2
+[FIRA]ant_sets.ch5.azimuth_elevation.tx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch5.azimuth_elevation.tx_ant_set_ranging = 1
+[FIRA]ant_sets.ch9.range.rx_ant_set_nonranging = 0
+[FIRA]ant_sets.ch9.range.rx_ant_set_ranging = 0
+[FIRA]ant_sets.ch9.range.tx_ant_set_nonranging = 0
+[FIRA]ant_sets.ch9.range.tx_ant_set_ranging = 0
+[FIRA]ant_sets.ch9.azimuth.rx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch9.azimuth.rx_ant_set_ranging = 1
+[FIRA]ant_sets.ch9.azimuth.tx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch9.azimuth.tx_ant_set_ranging = 1
+[FIRA]ant_sets.ch9.elevation.rx_ant_set_nonranging = 2
+[FIRA]ant_sets.ch9.elevation.rx_ant_set_ranging = 2
+[FIRA]ant_sets.ch9.elevation.tx_ant_set_nonranging = 2
+[FIRA]ant_sets.ch9.elevation.tx_ant_set_ranging = 2
+[FIRA]ant_sets.ch9.azimuth_elevation.rx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch9.azimuth_elevation.rx_ant_set_ranging_azimuth = 1
+[FIRA]ant_sets.ch9.azimuth_elevation.rx_ant_set_ranging_elevation = 2
+[FIRA]ant_sets.ch9.azimuth_elevation.tx_ant_set_nonranging = 1
+[FIRA]ant_sets.ch9.azimuth_elevation.tx_ant_set_ranging = 1
+
+[CCC]ant_sets.ch5.range.rx_ant_set_nonranging = 0
+[CCC]ant_sets.ch5.range.rx_ant_set_ranging = 0
+[CCC]ant_sets.ch5.range.tx_ant_set_nonranging = 0
+[CCC]ant_sets.ch5.range.tx_ant_set_ranging = 0
+[CCC]ant_sets.ch9.range.rx_ant_set_nonranging = 0
+[CCC]ant_sets.ch9.range.rx_ant_set_ranging = 0
+[CCC]ant_sets.ch9.range.tx_ant_set_nonranging = 0
+[CCC]ant_sets.ch9.range.tx_ant_set_ranging = 0
+
+# Antenna Configuration
+ant0.config=01
+ant1.config=02
+ant2.config=03
+ant3.config=04
+
+# Ranging
+ant_grp0.rf_config.rfoff=00
+ant_grp0.rf_config.tx=02
+ant_grp0.rf_config.tx_aoa=02
+ant_grp0.rf_config.rx_ip=04
+ant_grp0.rf_config.rx_sts0=04
+ant_grp0.rf_config.rx_sts1=04
+ant_grp0.rf_config.rx_sts2=04
+ant_grp0.rf_config.rx_sts3=04
+ant_grp0.lna_rxa=00
+ant_grp0.lna_rxb=01
+ant_grp0.rx_config=01
+ant_grp0.pdoa_segments=00:00:00:00:00:00
+ant_grp0.tx_power_control=01
+
+# PDoA Azimuth
+ant_grp1.rf_config.rfoff=00
+ant_grp1.rf_config.tx=03
+ant_grp1.rf_config.tx_aoa=03
+ant_grp1.rf_config.rx_ip=0e
+ant_grp1.rf_config.rx_sts0=0e
+ant_grp1.rf_config.rx_sts1=0e
+ant_grp1.rf_config.rx_sts2=0e
+ant_grp1.rf_config.rx_sts3=0e
+ant_grp1.lna_rxa=01
+ant_grp1.lna_rxb=01
+ant_grp1.rx_config=04
+ant_grp1.pdoa_segments=07:02:00:00:00:00
+ant_grp1.pdoa_type=00:00:00
+ant_grp1.tx_power_control=01
+ant_grp1.ch9.pdoa.axisx.lut_id=00
+ant_grp1.ch9.pdoa.axisy.lut_id=ff
+
+# PDoA Elevation
+ant_grp2.rf_config.rfoff=00
+ant_grp2.rf_config.tx=03
+ant_grp2.rf_config.tx_aoa=03
+ant_grp2.rf_config.rx_ip=0f
+ant_grp2.rf_config.rx_sts0=0f
+ant_grp2.rf_config.rx_sts1=0f
+ant_grp2.rf_config.rx_sts2=0f
+ant_grp2.rf_config.rx_sts3=0f
+ant_grp2.lna_rxa=01
+ant_grp2.lna_rxb=01
+ant_grp2.rx_config=04
+ant_grp2.pdoa_segments=07:02:00:00:00:00
+ant_grp2.pdoa_type=01:00:00
+ant_grp2.tx_power_control=01
+ant_grp2.ch9.pdoa.axisx.lut_id=ff
+ant_grp2.ch9.pdoa.axisy.lut_id=01
+
+pdoa_lut0.data=29:ee:8f:0c:71:ee:dd:0b:a8:ee:2b:0b:00:ef:77:0a:35:ef:c5:09:c5:ef:12:09:4a:f0:60:08:db:f1:fa:06:cf:f2:48:06:b6:f3:96:05:37:f7:2f:04:91:f8:7d:03:00:fa:cb:02:f8:fc:64:01:62:fe:b2:00:04:00:00:00:d9:01:4e:ff:d5:03:9c:fe:ac:05:e7:fd:87:08:83:fc:a2:09:d1:fb:c5:0a:1d:fb:6d:0d:b8:f9:a8:0e:06:f9:d5:0f:54:f8:7f:11:ee:f6:7d:12:3b:f6:25:13:89:f5:98:13:d5:f4:71:14:23:f4:14:15:71:f3
+pdoa_lut1.data=7b:f0:89:f5:06:f1:3b:f6:87:f2:ee:f6:fe:f3:a0:f7:2d:f5:54:f8:17:f6:06:f9:e1:f6:b8:f9:b2:f7:6a:fa:aa:f8:1d:fb:96:f9:d1:fb:b0:fa:83:fc:f2:fb:35:fd:68:fd:e7:fd:f4:fe:9c:fe:62:00:4e:ff:be:01:00:00:14:03:b2:00:5e:04:64:01:66:05:19:02:8d:06:cb:02:d5:07:7d:03:12:09:2f:04:35:0a:e3:04:44:0b:96:05:6f:0c:48:06:ba:0d:fa:06:9e:0e:ac:07:b2:0f:60:08:a6:10:12:09:6d:11:c5:09:ee:11:77:0a
+
+# Reference frames definition
+ref_frame0.phy_cfg=44:21:07 # BPRF SP1 with 125 bytes
+ref_frame0.payload_size=0x007d
+
+ref_frame1.phy_cfg=45:04:00 # HPRF Set #1 (SP0 with 6.8 Mbps) with 150 bytes
+ref_frame1.payload_size=0x0096
+
+ref_frame2.phy_cfg=44:01:00 # BPRF SP0 with 125 bytes
+ref_frame2.payload_size=0x007d
+
+ref_frame3.phy_cfg=44:22:07 # BPRF SP3
+ref_frame3.payload_size=0x0000
+
+ref_frame4.phy_cfg=25:05:00 # HPRF Set #3 (SP0 with 27.2 Mbps) with 150 bytes
+ref_frame4.payload_size=0x0096
+
+ref_frame5.phy_cfg=45:22:07 # HPRF Set #24 (SP3)
+ref_frame5.payload_size=0x0000
+
+ref_frame6.phy_cfg=25:22:03 # HPRF Set #28 (SP3)
+ref_frame6.payload_size=0x0000
+
+ref_frame7.phy_cfg=25:2d:03 # HPRF DRHM_HR CL7
+ref_frame7.payload_size=0x0C68
+
+# Post tones
+post_tx.pattern_data=DD:DD:DD:DD:77:77:77:77
+post_tx.pattern_repetitions=0x0002
diff --git a/uwb/uwb_calibration.mk b/uwb/uwb_calibration.mk
index 38e4128..64e2b06 100644
--- a/uwb/uwb_calibration.mk
+++ b/uwb/uwb_calibration.mk
@@ -13,9 +13,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-LOCAL_UWB_CAL_DIR=device/google/shusky/uwb
+PRODUCT_PACKAGES += \
+ configuration.conf \
+ calibration.conf \
+ calibration-default.conf \
+ calibration-CE.conf \
+ calibration-FCC.conf \
+ calibration-JP.conf \
+ calibration-TW.conf \
+ calibration-RESTRICTED.conf
-PRODUCT_COPY_FILES += \
- $(LOCAL_UWB_CAL_DIR)/UWB-calibration.conf:$(TARGET_COPY_OUT_VENDOR)/etc/UWB-calibration.conf \
- $(LOCAL_UWB_CAL_DIR)/UWB-calibration.conf:$(TARGET_COPY_OUT_VENDOR)/etc/UWB-calibration-unknown.conf \
- $(LOCAL_UWB_CAL_DIR)/UWB-calibration.conf:$(TARGET_COPY_OUT_VENDOR)/etc/UWB-calibration-default.conf \