summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2023-04-25 13:40:42 -0700
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2023-04-27 16:10:43 -0700
commit0b230fd2ba3844d989c3f514729246abbd86026f (patch)
tree29f806f4919f8e078192f176eaaff307bc539fc2
parent3fa45f728cd7bc60dbd30e6bac5d93233f16a2d6 (diff)
downloadbluez-0b230fd2ba3844d989c3f514729246abbd86026f.tar.gz
shared/lc3: Update configuration to use iovec
This use iovec as expected storage for capabilities and configuration so it is inline with what bluetoothctl has been using making it simpler to reuse these definitions.
-rw-r--r--src/shared/lc3.h93
1 files changed, 69 insertions, 24 deletions
diff --git a/src/shared/lc3.h b/src/shared/lc3.h
index fd9eb15a7..ae193f9e2 100644
--- a/src/shared/lc3.h
+++ b/src/shared/lc3.h
@@ -7,11 +7,12 @@
*
*/
-#define LTV(_type, _bytes...) \
+#define data(args...) ((const unsigned char[]) { args })
+
+#define LC3_IOV(args...) \
{ \
- .len = 1 + sizeof((uint8_t []) { _bytes }), \
- .type = _type, \
- .data = { _bytes }, \
+ .iov_base = (void *)data(args), \
+ .iov_len = sizeof(data(args)), \
}
#define LC3_ID 0x06
@@ -52,13 +53,11 @@
#define LC3_FRAME_COUNT (LC3_BASE + 4)
#define LC3_CAPABILITIES(_freq, _duration, _chan_count, _len_min, _len_max) \
- { \
- LTV(LC3_FREQ, _freq), \
- LTV(LC3_DURATION, _duration), \
- LTV(LC3_CHAN_COUNT, _chan_count), \
- LTV(LC3_FRAME_LEN, _len_min, _len_min >> 8, \
- _len_max, _len_max >> 8), \
- }
+ LC3_IOV(0x02, LC3_FREQ, _freq, _freq >> 8, \
+ 0x02, LC3_DURATION, _duration, \
+ 0x02, LC3_CHAN_COUNT, _chan_count, \
+ 0x05, LC3_FRAME_LEN, _len_min, _len_min >> 8, \
+ _len_max, _len_max >> 8)
#define LC3_CONFIG_BASE 0x01
@@ -81,32 +80,78 @@
#define LC3_CONFIG_FRAME_LEN (LC3_CONFIG_BASE + 3)
#define LC3_CONFIG(_freq, _duration, _len) \
- { \
- LTV(LC3_CONFIG_FREQ, _freq), \
- LTV(LC3_CONFIG_DURATION, _duration), \
- LTV(LC3_CONFIG_FRAME_LEN, _len, _len >> 8), \
- }
+ LC3_IOV(0x02, LC3_CONFIG_FREQ, _freq, \
+ 0x02, LC3_CONFIG_DURATION, _duration, \
+ 0x03, LC3_CONFIG_FRAME_LEN, _len, _len >> 8)
-#define LC3_CONFIG_8KHZ(_duration, _len) \
+#define LC3_CONFIG_8(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_8KHZ, _duration, _len)
-#define LC3_CONFIG_11KHZ(_duration, _len) \
+#define LC3_CONFIG_11(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_11KHZ, _duration, _len)
-#define LC3_CONFIG_16KHZ(_duration, _len) \
+#define LC3_CONFIG_16(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_16KHZ, _duration, _len)
-#define LC3_CONFIG_22KHZ(_duration, _len) \
+#define LC3_CONFIG_22(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_22KHZ, _duration, _len)
-#define LC3_CONFIG_24KHZ(_duration, _len) \
+#define LC3_CONFIG_24(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_24KHZ, _duration, _len)
-#define LC3_CONFIG_32KHZ(_duration, _len) \
+#define LC3_CONFIG_32(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_32KHZ, _duration, _len)
-#define LC3_CONFIG_44KHZ(_duration, _len) \
+#define LC3_CONFIG_44(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_44KHZ, _duration, _len)
-#define LC3_CONFIG_48KHZ(_duration, _len) \
+#define LC3_CONFIG_48(_duration, _len) \
LC3_CONFIG(LC3_CONFIG_FREQ_48KHZ, _duration, _len)
+
+#define LC3_CONFIG_8_1 \
+ LC3_CONFIG_8(LC3_CONFIG_DURATION_7_5, 26u)
+
+#define LC3_CONFIG_8_2 \
+ LC3_CONFIG_8(LC3_CONFIG_DURATION_10, 30u)
+
+#define LC3_CONFIG_16_1 \
+ LC3_CONFIG_16(LC3_CONFIG_DURATION_7_5, 30u)
+
+#define LC3_CONFIG_16_2 \
+ LC3_CONFIG_16(LC3_CONFIG_DURATION_10, 40u)
+
+#define LC3_CONFIG_24_1 \
+ LC3_CONFIG_24(LC3_CONFIG_DURATION_7_5, 45u)
+
+#define LC3_CONFIG_24_2 \
+ LC3_CONFIG_24(LC3_CONFIG_DURATION_10, 60u)
+
+#define LC3_CONFIG_32_1 \
+ LC3_CONFIG_32(LC3_CONFIG_DURATION_7_5, 60u)
+
+#define LC3_CONFIG_32_2 \
+ LC3_CONFIG_32(LC3_CONFIG_DURATION_10, 80u)
+
+#define LC3_CONFIG_44_1 \
+ LC3_CONFIG_44(LC3_CONFIG_DURATION_7_5, 98u)
+
+#define LC3_CONFIG_44_2 \
+ LC3_CONFIG_44(LC3_CONFIG_DURATION_10, 130u)
+
+#define LC3_CONFIG_48_1 \
+ LC3_CONFIG_48(LC3_CONFIG_DURATION_7_5, 75u)
+
+#define LC3_CONFIG_48_2 \
+ LC3_CONFIG_48(LC3_CONFIG_DURATION_10, 100u)
+
+#define LC3_CONFIG_48_3 \
+ LC3_CONFIG_48(LC3_CONFIG_DURATION_7_5, 90u)
+
+#define LC3_CONFIG_48_4 \
+ LC3_CONFIG_48(LC3_CONFIG_DURATION_10, 120u)
+
+#define LC3_CONFIG_48_5 \
+ LC3_CONFIG_48(LC3_CONFIG_DURATION_7_5, 117u)
+
+#define LC3_CONFIG_48_6 \
+ LC3_CONFIG_48(LC3_CONFIG_DURATION_10, 155u)