utils: bdaddr: Add service to set Bluetooth device (MAC) address

The Bluetooth chip does not come with a unique Bluetooth device (MAC)
address configured out of the box. This means that we manually need
to configure the device address.

Otherwise BT will stop working from v6.5 kernel version onwards.
Reference: https://bugs.linaro.org/show_bug.cgi?id=5998

Link: https://github.com/me176c-dev/android_device_asus_K013/commit/cbb7066
[AmitP: Kanged the service from above link, updated the commit
        message, built an rc and shell script around this service,
        and added SELinux policies.]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I79a364917e0a4d879e4319b45b4c0f7cc7df83d3
diff --git a/shared/utils/bdaddr/set_bdaddr.sh b/shared/utils/bdaddr/set_bdaddr.sh
new file mode 100644
index 0000000..299626d
--- /dev/null
+++ b/shared/utils/bdaddr/set_bdaddr.sh
@@ -0,0 +1,33 @@
+#! /vendor/bin/sh
+# Set Bluetooth address (BT_ADDR).
+
+#
+# Copyright (C) 2023 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.
+#
+
+# Get the unique board serial number from /proc/cmdline,
+# prepend '0's to the serial number to fill 5 LSBs of the
+# BT address and prepend "C0" as MSB to prepare a 6 byte
+# Bluetooth Random Static Address. Reference:
+# https://www.bluetooth.com/wp-content/uploads/2022/05/Bluetooth_LE_Primer_Paper.pdf [Page 23]
+#
+# Format the output in xx:xx:xx:xx:xx:xx format for the
+# "bdaddr" command to work.
+
+BTADDR=`/vendor/bin/cat /proc/cmdline | vendor/bin/grep -o serialno.* |\
+	/vendor/bin/cut -f2 -d'=' | /vendor/bin/awk '{printf("C0%010s\n", $1)}' |\
+	/vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+
+/vendor/bin/hw/bdaddr "${BTADDR}"