zaphyra's git: airpodsctl

Control and monitor your AirPods

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
package main

import (
	"git.zaphyra.eu/airpodsctl/types"
)

var AACPHandshakePacket = []byte{0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
var AACPRequestNotificationPacket = []byte{0x04, 0x00, 0x04, 0x00, 0x0F, 0x00, 0xFF, 0xFF, 0xFE, 0xFF}
var AACPControlCommandPacket = []byte{0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}

var AACPControlCommandListeningMode = map[types.ANCMode]byte{
	types.ANCModeOff:          0x01,
	types.ANCModeOn:           0x02,
	types.ANCModeTransparency: 0x03,
	types.ANCModeAdaptive:     0x04,
}

var AACPControlCommandBool = map[bool]byte{
	true:  0x01,
	false: 0x02,
}

var AACPControlCommand = map[string]byte{
	"MicMode":                   0x01, // ??
	"ButtonSendMode":            0x05, // ??
	"VoiceTriggerSiri":          0x12, // ??
	"SingleClickMode":           0x14, // ??
	"DoubleClickMode":           0x15, // ??
	"ClickHoldMode":             0x16, // two values, First byte = right bud, Second byte = left bud: 0x01 = Noise control 0x05 = Siri
	"DoubleClickInterval":       0x17, // single value: 0x00 = Default, 0x01 = Slower, 0x02 = Slowest
	"ClickHoldInterval":         0x18, // single value: 0x00 = Default, 0x01 = Slower, 0x02 = Slowest
	"ListeningModeConfigs":      0x1A, // single value: bitwise OR of the selected modes. Off mode = 0x01, ANC=0x02, Transparency = 0x04, Adaptive = 0x08
	"OneBudANCMode":             0x1B, // single value: 0x01 = enabled, 0x02 = disabled
	"CrownRotationDirection":    0x1C, // single value: 0x01 = reversed, 0x02 = default
	"ListeningMode":             0x0D, // single value: 0x01 = Off, 0x02 = ANC, 0x03 = Transparency, 0x04 = Adaptive
	"AutoAnswerMode":            0x1E, // ??
	"ChimeVolume":               0x1F, // single value: 0 -> 100
	"VolumeSwipeInterval":       0x23, // single value: 0x00 = Default, 0x01 = Longer, 0x02 = Longest
	"CallManagementConfig":      0x24, // ??
	"VolumeSwipeConfig":         0x25, // single value: 0x01 = enabled, 0x02 = disabled
	"AdaptiveVolumeConfig":      0x26, // single value: 0x01 = enabled, 0x02 = disabled
	"SoftwareMuteConfig":        0x27, // ??
	"ConversationDetectConfig":  0x28, // single value: 0x01 = enabled, 0x02 = disabled
	"SSL":                       0x29, // ??
	"HearingAidEnrolledEnabled": 0x2C, // two values, First byte - enrolled, Second byte = enabled): 0x01 = enabled, 0x02 = disabled
	"AutoANCStrength":           0x2E, // single value: 0 -> 100
	"HPSGainSwipe":              0x2F, // ??
	"HRMState":                  0x30, // ??
	"InCaseToneConfig":          0x31, // single value: 0x01 = enabled, 0x02 = disabled
	"SiriMultitoneConfig":       0x32, // ??
	"HearingAssistConfig":       0x33, // single value: 0x01 = enabled, 0x02 = disabled
	"AllowANCOffConfig":         0x34, // single value: 0x01 = enabled, 0x02 = disabled
}