Configuration¶
TimeoutConfig¶
gopro_sdk.config.TimeoutConfig
dataclass
¶
TimeoutConfig(
ble_write_timeout: float = 10.0,
ble_read_timeout: float = 10.0,
ble_discovery_timeout: float = 5.0,
ble_response_timeout: float = 5.0,
ble_connect_timeout: float = 20.0,
ble_service_discovery_timeout: float = 30.0,
http_request_timeout: float = 30.0,
http_download_timeout: float = 300.0,
http_keep_alive_timeout: float = 8.0,
http_initial_check_timeout: float = 2.0,
wifi_scan_timeout: float = 15.0,
wifi_scan_internal_timeout: float = 10.0,
wifi_connect_configured_timeout: float = 15.0,
wifi_provision_timeout: float = 60.0,
cohn_provision_timeout: float = 60.0,
cohn_wait_provisioned_timeout: float = 45.0,
cohn_status_poll_interval: float = 1.0,
connection_retry_interval: float = 2.0,
max_reconnect_attempts: int = 3,
camera_ready_timeout: float = 10.0,
camera_ready_poll_interval: float = 0.5,
http_keepalive_max_retries: int = 12,
http_keepalive_retry_interval: float = 1.5,
http_keepalive_timeout_threshold: int = 4,
http_keepalive_fatal_threshold: int = 6,
ip_wait_max_attempts: int = 5,
ip_wait_interval: float = 3.0,
preview_state_settle_delay: float = 0.2,
)
Timeout configuration.
Reference design document question 13, all timeout values are configurable.
CohnConfigManager¶
gopro_sdk.config.CohnConfigManager
¶
COHN configuration persistence manager.
Uses Repository pattern to encapsulate TinyDB operations. Database file is stored in user data directory.
Supports context manager protocol for automatic resource cleanup
with CohnConfigManager() as manager: manager.save(serial, credentials)
Initialize configuration manager.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
db_path
|
Path | None
|
Database file path, defaults to cohn_credentials.json in current directory |
None
|
Source code in src/gopro_sdk/config.py
Functions¶
__enter__
¶
__exit__
¶
__del__
¶
Cleanup: ensure database is closed when object is destroyed.
save
¶
Save or update camera COHN credentials.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
serial
|
str
|
Camera serial number (last 4 digits) |
required |
credentials
|
CohnCredentials
|
COHN credentials |
required |
Source code in src/gopro_sdk/config.py
load
¶
Load camera COHN credentials.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
serial
|
str
|
Camera serial number (last 4 digits) |
required |
Returns:
| Type | Description |
|---|---|
CohnCredentials | None
|
COHN credentials, or None if not found |
Source code in src/gopro_sdk/config.py
delete
¶
Delete camera COHN credentials.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
serial
|
str
|
Camera serial number (last 4 digits) |
required |
Returns:
| Type | Description |
|---|---|
bool
|
Whether deletion was successful |
Source code in src/gopro_sdk/config.py
list_all
¶
List all saved COHN credentials.
Returns:
| Type | Description |
|---|---|
dict[str, CohnCredentials]
|
Mapping from serial number to credentials |
Source code in src/gopro_sdk/config.py
close
¶
CohnCredentials¶
gopro_sdk.config.CohnCredentials
dataclass
¶
COHN credentials information.
Attributes:
| Name | Type | Description |
|---|---|---|
ip_address |
str
|
IP address assigned by camera |
username |
str
|
HTTP authentication username |
password |
str
|
HTTP authentication password |
certificate |
str
|
SSL certificate in PEM format (string) |
Usage Examples¶
Custom Timeouts¶
from gopro_sdk import GoProClient, TimeoutConfig
# Create custom timeout configuration
timeouts = TimeoutConfig(
ble_connect=20.0, # 20 seconds for BLE connection
ble_disconnect=10.0, # 10 seconds for disconnection
http_request=15.0, # 15 seconds for HTTP requests
command_response=10.0, # 10 seconds for command responses
cohn_ready=60.0 # 60 seconds to wait for COHN
)
client = GoProClient(identifier="1234", timeout_config=timeouts)
Persistent COHN Configuration¶
from gopro_sdk import GoProClient, CohnConfigManager
async def use_saved_config():
"""Use saved COHN configuration."""
client = GoProClient(identifier="1234")
config_mgr = CohnConfigManager()
# Try to load saved config
saved_config = config_mgr.load_config("1234")
await client.open_ble()
if saved_config:
# Use saved configuration
print("Using saved COHN configuration")
await client.apply_cohn_config(saved_config)
else:
# First time setup
print("Configuring COHN for the first time")
config = await client.configure_cohn(
ssid="your-wifi",
password="password"
)
# Save for future use
config_mgr.save_config("1234", config)
await client.wait_cohn_ready()
Managing Multiple Camera Configs¶
from gopro_sdk import CohnConfigManager
def manage_camera_configs():
"""Manage configurations for multiple cameras."""
config_mgr = CohnConfigManager()
# List all saved configurations
configs = config_mgr.list_configs()
print(f"Found {len(configs)} saved configurations")
for identifier in configs:
config = config_mgr.load_config(identifier)
print(f"Camera {identifier}: {config.ssid}")
# Delete old configuration
config_mgr.delete_config("old_camera_id")