mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-16 04:24:45 -07:00
Add flags parameter to nearby actions
This commit is contained in:
@@ -18,9 +18,7 @@ typedef struct {
|
|||||||
// Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/
|
// Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/
|
||||||
// Custom adv logic and Airtag ID from https://techryptic.github.io/2023/09/01/Annoying-Apple-Fans/
|
// Custom adv logic and Airtag ID from https://techryptic.github.io/2023/09/01/Annoying-Apple-Fans/
|
||||||
|
|
||||||
static Payload
|
static Payload payloads[] = {
|
||||||
payloads[] =
|
|
||||||
{
|
|
||||||
#if false
|
#if false
|
||||||
{.title = "AirDrop",
|
{.title = "AirDrop",
|
||||||
.text = "",
|
.text = "",
|
||||||
@@ -55,270 +53,270 @@ static Payload
|
|||||||
.data = {.tethering_source = {}},
|
.data = {.tethering_source = {}},
|
||||||
}},
|
}},
|
||||||
#endif
|
#endif
|
||||||
{.title = "Random Pair",
|
{.title = "Random Pair",
|
||||||
.text = "Spam shuffle Proximity Pairs",
|
.text = "Spam shuffle Proximity Pairs",
|
||||||
.random = true,
|
.random = true,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x00, .model = 0x0000}},
|
.data = {.proximity_pair = {.prefix = 0x00, .model = 0x0000}},
|
||||||
}},
|
}},
|
||||||
{.title = "Random Action",
|
{.title = "Random Action",
|
||||||
.text = "Spam shuffle Nearby Actions",
|
.text = "Spam shuffle Nearby Actions",
|
||||||
.random = true,
|
.random = true,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x00}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x00}},
|
||||||
}},
|
}},
|
||||||
{.title = "AirPods Pro",
|
{.title = "AirPods Pro",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0E20}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0E20}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Solo 3",
|
{.title = "Beats Solo 3",
|
||||||
.text = "Modal, spammy (stays open)",
|
.text = "Modal, spammy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0620}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0620}},
|
||||||
}},
|
}},
|
||||||
{.title = "AirPods Max",
|
{.title = "AirPods Max",
|
||||||
.text = "Modal, laggy (stays open)",
|
.text = "Modal, laggy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0A20}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0A20}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Flex",
|
{.title = "Beats Flex",
|
||||||
.text = "Modal, laggy (stays open)",
|
.text = "Modal, laggy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1020}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1020}},
|
||||||
}},
|
}},
|
||||||
{.title = "Airtag",
|
{.title = "Airtag",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x05, .model = 0x0055}},
|
.data = {.proximity_pair = {.prefix = 0x05, .model = 0x0055}},
|
||||||
}},
|
}},
|
||||||
{.title = "Hermes Airtag",
|
{.title = "Hermes Airtag",
|
||||||
.text = "",
|
.text = "",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x05, .model = 0x0030}},
|
.data = {.proximity_pair = {.prefix = 0x05, .model = 0x0030}},
|
||||||
}},
|
}},
|
||||||
{.title = "AppleTV AutoFill",
|
{.title = "AppleTV AutoFill",
|
||||||
.text = "Banner, unlocked, long range",
|
.text = "Banner, unlocked, long range",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x13}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x13}},
|
||||||
}},
|
}},
|
||||||
{.title = "AppleTV Connecting...",
|
{.title = "AppleTV Connecting...",
|
||||||
.text = "Modal, unlocked, long range",
|
.text = "Modal, unlocked, long range",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x27}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x27}},
|
||||||
}},
|
}},
|
||||||
{.title = "AppleTV Audio Sync",
|
{.title = "AppleTV Audio Sync",
|
||||||
.text = "Banner, locked, long range",
|
.text = "Banner, locked, long range",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x19}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x19}},
|
||||||
}},
|
}},
|
||||||
{.title = "AppleTV Color Balance",
|
{.title = "AppleTV Color Balance",
|
||||||
.text = "Banner, locked",
|
.text = "Banner, locked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x1E}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x1E}},
|
||||||
}},
|
}},
|
||||||
{.title = "Setup New iPhone",
|
{.title = "Setup New iPhone",
|
||||||
.text = "Modal, locked",
|
.text = "Modal, locked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x09}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x09}},
|
||||||
}},
|
}},
|
||||||
{.title = "Transfer Phone Number",
|
{.title = "Transfer Phone Number",
|
||||||
.text = "Modal, locked",
|
.text = "Modal, locked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x02}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x02}},
|
||||||
}},
|
}},
|
||||||
{.title = "Pair AppleTV",
|
{.title = "Pair AppleTV",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x06}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x06}},
|
||||||
}},
|
}},
|
||||||
{.title = "HomePod Setup",
|
{.title = "HomePod Setup",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x0B}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x0B}},
|
||||||
}},
|
}},
|
||||||
{.title = "AirPods",
|
{.title = "AirPods",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0220}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0220}},
|
||||||
}},
|
}},
|
||||||
{.title = "AirPods 2nd Gen",
|
{.title = "AirPods 2nd Gen",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0F20}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0F20}},
|
||||||
}},
|
}},
|
||||||
{.title = "AirPods 3rd Gen",
|
{.title = "AirPods 3rd Gen",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1320}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1320}},
|
||||||
}},
|
}},
|
||||||
{.title = "AirPods Pro 2nd Gen",
|
{.title = "AirPods Pro 2nd Gen",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1420}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1420}},
|
||||||
}},
|
}},
|
||||||
{.title = "Powerbeats 3",
|
{.title = "Powerbeats 3",
|
||||||
.text = "Modal, spammy (stays open)",
|
.text = "Modal, spammy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0320}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0320}},
|
||||||
}},
|
}},
|
||||||
{.title = "Powerbeats Pro",
|
{.title = "Powerbeats Pro",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0B20}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0B20}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Solo Pro",
|
{.title = "Beats Solo Pro",
|
||||||
.text = "",
|
.text = "",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0C20}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0C20}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Studio Buds",
|
{.title = "Beats Studio Buds",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1120}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1120}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats X",
|
{.title = "Beats X",
|
||||||
.text = "Modal, spammy (stays open)",
|
.text = "Modal, spammy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0520}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0520}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Studio 3",
|
{.title = "Beats Studio 3",
|
||||||
.text = "Modal, spammy (stays open)",
|
.text = "Modal, spammy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0920}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0920}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Studio Pro",
|
{.title = "Beats Studio Pro",
|
||||||
.text = "Modal, spammy (stays open)",
|
.text = "Modal, spammy (stays open)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1720}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1720}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Fit Pro",
|
{.title = "Beats Fit Pro",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1220}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1220}},
|
||||||
}},
|
}},
|
||||||
{.title = "Beats Studio Buds+",
|
{.title = "Beats Studio Buds+",
|
||||||
.text = "Modal, spammy (auto close)",
|
.text = "Modal, spammy (auto close)",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeProximityPair,
|
.type = ContinuityTypeProximityPair,
|
||||||
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1620}},
|
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1620}},
|
||||||
}},
|
}},
|
||||||
{.title = "Setup New AppleTV",
|
{.title = "Setup New AppleTV",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x01}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x01}},
|
||||||
}},
|
}},
|
||||||
{.title = "HomeKit AppleTV Setup",
|
{.title = "HomeKit AppleTV Setup",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x0D}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x0D}},
|
||||||
}},
|
}},
|
||||||
{.title = "Join This AppleTV?",
|
{.title = "Join This AppleTV?",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x20}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x20}},
|
||||||
}},
|
}},
|
||||||
{.title = "AppleID for AppleTV?",
|
{.title = "AppleID for AppleTV?",
|
||||||
.text = "Modal, unlocked",
|
.text = "Modal, unlocked",
|
||||||
.random = false,
|
.random = false,
|
||||||
.msg =
|
.msg =
|
||||||
{
|
{
|
||||||
.type = ContinuityTypeNearbyAction,
|
.type = ContinuityTypeNearbyAction,
|
||||||
.data = {.nearby_action = {.type = 0x2B}},
|
.data = {.nearby_action = {.flags = 0xC0, .type = 0x2B}},
|
||||||
}},
|
}},
|
||||||
};
|
};
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ void continuity_generate_packet(const ContinuityMsg* msg, uint8_t* packet) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ContinuityTypeNearbyAction:
|
case ContinuityTypeNearbyAction:
|
||||||
packet[i++] = 0xc1; // Action Flags
|
packet[i++] = msg->data.nearby_action.flags; // Action Flags
|
||||||
packet[i++] = msg->data.nearby_action.type;
|
packet[i++] = msg->data.nearby_action.type;
|
||||||
packet[i++] = (rand() % 256); // Authentication Tag
|
packet[i++] = (rand() % 256); // Authentication Tag
|
||||||
packet[i++] = (rand() % 256); // ...
|
packet[i++] = (rand() % 256); // ...
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ typedef union {
|
|||||||
struct {
|
struct {
|
||||||
} tethering_source;
|
} tethering_source;
|
||||||
struct {
|
struct {
|
||||||
|
uint8_t flags;
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
} nearby_action;
|
} nearby_action;
|
||||||
} ContinuityData;
|
} ContinuityData;
|
||||||
|
|||||||
Reference in New Issue
Block a user