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
from gopro_sdk.config import TimeoutConfig
# Create custom timeout configuration
timeouts = TimeoutConfig(
ble_connect_timeout=30.0, # 30 seconds for BLE connection
ble_response_timeout=10.0, # 10 seconds for BLE response
http_request_timeout=60.0, # 60 seconds for HTTP requests
wifi_provision_timeout=120.0, # 120 seconds for WiFi setup
cohn_provision_timeout=90.0, # 90 seconds for COHN setup
)
async with GoProClient("1234", timeout_config=timeouts) as client:
await client.start_recording()
Persistent COHN Configuration¶
The SDK automatically manages COHN credential persistence via CohnConfigManager.
When using online mode, credentials are saved on first connection and reused on subsequent connections.
from gopro_sdk import GoProClient, CohnConfigManager
async def use_persistent_config():
"""COHN credentials are automatically persisted."""
# First connection: credentials are fetched and saved
async with GoProClient(
"1234",
offline_mode=False,
wifi_ssid="your-wifi",
wifi_password="password",
) as client:
status = await client.get_camera_state()
print(f"Camera state: {status}")
# Subsequent connections: saved credentials are reused automatically
async with GoProClient(
"1234",
offline_mode=False,
) as client:
print("Connected using saved COHN credentials!")
Managing Multiple Camera Configs¶
from gopro_sdk import CohnConfigManager, CohnCredentials
def manage_camera_configs():
"""Manage configurations for multiple cameras."""
with CohnConfigManager() as config_mgr:
# List all saved configurations
all_creds = config_mgr.list_all()
print(f"Found {len(all_creds)} saved configurations")
for serial, creds in all_creds.items():
print(f"Camera {serial}: IP {creds.ip_address}")
# Load specific camera credentials
creds = config_mgr.load("1234")
if creds:
print(f"Camera 1234: {creds.ip_address}")
# Delete old configuration
config_mgr.delete("old_camera_id")