mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Refactor some names in continuity lib
This commit is contained in:
@@ -8,194 +8,194 @@
|
||||
|
||||
typedef struct {
|
||||
const char* title;
|
||||
ContinuityMessage msg;
|
||||
ContinuityMsg msg;
|
||||
} Payload;
|
||||
|
||||
// Hacked together by @Willy-JL
|
||||
// Structures docs and Nearby Action IDs from https://github.com/furiousMAC/continuity/
|
||||
// Proximity Pairing 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/
|
||||
|
||||
static const Payload payloads[] = {
|
||||
{.title = "AirPods Pro",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0E20}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0E20}},
|
||||
}},
|
||||
{.title = "PowerBeats",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0320}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0320}},
|
||||
}},
|
||||
{.title = "Airtag",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0055}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0055}},
|
||||
}},
|
||||
{.title = "Setup New Phone",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x09}},
|
||||
.data = {.nearby_action = {.type = 0x09}},
|
||||
}},
|
||||
{.title = "Transfer Number",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x02}},
|
||||
.data = {.nearby_action = {.type = 0x02}},
|
||||
}},
|
||||
{.title = "AppleTV AutoFill",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x13}},
|
||||
.data = {.nearby_action = {.type = 0x13}},
|
||||
}},
|
||||
{.title = "AppleTV Pair",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x06}},
|
||||
.data = {.nearby_action = {.type = 0x06}},
|
||||
}},
|
||||
{.title = "HomePod Setup",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x0B}},
|
||||
.data = {.nearby_action = {.type = 0x0B}},
|
||||
}},
|
||||
{.title = "AirPods",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0220}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0220}},
|
||||
}},
|
||||
{.title = "AirPods Max",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0A20}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0A20}},
|
||||
}},
|
||||
{.title = "AirPods Gen 2",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0F20}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0F20}},
|
||||
}},
|
||||
{.title = "AirPods Gen 3",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1320}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1320}},
|
||||
}},
|
||||
{.title = "AirPods Pro Gen 2",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1420}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1420}},
|
||||
}},
|
||||
{.title = "PowerBeats Pro",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0B20}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0B20}},
|
||||
}},
|
||||
{.title = "Beats Solo Pro",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0C20}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0C20}},
|
||||
}},
|
||||
{.title = "Beats Studio Buds",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1120}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1120}},
|
||||
}},
|
||||
{.title = "Beats Flex",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1020}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1020}},
|
||||
}},
|
||||
{.title = "Beats X",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0520}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0520}},
|
||||
}},
|
||||
{.title = "Beats Solo 3",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0620}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0620}},
|
||||
}},
|
||||
{.title = "Beats Studio 3",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x0920}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x0920}},
|
||||
}},
|
||||
{.title = "Beats Studio Pro",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1720}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1720}},
|
||||
}},
|
||||
{.title = "Beats Fit Pro",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1220}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1220}},
|
||||
}},
|
||||
{.title = "Beats Studio Buds+",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeProximityPairing,
|
||||
.data = {.proximity_pairing = {.device_model = 0x1620}},
|
||||
.type = ContinuityTypeProximityPair,
|
||||
.data = {.proximity_pair = {.model = 0x1620}},
|
||||
}},
|
||||
{.title = "AppleTV Setup",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x01}},
|
||||
.data = {.nearby_action = {.type = 0x01}},
|
||||
}},
|
||||
{.title = "AppleTV Homekit Setup",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x0D}},
|
||||
.data = {.nearby_action = {.type = 0x0D}},
|
||||
}},
|
||||
{.title = "AppleTV New User",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x20}},
|
||||
.data = {.nearby_action = {.type = 0x20}},
|
||||
}},
|
||||
{.title = "AppleTV AppleID Setup",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x2B}},
|
||||
.data = {.nearby_action = {.type = 0x2B}},
|
||||
}},
|
||||
{.title = "AppleTV Audio Sync",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x19}},
|
||||
.data = {.nearby_action = {.type = 0x19}},
|
||||
}},
|
||||
{.title = "AppleTV Network",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x27}},
|
||||
.data = {.nearby_action = {.type = 0x27}},
|
||||
}},
|
||||
{.title = "TV Color Balance",
|
||||
.msg =
|
||||
{
|
||||
.type = ContinuityTypeNearbyAction,
|
||||
.data = {.nearby_action = {.action_type = 0x13}},
|
||||
.data = {.nearby_action = {.type = 0x13}},
|
||||
}},
|
||||
};
|
||||
|
||||
@@ -204,7 +204,7 @@ typedef struct {
|
||||
size_t delay;
|
||||
size_t size;
|
||||
uint8_t* packet;
|
||||
const ContinuityMessage* msg;
|
||||
const ContinuityMsg* msg;
|
||||
FuriThread* thread;
|
||||
size_t index;
|
||||
} State;
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
// Hacked together by @Willy-JL
|
||||
// Structures docs and Nearby Action IDs from https://github.com/furiousMAC/continuity/
|
||||
// Proximity Pairing 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/
|
||||
|
||||
static const char* continuity_type_names[ContinuityTypeCount] = {
|
||||
[ContinuityTypeNearbyAction] = "Nearby Action",
|
||||
[ContinuityTypeProximityPairing] = "Proximity Pairing",
|
||||
[ContinuityTypeProximityPair] = "Proximity Pair",
|
||||
};
|
||||
const char* continuity_get_type_name(ContinuityType type) {
|
||||
return continuity_type_names[type];
|
||||
@@ -16,13 +16,13 @@ const char* continuity_get_type_name(ContinuityType type) {
|
||||
|
||||
static size_t continuity_packet_sizes[ContinuityTypeCount] = {
|
||||
[ContinuityTypeNearbyAction] = 23,
|
||||
[ContinuityTypeProximityPairing] = 31,
|
||||
[ContinuityTypeProximityPair] = 31,
|
||||
};
|
||||
size_t continuity_get_packet_size(ContinuityType type) {
|
||||
return continuity_packet_sizes[type];
|
||||
}
|
||||
|
||||
void continuity_generate_packet(const ContinuityMessage* msg, uint8_t* packet) {
|
||||
void continuity_generate_packet(const ContinuityMsg* msg, uint8_t* packet) {
|
||||
size_t i = 0;
|
||||
packet[i++] = continuity_get_packet_size(msg->type) - 1;
|
||||
packet[i++] = 0xff;
|
||||
@@ -39,7 +39,7 @@ void continuity_generate_packet(const ContinuityMessage* msg, uint8_t* packet) {
|
||||
packet[i++] = 0x0f; // Type (Nearby Action)
|
||||
packet[i++] = 0x05; // Length
|
||||
packet[i++] = 0xc1; // Action Flags
|
||||
packet[i++] = msg->data.nearby_action.action_type;
|
||||
packet[i++] = msg->data.nearby_action.type;
|
||||
packet[i++] = (rand() % 256); // Authentication Tag
|
||||
packet[i++] = (rand() % 256); // ...
|
||||
packet[i++] = (rand() % 256); // ...
|
||||
@@ -50,12 +50,12 @@ void continuity_generate_packet(const ContinuityMessage* msg, uint8_t* packet) {
|
||||
packet[i++] = (rand() % 256); // ...
|
||||
packet[i++] = (rand() % 256); // ...
|
||||
break;
|
||||
case ContinuityTypeProximityPairing:
|
||||
packet[i++] = 0x07; // Type (Proximity Pairing)
|
||||
case ContinuityTypeProximityPair:
|
||||
packet[i++] = 0x07; // Type (Proximity Pair)
|
||||
packet[i++] = 0x19; // Length
|
||||
packet[i++] = 0x01;
|
||||
packet[i++] = msg->data.proximity_pairing.device_model >> 8;
|
||||
packet[i++] = msg->data.proximity_pairing.device_model & 0xFF;
|
||||
packet[i++] = msg->data.proximity_pair.model >> 8;
|
||||
packet[i++] = msg->data.proximity_pair.model & 0xFF;
|
||||
packet[i++] = 0x55; // Status
|
||||
packet[i++] = ((rand() % 10) << 4) + (rand() % 10); // Buds Battery Level
|
||||
packet[i++] = ((rand() % 8) << 4) + (rand() % 10); // Charing Status and Battery Case Level
|
||||
|
||||
@@ -5,31 +5,31 @@
|
||||
|
||||
// Hacked together by @Willy-JL
|
||||
// Structures docs and Nearby Action IDs from https://github.com/furiousMAC/continuity/
|
||||
// Proximity Pairing 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/
|
||||
|
||||
typedef enum {
|
||||
ContinuityTypeNearbyAction,
|
||||
ContinuityTypeProximityPairing,
|
||||
ContinuityTypeProximityPair,
|
||||
ContinuityTypeCount
|
||||
} ContinuityType;
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
uint8_t action_type;
|
||||
uint8_t type;
|
||||
} nearby_action;
|
||||
struct {
|
||||
uint16_t device_model;
|
||||
} proximity_pairing;
|
||||
uint16_t model;
|
||||
} proximity_pair;
|
||||
} ContinuityData;
|
||||
|
||||
typedef struct {
|
||||
ContinuityType type;
|
||||
ContinuityData data;
|
||||
} ContinuityMessage;
|
||||
} ContinuityMsg;
|
||||
|
||||
const char* continuity_get_type_name(ContinuityType type);
|
||||
|
||||
size_t continuity_get_packet_size(ContinuityType type);
|
||||
|
||||
void continuity_generate_packet(const ContinuityMessage* msg, uint8_t* packet);
|
||||
void continuity_generate_packet(const ContinuityMsg* msg, uint8_t* packet);
|
||||
|
||||
Reference in New Issue
Block a user