PebbleOS v4.45.0-179-g439c45a48
Loading...
Searching...
No Matches
Wire protocol

Pebble protocol message framing, endpoint IDs and capabilities. More...

Data Structures

struct  pbl_pp_header
 Message header, big endian on the wire. More...
 
struct  pbl_pp_capabilities
 Capabilities as sent by the phone, bit for bit as pbl_pp_capability. More...
 
union  pbl_pp_capabilities.__unnamed39__
 
struct  pbl_pp_capabilities.__unnamed39__.__unnamed41__
 

Macros

#define PBL_PP_MAX_INBOUND_PAYLOAD_PRIVATE   2044
 Largest inbound payload accepted from the Pebble mobile app.
 
#define PBL_PP_MAX_INBOUND_PAYLOAD_PUBLIC   144
 Largest inbound payload accepted from third party phone apps.
 
#define PBL_PP_MAX_OUTBOUND_PAYLOAD   656
 Largest outbound payload the phone accepts.
 
#define PBL_PP_REMOTE_OS_MASK   0x7U
 Bits of the reported platform bitfield that hold a pbl_pp_remote_os.
 

Enumerations

enum  pbl_pp_capability : uint32_t {
  PBL_PP_CAP_RUN_STATE = 1U << 0 , PBL_PP_CAP_INFINITE_LOG_DUMPING = 1U << 1 , PBL_PP_CAP_EXTENDED_MUSIC = 1U << 2 , PBL_PP_CAP_EXTENDED_NOTIFICATIONS = 1U << 3 ,
  PBL_PP_CAP_LANGUAGE_PACK = 1U << 4 , PBL_PP_CAP_APP_MESSAGE_8K = 1U << 5 , PBL_PP_CAP_ACTIVITY_INSIGHTS = 1U << 6 , PBL_PP_CAP_VOICE_API = 1U << 7 ,
  PBL_PP_CAP_SEND_TEXT = 1U << 8 , PBL_PP_CAP_NOTIFICATION_FILTERING = 1U << 9 , PBL_PP_CAP_UNREAD_COREDUMP = 1U << 10 , PBL_PP_CAP_WEATHER_APP = 1U << 11 ,
  PBL_PP_CAP_REMINDERS_APP = 1U << 12 , PBL_PP_CAP_WORKOUT_APP = 1U << 13 , PBL_PP_CAP_SMOOTH_FW_INSTALL_PROGRESS = 1U << 14 , PBL_PP_CAP_IMAGING = 1U << 17 ,
  PBL_PP_CAP_SETTINGS_SYNC = 1U << 23 , PBL_PP_CAP_NOTIFICATION_WINDOW_STATE = 1U << 26
}
 Protocol capabilities announced by the phone, one bit each. More...
 
enum  pbl_pp_remote_os : uint8_t {
  PBL_PP_REMOTE_OS_UNKNOWN = 0 , PBL_PP_REMOTE_OS_IOS = 1 , PBL_PP_REMOTE_OS_ANDROID = 2 , PBL_PP_REMOTE_OS_OSX = 3 ,
  PBL_PP_REMOTE_OS_LINUX = 4 , PBL_PP_REMOTE_OS_WINDOWS = 5
}
 Operating system of the phone, as reported by the Pebble mobile app. More...
 

Endpoint IDs

Written as four hex digits: PBL_PP_ENDPOINT_DEFINE() turns the ID into a symbol name, so that defining an endpoint twice fails to link.

#define PBL_PP_ENDPOINT_META   0x0000
 
#define PBL_PP_ENDPOINT_CLOCK   0x000b
 
#define PBL_PP_ENDPOINT_SYSTEM_VERSION   0x0010
 
#define PBL_PP_ENDPOINT_REMOTE_VERSION   0x0011
 
#define PBL_PP_ENDPOINT_SYSTEM_MESSAGE   0x0012
 
#define PBL_PP_ENDPOINT_MUSIC   0x0020
 
#define PBL_PP_ENDPOINT_PHONE   0x0021
 
#define PBL_PP_ENDPOINT_APP_MESSAGE   0x0030
 
#define PBL_PP_ENDPOINT_LAUNCHER_APP_MESSAGE   0x0031
 
#define PBL_PP_ENDPOINT_APP_CUSTOMIZE   0x0032
 
#define PBL_PP_ENDPOINT_BLE_CONTROL   0x0033
 
#define PBL_PP_ENDPOINT_APP_RUN_STATE   0x0034
 
#define PBL_PP_ENDPOINT_IMAGING   0x0035
 
#define PBL_PP_ENDPOINT_HEALTH_SYNC   0x038f
 
#define PBL_PP_ENDPOINT_PING   0x07d1
 
#define PBL_PP_ENDPOINT_LOG_DUMP   0x07d2
 
#define PBL_PP_ENDPOINT_RESET   0x07d3
 
#define PBL_PP_ENDPOINT_APP_LOG   0x07d6
 
#define PBL_PP_ENDPOINT_FACTORY_REGISTRY   0x1389
 
#define PBL_PP_ENDPOINT_APP_FETCH   0x1771
 
#define PBL_PP_ENDPOINT_DATA_LOGGING   0x1a7a
 
#define PBL_PP_ENDPOINT_SCREENSHOT   0x1f40
 
#define PBL_PP_ENDPOINT_GET_BYTES   0x2328
 
#define PBL_PP_ENDPOINT_AUDIO   0x2710
 
#define PBL_PP_ENDPOINT_VOICE   0x2af8
 
#define PBL_PP_ENDPOINT_TIMELINE_ACTION   0x2cb0
 
#define PBL_PP_ENDPOINT_APP_ORDER   0xabcd
 
#define PBL_PP_ENDPOINT_BLOB_DB   0xb1db
 
#define PBL_PP_ENDPOINT_BLOB_DB2   0xb2db
 
#define PBL_PP_ENDPOINT_PUT_BYTES   0xbeef
 
#define PBL_PP_ENDPOINT_POLL_REMOTE   0xcafe
 
#define PBL_PP_ENDPOINT_XSBUG   0xcaff
 
#define PBL_PP_ENDPOINT_REMOTE_INPUT   0xf00d
 

Detailed Description

Pebble protocol message framing, endpoint IDs and capabilities.


Data Structure Documentation

◆ pbl_pp_header

struct pbl_pp_header

Message header, big endian on the wire.

Data Fields
uint16_t endpoint_id Endpoint ID.
uint16_t length Payload length in bytes.

◆ pbl_pp_capabilities

struct pbl_pp_capabilities

Capabilities as sent by the phone, bit for bit as pbl_pp_capability.

Data Fields
union pbl_pp_capabilities.__unnamed39__ __unnamed__

◆ pbl_pp_capabilities.__unnamed39__

union pbl_pp_capabilities.__unnamed39__
Data Fields
struct pbl_pp_capabilities.__unnamed39__.__unnamed41__ __unnamed__
uint64_t flags All capability bits.

◆ pbl_pp_capabilities.__unnamed39__.__unnamed41__

struct pbl_pp_capabilities.__unnamed39__.__unnamed41__
Data Fields
bool activity_insights_support: 1
bool app_message_8k_support: 1
bool app_permissions_support: 1
bool blob_db_version_support: 1
bool continue_fw_install_across_disconnect_support: 1
bool custom_vibe_pattern_support: 1
bool extended_music_service: 1
bool extended_notification_service: 1
bool imaging_support: 1
bool infinite_log_dumping_support: 1
uint8_t javascript_bytecode_version_appended: 1
bool lang_pack_support: 1
uint8_t more_padded_bits: 2
bool multiple_language_packs_support: 1
bool notification_filtering_support: 1
bool notification_image_support: 1
bool notification_window_state_support: 1
bool reminders_app_support: 1
bool run_state_support: 1
bool send_text_support: 1
bool settings_sync_support: 1
bool smooth_fw_install_progress_support: 1
bool unknown_attributes_support: 1
bool unread_coredump_support: 1
bool voice_api_support: 1
bool weather_app_support: 1
bool weather_db_v4_support: 1
bool workout_app_support: 1

Macro Definition Documentation

◆ PBL_PP_ENDPOINT_APP_CUSTOMIZE

#define PBL_PP_ENDPOINT_APP_CUSTOMIZE   0x0032

◆ PBL_PP_ENDPOINT_APP_FETCH

#define PBL_PP_ENDPOINT_APP_FETCH   0x1771

◆ PBL_PP_ENDPOINT_APP_LOG

#define PBL_PP_ENDPOINT_APP_LOG   0x07d6

◆ PBL_PP_ENDPOINT_APP_MESSAGE

#define PBL_PP_ENDPOINT_APP_MESSAGE   0x0030

◆ PBL_PP_ENDPOINT_APP_ORDER

#define PBL_PP_ENDPOINT_APP_ORDER   0xabcd

◆ PBL_PP_ENDPOINT_APP_RUN_STATE

#define PBL_PP_ENDPOINT_APP_RUN_STATE   0x0034

◆ PBL_PP_ENDPOINT_AUDIO

#define PBL_PP_ENDPOINT_AUDIO   0x2710

◆ PBL_PP_ENDPOINT_BLE_CONTROL

#define PBL_PP_ENDPOINT_BLE_CONTROL   0x0033

◆ PBL_PP_ENDPOINT_BLOB_DB

#define PBL_PP_ENDPOINT_BLOB_DB   0xb1db

◆ PBL_PP_ENDPOINT_BLOB_DB2

#define PBL_PP_ENDPOINT_BLOB_DB2   0xb2db

◆ PBL_PP_ENDPOINT_CLOCK

#define PBL_PP_ENDPOINT_CLOCK   0x000b

◆ PBL_PP_ENDPOINT_DATA_LOGGING

#define PBL_PP_ENDPOINT_DATA_LOGGING   0x1a7a

◆ PBL_PP_ENDPOINT_FACTORY_REGISTRY

#define PBL_PP_ENDPOINT_FACTORY_REGISTRY   0x1389

◆ PBL_PP_ENDPOINT_GET_BYTES

#define PBL_PP_ENDPOINT_GET_BYTES   0x2328

◆ PBL_PP_ENDPOINT_HEALTH_SYNC

#define PBL_PP_ENDPOINT_HEALTH_SYNC   0x038f

◆ PBL_PP_ENDPOINT_IMAGING

#define PBL_PP_ENDPOINT_IMAGING   0x0035

◆ PBL_PP_ENDPOINT_LAUNCHER_APP_MESSAGE

#define PBL_PP_ENDPOINT_LAUNCHER_APP_MESSAGE   0x0031

◆ PBL_PP_ENDPOINT_LOG_DUMP

#define PBL_PP_ENDPOINT_LOG_DUMP   0x07d2

◆ PBL_PP_ENDPOINT_META

#define PBL_PP_ENDPOINT_META   0x0000

◆ PBL_PP_ENDPOINT_MUSIC

#define PBL_PP_ENDPOINT_MUSIC   0x0020

◆ PBL_PP_ENDPOINT_PHONE

#define PBL_PP_ENDPOINT_PHONE   0x0021

◆ PBL_PP_ENDPOINT_PING

#define PBL_PP_ENDPOINT_PING   0x07d1

◆ PBL_PP_ENDPOINT_POLL_REMOTE

#define PBL_PP_ENDPOINT_POLL_REMOTE   0xcafe

◆ PBL_PP_ENDPOINT_PUT_BYTES

#define PBL_PP_ENDPOINT_PUT_BYTES   0xbeef

◆ PBL_PP_ENDPOINT_REMOTE_INPUT

#define PBL_PP_ENDPOINT_REMOTE_INPUT   0xf00d

◆ PBL_PP_ENDPOINT_REMOTE_VERSION

#define PBL_PP_ENDPOINT_REMOTE_VERSION   0x0011

◆ PBL_PP_ENDPOINT_RESET

#define PBL_PP_ENDPOINT_RESET   0x07d3

◆ PBL_PP_ENDPOINT_SCREENSHOT

#define PBL_PP_ENDPOINT_SCREENSHOT   0x1f40

◆ PBL_PP_ENDPOINT_SYSTEM_MESSAGE

#define PBL_PP_ENDPOINT_SYSTEM_MESSAGE   0x0012

◆ PBL_PP_ENDPOINT_SYSTEM_VERSION

#define PBL_PP_ENDPOINT_SYSTEM_VERSION   0x0010

◆ PBL_PP_ENDPOINT_TIMELINE_ACTION

#define PBL_PP_ENDPOINT_TIMELINE_ACTION   0x2cb0

◆ PBL_PP_ENDPOINT_VOICE

#define PBL_PP_ENDPOINT_VOICE   0x2af8

◆ PBL_PP_ENDPOINT_XSBUG

#define PBL_PP_ENDPOINT_XSBUG   0xcaff

◆ PBL_PP_MAX_INBOUND_PAYLOAD_PRIVATE

#define PBL_PP_MAX_INBOUND_PAYLOAD_PRIVATE   2044

Largest inbound payload accepted from the Pebble mobile app.

◆ PBL_PP_MAX_INBOUND_PAYLOAD_PUBLIC

#define PBL_PP_MAX_INBOUND_PAYLOAD_PUBLIC   144

Largest inbound payload accepted from third party phone apps.

◆ PBL_PP_MAX_OUTBOUND_PAYLOAD

#define PBL_PP_MAX_OUTBOUND_PAYLOAD   656

Largest outbound payload the phone accepts.

◆ PBL_PP_REMOTE_OS_MASK

#define PBL_PP_REMOTE_OS_MASK   0x7U

Bits of the reported platform bitfield that hold a pbl_pp_remote_os.

Enumeration Type Documentation

◆ pbl_pp_capability

enum pbl_pp_capability : uint32_t

Protocol capabilities announced by the phone, one bit each.

Enumerator
PBL_PP_CAP_RUN_STATE 

App run state endpoint.

PBL_PP_CAP_INFINITE_LOG_DUMPING 

Infinite log dumping.

PBL_PP_CAP_EXTENDED_MUSIC 

Extended music service.

PBL_PP_CAP_EXTENDED_NOTIFICATIONS 

Extended notification service.

PBL_PP_CAP_LANGUAGE_PACK 

Language pack installation.

PBL_PP_CAP_APP_MESSAGE_8K 

8 KiB AppMessage buffers.

PBL_PP_CAP_ACTIVITY_INSIGHTS 

Activity insights.

PBL_PP_CAP_VOICE_API 

Voice API.

PBL_PP_CAP_SEND_TEXT 

Send text.

PBL_PP_CAP_NOTIFICATION_FILTERING 

Notification filtering.

PBL_PP_CAP_UNREAD_COREDUMP 

Fetching unread coredumps.

PBL_PP_CAP_WEATHER_APP 

Weather app.

PBL_PP_CAP_REMINDERS_APP 

Reminders app.

PBL_PP_CAP_WORKOUT_APP 

Workout app.

PBL_PP_CAP_SMOOTH_FW_INSTALL_PROGRESS 

Smooth firmware install progress.

PBL_PP_CAP_IMAGING 

Phone serves images through the imaging endpoint.

PBL_PP_CAP_SETTINGS_SYNC 

Phone syncs settings through BlobDB.

PBL_PP_CAP_NOTIFICATION_WINDOW_STATE 

Phone tracks which notification the watch is displaying.

◆ pbl_pp_remote_os

enum pbl_pp_remote_os : uint8_t

Operating system of the phone, as reported by the Pebble mobile app.

Enumerator
PBL_PP_REMOTE_OS_UNKNOWN 
PBL_PP_REMOTE_OS_IOS 
PBL_PP_REMOTE_OS_ANDROID 
PBL_PP_REMOTE_OS_OSX 
PBL_PP_REMOTE_OS_LINUX 
PBL_PP_REMOTE_OS_WINDOWS