ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
esphome::sendspin_::SendspinHub Class Referencefinal

Thin adapter over sendspin::SendspinClient. More...

#include <sendspin_hub.h>

Inheritance diagram for esphome::sendspin_::SendspinHub:
esphome::Component

Public Member Functions

 SendspinHub ()
 
float get_setup_priority () const override
 
void setup () override
 
void loop () override
 
void on_shutdown () override
 
void dump_config () override
 
void connect_to_server (const std::string &url)
 Connects the underlying client to the given Sendspin server.
 
void disconnect_from_server (sendspin::SendspinGoodbyeReason reason)
 Disconnects the underlying client from the current server.
 
void leave_group ()
 Leaves the current group so another source can use the speaker.
 
void confirm_pairing_window ()
 Confirms a pairing attempt on the device.
 
void cancel_pairing_window ()
 Closes an open pairing window, so a waiting pairing attempt is not confirmed.
 
template<typename F >
void add_group_update_callback (F &&callback)
 
template<typename F >
void add_on_open_pairing_window_callback (F &&callback)
 
template<typename F >
void add_on_close_pairing_window_callback (F &&callback)
 
template<typename F >
void add_on_display_pairing_code_callback (F &&callback)
 
template<typename F >
void add_on_clear_pairing_code_callback (F &&callback)
 
template<typename F >
void add_on_pairing_succeeded_callback (F &&callback)
 
template<typename F >
void add_on_pairing_failed_callback (F &&callback)
 
void set_task_stack_in_psram (bool task_stack_in_psram)
 
void set_enabled (bool enabled)
 Requests the Sendspin client, including the server, the roles and the mDNS advertisement, to start or stop.
 
void set_unpaired_access_enabled (bool enabled)
 Turns unpaired (Sentinel) access on or off.
 
bool is_client_running () const
 Returns whether the Sendspin client is running.
 
bool is_disabled () const
 Returns whether the client has been turned off with set_enabled().
 
uint32_t get_feature_flags () const
 Returns the SendspinFeature flags reported to API clients.
 
std::optional< std::string > get_pairing_token () const
 Returns the pairing token a Sendspin server uses to pair with this device.
 
StringRef get_client_id () const
 Returns the Sendspin client_id: base64url of the client's static public key.
 
void set_manufacturer (const char *manufacturer)
 Sets the device information reported to the server in the client/hello message.
 
void set_model (const char *model)
 
void set_firmware_version (const char *firmware_version)
 
void set_mdns (mdns::MDNSComponent *mdns)
 
void set_static_pairing_code (const char *code)
 The static pairing code, used on every boot.
 
void set_pairing_code_display_supported (bool supported)
 Set when on_display_pairing_code or a pairing_code text sensor is configured, so the device offers the dynamic pairing code.
 
void set_artwork_config (const sendspin::ArtworkRoleConfig &config)
 
void artwork_frame_done (uint8_t slot)
 Acknowledges the most recent artwork delivery (display or clear) for a slot.
 
template<typename F >
void add_image_decode_callback (F &&callback)
 
template<typename F >
void add_image_display_callback (F &&callback)
 
template<typename F >
void add_image_clear_callback (F &&callback)
 
void send_client_command (sendspin::SendspinControllerCommand command, std::optional< uint8_t > volume=std::nullopt, std::optional< bool > mute=std::nullopt)
 
void switch_client ()
 Sends the SWITCH controller command; exposed as the sendspin.switch action.
 
template<typename F >
void add_controller_state_callback (F &&callback)
 
template<typename F >
void add_controller_state_clear_callback (F &&callback)
 Registers a callback that fires when the connection is lost and the cached controller state is dropped.
 
template<typename F >
void add_metadata_update_callback (F &&callback)
 Registers a callback that fires when the server sends metadata.
 
uint32_t get_track_progress_ms () const
 Returns the interpolated track progress in milliseconds, or 0 if the hub is not yet ready.
 
void set_listener (sendspin::PlayerRoleListener *listener)
 
void set_player_config (const sendspin::PlayerRoleConfig &config)
 
sendspin::PlayerRole * get_player_role ()
 Child components call this to get the PlayerRole instance after setup, so they can push updates to it.
 
- Public Member Functions inherited from esphome::Component
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
void call ()
 
virtual void on_safe_shutdown ()
 
virtual bool teardown ()
 Called during teardown to allow component to gracefully finish operations.
 
virtual void on_powerdown ()
 Called after teardown is complete to power down hardware.
 
uint8_t get_component_state () const
 
void reset_to_construction_state ()
 Reset this component back to the construction state to allow setup to run again.
 
bool is_in_loop_state () const
 Check if this component has completed setup and is in the loop state.
 
bool is_idle () const
 Check if this component is idle.
 
void mark_failed ()
 Mark this component as failed.
 
void mark_failed (const LogString *message)
 
void disable_loop ()
 Disable this component's loop.
 
void enable_loop ()
 Enable this component's loop.
 
void enable_loop_soon_any_context ()
 Thread and ISR-safe version of enable_loop() that can be called from any context.
 
bool is_failed () const
 
bool is_ready () const
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning ()
 
void status_set_warning (const char *message)
 
void status_set_warning (const LogString *message)
 
void status_set_error ()
 
void status_set_error (const LogString *message)
 
void status_clear_warning ()
 
void status_clear_error ()
 
 ESPDEPRECATED ("Use status_momentary_warning() without a name. Removed in 2027.5.0", "2026.11.0") void status_momentary_warning(const char *name
 
void status_momentary_warning (uint32_t length=5000)
 Set warning status flag and clear it after length ms.
 
void status_momentary_warning (const LogString *message, uint32_t length=5000)
 
 ESPDEPRECATED ("Use status_momentary_error() without a name. Removed in 2027.5.0", "2026.11.0") void status_momentary_error(const char *name
 
void status_momentary_error (uint32_t length=5000)
 Set error status flag and clear it after length ms.
 
void status_momentary_error (const LogString *message, uint32_t length=5000)
 
bool has_overridden_loop () const
 
const LogString * get_component_log_str () const ESPHOME_ALWAYS_INLINE
 Get the integration where this component was declared as a LogString for logging.
 
bool should_warn_of_blocking (uint32_t blocking_time, uint32_t &threshold_ms_out)
 

Protected Member Functions

sendspin::SendspinClientConfig build_client_config_ ()
 Builds the SendspinClientConfig from ESPHome configuration and platform info.
 
std::pair< ESPPreferenceObject *, size_t > pref_for_key_ (const std::string &key)
 The preference a library key is stored in and its blob size, or {nullptr, 0} for a key with no storage here.
 
const char * get_product_name_ () const
 Returns the product name reported to the server: the configured model, or the device name.
 
const char * pairing_code_method_ () const
 
void update_mdns_service_ ()
 Keeps the _sendspin mDNS service advertised while the client is running.
 
void on_group_update (const sendspin::GroupUpdateObject &group) override
 
void on_request_high_performance () override
 
void on_release_high_performance () override
 
void on_open_pairing_window () override
 
void on_close_pairing_window () override
 
void on_display_pairing_code (const std::string &code, sendspin::SendspinPairingCodeFormat format) override
 
void on_clear_pairing_code () override
 
void on_pairing_succeeded (const std::string &server_id) override
 
void on_pairing_failed (const std::string &server_id, sendspin::SendspinPairAbortReason reason) override
 
bool is_network_ready () override
 
std::optional< std::vector< uint8_t > > load_blob (const std::string &key) override
 
bool save_blob (const std::string &key, const uint8_t *data, size_t len) override
 
bool commit () override
 
void on_image_decode (uint8_t slot, const uint8_t *data, size_t length, sendspin::SendspinImageFormat format) override
 
void on_image_display (uint8_t slot, uint32_t lateness_ms) override
 
void on_image_clear (uint8_t slot) override
 
void on_controller_state (const sendspin::ServerStateControllerObject &state) override
 
void on_controller_state_clear () override
 
void on_metadata (const sendspin::ServerMetadataStateObject &metadata) override
 
void on_metadata_clear () override
 
- Protected Member Functions inherited from esphome::Component
friend void::setup ()
 
friend void::original_setup ()
 
void set_component_source_ (uint8_t index)
 Set where this component was loaded from for some debug messages.
 
virtual void call_setup ()
 
void call_dump_config_ ()
 
void enable_loop_slow_path_ ()
 
void set_component_state_ (uint8_t state)
 Helper to set component state (clears state bits and sets new state)
 
bool set_status_flag_ (uint8_t flag)
 Helper to set a status LED flag on both this component and the app.
 
bool set_error_flag_ (const LogString *message)
 Set the error flag and log it; true when it was not set before.
 
void set_interval (const char *name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a const char* name.
 
void set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a numeric ID (zero heap allocation).
 
void set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f)
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const char *name)
 Cancel an interval function.
 
bool cancel_interval (uint32_t id)
 
bool cancel_interval (InternalSchedulerID id)
 
void set_timeout (const char *name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a const char* name.
 
void set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a numeric ID (zero heap allocation).
 
void set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f)
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const char *name)
 Cancel a timeout function.
 
bool cancel_timeout (uint32_t id)
 
bool cancel_timeout (InternalSchedulerID id)
 
void defer (const char *name, std::function< void()> &&f)
 Defer a callback to the next loop() call with a const char* name.
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
void defer (uint32_t id, std::function< void()> &&f)
 Defer a callback with a numeric ID (zero heap allocation)
 
bool cancel_defer (const char *name)
 Cancel a defer callback using the specified name, name must not be empty.
 
bool cancel_defer (uint32_t id)
 
void status_clear_warning_slow_path_ ()
 
void status_clear_error_slow_path_ ()
 

Static Protected Member Functions

static const char * get_mac_address_into_buffer (std::span< char, MAC_ADDRESS_PRETTY_BUFFER_SIZE > buf)
 Writes the active network interface's MAC, in lowercase, into buf and returns its data pointer.
 

Protected Attributes

sendspin::ArtworkRoleConfig artwork_config_ {}
 
sendspin::ArtworkRole * artwork_role_ {nullptr}
 
CallbackManager< void(uint8_t, const uint8_t *, size_t, sendspin::SendspinImageFormat)> artwork_image_decode_callbacks_ {}
 
CallbackManager< void(uint8_t, uint32_t)> artwork_image_display_callbacks_ {}
 
CallbackManager< void(uint8_t)> artwork_image_clear_callbacks_ {}
 
sendspin::ControllerRole * controller_role_ {nullptr}
 
LazyCallbackManager< void(const sendspin::ServerStateControllerObject &)> controller_state_callbacks_ {}
 
LazyCallbackManager< void()> controller_state_clear_callbacks_ {}
 
sendspin::MetadataRole * metadata_role_ {nullptr}
 
CallbackManager< void(const sendspin::ServerMetadataStateObject &)> metadata_update_callbacks_ {}
 
sendspin::PlayerRoleListener * player_listener_ {nullptr}
 
sendspin::PlayerRoleConfig player_config_ {}
 
ESPPreferenceObject keypair_pref_
 
ESPPreferenceObject pairing_psk_pref_
 
ESPPreferenceObject last_played_pref_
 
ESPPreferenceObject output_delay_pref_
 
std::array< ESPPreferenceObject, SENDSPIN_RECORD_SLOTS > record_slot_prefs_
 
ESPPreferenceObject record_order_pref_
 
std::unique_ptr< sendspin::SendspinClient > client_
 
CallbackManager< void(const sendspin::GroupUpdateObject &)> group_update_callbacks_ {}
 
LazyCallbackManager< void()> open_pairing_window_callbacks_ {}
 
LazyCallbackManager< void()> close_pairing_window_callbacks_ {}
 
LazyCallbackManager< void(const std::string &)> display_pairing_code_callbacks_ {}
 
LazyCallbackManager< void()> clear_pairing_code_callbacks_ {}
 
LazyCallbackManager< void(const std::string &)> pairing_succeeded_callbacks_ {}
 
LazyCallbackManager< void(const std::string &, StringRef)> pairing_failed_callbacks_ {}
 
const char * static_pairing_code_ {nullptr}
 
bool pairing_code_display_supported_ {false}
 
bool task_stack_in_psram_ {false}
 
bool mdns_advertised_ {false}
 
std::optional< bool > enabled_
 
std::optional< bool > unpaired_access_
 
const char * manufacturer_ {"ESPHome"}
 
const char * model_ {nullptr}
 
const char * firmware_version_ {ESPHOME_VERSION}
 
mdns::MDNSComponent * mdns_ {nullptr}
 
- Protected Attributes inherited from esphome::Component
uint8_t component_source_index_ {0}
 Index into component source PROGMEM lookup table (0 = not set)
 
uint8_t warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_CS}
 Warn threshold in centiseconds (max 2550ms)
 
uint8_t component_state_ {0x00}
 State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bit 5: Has overridden loop() (set at registration time) Bits 6-7: Unused - reserved for future expansion.
 
volatile bool pending_enable_loop_ {false}
 ISR-safe flag for enable_loop_soon_any_context.
 
ComponentRuntimeStats runtime_stats_
 

Additional Inherited Members

- Data Fields inherited from esphome::Component
uint32_t length = 5000)
 

Detailed Description

Thin adapter over sendspin::SendspinClient.

The hub owns a SendspinClient instance and bridges its listener/provider interfaces to ESPHome's CallbackManager for fan-out to child components.

  • Provides persistence via ESPPreferenceObject and WiFi power management integration.
  • Handles Sendspin roles that apply to multiple child components (artwork, controller, metadata) so their events can be fanned out. Roles specific to a single component (player) are configured by the hub but owned by the child thereafter, since no fan-out is needed.

The sendspin-cpp library follows this design:

  • Core and role configuration are passed at client/role construction time as structs. Built in our setup().
  • Library -> user code communication happens via two interface types the user implements and registers in our setup(): listener interfaces (for events the library pushes; e.g., group updates) and provider interfaces (for services the library pulls; e.g., persistence, network readiness).
  • User -> library communication uses exposed functions on the client and role objects that the user calls.

Definition at line 85 of file sendspin_hub.h.

Constructor & Destructor Documentation

◆ SendspinHub()

esphome::sendspin_::SendspinHub::SendspinHub ( )

Definition at line 118 of file sendspin_hub.cpp.

Member Function Documentation

◆ add_controller_state_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_controller_state_callback ( F && callback)
inline

Definition at line 257 of file sendspin_hub.h.

◆ add_controller_state_clear_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_controller_state_clear_callback ( F && callback)
inline

Registers a callback that fires when the connection is lost and the cached controller state is dropped.

Definition at line 262 of file sendspin_hub.h.

◆ add_group_update_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_group_update_callback ( F && callback)
inline

Definition at line 144 of file sendspin_hub.h.

◆ add_image_clear_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_image_clear_callback ( F && callback)
inline

Definition at line 245 of file sendspin_hub.h.

◆ add_image_decode_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_image_decode_callback ( F && callback)
inline

Definition at line 239 of file sendspin_hub.h.

◆ add_image_display_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_image_display_callback ( F && callback)
inline

Definition at line 242 of file sendspin_hub.h.

◆ add_metadata_update_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_metadata_update_callback ( F && callback)
inline

Registers a callback that fires when the server sends metadata.

Also fires when the connection is lost, with an all-empty state object (every field nullopt, timestamp 0) meaning the cached metadata was dropped. Subscribers must treat an absent field as cleared, not as no update.

Definition at line 272 of file sendspin_hub.h.

◆ add_on_clear_pairing_code_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_on_clear_pairing_code_callback ( F && callback)
inline

Definition at line 160 of file sendspin_hub.h.

◆ add_on_close_pairing_window_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_on_close_pairing_window_callback ( F && callback)
inline

Definition at line 152 of file sendspin_hub.h.

◆ add_on_display_pairing_code_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_on_display_pairing_code_callback ( F && callback)
inline

Definition at line 156 of file sendspin_hub.h.

◆ add_on_open_pairing_window_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_on_open_pairing_window_callback ( F && callback)
inline

Definition at line 148 of file sendspin_hub.h.

◆ add_on_pairing_failed_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_on_pairing_failed_callback ( F && callback)
inline

Definition at line 168 of file sendspin_hub.h.

◆ add_on_pairing_succeeded_callback()

template<typename F >
void esphome::sendspin_::SendspinHub::add_on_pairing_succeeded_callback ( F && callback)
inline

Definition at line 164 of file sendspin_hub.h.

◆ artwork_frame_done()

void esphome::sendspin_::SendspinHub::artwork_frame_done ( uint8_t slot)

Acknowledges the most recent artwork delivery (display or clear) for a slot.

Every slot is configured with the library's require_frame_done gate, which withholds the next delivery for the slot until this is called. Exactly one ack is owed per delivery; a redundant call is a safe no-op in the library. Must be called from the main loop thread.

Definition at line 500 of file sendspin_hub.cpp.

◆ build_client_config_()

sendspin::SendspinClientConfig esphome::sendspin_::SendspinHub::build_client_config_ ( )
protected

Builds the SendspinClientConfig from ESPHome configuration and platform info.

Definition at line 357 of file sendspin_hub.cpp.

◆ cancel_pairing_window()

void esphome::sendspin_::SendspinHub::cancel_pairing_window ( )

Closes an open pairing window, so a waiting pairing attempt is not confirmed.

No-op if the hub's client is not running. Must be called from the main loop thread.

Definition at line 314 of file sendspin_hub.cpp.

◆ commit()

bool esphome::sendspin_::SendspinHub::commit ( )
overrideprotected

Definition at line 479 of file sendspin_hub.cpp.

◆ confirm_pairing_window()

void esphome::sendspin_::SendspinHub::confirm_pairing_window ( )

Confirms a pairing attempt on the device.

With no attempt waiting, it opens the pairing window for the next one.

No-op if the hub's client is not running. Must be called from the main loop thread.

Definition at line 307 of file sendspin_hub.cpp.

◆ connect_to_server()

void esphome::sendspin_::SendspinHub::connect_to_server ( const std::string & url)

Connects the underlying client to the given Sendspin server.

No-op if the hub's client is not running (see is_client_running()). Must be called from the main loop thread.

Parameters
urlWebSocket URL of the Sendspin server, starting with ws:// (e.g. ws://host:port/path).

Definition at line 285 of file sendspin_hub.cpp.

◆ disconnect_from_server()

void esphome::sendspin_::SendspinHub::disconnect_from_server ( sendspin::SendspinGoodbyeReason reason)

Disconnects the underlying client from the current server.

Sends a client/goodbye message with the given reason before closing the connection. No-op if the hub's client is not running. Must be called from the main loop thread.

Parameters
reasonReason reported to the server:
  • ANOTHER_SERVER: client is switching to another server.
  • SHUTDOWN: client is shutting down.
  • RESTART: client is restarting.
  • USER_REQUEST: user explicitly requested disconnect.

Definition at line 292 of file sendspin_hub.cpp.

◆ dump_config()

void esphome::sendspin_::SendspinHub::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 193 of file sendspin_hub.cpp.

◆ get_client_id()

StringRef esphome::sendspin_::SendspinHub::get_client_id ( ) const

Returns the Sendspin client_id: base64url of the client's static public key.

Empty until the client has started once; it stays set after the client stops. The returned StringRef points into the client's string, which start() may rewrite, so do not keep it past the current call. Main loop only.

Definition at line 247 of file sendspin_hub.cpp.

◆ get_feature_flags()

uint32_t esphome::sendspin_::SendspinHub::get_feature_flags ( ) const
inline

Returns the SendspinFeature flags reported to API clients.

Definition at line 193 of file sendspin_hub.h.

◆ get_mac_address_into_buffer()

const char * esphome::sendspin_::SendspinHub::get_mac_address_into_buffer ( std::span< char, MAC_ADDRESS_PRETTY_BUFFER_SIZE > buf)
staticprotected

Writes the active network interface's MAC, in lowercase, into buf and returns its data pointer.

Uses the ethernet MAC if ethernet is configured, otherwise the base MAC (used by wifi).

Definition at line 320 of file sendspin_hub.cpp.

◆ get_pairing_token()

std::optional< std::string > esphome::sendspin_::SendspinHub::get_pairing_token ( ) const

Returns the pairing token a Sendspin server uses to pair with this device.

The token is a long-lived secret, so this component never logs it. Returns std::nullopt until the client has started once; it stays available after the client stops. Main loop only.

Definition at line 239 of file sendspin_hub.cpp.

◆ get_player_role()

sendspin::PlayerRole * esphome::sendspin_::SendspinHub::get_player_role ( )

Child components call this to get the PlayerRole instance after setup, so they can push updates to it.

Definition at line 559 of file sendspin_hub.cpp.

◆ get_product_name_()

const char * esphome::sendspin_::SendspinHub::get_product_name_ ( ) const
protected

Returns the product name reported to the server: the configured model, or the device name.

Definition at line 353 of file sendspin_hub.cpp.

◆ get_setup_priority()

float esphome::sendspin_::SendspinHub::get_setup_priority ( ) const
inlineoverridevirtual

Reimplemented from esphome::Component.

Definition at line 101 of file sendspin_hub.h.

◆ get_track_progress_ms()

uint32_t esphome::sendspin_::SendspinHub::get_track_progress_ms ( ) const

Returns the interpolated track progress in milliseconds, or 0 if the hub is not yet ready.

Definition at line 549 of file sendspin_hub.cpp.

◆ is_client_running()

bool esphome::sendspin_::SendspinHub::is_client_running ( ) const
inline

Returns whether the Sendspin client is running.

Definition at line 187 of file sendspin_hub.h.

◆ is_disabled()

bool esphome::sendspin_::SendspinHub::is_disabled ( ) const
inline

Returns whether the client has been turned off with set_enabled().

Definition at line 190 of file sendspin_hub.h.

◆ is_network_ready()

bool esphome::sendspin_::SendspinHub::is_network_ready ( )
overrideprotected

Definition at line 432 of file sendspin_hub.cpp.

◆ leave_group()

void esphome::sendspin_::SendspinHub::leave_group ( )

Leaves the current group so another source can use the speaker.

Sends client/leave while the group is playing. A stopped group is left alone, so the device stays grouped. No-op if the hub's client is not running. Must be called from the main loop thread.

Definition at line 299 of file sendspin_hub.cpp.

◆ load_blob()

std::optional< std::vector< uint8_t > > esphome::sendspin_::SendspinHub::load_blob ( const std::string & key)
overrideprotected

Definition at line 460 of file sendspin_hub.cpp.

◆ loop()

void esphome::sendspin_::SendspinHub::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 167 of file sendspin_hub.cpp.

◆ on_clear_pairing_code()

void esphome::sendspin_::SendspinHub::on_clear_pairing_code ( )
overrideprotected

Definition at line 419 of file sendspin_hub.cpp.

◆ on_close_pairing_window()

void esphome::sendspin_::SendspinHub::on_close_pairing_window ( )
overrideprotected

Definition at line 412 of file sendspin_hub.cpp.

◆ on_controller_state()

void esphome::sendspin_::SendspinHub::on_controller_state ( const sendspin::ServerStateControllerObject & state)
overrideprotected

Definition at line 525 of file sendspin_hub.cpp.

◆ on_controller_state_clear()

void esphome::sendspin_::SendspinHub::on_controller_state_clear ( )
overrideprotected

Definition at line 533 of file sendspin_hub.cpp.

◆ on_display_pairing_code()

void esphome::sendspin_::SendspinHub::on_display_pairing_code ( const std::string & code,
sendspin::SendspinPairingCodeFormat format )
overrideprotected

Definition at line 415 of file sendspin_hub.cpp.

◆ on_group_update()

void esphome::sendspin_::SendspinHub::on_group_update ( const sendspin::GroupUpdateObject & group)
overrideprotected

Definition at line 388 of file sendspin_hub.cpp.

◆ on_image_clear()

void esphome::sendspin_::SendspinHub::on_image_clear ( uint8_t slot)
overrideprotected

Definition at line 497 of file sendspin_hub.cpp.

◆ on_image_decode()

void esphome::sendspin_::SendspinHub::on_image_decode ( uint8_t slot,
const uint8_t * data,
size_t length,
sendspin::SendspinImageFormat format )
overrideprotected

Definition at line 485 of file sendspin_hub.cpp.

◆ on_image_display()

void esphome::sendspin_::SendspinHub::on_image_display ( uint8_t slot,
uint32_t lateness_ms )
overrideprotected

Definition at line 492 of file sendspin_hub.cpp.

◆ on_metadata()

void esphome::sendspin_::SendspinHub::on_metadata ( const sendspin::ServerMetadataStateObject & metadata)
overrideprotected

Definition at line 538 of file sendspin_hub.cpp.

◆ on_metadata_clear()

void esphome::sendspin_::SendspinHub::on_metadata_clear ( )
overrideprotected

Definition at line 546 of file sendspin_hub.cpp.

◆ on_open_pairing_window()

void esphome::sendspin_::SendspinHub::on_open_pairing_window ( )
overrideprotected

Definition at line 410 of file sendspin_hub.cpp.

◆ on_pairing_failed()

void esphome::sendspin_::SendspinHub::on_pairing_failed ( const std::string & server_id,
sendspin::SendspinPairAbortReason reason )
overrideprotected

Definition at line 425 of file sendspin_hub.cpp.

◆ on_pairing_succeeded()

void esphome::sendspin_::SendspinHub::on_pairing_succeeded ( const std::string & server_id)
overrideprotected

Definition at line 421 of file sendspin_hub.cpp.

◆ on_release_high_performance()

void esphome::sendspin_::SendspinHub::on_release_high_performance ( )
overrideprotected

Definition at line 401 of file sendspin_hub.cpp.

◆ on_request_high_performance()

void esphome::sendspin_::SendspinHub::on_request_high_performance ( )
overrideprotected

Definition at line 392 of file sendspin_hub.cpp.

◆ on_shutdown()

void esphome::sendspin_::SendspinHub::on_shutdown ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 185 of file sendspin_hub.cpp.

◆ pairing_code_method_()

const char * esphome::sendspin_::SendspinHub::pairing_code_method_ ( ) const
protected

Definition at line 343 of file sendspin_hub.cpp.

◆ pref_for_key_()

std::pair< ESPPreferenceObject *, size_t > esphome::sendspin_::SendspinHub::pref_for_key_ ( const std::string & key)
protected

The preference a library key is stored in and its blob size, or {nullptr, 0} for a key with no storage here.

Definition at line 437 of file sendspin_hub.cpp.

◆ save_blob()

bool esphome::sendspin_::SendspinHub::save_blob ( const std::string & key,
const uint8_t * data,
size_t len )
overrideprotected

Definition at line 469 of file sendspin_hub.cpp.

◆ send_client_command()

void esphome::sendspin_::SendspinHub::send_client_command ( sendspin::SendspinControllerCommand command,
std::optional< uint8_t > volume = std::nullopt,
std::optional< bool > mute = std::nullopt )

Definition at line 509 of file sendspin_hub.cpp.

◆ set_artwork_config()

void esphome::sendspin_::SendspinHub::set_artwork_config ( const sendspin::ArtworkRoleConfig & config)
inline

Definition at line 230 of file sendspin_hub.h.

◆ set_enabled()

void esphome::sendspin_::SendspinHub::set_enabled ( bool enabled)

Requests the Sendspin client, including the server, the roles and the mDNS advertisement, to start or stop.

Applied from the hub's loop(). Stopping blocks until the client is fully stopped; the roles' clear callbacks fire from inside that call. The client stays stopped until this has been called once, by codegen or by the enabled switch. Must be called from the main loop thread.

Definition at line 229 of file sendspin_hub.cpp.

◆ set_firmware_version()

void esphome::sendspin_::SendspinHub::set_firmware_version ( const char * firmware_version)
inline

Definition at line 214 of file sendspin_hub.h.

◆ set_listener()

void esphome::sendspin_::SendspinHub::set_listener ( sendspin::PlayerRoleListener * listener)
inline

Definition at line 281 of file sendspin_hub.h.

◆ set_manufacturer()

void esphome::sendspin_::SendspinHub::set_manufacturer ( const char * manufacturer)
inline

Sets the device information reported to the server in the client/hello message.

Each takes a pointer to a string literal emitted by codegen, so it must stay valid for the lifetime of the hub. Only called for values the configuration overrides; anything left alone keeps the default described on the member below.

Definition at line 212 of file sendspin_hub.h.

◆ set_mdns()

void esphome::sendspin_::SendspinHub::set_mdns ( mdns::MDNSComponent * mdns)
inline

Definition at line 217 of file sendspin_hub.h.

◆ set_model()

void esphome::sendspin_::SendspinHub::set_model ( const char * model)
inline

Definition at line 213 of file sendspin_hub.h.

◆ set_pairing_code_display_supported()

void esphome::sendspin_::SendspinHub::set_pairing_code_display_supported ( bool supported)
inline

Set when on_display_pairing_code or a pairing_code text sensor is configured, so the device offers the dynamic pairing code.

Definition at line 225 of file sendspin_hub.h.

◆ set_player_config()

void esphome::sendspin_::SendspinHub::set_player_config ( const sendspin::PlayerRoleConfig & config)
inline

Definition at line 282 of file sendspin_hub.h.

◆ set_static_pairing_code()

void esphome::sendspin_::SendspinHub::set_static_pairing_code ( const char * code)
inline

The static pairing code, used on every boot.

Definition at line 221 of file sendspin_hub.h.

◆ set_task_stack_in_psram()

void esphome::sendspin_::SendspinHub::set_task_stack_in_psram ( bool task_stack_in_psram)
inline

Definition at line 172 of file sendspin_hub.h.

◆ set_unpaired_access_enabled()

void esphome::sendspin_::SendspinHub::set_unpaired_access_enabled ( bool enabled)

Turns unpaired (Sentinel) access on or off.

The client waits for this call, by codegen or by the unpaired access switch, before its first start. May be called before setup(). Main loop only.

Definition at line 255 of file sendspin_hub.cpp.

◆ setup()

void esphome::sendspin_::SendspinHub::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 120 of file sendspin_hub.cpp.

◆ switch_client()

void esphome::sendspin_::SendspinHub::switch_client ( )

Sends the SWITCH controller command; exposed as the sendspin.switch action.

Definition at line 522 of file sendspin_hub.cpp.

◆ update_mdns_service_()

void esphome::sendspin_::SendspinHub::update_mdns_service_ ( )
protected

Keeps the _sendspin mDNS service advertised while the client is running.

Definition at line 265 of file sendspin_hub.cpp.

Field Documentation

◆ artwork_config_

sendspin::ArtworkRoleConfig esphome::sendspin_::SendspinHub::artwork_config_ {}
protected

Definition at line 347 of file sendspin_hub.h.

◆ artwork_image_clear_callbacks_

CallbackManager<void(uint8_t)> esphome::sendspin_::SendspinHub::artwork_image_clear_callbacks_ {}
protected

Definition at line 354 of file sendspin_hub.h.

◆ artwork_image_decode_callbacks_

CallbackManager<void(uint8_t, const uint8_t *, size_t, sendspin::SendspinImageFormat)> esphome::sendspin_::SendspinHub::artwork_image_decode_callbacks_ {}
protected

Definition at line 352 of file sendspin_hub.h.

◆ artwork_image_display_callbacks_

CallbackManager<void(uint8_t, uint32_t)> esphome::sendspin_::SendspinHub::artwork_image_display_callbacks_ {}
protected

Definition at line 353 of file sendspin_hub.h.

◆ artwork_role_

sendspin::ArtworkRole* esphome::sendspin_::SendspinHub::artwork_role_ {nullptr}
protected

Definition at line 348 of file sendspin_hub.h.

◆ clear_pairing_code_callbacks_

LazyCallbackManager<void()> esphome::sendspin_::SendspinHub::clear_pairing_code_callbacks_ {}
protected

Definition at line 405 of file sendspin_hub.h.

◆ client_

std::unique_ptr<sendspin::SendspinClient> esphome::sendspin_::SendspinHub::client_
protected

Definition at line 396 of file sendspin_hub.h.

◆ close_pairing_window_callbacks_

LazyCallbackManager<void()> esphome::sendspin_::SendspinHub::close_pairing_window_callbacks_ {}
protected

Definition at line 403 of file sendspin_hub.h.

◆ controller_role_

sendspin::ControllerRole* esphome::sendspin_::SendspinHub::controller_role_ {nullptr}
protected

Definition at line 358 of file sendspin_hub.h.

◆ controller_state_callbacks_

LazyCallbackManager<void(const sendspin::ServerStateControllerObject &)> esphome::sendspin_::SendspinHub::controller_state_callbacks_ {}
protected

Definition at line 366 of file sendspin_hub.h.

◆ controller_state_clear_callbacks_

LazyCallbackManager<void()> esphome::sendspin_::SendspinHub::controller_state_clear_callbacks_ {}
protected

Definition at line 367 of file sendspin_hub.h.

◆ display_pairing_code_callbacks_

LazyCallbackManager<void(const std::string &)> esphome::sendspin_::SendspinHub::display_pairing_code_callbacks_ {}
protected

Definition at line 404 of file sendspin_hub.h.

◆ enabled_

std::optional<bool> esphome::sendspin_::SendspinHub::enabled_
protected

Definition at line 417 of file sendspin_hub.h.

◆ firmware_version_

const char* esphome::sendspin_::SendspinHub::firmware_version_ {ESPHOME_VERSION}
protected

Definition at line 424 of file sendspin_hub.h.

◆ group_update_callbacks_

CallbackManager<void(const sendspin::GroupUpdateObject &)> esphome::sendspin_::SendspinHub::group_update_callbacks_ {}
protected

Definition at line 399 of file sendspin_hub.h.

◆ keypair_pref_

ESPPreferenceObject esphome::sendspin_::SendspinHub::keypair_pref_
protected

Definition at line 389 of file sendspin_hub.h.

◆ last_played_pref_

ESPPreferenceObject esphome::sendspin_::SendspinHub::last_played_pref_
protected

Definition at line 391 of file sendspin_hub.h.

◆ manufacturer_

const char* esphome::sendspin_::SendspinHub::manufacturer_ {"ESPHome"}
protected

Definition at line 422 of file sendspin_hub.h.

◆ mdns_

mdns::MDNSComponent* esphome::sendspin_::SendspinHub::mdns_ {nullptr}
protected

Definition at line 427 of file sendspin_hub.h.

◆ mdns_advertised_

bool esphome::sendspin_::SendspinHub::mdns_advertised_ {false}
protected

Definition at line 413 of file sendspin_hub.h.

◆ metadata_role_

sendspin::MetadataRole* esphome::sendspin_::SendspinHub::metadata_role_ {nullptr}
protected

Definition at line 371 of file sendspin_hub.h.

◆ metadata_update_callbacks_

CallbackManager<void(const sendspin::ServerMetadataStateObject &)> esphome::sendspin_::SendspinHub::metadata_update_callbacks_ {}
protected

Definition at line 378 of file sendspin_hub.h.

◆ model_

const char* esphome::sendspin_::SendspinHub::model_ {nullptr}
protected

Definition at line 423 of file sendspin_hub.h.

◆ open_pairing_window_callbacks_

LazyCallbackManager<void()> esphome::sendspin_::SendspinHub::open_pairing_window_callbacks_ {}
protected

Definition at line 402 of file sendspin_hub.h.

◆ output_delay_pref_

ESPPreferenceObject esphome::sendspin_::SendspinHub::output_delay_pref_
protected

Definition at line 392 of file sendspin_hub.h.

◆ pairing_code_display_supported_

bool esphome::sendspin_::SendspinHub::pairing_code_display_supported_ {false}
protected

Definition at line 410 of file sendspin_hub.h.

◆ pairing_failed_callbacks_

LazyCallbackManager<void(const std::string &, StringRef)> esphome::sendspin_::SendspinHub::pairing_failed_callbacks_ {}
protected

Definition at line 407 of file sendspin_hub.h.

◆ pairing_psk_pref_

ESPPreferenceObject esphome::sendspin_::SendspinHub::pairing_psk_pref_
protected

Definition at line 390 of file sendspin_hub.h.

◆ pairing_succeeded_callbacks_

LazyCallbackManager<void(const std::string &)> esphome::sendspin_::SendspinHub::pairing_succeeded_callbacks_ {}
protected

Definition at line 406 of file sendspin_hub.h.

◆ player_config_

sendspin::PlayerRoleConfig esphome::sendspin_::SendspinHub::player_config_ {}
protected

Definition at line 383 of file sendspin_hub.h.

◆ player_listener_

sendspin::PlayerRoleListener* esphome::sendspin_::SendspinHub::player_listener_ {nullptr}
protected

Definition at line 382 of file sendspin_hub.h.

◆ record_order_pref_

ESPPreferenceObject esphome::sendspin_::SendspinHub::record_order_pref_
protected

Definition at line 394 of file sendspin_hub.h.

◆ record_slot_prefs_

std::array<ESPPreferenceObject, SENDSPIN_RECORD_SLOTS> esphome::sendspin_::SendspinHub::record_slot_prefs_
protected

Definition at line 393 of file sendspin_hub.h.

◆ static_pairing_code_

const char* esphome::sendspin_::SendspinHub::static_pairing_code_ {nullptr}
protected

Definition at line 409 of file sendspin_hub.h.

◆ task_stack_in_psram_

bool esphome::sendspin_::SendspinHub::task_stack_in_psram_ {false}
protected

Definition at line 411 of file sendspin_hub.h.

◆ unpaired_access_

std::optional<bool> esphome::sendspin_::SendspinHub::unpaired_access_
protected

Definition at line 418 of file sendspin_hub.h.


The documentation for this class was generated from the following files: