|
16 | 16 | * along with this program. If not, see <https://www.gnu.org/licenses/>. |
17 | 17 | */ |
18 | 18 |
|
19 | | - |
20 | | -@file:Suppress("unused") |
21 | | - |
22 | | -package me.kavishdevar.librepods.utils |
| 19 | +package me.kavishdevar.librepods.constants |
23 | 20 |
|
24 | 21 | import android.os.Parcelable |
25 | 22 | import android.util.Log |
26 | 23 | import kotlinx.parcelize.Parcelize |
27 | 24 |
|
28 | 25 | enum class Enums(val value: ByteArray) { |
29 | 26 | NOISE_CANCELLATION(Capabilities.NOISE_CANCELLATION), |
30 | | - CONVERSATION_AWARENESS(Capabilities.CONVERSATION_AWARENESS), |
31 | | - CUSTOMIZABLE_ADAPTIVE_TRANSPARENCY(Capabilities.CUSTOMIZABLE_ADAPTIVE_TRANSPARENCY), |
32 | 27 | PREFIX(byteArrayOf(0x04, 0x00, 0x04, 0x00)), |
33 | 28 | SETTINGS(byteArrayOf(0x09, 0x00)), |
34 | | - SUFFIX(byteArrayOf(0x00, 0x00, 0x00)), |
35 | | - NOTIFICATION_FILTER(byteArrayOf(0x0f)), |
36 | | - HANDSHAKE(byteArrayOf(0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)), |
37 | | - SPECIFIC_FEATURES(byteArrayOf(0x4d)), |
38 | | - SET_SPECIFIC_FEATURES(PREFIX.value + SPECIFIC_FEATURES.value + byteArrayOf(0x00, |
39 | | - 0xff.toByte(), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)), |
40 | | - REQUEST_NOTIFICATIONS(PREFIX.value + NOTIFICATION_FILTER.value + byteArrayOf(0x00, 0xff.toByte(), 0xff.toByte(), 0xff.toByte(), 0xff.toByte())), |
41 | 29 | NOISE_CANCELLATION_PREFIX(PREFIX.value + SETTINGS.value + NOISE_CANCELLATION.value), |
42 | | - NOISE_CANCELLATION_OFF(NOISE_CANCELLATION_PREFIX.value + Capabilities.NoiseCancellation.OFF.value + SUFFIX.value), |
43 | | - NOISE_CANCELLATION_ON(NOISE_CANCELLATION_PREFIX.value + Capabilities.NoiseCancellation.ON.value + SUFFIX.value), |
44 | | - NOISE_CANCELLATION_TRANSPARENCY(NOISE_CANCELLATION_PREFIX.value + Capabilities.NoiseCancellation.TRANSPARENCY.value + SUFFIX.value), |
45 | | - NOISE_CANCELLATION_ADAPTIVE(NOISE_CANCELLATION_PREFIX.value + Capabilities.NoiseCancellation.ADAPTIVE.value + SUFFIX.value), |
46 | | - SET_CONVERSATION_AWARENESS_OFF(PREFIX.value + SETTINGS.value + CONVERSATION_AWARENESS.value + Capabilities.ConversationAwareness.OFF.value + SUFFIX.value), |
47 | | - SET_CONVERSATION_AWARENESS_ON(PREFIX.value + SETTINGS.value + CONVERSATION_AWARENESS.value + Capabilities.ConversationAwareness.ON.value + SUFFIX.value), |
48 | 30 | CONVERSATION_AWARENESS_RECEIVE_PREFIX(PREFIX.value + byteArrayOf(0x4b, 0x00, 0x02, 0x00)), |
49 | | - START_HEAD_TRACKING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0xA1.toByte(), 0x02, 0x42, 0x0B, 0x08, 0x0E, 0x10, 0x02, 0x1A, 0x05, 0x01, 0x40, 0x9C.toByte(), 0x00, 0x00)), |
50 | | - STOP_HEAD_TRACKING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x10, 0x00, 0x11, 0x00, 0x08, 0x7E.toByte(), 0x10, 0x02, 0x42, 0x0B, 0x08, 0x4E.toByte(), 0x10, 0x02, 0x1A, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00)); |
51 | 31 | } |
52 | 32 |
|
53 | 33 | object BatteryComponent { |
@@ -156,7 +136,7 @@ class AirPodsNotifications { |
156 | 136 | } |
157 | 137 |
|
158 | 138 | val name: String = |
159 | | - when (status) { |
| 139 | + when (status) { |
160 | 140 | 1 -> "OFF" |
161 | 141 | 2 -> "ON" |
162 | 142 | 3 -> "TRANSPARENCY" |
@@ -251,103 +231,10 @@ class AirPodsNotifications { |
251 | 231 | class Capabilities { |
252 | 232 | companion object { |
253 | 233 | val NOISE_CANCELLATION = byteArrayOf(0x0d) |
254 | | - val CONVERSATION_AWARENESS = byteArrayOf(0x28) |
255 | | - val CUSTOMIZABLE_ADAPTIVE_TRANSPARENCY = byteArrayOf(0x01, 0x02) |
256 | 234 | val EAR_DETECTION = byteArrayOf(0x06) |
257 | 235 | } |
258 | | - |
259 | | - enum class NoiseCancellation(val value: ByteArray) { |
260 | | - OFF(byteArrayOf(0x01)), |
261 | | - ON(byteArrayOf(0x02)), |
262 | | - TRANSPARENCY(byteArrayOf(0x03)), |
263 | | - ADAPTIVE(byteArrayOf(0x04)); |
264 | | - } |
265 | | - |
266 | | - enum class ConversationAwareness(val value: ByteArray) { |
267 | | - OFF(byteArrayOf(0x02)), |
268 | | - ON(byteArrayOf(0x01)); |
269 | | - } |
270 | | -} |
271 | | - |
272 | | -enum class LongPressPackets(val value: ByteArray) { |
273 | | - ENABLE_EVERYTHING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0F, 0x00, 0x00, 0x00)), |
274 | | - |
275 | | - DISABLE_OFF_FROM_EVERYTHING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0e, 0x00, 0x00, 0x00)), |
276 | | - DISABLE_OFF_FROM_TRANSPARENCY_AND_ADAPTIVE(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0c, 0x00, 0x00, 0x00)), |
277 | | - DISABLE_OFF_FROM_TRANSPARENCY_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x00)), |
278 | | - DISABLE_OFF_FROM_ADAPTIVE_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0a, 0x00, 0x00, 0x00)), |
279 | | - |
280 | | - ENABLE_OFF_FROM_TRANSPARENCY_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x00)), |
281 | | - ENABLE_OFF_FROM_ADAPTIVE_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0b, 0x00, 0x00, 0x00)), |
282 | | - ENABLE_OFF_FROM_TRANSPARENCY_AND_ADAPTIVE(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0d, 0x00, 0x00, 0x00)), |
283 | | - |
284 | | - DISABLE_TRANSPARENCY_FROM_EVERYTHING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0b, 0x00, 0x00, 0x00)), |
285 | | - DISABLE_TRANSPARENCY_FROM_OFF_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x00)), |
286 | | - DISABLE_TRANSPARENCY_FROM_ADAPTIVE_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0a, 0x00, 0x00, 0x00)), |
287 | | - DISABLE_TRANSPARENCY_FROM_OFF_AND_ADAPTIVE(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x09, 0x00, 0x00, 0x00)), |
288 | | - |
289 | | - ENABLE_TRANSPARENCY_FROM_OFF_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x00)), |
290 | | - ENABLE_TRANSPARENCY_FROM_ADAPTIVE_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0e, 0x00, 0x00, 0x00)), |
291 | | - ENABLE_TRANSPARENCY_FROM_OFF_AND_ADAPTIVE(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0d, 0x00, 0x00, 0x00)), |
292 | | - |
293 | | - DISABLE_ANC_FROM_EVERYTHING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x00)), |
294 | | - DISABLE_ANC_FROM_OFF_AND_TRANSPARENCY(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x00)), |
295 | | - DISABLE_ANC_FROM_ADAPTIVE_AND_TRANSPARENCY(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0c, 0x00, 0x00, 0x00)), |
296 | | - DISABLE_ANC_FROM_OFF_AND_ADAPTIVE(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x09, 0x00, 0x00, 0x00)), |
297 | | - |
298 | | - ENABLE_ANC_FROM_OFF_AND_TRANSPARENCY(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x00)), |
299 | | - ENABLE_ANC_FROM_ADAPTIVE_AND_TRANSPARENCY(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0e, 0x00, 0x00, 0x00)), |
300 | | - ENABLE_ANC_FROM_OFF_AND_ADAPTIVE(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0b, 0x00, 0x00, 0x00)), |
301 | | - |
302 | | - DISABLE_ADAPTIVE_FROM_EVERYTHING(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x00)), |
303 | | - DISABLE_ADAPTIVE_FROM_OFF_AND_TRANSPARENCY(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x00)), |
304 | | - DISABLE_ADAPTIVE_FROM_TRANSPARENCY_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x00)), |
305 | | - DISABLE_ADAPTIVE_FROM_OFF_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x00)), |
306 | | - |
307 | | - ENABLE_ADAPTIVE_FROM_OFF_AND_TRANSPARENCY(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0d, 0x00, 0x00, 0x00)), |
308 | | - ENABLE_ADAPTIVE_FROM_TRANSPARENCY_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0e, 0x00, 0x00, 0x00)), |
309 | | - ENABLE_ADAPTIVE_FROM_OFF_AND_ANC(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0b, 0x00, 0x00, 0x00)), |
310 | | - |
311 | | - ENABLE_EVERYTHING_OFF_DISABLED(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x00)), |
312 | | - DISABLE_TRANSPARENCY_OFF_DISABLED(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x00)), |
313 | | - DISABLE_ADAPTIVE_OFF_DISABLED(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x00)), |
314 | | - DISABLE_ANC_OFF_DISABLED(byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A, 0x0C, 0x00, 0x00, 0x00)), |
315 | 236 | } |
316 | 237 |
|
317 | | -//enum class LongPressMode { |
318 | | -// OFF, TRANSPARENCY, ADAPTIVE, ANC |
319 | | -//} |
320 | | -// |
321 | | -//data class LongPressPacket(val modes: Set<LongPressMode>) { |
322 | | -// val value: ByteArray |
323 | | -// get() { |
324 | | -// val baseArray = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1A) |
325 | | -// val modeByte = calculateModeByte() |
326 | | -// return baseArray + byteArrayOf(modeByte, 0x00, 0x00, 0x00) |
327 | | -// } |
328 | | -// |
329 | | -// private fun calculateModeByte(): Byte { |
330 | | -// var modeByte: Byte = 0x00 |
331 | | -// modes.forEach { mode -> |
332 | | -// modeByte = when (mode) { |
333 | | -// LongPressMode.OFF -> (modeByte + 0x01).toByte() |
334 | | -// LongPressMode.TRANSPARENCY -> (modeByte + 0x02).toByte() |
335 | | -// LongPressMode.ADAPTIVE -> (modeByte + 0x04).toByte() |
336 | | -// LongPressMode.ANC -> (modeByte + 0x08).toByte() |
337 | | -// } |
338 | | -// } |
339 | | -// return modeByte |
340 | | -// } |
341 | | -//} |
342 | | -// |
343 | | -//fun determinePacket(changedIndex: Int, newEnabled: Boolean, oldModes: Set<LongPressMode>, newModes: Set<LongPressMode>): ByteArray? { |
344 | | -// return if (newEnabled) { |
345 | | -// LongPressPacket(oldModes + newModes.elementAt(changedIndex)).value |
346 | | -// } else { |
347 | | -// LongPressPacket(oldModes - newModes.elementAt(changedIndex)).value |
348 | | -// } |
349 | | -//} |
350 | | - |
351 | 238 | fun isHeadTrackingData(data: ByteArray): Boolean { |
352 | 239 | if (data.size <= 60) return false |
353 | 240 |
|
|
0 commit comments