diff --git a/assets/js/lunr/lunr-store.js b/assets/js/lunr/lunr-store.js index 1c78f666..54553eb6 100644 --- a/assets/js/lunr/lunr-store.js +++ b/assets/js/lunr/lunr-store.js @@ -57,7 +57,7 @@ var store = [ }, { "title": "Tutorial 6: Connect WiFi: ", - "excerpt": "This document will provide a walk-through tutorial to use the Open GoPro Interface to connect the GoPro to a Wifi network either in Access Point (AP) mode or Station (STA) Mode. It is recommended that you have first completed the connecting BLE, sending commands, parsing responses, and protobuf tutorials before proceeding. Requirements It is assumed that the hardware and software requirements from the connecting BLE tutorial are present and configured correctly. The scripts that will be used for this tutorial can be found in the Tutorial 6 Folder. Just Show me the Demo(s)!! python kotlin Each of the scripts for this tutorial can be found in the Tutorial 6 directory. Python >= 3.9 and < 3.12 must be used as specified in the requirements Enable WiFi AP You can enable the GoPro’s Access Point to allow it accept Wifi connections as an Access Point via: $ python wifi_enable.py See the help for parameter definitions: $ python wifi_enable.py --help usage: enable_wifi_ap.py [-h] [-i IDENTIFIER] [-t TIMEOUT] Connect to a GoPro camera via BLE, get its WiFi Access Point (AP) info, and enable its AP. options: -h, --help show this help message and exit -i IDENTIFIER, --identifier IDENTIFIER Last 4 digits of GoPro serial number, which is the last 4 digits of the default camera SSID. If not used, first discovered GoPro will be connected to -t TIMEOUT, --timeout TIMEOUT time in seconds to maintain connection before disconnecting. If not set, will maintain connection indefinitely Connect GoPro as STA You can connect the GoPro to a Wifi network where the GoPro is in Station Mode (STA) via: $ python connect_as_sta.py See the help for parameter definitions: $ python connect_as_sta.py --help Connect the GoPro to a Wifi network where the GoPro is in Station Mode (STA). positional arguments: ssid SSID of network to connect to password Password of network to connect to options: -h, --help show this help message and exit -i IDENTIFIER, --identifier IDENTIFIER Last 4 digits of GoPro serial number, which is the last 4 digits of the default camera SSID. If not used, first discovered GoPro will be connected to The Kotlin file for this tutorial can be found on Github. To perform the tutorial, run the Android Studio project, select “Tutorial 6” from the dropdown and click on “Perform.” This requires that a GoPro is already connected via BLE, i.e. that Tutorial 1 was already run. You can check the BLE status at the top of the app. Perform Tutorial 6 This will start the tutorial and log to the screen as it executes. When the tutorial is complete, click “Exit Tutorial” to return to the Tutorial selection screen. Setup For both cases, we must first connect to BLE as was discussed in the connecting BLE tutorial. Access Point Mode (AP) In AP mode, the GoPro operates as an Access Point, allowing wireless clients to connect and communicate using the Open GoPro HTTP API. The HTTP API provides much of the same functionality as the BLE API as well as some additional functionality. For more information on the HTTP API, see the next 2 tutorials. AccessPointGoProclientBLEWiFi In order to connect to the camera in AP mode, after connecting via BLE, pairing, and enabling notifications, we must: find the GoPro’s WiFi AP information (SSID and password) via BLE, enable the WiFi AP via BLE connect to the WiFi AP. Here is an outline of the steps to do so: GoProWiFiGoProBLEOpen GoPro user deviceGoProWiFiGoProBLEOpen GoPro user deviceScanningConnectedalt[If not Previously Paired]PairedReady to Communicateloop[Steps from Connect Tutorial]WiFi AP enabledAdvertisingAdvertisingConnectPair RequestPair ResponseEnable Notifications on Characteristic 1Enable Notifications on Characteristic 2Enable Notifications on Characteristic ..Enable Notifications on Characteristic NRead Wifi AP SSIDRead Wifi AP PasswordWrite to Enable WiFi APResponse sent as notificationConnect to WiFi AP The following subsections will detail this process. Find WiFi Information First we must find the target Wifi network’s SSID and password. The process to get this information is different than all other BLE operations described up to this point. Whereas the previous command, setting, and query operations all followed the Write Request-Notification Response pattern, the WiFi Information is retrieved via direct Read Requests to BLE characteristics. Get WiFi SSID The WiFi SSID can be found by reading from the WiFi AP SSID characteristic of the WiFi Access Point service. Let’s send the read request to get the SSID and decode it into a string. python kotlin ssid_uuid = GoProUuid.WIFI_AP_SSID_UUID logger.info(f\"Reading the WiFi AP SSID at {ssid_uuid}\") ssid = (await client.read_gatt_char(ssid_uuid.value)).decode() logger.info(f\"SSID is {ssid}\") There is no need for a synchronization event as the information is available when the read_gatt_char method returns. In the demo, this information is logged as such: Reading the WiFi AP SSID at GoProUuid.WIFI_AP_SSID_UUID SSID is GP24500702 ble.readCharacteristic(goproAddress, GoProUUID.WIFI_AP_SSID.uuid).onSuccess { ssid = it.decodeToString() } Timber.i(\"SSID is $ssid\") In the demo, this information is logged as such: Getting the SSID Read characteristic b5f90002-aa8d-11e3-9046-0002a5d5c51b : value: 64:65:62:75:67:68:65:72:6F:31:31 SSID is debughero11 Get WiFi Password The WiFi password can be found by reading from the WiFi AP password characteristic of the WiFi Access Point service. Let’s send the read request to get the password and decode it into a string. python kotlin password_uuid = GoProUuid.WIFI_AP_PASSWORD_UUID logger.info(f\"Reading the WiFi AP password at {password_uuid}\") password = (await client.read_gatt_char(password_uuid.value)).decode() logger.info(f\"Password is {password}\") There is no need for a synchronization event as the information is available when the read_gatt_char method returns. In the demo, this information is logged as such: Reading the WiFi AP password at GoProUuid.WIFI_AP_PASSWORD_UUID Password is p@d-NNc-2ts ble.readCharacteristic(goproAddress, GoProUUID.WIFI_AP_PASSWORD.uuid).onSuccess { password = it.decodeToString() } Timber.i(\"Password is $password\") In the demo, this information is logged as such: Getting the password Read characteristic b5f90003-aa8d-11e3-9046-0002a5d5c51b : value: 7A:33:79:2D:44:43:58:2D:50:68:6A Password is z3y-DCX-Phj Enable WiFi AP Before we can connect to the WiFi AP, we have to make sure the access point is enabled. This is accomplished via the AP Control command: Command Bytes Ap Control Enable 0x03 0x17 0x01 0x01 Ap Control Disable 0x03 0x17 0x01 0x00 We are using the same notification handler that was defined in the sending commands tutorial. Let’s write the bytes to the “Command Request UUID” to enable the WiFi AP! python kotlin event.clear() request = bytes([0x03, 0x17, 0x01, 0x01]) command_request_uuid = GoProUuid.COMMAND_REQ_UUID await client.write_gatt_char(command_request_uuid.value, request, response=True) await event.wait() Wait to receive the notification response We make sure to clear the synchronization event before writing, then pend on the event until it is set in the notification callback. val enableWifiCommand = ubyteArrayOf(0x03U, 0x17U, 0x01U, 0x01U) ble.writeCharacteristic(goproAddress, GoProUUID.CQ_COMMAND.uuid, enableWifiCommand) receivedData.receive() Note that we have received the “Command Status” notification response from the Command Response characteristic since we enabled it’s notifications in Enable Notifications. This can be seen in the demo log: python kotlin Enabling the WiFi AP Writing to GoProUuid.COMMAND_REQ_UUID: 03:17:01:01 Received response at GoProUuid.COMMAND_RSP_UUID: 02:17:00 Command sent successfully WiFi AP is enabled Enabling the camera's Wifi AP Writing characteristic b5f90072-aa8d-11e3-9046-0002a5d5c51b ==> 03:17:01:01 Wrote characteristic b5f90072-aa8d-11e3-9046-0002a5d5c51b Characteristic b5f90073-aa8d-11e3-9046-0002a5d5c51b changed | value: 02:17:00 Received response on b5f90073-aa8d-11e3-9046-0002a5d5c51b: 02:17:00 Command sent successfully As expected, the response was received on the correct UUID and the status was “success”. Establish Connection to WiFi AP python kotlin If you have been following through the ble_enable_wifi.py script, you will notice that it ends here such that we know the WiFi SSID / password and the WiFi AP is enabled. This is because there are many different methods of connecting to the WiFi AP depending on your OS and the framework you are using to develop. You could, for example, simply use your OS’s WiFi GUI to connect. While out of the scope of these tutorials, there is a programmatic example of this in the cross-platform WiFi Demo from the Open GoPro Python SDK. Using the passwsord and SSID we discovered above, we will now connect to the camera’s network: wifi.connect(ssid, password) This should show a system popup on your Android device that eventually goes away once the Wifi is connected. This connection process appears to vary drastically in time. Quiz time! 📚 ✏️ How is the WiFi password response received? A: As a read response from the WiFi AP Password characteristic B: As write responses to the WiFi Request characteristic C: As notifications of the Command Response characteristic Submit Answer Correct!! 😃 Incorrect!! 😭 The correct answer is A. This (and WiFi AP SSID) is an exception to the rule. Usually responses are received as notifications to a response characteristic. However, in this case, it is received as a direct read response (since we are reading from the characteristic and not writing to it). Which of the following statements about the GoPro WiFi AP is true? A: It only needs to be enabled once and it will then always remain on B: The WiFi password will never change C: The WiFi SSID will never change D: None of the Above Submit Answer Correct!! 😃 Incorrect!! 😭 The correct answer is D. While the WiFi AP will remain on for some time, it can and will eventually turn off so it is always recommended to first connect via BLE and ensure that it is enabled. The password and SSID will almost never change. However, they will change if the connections are reset via Connections->Reset Connections. You are now connected to the GoPro’s Wifi AP and can send any of the HTTP commands defined in the HTTP Specification. Station (STA) Mode Station Mode is where the GoPro operates as a Station, allowing the camera to connect to and communicate with an Access Point such as a switch or a router. This is used, for example, in the livestreaming and camera on the home network (COHN) features. StationAccessPointGoProrouterclientBLEWifi When the GoPro is in Station Mode, there is no HTTP communication channel to the Open GoPro client. The GoPro can still be controlled via BLE. In order to configure the GoPro in Station mode, after connecting via BLE, pairing, and enabling notifications, we must: scan for available networks connect to a discovered network, using the correct API based on whether or not we have previously connected to this network The following subsections will detail these steps. All of the Protobuf operations are performed in the same manner as in the protobuf tutorial such as reusing the ResponseManager. Scan for Networks It is always necessary to scan for networks, regardless of whether you already have a network’s information and know it is available. Failure to do so follows an untested and unsupported path in the GoPro’s connection state machine. The process of scanning for networks requires several Protobuf Operations as summarized here: Scan For Networks First we must request the GoPro to Scan For Access Points: python kotlin The code here is taken from connect_as_sta.py Let’s send the scan request and then retrieve and parse notifications until we receive a notification where the scanning_state is set to SCANNING_SUCCESS. Then we store the scan id from the notification for later use in retrieving the scan results. start_scan_request = bytearray( [ 0x02, Feature ID 0x02, Action ID *proto.RequestStartScan().SerializePartialToString(), ] ) start_scan_request.insert(0, len(start_scan_request)) await manager.client.write_gatt_char(GoProUuid.NETWORK_MANAGEMENT_REQ_UUID.value, start_scan_request, response=True) while response := await manager.get_next_response_as_protobuf(): ... elif response.action_id == 0x0B: Scan Notifications scan_notification: proto.NotifStartScanning = response.data type: ignore logger.info(f\"Received scan notification: {scan_notification}\") if scan_notification.scanning_state == proto.EnumScanning.SCANNING_SUCCESS: return scan_notification.scan_id This will log as such: Scanning for available Wifi Networks Writing: 02:02:02 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 06:02:82:08:01:10:02 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 0a:02:0b:08:05:10:01:18:05:20:01 Received scan notification: scanning_state: SCANNING_SUCCESS scan_id: 1 total_entries: 5 total_configured_ssid: 1 TODO Next we must request the GoPro to return the Scan Results. Using the scan_id from above, let’s send the Get AP Scan Results request, then retrieve and parse the response: python kotlin results_request = bytearray( [ 0x02, Feature ID 0x03, Action ID *proto.RequestGetApEntries(start_index=0, max_entries=100, scan_id=scan_id).SerializePartialToString(), ] ) results_request.insert(0, len(results_request)) await manager.client.write_gatt_char(GoProUuid.NETWORK_MANAGEMENT_REQ_UUID.value, results_request, response=True) response := await manager.get_next_response_as_protobuf(): entries_response: proto.ResponseGetApEntries = response.data type: ignore logger.info(\"Found the following networks:\") for entry in entries_response.entries: logger.info(str(entry)) return list(entries_response.entries) This will log as such: Getting the scanned networks. Writing: 08:02:03:08:00:10:64:18:01 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 20:76:02:83:08:01:10:01:1a:13:0a:0a:64:61:62:75:67:64:61:62 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 80:75:67:10:03:20:e4:28:28:2f:1a:13:0a:0a:41:54:54:54:70:34 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 81:72:36:46:69:10:02:20:f1:2c:28:01:1a:13:0a:0a:41:54:54:62 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 82:37:4a:67:41:77:61:10:02:20:99:2d:28:01:1a:16:0a:0d:52:69 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 83:6e:67:20:53:65:74:75:70:20:65:37:10:01:20:ec:12:28:00:1a Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 84:17:0a:0e:48:6f:6d:65:79:6e:65:74:5f:32:47:45:58:54:10:01 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 85:20:85:13:28:01 Found the following networks: ssid: \"dabugdabug\" signal_strength_bars: 3 signal_frequency_mhz: 5220 scan_entry_flags: 47 ssid: \"ATTTp4r6Fi\" signal_strength_bars: 2 signal_frequency_mhz: 5745 scan_entry_flags: 1 ssid: \"ATTb7JgAwa\" signal_strength_bars: 2 signal_frequency_mhz: 5785 scan_entry_flags: 1 ssid: \"Ring Setup e7\" signal_strength_bars: 1 signal_frequency_mhz: 2412 scan_entry_flags: 0 ssid: \"Homeynet_2GEXT\" signal_strength_bars: 1 signal_frequency_mhz: 2437 scan_entry_flags: 1 TODO At this point we have all of the discovered networks. Continue on to see how to use this information. Connect to Network Depending on whether the GoPro has already connected to the desired network, we must next perform either the Connect or Connect New operation. This will be described below but first, a note on fragmentation: GATT Write Fragmentation Up to this point in the tutorials, all of the operations we have been performing have resulted in GATT write requests guaranteed to be less than maximum BLE packet size of 20 bytes. However, depending on the SSID and password used in the Connect New operation, this maximum size might be surpassed. Therefore, it is necessary to fragment the payload. This is essentially the inverse of the accumulation algorithm. We accomplish this as follows: python kotlin Let’s create a generator to yield fragmented packets (yield_fragmented_packets) from a monolithic payload. First, depending on the length of the payload, we create the header for the first packet that specifies the total payload length: if length < (2**5 - 1): header = bytearray([length]) elif length < (2**13 - 1): header = bytearray((length | 0x2000).to_bytes(2, \"big\", signed=False)) elif length < (2**16 - 1): header = bytearray((length | 0x6400).to_bytes(2, \"big\", signed=False)) Then we chunk through the payload, prepending either the above header for the first packet or the continuation header for subsequent packets: byte_index = 0 while bytes_remaining := length - byte_index: If this is the first packet, use the appropriate header. Else use the continuation header if is_first_packet: packet = bytearray(header) is_first_packet = False else: packet = bytearray(CONTINUATION_HEADER) Build the current packet packet_size = min(MAX_PACKET_SIZE - len(packet), bytes_remaining) packet.extend(bytearray(payload[byte_index : byte_index + packet_size])) yield bytes(packet) Increment byte_index for continued processing byte_index += packet_size Finally we create a helper method that we can reuse throughout the tutorials to use this generator to send GATT Writes using a given Bleak client: async def fragment_and_write_gatt_char(client: BleakClient, char_specifier: str, data: bytes): for packet in yield_fragmented_packets(data): await client.write_gatt_char(char_specifier, packet, response=True) TODO The safest solution would be to always use the above fragmentation method. For the sake of simplicity in these tutorials, we are only using this where there is a possibility of exceeding the maximum BLE packet size. Connect Example In order to proceed, we must first inspect the scan result gathered from the previous section to see which connect operation to use. Specifically we are checking the scan_entry_flags to see if the SCAN_FLAG_CONFIGURED bit is set. If the bit is set (and thus we have already provisioned this network) then we must use Connect . Otherwise we must use Connect New: python kotlin if entry.scan_entry_flags & proto.EnumScanEntryFlags.SCAN_FLAG_CONFIGURED: connect_request = bytearray( [ 0x02, Feature ID 0x04, Action ID *proto.RequestConnect(ssid=entry.ssid).SerializePartialToString(), ] ) else: connect_request = bytearray( [ 0x02, Feature ID 0x05, Action ID *proto.RequestConnectNew(ssid=entry.ssid, password=password).SerializePartialToString(), ] ) TODO Now that we have the correct request built, we can send it (using our newly created fragmentation method) we can send it. Then we will continuously receive Provisioning Notifications which should be checked until the provisioning_state is set to PROVISIONING_SUCCESS_NEW_AP. The final provisioning_state that we are looking for is always PROVISIONING_SUCCESS_NEW_AP both in the Connect and Connect New use cases. The procedure is summarized here: Connect to Already Configured Network python kotlin await fragment_and_write_gatt_char(manager.client, GoProUuid.NETWORK_MANAGEMENT_REQ_UUID.value, connect_request) while response := await manager.get_next_response_as_protobuf(): ... elif response.action_id == 0x0C: NotifProvisioningState Notifications provisioning_notification: proto.NotifProvisioningState = response.data type: ignore if provisioning_notification.provisioning_state == proto.EnumProvisioning.PROVISIONING_SUCCESS_NEW_AP: return TODO At this point, the GoPro is connect to the desired network in Station Mode! Quiz time! 📚 ✏️ True or False: When the GoPro is in Station Mode, it can be communicated with via both BLE and HTTP. A: True B: False Submit Answer Correct!! 😃 Incorrect!! 😭 The correct answer is B. When the GoPro is in station mode, it is connected via WiFi to another Access Point; not connected via Wifi to you (the client). However, it is possible to maintain the BLE connection in STA mode so that you can still control the GoPro. Troubleshooting See the first tutorial’s BLE troubleshooting section to troubleshoot BLE problems. Good Job! Congratulations 🤙 You have now connected the GoPro to a WiFi network in either AP or STA mode. To see how to make use of AP mode, continue to the next tutorial. To see how make use of STA mode, continue to the camera on the home network tutorial.", + "excerpt": "This document will provide a walk-through tutorial to use the Open GoPro Interface to connect the GoPro to a Wifi network either in Access Point (AP) mode or Station (STA) Mode. It is recommended that you have first completed the connecting BLE, sending commands, parsing responses, and protobuf tutorials before proceeding. Requirements It is assumed that the hardware and software requirements from the connecting BLE tutorial are present and configured correctly. The scripts that will be used for this tutorial can be found in the Tutorial 6 Folder. Just Show me the Demo(s)!! python kotlin Each of the scripts for this tutorial can be found in the Tutorial 6 directory. Python >= 3.9 and < 3.12 must be used as specified in the requirements Enable WiFi AP You can enable the GoPro’s Access Point to allow it accept Wifi connections as an Access Point via: $ python wifi_enable.py See the help for parameter definitions: $ python wifi_enable.py --help usage: enable_wifi_ap.py [-h] [-i IDENTIFIER] [-t TIMEOUT] Connect to a GoPro camera via BLE, get its WiFi Access Point (AP) info, and enable its AP. options: -h, --help show this help message and exit -i IDENTIFIER, --identifier IDENTIFIER Last 4 digits of GoPro serial number, which is the last 4 digits of the default camera SSID. If not used, first discovered GoPro will be connected to -t TIMEOUT, --timeout TIMEOUT time in seconds to maintain connection before disconnecting. If not set, will maintain connection indefinitely Connect GoPro as STA You can connect the GoPro to a Wifi network where the GoPro is in Station Mode (STA) via: $ python connect_as_sta.py See the help for parameter definitions: $ python connect_as_sta.py --help Connect the GoPro to a Wifi network where the GoPro is in Station Mode (STA). positional arguments: ssid SSID of network to connect to password Password of network to connect to options: -h, --help show this help message and exit -i IDENTIFIER, --identifier IDENTIFIER Last 4 digits of GoPro serial number, which is the last 4 digits of the default camera SSID. If not used, first discovered GoPro will be connected to The Kotlin file for this tutorial can be found on Github. To perform the tutorial, run the Android Studio project, select “Tutorial 6” from the dropdown and click on “Perform.” This requires that a GoPro is already connected via BLE, i.e. that Tutorial 1 was already run. You can check the BLE status at the top of the app. Perform Tutorial 6 This will start the tutorial and log to the screen as it executes. When the tutorial is complete, click “Exit Tutorial” to return to the Tutorial selection screen. Setup For both cases, we must first connect to BLE as was discussed in the connecting BLE tutorial. Access Point Mode (AP) In AP mode, the GoPro operates as an Access Point, allowing wireless clients to connect and communicate using the Open GoPro HTTP API. The HTTP API provides much of the same functionality as the BLE API as well as some additional functionality. For more information on the HTTP API, see the next 2 tutorials. AccessPointGoProclientBLEWiFi In order to connect to the camera in AP mode, after connecting via BLE, pairing, and enabling notifications, we must: find the GoPro’s WiFi AP information (SSID and password) via BLE, enable the WiFi AP via BLE connect to the WiFi AP. Here is an outline of the steps to do so: GoProWiFiGoProBLEOpen GoPro user deviceGoProWiFiGoProBLEOpen GoPro user deviceScanningConnectedalt[If not Previously Paired]PairedReady to Communicateloop[Steps from Connect Tutorial]WiFi AP enabledAdvertisingAdvertisingConnectPair RequestPair ResponseEnable Notifications on Characteristic 1Enable Notifications on Characteristic 2Enable Notifications on Characteristic ..Enable Notifications on Characteristic NRead Wifi AP SSIDRead Wifi AP PasswordWrite to Enable WiFi APResponse sent as notificationConnect to WiFi AP The following subsections will detail this process. Find WiFi Information First we must find the target Wifi network’s SSID and password. The process to get this information is different than all other BLE operations described up to this point. Whereas the previous command, setting, and query operations all followed the Write Request-Notification Response pattern, the WiFi Information is retrieved via direct Read Requests to BLE characteristics. Get WiFi SSID The WiFi SSID can be found by reading from the WiFi AP SSID characteristic of the WiFi Access Point service. Let’s send the read request to get the SSID and decode it into a string. python kotlin ssid_uuid = GoProUuid.WIFI_AP_SSID_UUID logger.info(f\"Reading the WiFi AP SSID at {ssid_uuid}\") ssid = (await client.read_gatt_char(ssid_uuid.value)).decode() logger.info(f\"SSID is {ssid}\") There is no need for a synchronization event as the information is available when the read_gatt_char method returns. In the demo, this information is logged as such: Reading the WiFi AP SSID at GoProUuid.WIFI_AP_SSID_UUID SSID is GP24500702 ble.readCharacteristic(goproAddress, GoProUUID.WIFI_AP_SSID.uuid).onSuccess { ssid = it.decodeToString() } Timber.i(\"SSID is $ssid\") In the demo, this information is logged as such: Getting the SSID Read characteristic b5f90002-aa8d-11e3-9046-0002a5d5c51b : value: 64:65:62:75:67:68:65:72:6F:31:31 SSID is debughero11 Get WiFi Password The WiFi password can be found by reading from the WiFi AP password characteristic of the WiFi Access Point service. Let’s send the read request to get the password and decode it into a string. python kotlin password_uuid = GoProUuid.WIFI_AP_PASSWORD_UUID logger.info(f\"Reading the WiFi AP password at {password_uuid}\") password = (await client.read_gatt_char(password_uuid.value)).decode() logger.info(f\"Password is {password}\") There is no need for a synchronization event as the information is available when the read_gatt_char method returns. In the demo, this information is logged as such: Reading the WiFi AP password at GoProUuid.WIFI_AP_PASSWORD_UUID Password is p@d-NNc-2ts ble.readCharacteristic(goproAddress, GoProUUID.WIFI_AP_PASSWORD.uuid).onSuccess { password = it.decodeToString() } Timber.i(\"Password is $password\") In the demo, this information is logged as such: Getting the password Read characteristic b5f90003-aa8d-11e3-9046-0002a5d5c51b : value: 7A:33:79:2D:44:43:58:2D:50:68:6A Password is z3y-DCX-Phj Enable WiFi AP Before we can connect to the WiFi AP, we have to make sure the access point is enabled. This is accomplished via the AP Control command: Command Bytes Ap Control Enable 0x03 0x17 0x01 0x01 Ap Control Disable 0x03 0x17 0x01 0x00 We are using the same notification handler that was defined in the sending commands tutorial. Let’s write the bytes to the “Command Request UUID” to enable the WiFi AP! python kotlin event.clear() request = bytes([0x03, 0x17, 0x01, 0x01]) command_request_uuid = GoProUuid.COMMAND_REQ_UUID await client.write_gatt_char(command_request_uuid.value, request, response=True) await event.wait() Wait to receive the notification response We make sure to clear the synchronization event before writing, then pend on the event until it is set in the notification callback. val enableWifiCommand = ubyteArrayOf(0x03U, 0x17U, 0x01U, 0x01U) ble.writeCharacteristic(goproAddress, GoProUUID.CQ_COMMAND.uuid, enableWifiCommand) receivedData.receive() Note that we have received the “Command Status” notification response from the Command Response characteristic since we enabled it’s notifications in Enable Notifications. This can be seen in the demo log: python kotlin Enabling the WiFi AP Writing to GoProUuid.COMMAND_REQ_UUID: 03:17:01:01 Received response at GoProUuid.COMMAND_RSP_UUID: 02:17:00 Command sent successfully WiFi AP is enabled Enabling the camera's Wifi AP Writing characteristic b5f90072-aa8d-11e3-9046-0002a5d5c51b ==> 03:17:01:01 Wrote characteristic b5f90072-aa8d-11e3-9046-0002a5d5c51b Characteristic b5f90073-aa8d-11e3-9046-0002a5d5c51b changed | value: 02:17:00 Received response on b5f90073-aa8d-11e3-9046-0002a5d5c51b: 02:17:00 Command sent successfully As expected, the response was received on the correct UUID and the status was “success”. Establish Connection to WiFi AP python kotlin If you have been following through the ble_enable_wifi.py script, you will notice that it ends here such that we know the WiFi SSID / password and the WiFi AP is enabled. This is because there are many different methods of connecting to the WiFi AP depending on your OS and the framework you are using to develop. You could, for example, simply use your OS’s WiFi GUI to connect. While out of the scope of these tutorials, there is a programmatic example of this in the cross-platform WiFi Demo from the Open GoPro Python SDK. Using the passwsord and SSID we discovered above, we will now connect to the camera’s network: wifi.connect(ssid, password) This should show a system popup on your Android device that eventually goes away once the Wifi is connected. This connection process appears to vary drastically in time. Quiz time! 📚 ✏️ How is the WiFi password response received? A: As a read response from the WiFi AP Password characteristic B: As write responses to the WiFi Request characteristic C: As notifications of the Command Response characteristic Submit Answer Correct!! 😃 Incorrect!! 😭 The correct answer is A. This (and WiFi AP SSID) is an exception to the rule. Usually responses are received as notifications to a response characteristic. However, in this case, it is received as a direct read response (since we are reading from the characteristic and not writing to it). Which of the following statements about the GoPro WiFi AP is true? A: It only needs to be enabled once and it will then always remain on B: The WiFi password will never change C: The WiFi SSID will never change D: None of the Above Submit Answer Correct!! 😃 Incorrect!! 😭 The correct answer is D. While the WiFi AP will remain on for some time, it can and will eventually turn off so it is always recommended to first connect via BLE and ensure that it is enabled. The password and SSID will almost never change. However, they will change if the connections are reset via Connections->Reset Connections. You are now connected to the GoPro’s Wifi AP and can send any of the HTTP commands defined in the HTTP Specification. Station (STA) Mode Station Mode is where the GoPro operates as a Station, allowing the camera to connect to and communicate with an Access Point such as a switch or a router. This is used, for example, in the livestreaming and camera on the home network (COHN) features. StationAccessPointGoProrouterclientBLEWifi When the GoPro is in Station Mode, there is no HTTP communication channel to the Open GoPro client. The GoPro can still be controlled via BLE. In order to configure the GoPro in Station mode, after connecting via BLE, pairing, and enabling notifications, we must: scan for available networks connect to a discovered network, using the correct API based on whether or not we have previously connected to this network The following subsections will detail these steps. All of the Protobuf operations are performed in the same manner as in the protobuf tutorial such as reusing the ResponseManager. Scan for Networks It is always necessary to scan for networks, regardless of whether you already have a network’s information and know it is available. Failure to do so follows an untested and unsupported path in the GoPro’s connection state machine. The process of scanning for networks requires several Protobuf Operations as summarized here: Scan For Networks First we must request the GoPro to Scan For Access Points: python kotlin The code here is taken from connect_as_sta.py Let’s send the scan request and then retrieve and parse notifications until we receive a notification where the scanning_state is set to SCANNING_SUCCESS. Then we store the scan id from the notification for later use in retrieving the scan results. start_scan_request = bytearray( [ 0x02, Feature ID 0x02, Action ID *proto.RequestStartScan().SerializePartialToString(), ] ) start_scan_request.insert(0, len(start_scan_request)) await manager.client.write_gatt_char(GoProUuid.NETWORK_MANAGEMENT_REQ_UUID.value, start_scan_request, response=True) while response := await manager.get_next_response_as_protobuf(): ... elif response.action_id == 0x0B: Scan Notifications scan_notification: proto.NotifStartScanning = response.data type: ignore logger.info(f\"Received scan notification: {scan_notification}\") if scan_notification.scanning_state == proto.EnumScanning.SCANNING_SUCCESS: return scan_notification.scan_id This will log as such: Scanning for available Wifi Networks Writing: 02:02:02 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 06:02:82:08:01:10:02 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 0a:02:0b:08:05:10:01:18:05:20:01 Received scan notification: scanning_state: SCANNING_SUCCESS scan_id: 1 total_entries: 5 total_configured_ssid: 1 TODO Next we must request the GoPro to return the Scan Results. Using the scan_id from above, let’s send the Get AP Scan Results request, then retrieve and parse the response: python kotlin results_request = bytearray( [ 0x02, Feature ID 0x03, Action ID *proto.RequestGetApEntries(start_index=0, max_entries=100, scan_id=scan_id).SerializePartialToString(), ] ) results_request.insert(0, len(results_request)) await manager.client.write_gatt_char(GoProUuid.NETWORK_MANAGEMENT_REQ_UUID.value, results_request, response=True) response := await manager.get_next_response_as_protobuf(): entries_response: proto.ResponseGetApEntries = response.data type: ignore logger.info(\"Found the following networks:\") for entry in entries_response.entries: logger.info(str(entry)) return list(entries_response.entries) This will log as such: Getting the scanned networks. Writing: 08:02:03:08:00:10:64:18:01 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 20:76:02:83:08:01:10:01:1a:13:0a:0a:64:61:62:75:67:64:61:62 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 80:75:67:10:03:20:e4:28:28:2f:1a:13:0a:0a:41:54:54:54:70:34 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 81:72:36:46:69:10:02:20:f1:2c:28:01:1a:13:0a:0a:41:54:54:62 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 82:37:4a:67:41:77:61:10:02:20:99:2d:28:01:1a:16:0a:0d:52:69 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 83:6e:67:20:53:65:74:75:70:20:65:37:10:01:20:ec:12:28:00:1a Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 84:17:0a:0e:48:6f:6d:65:79:6e:65:74:5f:32:47:45:58:54:10:01 Received response at GoProUuid.NETWORK_MANAGEMENT_RSP_UUID: 85:20:85:13:28:01 Found the following networks: ssid: \"dabugdabug\" signal_strength_bars: 3 signal_frequency_mhz: 5220 scan_entry_flags: 47 ssid: \"ATTTp4r6Fi\" signal_strength_bars: 2 signal_frequency_mhz: 5745 scan_entry_flags: 1 ssid: \"ATTb7JgAwa\" signal_strength_bars: 2 signal_frequency_mhz: 5785 scan_entry_flags: 1 ssid: \"Ring Setup e7\" signal_strength_bars: 1 signal_frequency_mhz: 2412 scan_entry_flags: 0 ssid: \"Homeynet_2GEXT\" signal_strength_bars: 1 signal_frequency_mhz: 2437 scan_entry_flags: 1 TODO At this point we have all of the discovered networks. Continue on to see how to use this information. Connect to Network Depending on whether the GoPro has already connected to the desired network, we must next perform either the Connect or Connect New operation. This will be described below but first, a note on fragmentation: GATT Write Fragmentation Up to this point in the tutorials, all of the operations we have been performing have resulted in GATT write requests guaranteed to be less than maximum BLE packet size of 20 bytes. However, depending on the SSID and password used in the Connect New operation, this maximum size might be surpassed. Therefore, it is necessary to fragment the payload. This is essentially the inverse of the accumulation algorithm. We accomplish this as follows: python kotlin Let’s create a generator to yield fragmented packets (yield_fragmented_packets) from a monolithic payload. First, depending on the length of the payload, we create the header for the first packet that specifies the total payload length: if length < (2**13 - 1): header = bytearray((length | 0x2000).to_bytes(2, \"big\", signed=False)) elif length < (2**16 - 1): header = bytearray((length | 0x6400).to_bytes(2, \"big\", signed=False)) Then we chunk through the payload, prepending either the above header for the first packet or the continuation header for subsequent packets: byte_index = 0 while bytes_remaining := length - byte_index: If this is the first packet, use the appropriate header. Else use the continuation header if is_first_packet: packet = bytearray(header) is_first_packet = False else: packet = bytearray(CONTINUATION_HEADER) Build the current packet packet_size = min(MAX_PACKET_SIZE - len(packet), bytes_remaining) packet.extend(bytearray(payload[byte_index : byte_index + packet_size])) yield bytes(packet) Increment byte_index for continued processing byte_index += packet_size Finally we create a helper method that we can reuse throughout the tutorials to use this generator to send GATT Writes using a given Bleak client: async def fragment_and_write_gatt_char(client: BleakClient, char_specifier: str, data: bytes): for packet in yield_fragmented_packets(data): await client.write_gatt_char(char_specifier, packet, response=True) TODO The safest solution would be to always use the above fragmentation method. For the sake of simplicity in these tutorials, we are only using this where there is a possibility of exceeding the maximum BLE packet size. Connect Example In order to proceed, we must first inspect the scan result gathered from the previous section to see which connect operation to use. Specifically we are checking the scan_entry_flags to see if the SCAN_FLAG_CONFIGURED bit is set. If the bit is set (and thus we have already provisioned this network) then we must use Connect . Otherwise we must use Connect New: python kotlin if entry.scan_entry_flags & proto.EnumScanEntryFlags.SCAN_FLAG_CONFIGURED: connect_request = bytearray( [ 0x02, Feature ID 0x04, Action ID *proto.RequestConnect(ssid=entry.ssid).SerializePartialToString(), ] ) else: connect_request = bytearray( [ 0x02, Feature ID 0x05, Action ID *proto.RequestConnectNew(ssid=entry.ssid, password=password).SerializePartialToString(), ] ) TODO Now that we have the correct request built, we can send it (using our newly created fragmentation method) we can send it. Then we will continuously receive Provisioning Notifications which should be checked until the provisioning_state is set to PROVISIONING_SUCCESS_NEW_AP. The final provisioning_state that we are looking for is always PROVISIONING_SUCCESS_NEW_AP both in the Connect and Connect New use cases. The procedure is summarized here: Connect to Already Configured Network python kotlin await fragment_and_write_gatt_char(manager.client, GoProUuid.NETWORK_MANAGEMENT_REQ_UUID.value, connect_request) while response := await manager.get_next_response_as_protobuf(): ... elif response.action_id == 0x0C: NotifProvisioningState Notifications provisioning_notification: proto.NotifProvisioningState = response.data type: ignore if provisioning_notification.provisioning_state == proto.EnumProvisioning.PROVISIONING_SUCCESS_NEW_AP: return TODO At this point, the GoPro is connect to the desired network in Station Mode! Quiz time! 📚 ✏️ True or False: When the GoPro is in Station Mode, it can be communicated with via both BLE and HTTP. A: True B: False Submit Answer Correct!! 😃 Incorrect!! 😭 The correct answer is B. When the GoPro is in station mode, it is connected via WiFi to another Access Point; not connected via Wifi to you (the client). However, it is possible to maintain the BLE connection in STA mode so that you can still control the GoPro. Troubleshooting See the first tutorial’s BLE troubleshooting section to troubleshoot BLE problems. Good Job! Congratulations 🤙 You have now connected the GoPro to a WiFi network in either AP or STA mode. To see how to make use of AP mode, continue to the next tutorial. To see how make use of STA mode, continue to the camera on the home network tutorial.", "categories": [], "tags": [], "url": "/OpenGoPro/tutorials/connect-wifi#" diff --git a/ble/features/statuses.html b/ble/features/statuses.html index 68a1df40..fd7e50c5 100644 --- a/ble/features/statuses.html +++ b/ble/features/statuses.html @@ -979,7 +979,7 @@

Status IDs https://img.shields.io/badge/HERO10Black-bcf60c https://img.shields.io/badge/HERO9Black-fabebe -

How many minutes of video can be captured with current settings before sdcard is full

+

How many seconds of video can be captured with current settings before sdcard is full

Photos (38) diff --git a/ble/objects.inv b/ble/objects.inv index 052b3d3e..5c1e6b9b 100644 Binary files a/ble/objects.inv and b/ble/objects.inv differ diff --git a/ble/operation-operation_index.html b/ble/operation-operation_index.html index 825efea5..72a6492a 100644 --- a/ble/operation-operation_index.html +++ b/ble/operation-operation_index.html @@ -1818,7 +1818,7 @@

operation index

-Status 35 (How many minutes of video can be captured with current settings before sdcard is full) (features/statuses) +Status 35 (How many seconds of video can be captured with current settings before sdcard is full) (features/statuses) Status diff --git a/ble/protocol/id_tables.html b/ble/protocol/id_tables.html index e0ef05e7..c703a14b 100644 --- a/ble/protocol/id_tables.html +++ b/ble/protocol/id_tables.html @@ -1213,7 +1213,7 @@

Status IDs 35 -How many minutes of video can be captured with current settings before sdcard is full +How many seconds of video can be captured with current settings before sdcard is full 38 diff --git a/ble/searchindex.js b/ble/searchindex.js index efc00f73..b1809e58 100644 --- a/ble/searchindex.js +++ b/ble/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"5GHZ Available (81)": [[8, "ghz-available-81"]], "AP Mode (69)": [[8, "ap-mode-69"]], "AP SSID (29)": [[8, "ap-ssid-29"]], "Access Point": [[0, "access-point"]], "Active Hilights (58)": [[8, "active-hilights-58"]], "Advertisements": [[11, "advertisements"]], "Auto Power Down (59)": [[7, "auto-power-down-59"]], "BLE Characteristics": [[11, "ble-characteristics"]], "BLE Setup": [[11, "ble-setup"]], "Battery Present (1)": [[8, "battery-present-1"]], "Bit Depth (183)": [[7, "bit-depth-183"]], "Busy (8)": [[8, "busy-8"]], "Camera Capabilities": [[7, "camera-capabilities"]], "Camera Control": [[15, "camera-control"]], "Camera Control ID (114)": [[8, "camera-control-id-114"]], "Camera Readiness": [[15, "camera-readiness"]], "Camera on the Home Network": [[1, "camera-on-the-home-network"]], "Capture Delay Active (101)": [[8, "capture-delay-active-101"]], "Certificates": [[1, "certificates"]], "Cold (85)": [[8, "cold-85"]], "Command IDs": [[13, "command-ids"]], "Commands": [[12, "commands"]], "Configure GATT Characteristics": [[11, "configure-gatt-characteristics"]], "Connected Devices (31)": [[8, "connected-devices-31"]], "Continuation Packets": [[12, "continuation-packets"]], "Control": [[2, "control"]], "Controls (175)": [[7, "controls-175"]], "Data Protocol": [[12, "data-protocol"]], "Decipher Message Payload Type": [[12, "decipher-message-payload-type"]], "Disconnect from Access Point": [[0, "disconnect-from-access-point"]], "Display Mod Status (110)": [[8, "display-mod-status-110"]], "Easy Mode Speed (176)": [[7, "easy-mode-speed-176"]], "Enable Night Photo (177)": [[7, "enable-night-photo-177"]], "Encoding (10)": [[8, "encoding-10"]], "EnumCOHNNetworkState": [[14, "enumcohnnetworkstate"]], "EnumCOHNStatus": [[14, "enumcohnstatus"]], "EnumCameraControlStatus": [[14, "enumcameracontrolstatus"]], "EnumFlatMode": [[14, "enumflatmode"]], "EnumLens": [[14, "enumlens"]], "EnumLiveStreamError": [[14, "enumlivestreamerror"]], "EnumLiveStreamStatus": [[14, "enumlivestreamstatus"]], "EnumPresetGroup": [[14, "enumpresetgroup"]], "EnumPresetGroupIcon": [[14, "enumpresetgroupicon"]], "EnumPresetIcon": [[14, "enumpreseticon"]], "EnumPresetTitle": [[14, "enumpresettitle"]], "EnumProvisioning": [[14, "enumprovisioning"]], "EnumRegisterLiveStreamStatus": [[14, "enumregisterlivestreamstatus"]], "EnumRegisterPresetStatus": [[14, "enumregisterpresetstatus"]], "EnumResultGeneric": [[14, "enumresultgeneric"]], "EnumScanEntryFlags": [[14, "enumscanentryflags"]], "EnumScanning": [[14, "enumscanning"]], "EnumWindowSize": [[14, "enumwindowsize"]], "Enums": [[14, "enums"]], "Extended (13-bit) Packets": [[12, "extended-13-bit-packets"]], "Extended (16-bit) Packets": [[12, "extended-16-bit-packets"]], "FTU (79)": [[8, "ftu-79"]], "Finish Pairing": [[11, "finish-pairing"]], "Flatmode (89)": [[8, "flatmode-89"]], "Frames Per Second (3)": [[7, "frames-per-second-3"]], "Framing (193)": [[7, "framing-193"]], "GPS (83)": [[7, "gps-83"]], "GPS Lock (68)": [[8, "gps-lock-68"]], "General": [[9, "general"]], "General (5-bit) Packets": [[12, "general-5-bit-packets"]], "Getting Started": [[9, "getting-started"]], "Hilights": [[3, "hilights"]], "HindSight (167)": [[7, "hindsight-167"]], "Hindsight (106)": [[8, "hindsight-106"]], "Hypersmooth (135)": [[7, "hypersmooth-135"]], "ID Tables": [[13, "id-tables"]], "Internal Battery (70)": [[8, "internal-battery-70"]], "Internal Battery Bars (2)": [[8, "internal-battery-bars-2"]], "JSON": [[7, "json"]], "Keep Alive": [[15, "keep-alive"]], "LCD Lock (11)": [[8, "lcd-lock-11"]], "Lapse Mode (187)": [[7, "lapse-mode-187"]], "Last Pairing Success (21)": [[8, "last-pairing-success-21"]], "Last Pairing Type (20)": [[8, "last-pairing-type-20"]], "Last Wifi Scan Success (23)": [[8, "last-wifi-scan-success-23"]], "Lens Type (105)": [[8, "lens-type-105"]], "Limitations": [[9, "limitations"]], "Linux Core (104)": [[8, "linux-core-104"]], "Live Bursts (100)": [[8, "live-bursts-100"]], "Live Streaming": [[4, "live-streaming"]], "Liveview Exposure Select Mode (65)": [[8, "liveview-exposure-select-mode-65"]], "Liveview X (67)": [[8, "liveview-x-67"]], "Liveview Y (66)": [[8, "liveview-y-66"]], "Locate (45)": [[8, "locate-45"]], "Max Lens (162)": [[7, "max-lens-162"]], "Max Lens Mod (189)": [[7, "max-lens-mod-189"]], "Max Lens Mod Enable (190)": [[7, "max-lens-mod-enable-190"]], "Media": [[14, "media"]], "Media Format (128)": [[7, "media-format-128"]], "Media Mod State (102)": [[8, "media-mod-state-102"]], "Message Payload": [[12, "message-payload"]], "Microphone Accessory (74)": [[8, "microphone-accessory-74"]], "Minimum Status Poll Period (60)": [[8, "minimum-status-poll-period-60"]], "Mobile Friendly (78)": [[8, "mobile-friendly-78"]], "Multi Shot Aspect Ratio (192)": [[7, "multi-shot-aspect-ratio-192"]], "NotifProvisioningState": [[14, "notifprovisioningstate"]], "NotifStartScanning": [[14, "notifstartscanning"]], "NotifyCOHNStatus": [[14, "notifycohnstatus"]], "NotifyLiveStreamStatus": [[14, "notifylivestreamstatus"]], "NotifyPresetStatus": [[14, "notifypresetstatus"]], "OTA (41)": [[8, "ota-41"]], "OTA Charged (83)": [[8, "ota-charged-83"]], "Operations": [[0, "operations"], [1, "operations"], [2, "operations"], [3, "operations"], [4, "operations"], [5, "operations"], [6, "operations"], [7, "operations"]], "Overheating (6)": [[8, "overheating-6"]], "Packet Headers": [[12, "packet-headers"]], "Packetization": [[12, "packetization"]], "Pairing Mode": [[11, "pairing-mode"]], "Pairing State (19)": [[8, "pairing-state-19"]], "Pairing State (Legacy) (28)": [[8, "pairing-state-legacy-28"]], "Pending FW Update Cancel (42)": [[8, "pending-fw-update-cancel-42"]], "Photo Horizon Leveling (151)": [[7, "photo-horizon-leveling-151"]], "Photo Interval Capture Count (118)": [[8, "photo-interval-capture-count-118"]], "Photo Interval Duration (172)": [[7, "photo-interval-duration-172"]], "Photo Lens (122)": [[7, "photo-lens-122"]], "Photo Mode (191)": [[7, "photo-mode-191"]], "Photo Preset (94)": [[8, "photo-preset-94"]], "Photo Single Interval (171)": [[7, "photo-single-interval-171"]], "Photos (38)": [[8, "photos-38"]], "Preset": [[14, "preset"]], "Preset (97)": [[8, "preset-97"]], "Preset Group (96)": [[8, "preset-group-96"]], "Preset Groups": [[5, "preset-groups"]], "Preset Modified (98)": [[8, "preset-modified-98"]], "Preset Modified Status": [[5, "preset-modified-status"]], "PresetGroup": [[14, "presetgroup"]], "PresetSetting": [[14, "presetsetting"]], "Presets": [[5, "presets"]], "Preview Stream (32)": [[8, "preview-stream-32"]], "Preview Stream Available (55)": [[8, "preview-stream-available-55"]], "Primary Storage (33)": [[8, "primary-storage-33"]], "Profiles (184)": [[7, "profiles-184"]], "Protobuf": [[12, "protobuf"]], "Protobuf Documentation": [[14, "protobuf-documentation"]], "Protobuf IDs": [[13, "protobuf-ids"]], "Protocol": [[10, "protocol"]], "Provisioning Procedure": [[1, "provisioning-procedure"]], "Queries": [[12, "queries"]], "Query": [[6, "query"]], "Query IDs": [[13, "query-ids"]], "Quick Capture (9)": [[8, "quick-capture-9"]], "Ready (82)": [[8, "ready-82"]], "Remaining Live Bursts (99)": [[8, "remaining-live-bursts-99"]], "Remaining Photos (34)": [[8, "remaining-photos-34"]], "Remaining Video Time (35)": [[8, "remaining-video-time-35"]], "Remote Connected (27)": [[8, "remote-connected-27"]], "Remote Version (26)": [[8, "remote-version-26"]], "RequestCOHNCert": [[14, "requestcohncert"]], "RequestClearCOHNCert": [[14, "requestclearcohncert"]], "RequestConnect": [[14, "requestconnect"]], "RequestConnectNew": [[14, "requestconnectnew"]], "RequestCreateCOHNCert": [[14, "requestcreatecohncert"]], "RequestCustomPresetUpdate": [[14, "requestcustompresetupdate"]], "RequestGetApEntries": [[14, "requestgetapentries"]], "RequestGetCOHNStatus": [[14, "requestgetcohnstatus"]], "RequestGetLastCapturedMedia": [[14, "requestgetlastcapturedmedia"]], "RequestGetLiveStreamStatus": [[14, "requestgetlivestreamstatus"]], "RequestGetPresetStatus": [[14, "requestgetpresetstatus"]], "RequestReleaseNetwork": [[14, "requestreleasenetwork"]], "RequestSetCOHNSetting": [[14, "requestsetcohnsetting"]], "RequestSetCameraControlStatus": [[14, "requestsetcameracontrolstatus"]], "RequestSetLiveStreamMode": [[14, "requestsetlivestreammode"]], "RequestSetTurboActive": [[14, "requestsetturboactive"]], "RequestStartScan": [[14, "requeststartscan"]], "ResponseCOHNCert": [[14, "responsecohncert"]], "ResponseConnect": [[14, "responseconnect"]], "ResponseConnectNew": [[14, "responseconnectnew"]], "ResponseGeneric": [[14, "responsegeneric"]], "ResponseGetApEntries": [[14, "responsegetapentries"]], "ResponseGetApEntries::ScanEntry": [[14, "responsegetapentries-scanentry"]], "ResponseLastCapturedMedia": [[14, "responselastcapturedmedia"]], "ResponseStartScanning": [[14, "responsestartscanning"]], "Rotation (86)": [[8, "rotation-86"]], "SD Card Capacity (117)": [[8, "sd-card-capacity-117"]], "SD Card Errors (112)": [[8, "sd-card-errors-112"]], "SD Card Remaining (54)": [[8, "sd-card-remaining-54"]], "Scheduled Capture (108)": [[8, "scheduled-capture-108"]], "Scheduled Capture Preset ID (107)": [[8, "scheduled-capture-preset-id-107"]], "Send Messages": [[11, "send-messages"]], "Setting IDs": [[7, "setting-ids"], [13, "setting-ids"]], "Settings": [[7, "settings"]], "Setup Anti-Flicker (134)": [[7, "setup-anti-flicker-134"]], "State Management": [[15, "state-management"]], "Status IDs": [[8, "status-ids"], [13, "status-ids"]], "Statuses": [[8, "statuses"]], "Supported Cameras": [[9, "supported-cameras"]], "System Video Mode (180)": [[7, "system-video-mode-180"]], "Time Lapse Digital Lenses (123)": [[7, "time-lapse-digital-lenses-123"]], "Time Since Last Hilight (59)": [[8, "time-since-last-hilight-59"]], "Time Warp Speed (103)": [[8, "time-warp-speed-103"]], "Timelapse Interval Countdown (49)": [[8, "timelapse-interval-countdown-49"]], "Timelapse Preset (95)": [[8, "timelapse-preset-95"]], "Trail Length (179)": [[7, "trail-length-179"]], "Turbo Transfer (113)": [[8, "turbo-transfer-113"]], "Type Length Value": [[12, "type-length-value"]], "USB Connected (115)": [[8, "usb-connected-115"]], "USB Controlled (116)": [[8, "usb-controlled-116"]], "Valid SD Card Write Speed (111)": [[8, "valid-sd-card-write-speed-111"]], "Verifying Certificate": [[1, "verifying-certificate"]], "Video Aspect Ratio (108)": [[7, "video-aspect-ratio-108"]], "Video Bit Rate (182)": [[7, "video-bit-rate-182"]], "Video Easy Mode (186)": [[7, "video-easy-mode-186"]], "Video Encoding Duration (13)": [[8, "video-encoding-duration-13"]], "Video Horizon Leveling (150)": [[7, "video-horizon-leveling-150"]], "Video Lens (121)": [[7, "video-lens-121"]], "Video Performance Mode (173)": [[7, "video-performance-mode-173"]], "Video Preset (93)": [[8, "video-preset-93"]], "Video Resolution (2)": [[7, "video-resolution-2"]], "Videos (39)": [[8, "videos-39"]], "View Certificate Details": [[1, "view-certificate-details"]], "Webcam Digital Lenses (43)": [[7, "webcam-digital-lenses-43"]], "Welcome to Open GoPro BLE API\u2019s documentation!": [[9, "welcome-to-open-gopro-ble-api-s-documentation"]], "WiFi SSID (30)": [[8, "wifi-ssid-30"]], "Wifi Bars (56)": [[8, "wifi-bars-56"]], "Wifi Provisioning State (24)": [[8, "wifi-provisioning-state-24"]], "Wifi Scan State (22)": [[8, "wifi-scan-state-22"]], "Wireless Band (178)": [[7, "wireless-band-178"]], "Wireless Band (76)": [[8, "wireless-band-76"]], "Wireless Connections Enabled (17)": [[8, "wireless-connections-enabled-17"]], "XLSX": [[7, "xlsx"]], "Zoom Available (77)": [[8, "zoom-available-77"]], "Zoom Level (75)": [[8, "zoom-level-75"]], "Zoom while Encoding (88)": [[8, "zoom-while-encoding-88"]]}, "docnames": ["features/access_points", "features/cohn", "features/control", "features/hilights", "features/live_streaming", "features/presets", "features/query", "features/settings", "features/statuses", "index", "protocol", "protocol/ble_setup", "protocol/data_protocol", "protocol/id_tables", "protocol/protobuf", "protocol/state_management"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["features/access_points.rst", "features/cohn.rst", "features/control.rst", "features/hilights.rst", "features/live_streaming.rst", "features/presets.rst", "features/query.rst", "features/settings.rst", "features/statuses.rst", "index.rst", "protocol.rst", "protocol/ble_setup.rst", "protocol/data_protocol.rst", "protocol/id_tables.rst", "protocol/protobuf.rst", "protocol/state_management.rst"], "indexentries": {}, "objects": {"": [[14, 0, 0, "enumcohnnetworkstate", "EnumCOHNNetworkState"], [14, 0, 0, "enumcohnstatus", "EnumCOHNStatus"], [14, 0, 0, "enumcameracontrolstatus", "EnumCameraControlStatus"], [14, 0, 0, "enumflatmode", "EnumFlatMode"], [14, 0, 0, "enumlens", "EnumLens"], [14, 0, 0, "enumlivestreamerror", "EnumLiveStreamError"], [14, 0, 0, "enumlivestreamstatus", "EnumLiveStreamStatus"], [14, 0, 0, "enumpresetgroup", "EnumPresetGroup"], [14, 0, 0, "enumpresetgroupicon", "EnumPresetGroupIcon"], [14, 0, 0, "enumpreseticon", "EnumPresetIcon"], [14, 0, 0, "enumpresettitle", "EnumPresetTitle"], [14, 0, 0, "enumprovisioning", "EnumProvisioning"], [14, 0, 0, "enumregisterlivestreamstatus", "EnumRegisterLiveStreamStatus"], [14, 0, 0, "enumregisterpresetstatus", "EnumRegisterPresetStatus"], [14, 0, 0, "enumresultgeneric", "EnumResultGeneric"], [14, 0, 0, "enumscanentryflags", "EnumScanEntryFlags"], [14, 0, 0, "enumscanning", "EnumScanning"], [14, 0, 0, "enumwindowsize", "EnumWindowSize"], [14, 0, 0, "media", "Media"], [14, 0, 0, "notifprovisioningstate", "NotifProvisioningState"], [14, 0, 0, "notifstartscanning", "NotifStartScanning"], [14, 0, 0, "notifycohnstatus", "NotifyCOHNStatus"], [14, 0, 0, "notifylivestreamstatus", "NotifyLiveStreamStatus"], [14, 0, 0, "notifypresetstatus", "NotifyPresetStatus"], [14, 0, 0, "preset", "Preset"], [14, 0, 0, "presetgroup", "PresetGroup"], [14, 0, 0, "presetsetting", "PresetSetting"], [14, 0, 0, "requestcohncert", "RequestCOHNCert"], [14, 0, 0, "requestclearcohncert", "RequestClearCOHNCert"], [14, 0, 0, "requestconnect", "RequestConnect"], [14, 0, 0, "requestconnectnew", "RequestConnectNew"], [14, 0, 0, "requestcreatecohncert", "RequestCreateCOHNCert"], [14, 0, 0, "requestcustompresetupdate", "RequestCustomPresetUpdate"], [14, 0, 0, "requestgetapentries", "RequestGetApEntries"], [14, 0, 0, "requestgetcohnstatus", "RequestGetCOHNStatus"], [14, 0, 0, "requestgetlastcapturedmedia", "RequestGetLastCapturedMedia"], [14, 0, 0, "requestgetlivestreamstatus", "RequestGetLiveStreamStatus"], [14, 0, 0, "requestgetpresetstatus", "RequestGetPresetStatus"], [14, 0, 0, "requestreleasenetwork", "RequestReleaseNetwork"], [14, 0, 0, "requestsetcohnsetting", "RequestSetCOHNSetting"], [14, 0, 0, "requestsetcameracontrolstatus", "RequestSetCameraControlStatus"], [14, 0, 0, "requestsetlivestreammode", "RequestSetLiveStreamMode"], [14, 0, 0, "requestsetturboactive", "RequestSetTurboActive"], [14, 0, 0, "requeststartscan", "RequestStartScan"], [14, 0, 0, "responsecohncert", "ResponseCOHNCert"], [14, 0, 0, "responseconnect", "ResponseConnect"], [14, 0, 0, "responseconnectnew", "ResponseConnectNew"], [14, 0, 0, "responsegeneric", "ResponseGeneric"], [14, 0, 0, "responsegetapentries", "ResponseGetApEntries"], [14, 0, 0, "responselastcapturedmedia", "ResponseLastCapturedMedia"], [14, 0, 0, "responsestartscanning", "ResponseStartScanning"], [14, 0, 0, "scanentry", "ScanEntry"], [1, 1, 0, "clear-cohn-certificate", "clear cohn certificate"], [0, 1, 0, "connect-to-a-new-access-point", "connect to a new access point"], [0, 1, 0, "connect-to-provisioned-access-point", "connect to provisioned access point"], [1, 1, 0, "create-cohn-certificate", "create cohn certificate"], [0, 1, 0, "get-ap-scan-results", "get ap scan results"], [5, 1, 0, "get-available-presets", "get available presets"], [1, 1, 0, "get-cohn-certificate", "get cohn certificate"], [1, 1, 0, "get-cohn-status", "get cohn status"], [6, 1, 0, "get-date-time", "get date time"], [6, 1, 0, "get-hardware-info", "get hardware info"], [6, 1, 0, "get-last-captured-media", "get last captured media"], [4, 1, 0, "get-livestream-status", "get livestream status"], [6, 1, 0, "get-local-date-time", "get local date time"], [6, 1, 0, "get-open-gopro-version", "get open gopro version"], [6, 1, 0, "get-setting-capabilities", "get setting capabilities"], [6, 1, 0, "get-setting-values", "get setting values"], [6, 1, 0, "get-status-values", "get status values"], [3, 1, 0, "hilight-moment", "hilight moment"], [2, 1, 0, "keep-alive", "keep alive"], [5, 1, 0, "load-preset", "load preset"], [5, 1, 0, "load-preset-group", "load preset group"], [6, 1, 0, "register-for-setting-capability-updates", "register for setting capability updates"], [6, 1, 0, "register-for-setting-value-updates", "register for setting value updates"], [6, 1, 0, "register-for-status-value-updates", "register for status value updates"], [0, 1, 0, "scan-for-access-points", "scan for access points"], [2, 1, 0, "set-analytics", "set analytics"], [2, 1, 0, "set-ap-control", "set ap control"], [2, 1, 0, "set-camera-control", "set camera control"], [1, 1, 0, "set-cohn-setting", "set cohn setting"], [2, 1, 0, "set-date-time", "set date time"], [4, 1, 0, "set-livestream-mode", "set livestream mode"], [2, 1, 0, "set-local-date-time", "set local date time"], [7, 1, 0, "set-setting", "set setting"], [2, 1, 0, "set-shutter", "set shutter"], [2, 1, 0, "set-turbo-transfer", "set turbo transfer"], [2, 1, 0, "sleep", "sleep"], [6, 1, 0, "unregister-for-setting-capability-updates", "unregister for setting capability updates"], [6, 1, 0, "unregister-for-setting-value-updates", "unregister for setting value updates"], [6, 1, 0, "unregister-for-status-value-updates", "unregister for status value updates"], [5, 1, 0, "update-custom-preset", "update custom preset"], [7, 2, 0, "setting-108", "Setting 108 (Video Aspect Ratio)"], [7, 2, 0, "setting-121", "Setting 121 (Video Lens)"], [7, 2, 0, "setting-122", "Setting 122 (Photo Lens)"], [7, 2, 0, "setting-123", "Setting 123 (Time Lapse Digital Lenses)"], [7, 2, 0, "setting-128", "Setting 128 (Media Format)"], [7, 2, 0, "setting-134", "Setting 134 (Setup Anti-Flicker)"], [7, 2, 0, "setting-135", "Setting 135 (Hypersmooth)"], [7, 2, 0, "setting-150", "Setting 150 (Video Horizon Leveling)"], [7, 2, 0, "setting-151", "Setting 151 (Photo Horizon Leveling)"], [7, 2, 0, "setting-162", "Setting 162 (Max Lens)"], [7, 2, 0, "setting-167", "Setting 167 (HindSight)"], [7, 2, 0, "setting-171", "Setting 171 (Photo Single Interval)"], [7, 2, 0, "setting-172", "Setting 172 (Photo Interval Duration)"], [7, 2, 0, "setting-173", "Setting 173 (Video Performance Mode)"], [7, 2, 0, "setting-175", "Setting 175 (Controls)"], [7, 2, 0, "setting-176", "Setting 176 (Easy Mode Speed)"], [7, 2, 0, "setting-177", "Setting 177 (Enable Night Photo)"], [7, 2, 0, "setting-178", "Setting 178 (Wireless Band)"], [7, 2, 0, "setting-179", "Setting 179 (Trail Length)"], [7, 2, 0, "setting-180", "Setting 180 (System Video Mode)"], [7, 2, 0, "setting-182", "Setting 182 (Video Bit Rate)"], [7, 2, 0, "setting-183", "Setting 183 (Bit Depth)"], [7, 2, 0, "setting-184", "Setting 184 (Profiles)"], [7, 2, 0, "setting-186", "Setting 186 (Video Easy Mode)"], [7, 2, 0, "setting-187", "Setting 187 (Lapse Mode)"], [7, 2, 0, "setting-189", "Setting 189 (Max Lens Mod)"], [7, 2, 0, "setting-190", "Setting 190 (Max Lens Mod Enable)"], [7, 2, 0, "setting-191", "Setting 191 (Photo Mode)"], [7, 2, 0, "setting-192", "Setting 192 (Multi Shot Aspect Ratio)"], [7, 2, 0, "setting-193", "Setting 193 (Framing)"], [7, 2, 0, "setting-2", "Setting 2 (Video Resolution)"], [7, 2, 0, "setting-3", "Setting 3 (Frames Per Second)"], [7, 2, 0, "setting-43", "Setting 43 (Webcam Digital Lenses)"], [7, 2, 0, "setting-59", "Setting 59 (Auto Power Down)"], [7, 2, 0, "setting-83", "Setting 83 (GPS)"], [8, 3, 0, "status-1", "Status 1 (Is the system's internal battery present?)"], [8, 3, 0, "status-10", "Status 10 (Is the system currently encoding?)"], [8, 3, 0, "status-100", "Status 100 (Total number of Live Bursts on sdcard)"], [8, 3, 0, "status-102", "Status 102 (None)"], [8, 3, 0, "status-103", "Status 103 (None)"], [8, 3, 0, "status-104", "Status 104 (Is the system's Linux core active?)"], [8, 3, 0, "status-106", "Status 106 (Is Video Hindsight Capture Active?)"], [8, 3, 0, "status-107", "Status 107 (None)"], [8, 3, 0, "status-108", "Status 108 (Is Scheduled Capture set?)"], [8, 3, 0, "status-11", "Status 11 (Is LCD lock active?)"], [8, 3, 0, "status-111", "Status 111 (Does sdcard meet specified minimum write speed?)"], [8, 3, 0, "status-112", "Status 112 (Number of sdcard write speed errors since device booted)"], [8, 3, 0, "status-113", "Status 113 (Is Turbo Transfer active?)"], [8, 3, 0, "status-114", "Status 114 (Camera control status ID)"], [8, 3, 0, "status-115", "Status 115 (Is the camera connected to a PC via USB?)"], [8, 3, 0, "status-116", "Status 116 (Camera control over USB state)"], [8, 3, 0, "status-117", "Status 117 (Total SD card capacity in Kilobytes)"], [8, 3, 0, "status-118", "Status 118 (None)"], [8, 3, 0, "status-13", "Status 13 (When encoding video, this is the duration (seconds) of the video so far; 0 otherwise)"], [8, 3, 0, "status-17", "Status 17 (Are Wireless Connections enabled?)"], [8, 3, 0, "status-19", "Status 19 (None)"], [8, 3, 0, "status-2", "Status 2 (Rough approximation of internal battery level in bars (or charging))"], [8, 3, 0, "status-20", "Status 20 (The last type of pairing in which the camera was engaged)"], [8, 3, 0, "status-21", "Status 21 (Time since boot (milliseconds) of last successful pairing complete action)"], [8, 3, 0, "status-22", "Status 22 (State of current scan for WiFi Access Points)"], [8, 3, 0, "status-23", "Status 23 (Time since boot (milliseconds) that the WiFi Access Point scan completed)"], [8, 3, 0, "status-24", "Status 24 (WiFi AP provisioning state)"], [8, 3, 0, "status-26", "Status 26 (Wireless remote control version)"], [8, 3, 0, "status-27", "Status 27 (Is a wireless remote control connected?)"], [8, 3, 0, "status-31", "Status 31 (The number of wireless devices connected to the camera)"], [8, 3, 0, "status-32", "Status 32 (Is Preview Stream enabled?)"], [8, 3, 0, "status-33", "Status 33 (None)"], [8, 3, 0, "status-34", "Status 34 (How many photos can be taken with current settings before sdcard is full)"], [8, 3, 0, "status-35", "Status 35 (How many minutes of video can be captured with current settings before sdcard is full)"], [8, 3, 0, "status-38", "Status 38 (Total number of photos on sdcard)"], [8, 3, 0, "status-39", "Status 39 (Total number of videos on sdcard)"], [8, 3, 0, "status-41", "Status 41 (The current status of Over The Air (OTA) update)"], [8, 3, 0, "status-42", "Status 42 (Is there a pending request to cancel a firmware update download?)"], [8, 3, 0, "status-45", "Status 45 (Is locate camera feature active?)"], [8, 3, 0, "status-54", "Status 54 (Remaining space on the sdcard in Kilobytes)"], [8, 3, 0, "status-55", "Status 55 (Is preview stream supported in current recording/mode/secondary-stream?)"], [8, 3, 0, "status-56", "Status 56 (WiFi signal strength in bars)"], [8, 3, 0, "status-58", "Status 58 (The number of hilights in currently-encoding video (value is set to 0 when encoding stops))"], [8, 3, 0, "status-59", "Status 59 (Time since boot (milliseconds) of most recent hilight in encoding video (set to 0 when encoding stops))"], [8, 3, 0, "status-6", "Status 6 (Is the system currently overheating?)"], [8, 3, 0, "status-65", "Status 65 (None)"], [8, 3, 0, "status-66", "Status 66 (Liveview Exposure Select: y-coordinate (percent))"], [8, 3, 0, "status-67", "Status 67 (Liveview Exposure Select: y-coordinate (percent))"], [8, 3, 0, "status-68", "Status 68 (Does the camera currently have a GPS lock?)"], [8, 3, 0, "status-69", "Status 69 (Is AP mode enabled?)"], [8, 3, 0, "status-70", "Status 70 (Internal battery level (percent))"], [8, 3, 0, "status-74", "Status 74 (None)"], [8, 3, 0, "status-75", "Status 75 (Digital Zoom level (percent))"], [8, 3, 0, "status-76", "Status 76 (None)"], [8, 3, 0, "status-77", "Status 77 (Is Digital Zoom feature available?)"], [8, 3, 0, "status-78", "Status 78 (Are current video settings mobile friendly? (related to video compression and frame rate))"], [8, 3, 0, "status-79", "Status 79 (Is the camera currently in First Time Use (FTU) UI flow?)"], [8, 3, 0, "status-8", "Status 8 (Is the camera busy?)"], [8, 3, 0, "status-81", "Status 81 (Is 5GHz wireless band available?)"], [8, 3, 0, "status-82", "Status 82 (Is the system fully booted and ready to accept commands?)"], [8, 3, 0, "status-83", "Status 83 (Is the internal battery charged sufficiently to start Over The Air (OTA) update?)"], [8, 3, 0, "status-85", "Status 85 (Is the camera getting too cold to continue recording?)"], [8, 3, 0, "status-86", "Status 86 (Rotational orientation of the camera)"], [8, 3, 0, "status-88", "Status 88 (Is this camera model capable of zooming while encoding?)"], [8, 3, 0, "status-89", "Status 89 (Current Flatmode ID)"], [8, 3, 0, "status-9", "Status 9 (Is Quick Capture feature enabled?)"], [8, 3, 0, "status-93", "Status 93 (Current Video Preset (ID))"], [8, 3, 0, "status-94", "Status 94 (Current Photo Preset (ID))"], [8, 3, 0, "status-95", "Status 95 (Current Time Lapse Preset (ID))"], [8, 3, 0, "status-97", "Status 97 (Current Preset (ID))"], [8, 3, 0, "status-98", "Status 98 (Preset Modified Status, which contains an event ID and a Preset (Group) ID)"], [8, 3, 0, "status-99", "Status 99 (The number of Live Bursts can be captured with current settings before sdcard is full)"]], "Status 101 (Is Capture Delay currently active (i.e": [[8, 3, 0, "status-101", " counting down)?)"]], "Status 105 (Camera lens type (reflects changes to lens settings such as 162, 189, 194, ..": [[8, 3, 0, "status-105", "))"]], "Status 110 (Note that this is a bitmasked value": [[8, 3, 0, "status-110", ")"]], "Status 28 (Wireless Pairing State": [[8, 3, 0, "status-28", " Each bit contains state information (see WirelessPairingStateFlags))"]], "Status 29 (SSID of the AP the camera is currently connected to": [[8, 3, 0, "status-29", " On BLE connection, value is big-endian byte-encoded int32)"]], "Status 30 (The camera's WiFi SSID": [[8, 3, 0, "status-30", " On BLE connection, value is big-endian byte-encoded int32)"]], "Status 49 (The current timelapse interval countdown value (e.g. 5...4...3...2...1..": [[8, 3, 0, "status-49", "))"]], "Status 60 (The minimum time between camera status updates (milliseconds)": [[8, 3, 0, "status-60", " Best practice is to not poll for status more\noften than this\n)"]], "Status 96 (Current Preset Group (ID) (corresponds to ui_mode_groups in settings": [[8, 3, 0, "status-96", "json))"]]}, "objnames": {"0": ["operation", "Proto", "Proto"], "1": ["operation", "Operation", "Operation"], "2": ["operation", "Setting", "Setting"], "3": ["operation", "Status", "Status"]}, "objtypes": {"0": "operation:Proto", "1": "operation:Operation", "2": "operation:Setting", "3": "operation:Status"}, "terms": {"": [1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15], "0": [2, 6, 7, 8, 12, 13, 14], "00": [2, 9, 12], "0001": 11, "0002": 11, "0002a5d5c51b": 11, "0003": 11, "0004": 11, "0005": 11, "0072": [11, 12], "0073": 11, "0074": [11, 12], "0075": 11, "0076": [11, 12], "0077": 11, "0090": 11, "0091": 11, "0092": 11, "01": [2, 6, 9, 12], "02": 2, "03": [2, 9], "04": 2, "05": 2, "07": 2, "0x0": 12, "0x01": [2, 13], "0x02": [0, 13], "0x03": [0, 13], "0x04": [0, 13], "0x05": [0, 2, 13], "0x0b": [0, 13], "0x0c": [0, 13], "0x0d": [2, 13], "0x0e": [6, 13], "0x0f": [2, 13], "0x10": [6, 13], "0x12": [6, 13], "0x13": [6, 13], "0x17": [2, 13], "0x18": [3, 13], "0x32": [6, 13], "0x3c": [6, 13], "0x3e": [5, 13], "0x40": [5, 13], "0x42": 2, "0x50": [2, 13], "0x51": [6, 13], "0x52": [6, 13], "0x53": [6, 13], "0x5b": [2, 13], "0x62": [6, 13], "0x64": [5, 13], "0x65": [1, 13], "0x66": [1, 13], "0x67": [1, 13], "0x69": [2, 13], "0x6b": [2, 13], "0x6d": [6, 13], "0x6e": [1, 13], "0x6f": [1, 13], "0x72": [5, 6, 13], "0x73": [6, 13], "0x74": [4, 13], "0x79": [4, 13], "0x82": [0, 6, 13], "0x83": [0, 13], "0x84": [0, 13], "0x85": [0, 13], "0x92": [6, 13], "0x93": [6, 13], "0xa2": [6, 13], "0xe4": [5, 13], "0xe5": [1, 13], "0xe6": [1, 13], "0xe7": [1, 13], "0xe9": [2, 13], "0xeb": [2, 13], "0xed": [6, 13], "0xee": [1, 13], "0xef": [1, 13], "0xf": 12, "0xf1": [1, 2, 4, 5, 13], "0xf2": [5, 13], "0xf3": [5, 13], "0xf4": [4, 13], "0xf5": [1, 4, 5, 6, 13], "0xf9": [4, 13], "0xfea6": 11, "1": [1, 2, 6, 7, 12, 13, 14], "10": [2, 7, 9, 12, 13, 14], "100": [7, 13], "1000": 14, "1001": 14, "1002": 14, "101": [7, 13], "102": [7, 13], "103": [7, 13], "104": [7, 13], "105": [7, 13], "106": [7, 13], "107": [7, 13], "108": 13, "1080": 7, "109": 7, "11": [6, 7, 13, 14], "110": [7, 13], "111": [7, 13], "112": [7, 13], "113": [7, 13], "114": [2, 7, 13, 14], "115": [7, 13], "116": [7, 13], "117": [7, 13], "118": [7, 13], "119": 7, "11e3": 11, "12": [2, 6, 7, 14], "120": 7, "121": 13, "122": 13, "123": 13, "124": 7, "125": 7, "126": 7, "127": 7, "128": [11, 13], "129": 7, "13": [7, 13, 14], "130": 7, "131": 7, "132": 7, "133": 7, "134": 13, "135": 13, "136": 7, "137": 7, "14": [7, 14], "1440": 7, "15": [7, 14], "150": 13, "151": 13, "15min": 15, "16": [7, 14], "162": [5, 8, 13], "167": 13, "17": [7, 13, 14], "171": 13, "172": 13, "173": [5, 13], "175": [5, 13], "176": 13, "177": [5, 13], "178": 13, "179": 13, "18": [7, 14], "180": [5, 13], "182": 13, "183": 13, "184": 13, "186": [5, 13], "187": [5, 13], "189": [5, 8, 13], "19": [7, 13, 14], "190": [5, 13], "191": [5, 13], "192": 13, "193": 13, "194": [8, 13], "1f": 2, "1x": 7, "2": [12, 13, 14], "20": [7, 12, 13, 14], "200": 7, "2023": 2, "21": [7, 13, 14], "22": [7, 13, 14], "23": [2, 6, 7, 13, 14], "24": [7, 13, 14], "240": 7, "240fp": 7, "25": [7, 14], "255": 12, "26": [7, 13, 14], "2674f7f65f78": 6, "27": [7, 13, 14], "28": [7, 13, 14], "29": [13, 14], "2x": 7, "3": [2, 8, 12, 13, 14], "30": [7, 13, 14], "30min": 15, "31": [2, 6, 13, 14], "32": [13, 14], "33": [13, 14], "34": [13, 14], "35": [13, 14], "36": 14, "37": 14, "38": [13, 14], "39": [13, 14], "3k": 7, "4": [7, 8, 12, 13, 14], "40": 14, "41": [13, 14], "42": [13, 14], "43": 13, "45": 13, "49": 13, "4ghz": 7, "4k": 7, "4x": 7, "5": [7, 8, 13, 14], "50": 7, "50hz": 7, "54": 13, "55": [9, 13], "56": [6, 13], "57": 9, "58": [9, 13, 14], "59": [2, 6, 13, 14], "5ghz": [7, 13], "5k": 7, "5min": 15, "6": [6, 7, 12, 13, 14], "60": [7, 9, 13, 14], "60hz": 7, "61": 14, "62": [9, 14], "63": [2, 14], "64": 14, "65": [13, 14], "66": [13, 14], "67": [13, 14], "68": [13, 14], "69": [13, 14], "7": [2, 7, 12, 14], "70": [9, 13, 14], "71": 14, "72": 14, "73": 14, "74": [13, 14], "75": [13, 14], "76": [13, 14], "77": [13, 14], "78": [13, 14], "79": [13, 14], "7k": 7, "8": [7, 11, 13, 14], "81": 13, "8191": 12, "8192": 12, "82": [13, 14], "83": [13, 14], "85": [13, 14], "86": 13, "88": [2, 13], "89": 13, "8x": 7, "9": [7, 13, 14], "9046": 11, "93": [13, 14], "94": [5, 13, 14], "95": 13, "96": 13, "97": 13, "98": [5, 13], "99": [6, 13], "A": [0, 1, 5, 7, 12, 14, 15], "As": [4, 14], "At": 1, "For": [1, 2, 4, 7, 9, 11, 12, 15], "If": [2, 6, 7, 11, 12, 14, 15], "In": [1, 2, 7, 11, 12, 15], "It": 12, "NOT": 14, "No": 14, "Not": 14, "ON": 11, "On": [0, 1, 2, 7, 8, 13, 14], "The": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "Then": 9, "There": 12, "These": 7, "To": [0, 5, 12], "aa8d": 11, "abil": 4, "about": [1, 2, 4, 6, 14], "abov": [2, 6, 7, 9], "accept": [4, 8, 13, 14, 15], "access": [1, 2, 4, 8, 9, 11, 13, 14], "accommod": 12, "accomplish": [4, 12], "accordingli": [2, 14], "accumul": 12, "across": [1, 2, 4, 5, 14], "act": 1, "action": [0, 1, 2, 4, 5, 6, 8, 12, 13], "activ": [5, 9, 13, 14, 15], "adapt": 14, "add": [3, 14], "addit": [4, 14], "addition": [1, 9, 14], "address": [1, 14], "adher": 7, "advertis": [2, 10, 14], "affect": 5, "after": [0, 2, 11, 12, 14, 15], "again": 11, "air": [8, 13], "aliv": [2, 10, 13], "all": [1, 2, 6, 11, 12], "allow": [1, 11], "alreadi": 14, "also": [1, 14], "altern": [7, 11, 12], "alwai": [5, 7, 9, 12, 14, 15], "an": [0, 1, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15], "analyt": [2, 13], "ani": [2, 4, 5, 9, 14], "anoth": 7, "anti": 13, "ap": [0, 2, 11, 13, 14], "ap_mac_address": 6, "ap_mac_address_length": 6, "ap_ssid": 6, "ap_ssid_length": 6, "api": [5, 6, 14], "app": [2, 14, 15], "appear": 14, "appropri": 12, "approxim": [8, 13], "ar": [0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "arrai": [6, 12, 14], "arrow": [5, 14], "ascii": 14, "aspect": 13, "associ": [6, 9, 14], "assum": 9, "asynchron": [1, 4, 5, 11, 13, 14], "attain": 7, "attemp": 14, "attempt": [0, 14], "auth": [1, 14], "authent": [0, 14], "author": 1, "auto": [2, 13], "automat": [2, 14, 15], "avail": [0, 5, 9, 13, 14], "avoid": 12, "b5f9xxxx": 11, "back": [5, 14], "bad": 14, "band": 13, "bandwidth": 12, "bar": [13, 14], "base": 9, "basic": [1, 7, 9, 14], "batch": 14, "batt": 7, "batteri": [2, 7, 13], "becaus": [7, 14], "been": [0, 12, 14], "befor": [8, 11, 12, 13, 14, 15], "begin": 4, "behavior": [2, 14, 15], "being": 14, "below": [5, 7, 9, 11, 12], "best": [2, 8, 11, 13, 15], "between": [8, 9, 13, 14, 15], "big": [8, 12, 13], "bit": [0, 8, 11, 13], "bitmask": [8, 13, 14], "bitrat": 14, "black": [1, 6, 7, 9], "blacklist": 7, "ble": [2, 8, 10, 12, 13], "bluetooth": 9, "bool": 14, "boost": 7, "boot": [8, 11, 13], "both": 2, "buffer": 12, "build": 11, "burst": 13, "busi": [13, 15], "button": [2, 14], "byte": [0, 2, 6, 8, 12, 13, 14], "c1234567812345": 6, "ca": [1, 14], "cach": 11, "cafil": 1, "camera": [0, 2, 4, 5, 6, 10, 11, 12, 13, 14], "camera_control": 14, "camera_control_statu": 14, "camera_external_control": 14, "camera_idl": 14, "can": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14], "can_add_preset": 14, "cancel": [6, 13], "capabl": [1, 6, 8, 9, 13], "capac": 13, "caption": [5, 14], "captur": [6, 13, 14, 15], "card": [13, 14], "case": [1, 5, 9, 14], "caus": [2, 11, 14], "cert": [1, 14], "certif": [13, 14], "chain": 1, "chang": [0, 1, 4, 5, 6, 7, 8, 9, 13, 14, 15], "charact": 14, "characterist": [10, 12], "charg": 13, "claim": [2, 14, 15], "clear": [1, 13, 14], "click": 1, "client": [1, 2, 5, 11, 14, 15], "close": 14, "code": [2, 9], "cohn": [1, 13, 14], "cohn_act": 14, "cohn_provis": 14, "cohn_state_connectingtonetwork": 14, "cohn_state_error": 14, "cohn_state_exit": 14, "cohn_state_idl": 14, "cohn_state_init": 14, "cohn_state_invalid": 14, "cohn_state_networkconnect": 14, "cohn_state_networkdisconnect": 14, "cohn_unprovis": 14, "cold": 13, "collect": 5, "combin": 2, "command": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15], "common": 14, "commonli": 14, "commun": [1, 9, 10, 11], "complet": [0, 8, 9, 13, 14], "compress": [8, 13], "compris": [7, 12, 14], "configur": [0, 1, 2, 4, 10, 14], "connect": [0, 1, 2, 4, 11, 13, 14, 15], "consid": 12, "construct": 7, "contain": [1, 6, 7, 8, 12, 13, 14], "contextu": [2, 14], "continu": [8, 13], "control": [0, 1, 5, 9, 10, 11, 13, 14], "coordin": [8, 13], "core": [9, 13], "correspond": [8, 11, 13, 14], "count": [13, 14], "countdown": 13, "counter": 12, "creat": [1, 5, 13, 14], "creation": [1, 14], "credenti": 1, "crt": 1, "current": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14], "custom": [5, 13, 14], "custom1": 14, "custom2": 14, "custom3": 14, "custom_nam": [5, 14], "dai": [2, 6], "data": [2, 6, 9, 10, 11], "date": [2, 6, 13], "date_tim": 2, "daylight": [2, 6], "dbm": 14, "dcim": [6, 14], "deciph": 10, "declar": 14, "default": [5, 14], "defin": [2, 6, 7, 12, 14], "delai": 13, "delet": [5, 14], "demo": 9, "demonstr": 9, "depacket": 12, "depend": [1, 5, 6, 7, 12, 14, 15], "deprec": 6, "deprecated_length": 6, "depth": 13, "describ": [0, 6, 8, 9, 12, 14], "descript": [11, 12], "deseri": 12, "desir": [9, 14], "detail": [2, 4, 7, 14], "detect": [0, 14], "determin": 12, "devic": [11, 13], "dhcp": 1, "differ": [5, 12], "digit": [8, 9, 13], "directori": [6, 14], "disabl": [0, 2, 14], "disconnect": 14, "discourag": 15, "discov": [11, 14], "discover": 11, "displai": [2, 14], "dn": 14, "dns_primari": 14, "dns_secondari": 14, "do": [0, 11, 12, 14], "doc": [0, 1, 2, 4, 5, 6], "document": [6, 7, 10, 12], "doe": [0, 1, 8, 11, 13, 14], "done": 11, "down": [2, 8, 13], "download": [1, 8, 13], "drop": 14, "dst": 2, "due": 14, "durat": 13, "dure": [0, 3, 11, 14], "dynam": [7, 11], "e": [1, 2, 5, 6, 8, 13, 14, 15], "e7": 2, "each": [7, 8, 11, 12, 13], "easi": 13, "either": [4, 5, 12, 14], "element": [6, 12, 13], "els": 12, "empti": 6, "enabl": [2, 5, 11, 13, 14], "encod": [3, 9, 13, 14, 15], "endian": [8, 12, 13], "energi": 9, "engag": [8, 13], "english": 14, "enough": 14, "ensur": [0, 11], "entiti": [2, 14], "entri": [0, 14], "enumpresetgroup": 5, "error": [12, 13, 14], "establish": 2, "event": [8, 13], "everi": [2, 7], "exampl": [2, 7, 9, 11, 12, 15], "exit": [2, 5, 12, 14], "expir": 1, "exposur": 13, "ext": 7, "extend": 7, "extern": [2, 14], "extract": 12, "f": 12, "facebook": 4, "factori": [5, 11, 14], "fail": [5, 7, 14], "failur": 7, "fals": [8, 14], "far": [8, 13], "fea6": 11, "featur": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14], "fewer": 12, "ff": 2, "field": [6, 14], "file": [1, 7, 14], "filenam": [6, 14], "find": 5, "finish": [10, 14], "firmwar": [6, 7, 8, 9, 13], "firmware_vers": 6, "firmware_version_length": 6, "first": [0, 1, 6, 7, 8, 9, 11, 12, 13, 14], "flag": [11, 15], "flat_mode_broadcast_broadcast": 14, "flat_mode_broadcast_record": 14, "flat_mode_idl": 14, "flat_mode_live_burst": 14, "flat_mode_loop": 14, "flat_mode_night_lapse_photo": 14, "flat_mode_night_lapse_video": 14, "flat_mode_photo": 14, "flat_mode_photo_burst": 14, "flat_mode_photo_night": 14, "flat_mode_photo_singl": 14, "flat_mode_playback": 14, "flat_mode_setup": 14, "flat_mode_slomo": 14, "flat_mode_time_lapse_photo": 14, "flat_mode_time_lapse_video": 14, "flat_mode_time_warp_video": 14, "flat_mode_unknown": 14, "flat_mode_video": 14, "flat_mode_video_burst_slomo": 14, "flat_mode_video_light_paint": 14, "flat_mode_video_light_trail": 14, "flat_mode_video_star_trail": 14, "flatmod": [13, 14], "flicker": 13, "flow": [8, 13], "flowchart": 12, "folder": 14, "follow": [1, 4, 7, 10, 11, 12, 14], "form": 12, "format": [9, 12, 13, 14, 15], "found": [0, 5, 6, 7, 14], "fov": [7, 9, 14], "fp": 7, "frame": [8, 13], "french": 14, "frequenc": 14, "friendli": 13, "from": [2, 5, 6, 7, 8, 11, 12, 14], "ftu": 13, "full": [7, 8, 13, 14], "fulli": [8, 13], "function": [1, 9], "futur": [4, 14], "g": [1, 5, 8, 13, 14, 15], "gatewai": 14, "gatt": [10, 12], "gener": [1, 2, 4, 5, 14], "german": 14, "get": [0, 1, 4, 5, 6, 7, 8, 13, 14, 15], "given": [7, 14], "global": [2, 14], "go": 2, "googl": 12, "gopro": [1, 2, 6, 10, 11, 12, 13, 15], "goprorootca": 1, "gp": [11, 12, 13], "gp12345678": 6, "green": 7, "group": [6, 13, 14], "guarante": 7, "h21": 9, "h22": 9, "h23": [6, 9], "ha": [0, 1, 12, 14], "had": 12, "handl": 2, "handshak": 14, "hard": 2, "hardwar": [6, 13], "have": [0, 1, 8, 11, 12, 13], "hd9": 9, "hdr": 7, "header": [1, 14], "here": [7, 12], "hero": 7, "hero10": [1, 9], "hero11": [1, 9], "hero12": [1, 6, 9], "hero9": [1, 9], "high": [1, 7], "highest": 7, "hilight": [9, 13], "hindsight": [9, 13], "home": [9, 14], "honor": 14, "horizon": 13, "hour": [2, 6, 7, 11], "how": [4, 8, 9, 12, 13], "howev": 15, "http": [0, 1, 14], "hypersmooth": 13, "hyperview": 7, "hz": 7, "i": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "icon": [5, 7, 14], "icon_id": [5, 14], "id": [0, 1, 2, 3, 4, 5, 6, 9, 10, 12, 14], "identifi": 12, "idl": [2, 14], "immedi": [0, 2, 5, 14], "inadvert": 2, "includ": [12, 14], "inclus": 14, "incom": 15, "incorrect": 14, "indic": [4, 11, 14], "indirectli": 1, "individu": [6, 7, 12, 14], "info": [6, 13, 14], "inform": [2, 6, 7, 8, 11, 13, 14], "initi": [0, 4, 5, 6, 10, 14], "instal": 1, "instruct": 1, "int": 12, "int16": [2, 6], "int32": [8, 13, 14], "intend": [0, 14], "interact": [2, 14], "intern": 13, "internet": [0, 14], "interv": 13, "invalid": [12, 14], "ip": [1, 14], "ipaddress": 14, "is_capt": 14, "is_dst": [2, 6], "is_fix": 14, "is_modifi": 14, "italian": 14, "its": [8, 12], "json": [8, 13], "kbp": 14, "keep": [2, 10, 13], "keep_al": 2, "kilobyt": [8, 13], "languag": [9, 14], "laps": [5, 8, 13], "larger": 12, "last": [6, 13, 14], "lcd": [2, 13], "leas": 1, "len": [5, 13, 14], "length": [6, 13], "lens": [9, 13, 14], "lens_linear": 14, "lens_superview": 14, "lens_wid": 14, "less": 12, "level": [1, 12, 13, 14], "life": 2, "lifespan": 1, "light": 7, "limit": [11, 12], "linear": 7, "linux": [13, 14], "list": [0, 7, 9, 14], "live": [0, 9, 13, 14], "live_stream_bitr": 14, "live_stream_encod": 14, "live_stream_encode_support": 14, "live_stream_error": 14, "live_stream_error_camera_block": 14, "live_stream_error_createstream": 14, "live_stream_error_inputstream": 14, "live_stream_error_internet": 14, "live_stream_error_network": 14, "live_stream_error_non": 14, "live_stream_error_osnetwork": 14, "live_stream_error_outofmemori": 14, "live_stream_error_sd_card_ful": 14, "live_stream_error_sd_card_remov": 14, "live_stream_error_selectednetworktimeout": 14, "live_stream_error_ssl_handshak": 14, "live_stream_error_unknown": 14, "live_stream_lens_support": 14, "live_stream_lens_supported_arrai": 14, "live_stream_max_lens_unsupport": 14, "live_stream_maximum_stream_bitr": 14, "live_stream_minimum_stream_bitr": 14, "live_stream_state_complete_stay_on": 14, "live_stream_state_config": 14, "live_stream_state_failed_stay_on": 14, "live_stream_state_idl": 14, "live_stream_state_readi": 14, "live_stream_state_reconnect": 14, "live_stream_state_stream": 14, "live_stream_state_unavail": 14, "live_stream_statu": 14, "live_stream_window_size_supported_arrai": 14, "livestream": [4, 13, 14], "liveview": 13, "load": [2, 5, 13, 15], "local": [1, 2, 6, 13, 14], "locat": 13, "lock": [7, 13], "log": 7, "logic": 2, "long": [5, 7, 14], "longer": 12, "longest": 7, "look": 1, "low": [7, 9, 14], "mac": 14, "macaddress": 14, "maco": 1, "mai": [7, 14, 15], "maintain": 15, "major": 6, "major_length": 6, "manag": [0, 9, 10, 11], "mani": [1, 2, 4, 5, 8, 13, 14], "map": 12, "market": 9, "mask": 14, "match": 12, "max": [5, 13, 14], "max_entri": 14, "maxim": [2, 12], "maximum": [7, 14], "maximum_bitr": 14, "mean": [7, 14], "media": [2, 4, 6, 13, 15], "meet": [8, 13], "memori": 14, "menu": [2, 14], "messag": [0, 1, 2, 4, 5, 6, 9, 10, 13, 14, 15], "meta": 14, "mhz": 14, "millisecond": [8, 13], "min": 7, "mini": [1, 9], "minim": 9, "minimum": [9, 13, 14], "minimum_bitr": 14, "minor": 6, "minor_length": 6, "minut": [2, 6, 7, 8, 13], "mo": 7, "mobil": 13, "mod": [5, 13], "mode": [0, 2, 4, 5, 9, 10, 13, 14], "model": [6, 8, 9, 13, 14], "model_nam": 6, "model_name_length": 6, "model_numb": 6, "model_number_length": 6, "modifi": [13, 14], "moment": [3, 13], "month": [2, 6], "more": [1, 6, 7, 8, 11, 12, 13, 14], "most": [1, 2, 8, 9, 13, 14], "mous": 1, "multi": 13, "multipl": 12, "must": [1, 5, 11, 12, 14], "mutabl": 14, "n": 12, "name": [5, 7, 8, 9, 14], "narrow": [7, 11], "nearli": 1, "necessari": [0, 7, 11, 12, 15], "need": [0, 1, 9, 11], "network": [0, 9, 11, 14], "never": 7, "new": [0, 1, 5, 11, 13, 14], "next": 7, "night": [5, 13], "non": [5, 14], "none": [7, 13], "noout": 1, "nope": 12, "note": [6, 8, 12, 13], "notif": [0, 1, 2, 4, 5, 6, 11, 13, 14], "notifi": [5, 11, 14], "notifprovisioningst": [0, 13], "notifstartscan": [0, 13], "notifycohnstatu": [1, 13], "notifylivestreamstatu": [4, 13], "notifypresetstatu": [5, 13], "number": [6, 8, 13, 14], "obei": 14, "object": [0, 7, 12, 14], "occur": 14, "off": [2, 7, 15], "offset": [2, 6], "often": [7, 8, 13], "ok": 1, "onc": [1, 11, 12], "one": [5, 6, 7, 12, 14], "ongo": 6, "onli": [0, 3, 5, 6, 7, 12, 14], "onto": 12, "open": [1, 6, 10, 12, 13], "openssl": 1, "oper": [8, 10, 13, 14], "option": [4, 5, 6, 7, 8, 12, 14], "order": [1, 2, 5, 7, 10, 11, 12, 15], "organ": 5, "orient": [8, 13], "ota": 13, "other": [4, 15], "otherwis": [2, 8, 12, 13], "out": 14, "outlin": 7, "outsid": 14, "over": [1, 8, 13], "overh": 13, "overrid": 14, "overview": 11, "p": 12, "packet": 10, "page": [2, 14], "paint": 7, "pair": [10, 12, 13], "paramet": [2, 5, 6, 7, 12], "pars": [11, 12], "part": [2, 6, 14], "parti": [2, 14, 15], "pass": [5, 14], "password": [1, 11, 14], "path": [1, 6, 14], "payload": [6, 10], "pc": [8, 13], "pem": 14, "pend": 13, "per": [12, 13], "percent": [8, 13], "perform": [1, 5, 9, 13, 14], "period": [0, 5, 14, 15], "peripher": 11, "permiss": 11, "pertain": 9, "photo": [5, 6, 9, 13, 14, 15], "physic": [2, 14], "pill": [5, 14], "platform": 4, "point": [1, 2, 4, 8, 9, 11, 13, 14], "poll": [4, 13], "portugues": 14, "possibl": 12, "power": [2, 11, 13, 15], "practic": [2, 8, 11, 13, 15], "prepend": 12, "present": [7, 13], "preset": [2, 7, 9, 13, 15], "preset_arrai": 14, "preset_group_arrai": 14, "preset_group_endurance_video_icon_id": 14, "preset_group_id_photo": 14, "preset_group_id_timelaps": 14, "preset_group_id_video": 14, "preset_group_long_bat_video_icon_id": 14, "preset_group_max_photo_icon_id": 14, "preset_group_max_timelapse_icon_id": 14, "preset_group_max_video_icon_id": 14, "preset_group_photo_icon_id": 14, "preset_group_timelapse_icon_id": 14, "preset_group_video_icon_id": 14, "preset_icon_act": 14, "preset_icon_activity_endur": 14, "preset_icon_air": 14, "preset_icon_bas": 14, "preset_icon_basic_quality_video": 14, "preset_icon_bik": 14, "preset_icon_bit": 14, "preset_icon_burst": 14, "preset_icon_burst_2": 14, "preset_icon_c": 14, "preset_icon_chesti": 14, "preset_icon_cinemat": 14, "preset_icon_cinematic_endur": 14, "preset_icon_custom": 14, "preset_icon_ep": 14, "preset_icon_follow_cam": 14, "preset_icon_full_fram": 14, "preset_icon_helmet": 14, "preset_icon_highest_quality_video": 14, "preset_icon_indoor": 14, "preset_icon_light_paint": 14, "preset_icon_light_trail": 14, "preset_icon_live_burst": 14, "preset_icon_loop": 14, "preset_icon_motor": 14, "preset_icon_mount": 14, "preset_icon_nightlaps": 14, "preset_icon_nightlapse_photo": 14, "preset_icon_outdoor": 14, "preset_icon_panorama": 14, "preset_icon_photo": 14, "preset_icon_photo_2": 14, "preset_icon_photo_night": 14, "preset_icon_pov": 14, "preset_icon_selfi": 14, "preset_icon_shaki": 14, "preset_icon_simple_night_photo": 14, "preset_icon_simple_super_photo": 14, "preset_icon_sk": 14, "preset_icon_slomo_endur": 14, "preset_icon_snail": 14, "preset_icon_snow": 14, "preset_icon_standard_endur": 14, "preset_icon_standard_quality_video": 14, "preset_icon_star": 14, "preset_icon_star_trail": 14, "preset_icon_stationary_1": 14, "preset_icon_stationary_2": 14, "preset_icon_stationary_3": 14, "preset_icon_stationary_4": 14, "preset_icon_surf": 14, "preset_icon_timelaps": 14, "preset_icon_timelapse_2": 14, "preset_icon_timelapse_photo": 14, "preset_icon_timewarp": 14, "preset_icon_timewarp_2": 14, "preset_icon_trail": 14, "preset_icon_travel": 14, "preset_icon_ultra_slo_mo": 14, "preset_icon_video": 14, "preset_icon_video_2": 14, "preset_icon_wat": 14, "preset_title_act": 14, "preset_title_activity_endur": 14, "preset_title_air": 14, "preset_title_bas": 14, "preset_title_basic_quality_video": 14, "preset_title_bik": 14, "preset_title_bit": 14, "preset_title_burst": 14, "preset_title_c": 14, "preset_title_chesti": 14, "preset_title_cinemat": 14, "preset_title_cinematic_endur": 14, "preset_title_custom": 14, "preset_title_ep": 14, "preset_title_extended_batteri": 14, "preset_title_follow_cam": 14, "preset_title_full_fram": 14, "preset_title_helmet": 14, "preset_title_highest_qu": 14, "preset_title_highest_quality_video": 14, "preset_title_indoor": 14, "preset_title_light_paint": 14, "preset_title_light_trail": 14, "preset_title_live_burst": 14, "preset_title_longest_batteri": 14, "preset_title_loop": 14, "preset_title_motor": 14, "preset_title_mount": 14, "preset_title_night": 14, "preset_title_night_laps": 14, "preset_title_outdoor": 14, "preset_title_panorama": 14, "preset_title_photo": 14, "preset_title_photo_2": 14, "preset_title_pov": 14, "preset_title_selfi": 14, "preset_title_shaki": 14, "preset_title_simple_night_photo": 14, "preset_title_simple_super_photo": 14, "preset_title_simple_time_warp": 14, "preset_title_simple_video": 14, "preset_title_simple_video_endur": 14, "preset_title_sk": 14, "preset_title_slomo": 14, "preset_title_slomo_endur": 14, "preset_title_snow": 14, "preset_title_standard": 14, "preset_title_standard_endur": 14, "preset_title_standard_quality_video": 14, "preset_title_star": 14, "preset_title_star_trail": 14, "preset_title_stationary_1": 14, "preset_title_stationary_2": 14, "preset_title_stationary_3": 14, "preset_title_stationary_4": 14, "preset_title_surf": 14, "preset_title_time_laps": 14, "preset_title_time_warp": 14, "preset_title_time_warp_2": 14, "preset_title_trail": 14, "preset_title_travel": 14, "preset_title_ultra_slo_mo": 14, "preset_title_user_defined_custom_nam": [5, 14], "preset_title_video": 14, "preset_title_wat": 14, "press": [2, 5, 14], "prevent": [2, 15], "preview": 13, "previous": [0, 7, 14], "primari": 14, "pro": 7, "procedur": [11, 12], "process": [1, 11], "profil": 13, "program": 9, "programmat": 2, "properti": [1, 14], "protobuf": [0, 1, 2, 4, 5, 6, 9, 10], "protocol": [9, 11], "provid": 1, "provis": [0, 13, 14], "provisioning_aborted_by_system": 14, "provisioning_cancelled_by_us": 14, "provisioning_error_eula_block": 14, "provisioning_error_failed_to_associ": 14, "provisioning_error_no_internet": 14, "provisioning_error_password_auth": 14, "provisioning_error_unsupported_typ": 14, "provisioning_never_start": 14, "provisioning_st": 14, "provisioning_start": 14, "provisioning_success_new_ap": 14, "provisioning_success_old_ap": 14, "provisioning_unknown": 14, "pseudocod": 12, "public": 9, "purpos": 1, "put": [2, 4, 11], "qualiti": 7, "queri": [1, 4, 5, 7, 8, 9, 10, 11, 15], "quick": [1, 13], "rang": 14, "rate": [8, 13], "ratio": 13, "re": [7, 11, 14], "reach": 2, "read": [9, 10, 11], "readi": [4, 10, 13, 14], "receiv": [0, 6, 9, 11, 12, 14], "recent": [8, 9, 13], "reclaim": [2, 14], "reconnect": 14, "record": [3, 8, 13], "refer": 10, "reflect": [8, 13], "regist": [1, 4, 5, 6, 13, 14], "register_cohn_statu": 14, "register_live_stream_statu": 14, "register_live_stream_status_bitr": 14, "register_live_stream_status_error": 14, "register_live_stream_status_mod": 14, "register_live_stream_status_statu": 14, "register_preset_statu": 14, "register_preset_status_preset": 14, "register_preset_status_preset_group_arrai": 14, "regularli": 2, "reject": [7, 9, 14, 15], "rel": [6, 14], "relat": [8, 13], "releas": 7, "relev": [0, 9, 11, 12], "remain": 13, "remot": 13, "remov": 14, "reorder": [5, 14], "replac": 1, "report": 6, "repres": [7, 14], "represent": 14, "request": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "requestclearcohncert": [1, 13], "requestcohncert": [1, 13], "requestconnect": [0, 13], "requestconnectnew": [0, 13], "requestcreatecohncert": [1, 13], "requestcustompresetupd": [5, 13], "requestgetapentri": [0, 13], "requestgetcohnstatu": [1, 13], "requestgetlastcapturedmedia": [6, 13], "requestgetlivestreamstatu": [4, 13], "requestgetpresetstatu": [5, 13], "requestsetcameracontrolstatu": [2, 13], "requestsetcohnset": [1, 13], "requestsetlivestreammod": [4, 13], "requestsetturboact": [2, 13], "requeststartscan": [0, 13], "requir": [1, 11, 14], "reserv": [6, 12], "reset": [1, 2, 5, 11, 12], "resolut": [13, 14], "respect": 12, "respond": 12, "respons": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14], "response_length": 6, "responsecohncert": [1, 13], "responseconnect": [0, 13], "responseconnectnew": [0, 13], "responsegener": [1, 2, 4, 5, 13], "responsegetapentri": [0, 13], "responselastcapturedmedia": [6, 13], "responsestartscan": [0, 13], "result": [0, 6, 7, 9, 12, 13, 14], "result_argument_invalid": 14, "result_argument_out_of_bound": 14, "result_ill_form": 14, "result_not_support": 14, "result_resource_not_avail": 14, "result_resource_not_availbl": 14, "result_success": 14, "result_unknown": 14, "return": [0, 1, 2, 5, 6, 14], "right": 1, "room": 14, "root": [1, 14], "rotat": 13, "rough": [8, 13], "router": 1, "row": [7, 12], "rtmp": [4, 14], "rule": 7, "russian": 14, "saturdai": 6, "save": [2, 6, 14], "scan": [0, 11, 13, 14], "scan_entry_flag": 14, "scan_flag_associ": 14, "scan_flag_authent": 14, "scan_flag_best_ssid": 14, "scan_flag_configur": [0, 14], "scan_flag_open": 14, "scan_flag_unsupported_typ": 14, "scan_id": 14, "scanning_aborted_by_system": 14, "scanning_cancelled_by_us": 14, "scanning_never_start": 14, "scanning_st": 14, "scanning_start": 14, "scanning_success": 14, "scanning_unknown": 14, "schedul": 13, "schema": 7, "scheme": 12, "screen": [2, 14], "sd": [13, 14], "sdcard": [6, 8, 13, 14, 15], "second": [2, 6, 8, 13, 14], "secondari": [8, 13, 14], "section": [6, 8, 9, 10, 11, 12], "secur": 1, "see": [1, 4, 6, 7, 8, 9, 11, 12, 13], "select": 13, "send": [2, 5, 9, 12, 14, 15], "sent": [0, 4, 5, 6, 11, 12, 14], "serial": [0, 2, 12, 14], "serial_numb": 6, "serial_number_length": 6, "server": 14, "servic": 11, "set": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15], "setting_arrai": 14, "settingid": [7, 13], "setup": [9, 10, 13, 14], "short": 7, "shorthand": 11, "shot": 13, "should": [9, 11, 15], "shutter": [2, 4, 13], "sign": 1, "signal": [8, 13, 14, 15], "signal_frequency_mhz": 14, "signal_strength_bar": 14, "simultan": 15, "sinc": 13, "singl": [6, 12, 13, 14], "site": 4, "size": 12, "sleep": [2, 11, 13], "slo": 7, "so": [8, 11, 13], "social": 4, "some": [0, 1, 2, 12, 15], "sourc": [0, 1, 2, 4, 5, 6, 14], "space": [8, 13], "spanish": 14, "special": 14, "specif": [1, 15], "specifi": [5, 8, 12, 13, 14], "speed": 13, "split": 12, "spreadsheet": 7, "ssid": [11, 13, 14], "ssl": [1, 14], "sta": [0, 14], "stack": 14, "standard": 7, "star": 7, "start": [0, 2, 4, 6, 8, 12, 13, 14], "start_index": 14, "starting_bitr": 14, "startup": 14, "state": [0, 5, 6, 7, 9, 10, 11, 12, 13, 14], "static": 14, "static_ip": 14, "station": [0, 4, 14], "stationari": 7, "statu": [0, 1, 2, 4, 6, 10, 12, 14, 15], "status": [6, 9, 12, 14], "step": [1, 11], "still": 2, "stop": [4, 8, 13, 14], "store": 11, "stream": [0, 9, 13, 14], "streamer": 14, "strength": [8, 13, 14], "string": [6, 8, 12, 14], "structur": 12, "submenu": 5, "subnet": 14, "subscrib": 11, "subscript": 11, "subsequ": [9, 11, 12], "success": [12, 13, 14], "suffici": [8, 13], "summar": 12, "summari": 14, "sundai": 6, "super": 7, "superset": 7, "superview": 7, "support": [0, 1, 2, 4, 6, 7, 8, 11, 13, 14], "suppos": 7, "swedish": 14, "synchron": [4, 5, 14], "system": [1, 8, 13, 14, 15], "tabl": [5, 9, 10, 11, 12], "take": 14, "taken": [8, 13], "tap": 2, "task": 14, "tell": [2, 14, 15], "terminologi": 12, "text": [1, 14], "than": [8, 12, 13, 15], "thei": 12, "therebi": 5, "therefor": [0, 15], "thi": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "thing": 1, "third": [2, 14, 15], "those": 6, "through": [1, 9, 10], "throughout": 12, "time": [2, 6, 11, 13, 14, 15], "timelaps": 13, "timeout": 14, "timeout_second": 14, "timer": 2, "timewarp": 7, "timezon": [2, 6], "titl": [5, 14], "title_id": [5, 14], "title_numb": 14, "tl": [1, 14], "tlv": [2, 3, 5, 6, 7, 12], "too": [8, 13], "top": 12, "total": [8, 13, 14], "total_configured_ssid": 14, "total_entri": 14, "track": 2, "trail": 13, "transfer": [2, 13, 14], "tri": 7, "trigger": [0, 1, 14], "triplet": 12, "tripod": 7, "true": 8, "trust": 1, "try": 9, "turbo": [2, 13, 14], "tutori": [9, 12], "twitch": 4, "two": [1, 11, 12], "type": [0, 1, 2, 3, 4, 5, 6, 7, 10, 13, 14], "typespec": 14, "u": 12, "ubuntu": 1, "ui": [2, 5, 8, 11, 13, 14], "ui_mode_group": [8, 13], "uint16": [2, 6], "uint32": 5, "uint8": [2, 6, 7], "ultra": 7, "un": 2, "unavail": 14, "undefin": [9, 15], "under": 6, "understand": 9, "unknown": 14, "unless": [12, 15], "unregist": [6, 13, 14], "unregister_live_stream_statu": 14, "unregister_preset_statu": 14, "unset": [4, 15], "unsign": 6, "until": 4, "up": 11, "updat": [1, 2, 5, 6, 9, 13, 14], "upon": 11, "url": [4, 14], "us": [0, 1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 15], "usb": 13, "user": [2, 5, 7, 9, 14, 15], "user_defin": 14, "usernam": [1, 14], "usual": [7, 14], "utc": [2, 6], "utf": 14, "util": 1, "uuid": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12], "v01": 9, "v2": 7, "v4": 12, "valid": [1, 7, 11, 14], "valu": [1, 2, 5, 6, 7, 8, 9, 13, 14], "value_length": 7, "variabl": [7, 12], "variou": [6, 9, 10], "vehicl": 7, "version": [6, 7, 9, 12, 13], "vertic": 7, "via": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 13, 14], "video": [5, 6, 9, 13, 14, 15], "wa": [7, 8, 11, 13, 14], "wai": 11, "wait": [11, 14, 15], "wake": 11, "walk": 9, "webcam": 13, "weekdai": 6, "well": 9, "were": 5, "when": [1, 2, 5, 6, 8, 12, 13, 14], "whenev": 6, "where": [0, 9, 12], "whether": [2, 5, 11, 12, 14], "which": [0, 1, 2, 5, 8, 11, 13, 14], "while": [0, 3, 9, 11, 13, 14, 15], "whitelist": 7, "who": 14, "wide": 7, "widescreen": 7, "wifi": [2, 11, 13, 14], "window": 1, "window_s": 14, "window_size_1080": 14, "window_size_480": 14, "window_size_720": 14, "wireless": 13, "wirelesspairingstateflag": [8, 13], "wish": [2, 14, 15], "within": [5, 14], "without": [1, 2, 6], "work": [7, 12], "worksheet": 7, "write": [11, 13], "x509": 1, "xxxx": 11, "y": 13, "ye": 6, "year": [1, 2, 6], "yet": 14, "youtub": 4, "zero": [0, 2, 5, 14], "zone": 14, "zoom": 13}, "titles": ["Access Point", "Camera on the Home Network", "Control", "Hilights", "Live Streaming", "Presets", "Query", "Settings", "Statuses", "Welcome to Open GoPro BLE API\u2019s documentation!", "Protocol", "BLE Setup", "Data Protocol", "ID Tables", "Protobuf Documentation", "State Management"], "titleterms": {"": 9, "1": 8, "10": 8, "100": 8, "101": 8, "102": 8, "103": 8, "104": 8, "105": 8, "106": 8, "107": 8, "108": [7, 8], "11": 8, "110": 8, "111": 8, "112": 8, "113": 8, "114": 8, "115": 8, "116": 8, "117": 8, "118": 8, "121": 7, "122": 7, "123": 7, "128": 7, "13": [8, 12], "134": 7, "135": 7, "150": 7, "151": 7, "16": 12, "162": 7, "167": 7, "17": 8, "171": 7, "172": 7, "173": 7, "175": 7, "176": 7, "177": 7, "178": 7, "179": 7, "180": 7, "182": 7, "183": 7, "184": 7, "186": 7, "187": 7, "189": 7, "19": 8, "190": 7, "191": 7, "192": 7, "193": 7, "2": [7, 8], "20": 8, "21": 8, "22": 8, "23": 8, "24": 8, "26": 8, "27": 8, "28": 8, "29": 8, "3": 7, "30": 8, "31": 8, "32": 8, "33": 8, "34": 8, "35": 8, "38": 8, "39": 8, "41": 8, "42": 8, "43": 7, "45": 8, "49": 8, "5": 12, "54": 8, "55": 8, "56": 8, "58": 8, "59": [7, 8], "5ghz": 8, "6": 8, "60": 8, "65": 8, "66": 8, "67": 8, "68": 8, "69": 8, "70": 8, "74": 8, "75": 8, "76": 8, "77": 8, "78": 8, "79": 8, "8": 8, "81": 8, "82": 8, "83": [7, 8], "85": 8, "86": 8, "88": 8, "89": 8, "9": 8, "93": 8, "94": 8, "95": 8, "96": 8, "97": 8, "98": 8, "99": 8, "access": 0, "accessori": 8, "activ": 8, "advertis": 11, "aliv": 15, "anti": 7, "ap": 8, "api": 9, "aspect": 7, "auto": 7, "avail": 8, "band": [7, 8], "bar": 8, "batteri": 8, "bit": [7, 12], "ble": [9, 11], "burst": 8, "busi": 8, "camera": [1, 7, 8, 9, 15], "cancel": 8, "capabl": 7, "capac": 8, "captur": 8, "card": 8, "certif": 1, "characterist": 11, "charg": 8, "cold": 8, "command": [12, 13], "configur": 11, "connect": 8, "continu": 12, "control": [2, 7, 8, 15], "core": 8, "count": 8, "countdown": 8, "data": 12, "deciph": 12, "delai": 8, "depth": 7, "detail": 1, "devic": 8, "digit": 7, "disconnect": 0, "displai": 8, "document": [9, 14], "down": 7, "durat": [7, 8], "easi": 7, "enabl": [7, 8], "encod": 8, "enum": 14, "enumcameracontrolstatu": 14, "enumcohnnetworkst": 14, "enumcohnstatu": 14, "enumflatmod": 14, "enumlen": 14, "enumlivestreamerror": 14, "enumlivestreamstatu": 14, "enumpresetgroup": 14, "enumpresetgroupicon": 14, "enumpreseticon": 14, "enumpresettitl": 14, "enumprovis": 14, "enumregisterlivestreamstatu": 14, "enumregisterpresetstatu": 14, "enumresultgener": 14, "enumscan": 14, "enumscanentryflag": 14, "enumwindows": 14, "error": 8, "exposur": 8, "extend": 12, "finish": 11, "flatmod": 8, "flicker": 7, "format": 7, "frame": 7, "friendli": 8, "from": 0, "ftu": 8, "fw": 8, "gatt": 11, "gener": [9, 12], "get": 9, "gopro": 9, "gp": [7, 8], "group": [5, 8], "header": 12, "hilight": [3, 8], "hindsight": [7, 8], "home": 1, "horizon": 7, "hypersmooth": 7, "id": [7, 8, 13], "intern": 8, "interv": [7, 8], "json": 7, "keep": 15, "laps": 7, "last": 8, "lcd": 8, "legaci": 8, "len": [7, 8], "length": [7, 12], "lens": 7, "level": [7, 8], "limit": 9, "linux": 8, "live": [4, 8], "liveview": 8, "locat": 8, "lock": 8, "manag": 15, "max": 7, "media": [7, 8, 14], "messag": [11, 12], "microphon": 8, "minimum": 8, "mobil": 8, "mod": [7, 8], "mode": [7, 8, 11], "modifi": [5, 8], "multi": 7, "network": 1, "night": 7, "notifprovisioningst": 14, "notifstartscan": 14, "notifycohnstatu": 14, "notifylivestreamstatu": 14, "notifypresetstatu": 14, "open": 9, "oper": [0, 1, 2, 3, 4, 5, 6, 7], "ota": 8, "overh": 8, "packet": 12, "pair": [8, 11], "payload": 12, "pend": 8, "per": 7, "perform": 7, "period": 8, "photo": [7, 8], "point": 0, "poll": 8, "power": 7, "present": 8, "preset": [5, 8, 14], "presetgroup": 14, "presetset": 14, "preview": 8, "primari": 8, "procedur": 1, "profil": 7, "protobuf": [12, 13, 14], "protocol": [10, 12], "provis": [1, 8], "queri": [6, 12, 13], "quick": 8, "rate": 7, "ratio": 7, "readi": [8, 15], "remain": 8, "remot": 8, "requestclearcohncert": 14, "requestcohncert": 14, "requestconnect": 14, "requestconnectnew": 14, "requestcreatecohncert": 14, "requestcustompresetupd": 14, "requestgetapentri": 14, "requestgetcohnstatu": 14, "requestgetlastcapturedmedia": 14, "requestgetlivestreamstatu": 14, "requestgetpresetstatu": 14, "requestreleasenetwork": 14, "requestsetcameracontrolstatu": 14, "requestsetcohnset": 14, "requestsetlivestreammod": 14, "requestsetturboact": 14, "requeststartscan": 14, "resolut": 7, "responsecohncert": 14, "responseconnect": 14, "responseconnectnew": 14, "responsegener": 14, "responsegetapentri": 14, "responselastcapturedmedia": 14, "responsestartscan": 14, "rotat": 8, "scan": 8, "scanentri": 14, "schedul": 8, "sd": 8, "second": 7, "select": 8, "send": 11, "set": [7, 13], "setup": [7, 11], "shot": 7, "sinc": 8, "singl": 7, "speed": [7, 8], "ssid": 8, "start": 9, "state": [8, 15], "statu": [5, 8, 13], "status": 8, "storag": 8, "stream": [4, 8], "success": 8, "support": 9, "system": 7, "tabl": 13, "time": [7, 8], "timelaps": 8, "trail": 7, "transfer": 8, "turbo": 8, "type": [8, 12], "updat": 8, "usb": 8, "valid": 8, "valu": 12, "verifi": 1, "version": 8, "video": [7, 8], "view": 1, "warp": 8, "webcam": 7, "welcom": 9, "while": 8, "wifi": 8, "wireless": [7, 8], "write": 8, "x": 8, "xlsx": 7, "y": 8, "zoom": 8}}) \ No newline at end of file +Search.setIndex({"alltitles": {"5GHZ Available (81)": [[8, "ghz-available-81"]], "AP Mode (69)": [[8, "ap-mode-69"]], "AP SSID (29)": [[8, "ap-ssid-29"]], "Access Point": [[0, "access-point"]], "Active Hilights (58)": [[8, "active-hilights-58"]], "Advertisements": [[11, "advertisements"]], "Auto Power Down (59)": [[7, "auto-power-down-59"]], "BLE Characteristics": [[11, "ble-characteristics"]], "BLE Setup": [[11, "ble-setup"]], "Battery Present (1)": [[8, "battery-present-1"]], "Bit Depth (183)": [[7, "bit-depth-183"]], "Busy (8)": [[8, "busy-8"]], "Camera Capabilities": [[7, "camera-capabilities"]], "Camera Control": [[15, "camera-control"]], "Camera Control ID (114)": [[8, "camera-control-id-114"]], "Camera Readiness": [[15, "camera-readiness"]], "Camera on the Home Network": [[1, "camera-on-the-home-network"]], "Capture Delay Active (101)": [[8, "capture-delay-active-101"]], "Certificates": [[1, "certificates"]], "Cold (85)": [[8, "cold-85"]], "Command IDs": [[13, "command-ids"]], "Commands": [[12, "commands"]], "Configure GATT Characteristics": [[11, "configure-gatt-characteristics"]], "Connected Devices (31)": [[8, "connected-devices-31"]], "Continuation Packets": [[12, "continuation-packets"]], "Control": [[2, "control"]], "Controls (175)": [[7, "controls-175"]], "Data Protocol": [[12, "data-protocol"]], "Decipher Message Payload Type": [[12, "decipher-message-payload-type"]], "Disconnect from Access Point": [[0, "disconnect-from-access-point"]], "Display Mod Status (110)": [[8, "display-mod-status-110"]], "Easy Mode Speed (176)": [[7, "easy-mode-speed-176"]], "Enable Night Photo (177)": [[7, "enable-night-photo-177"]], "Encoding (10)": [[8, "encoding-10"]], "EnumCOHNNetworkState": [[14, "enumcohnnetworkstate"]], "EnumCOHNStatus": [[14, "enumcohnstatus"]], "EnumCameraControlStatus": [[14, "enumcameracontrolstatus"]], "EnumFlatMode": [[14, "enumflatmode"]], "EnumLens": [[14, "enumlens"]], "EnumLiveStreamError": [[14, "enumlivestreamerror"]], "EnumLiveStreamStatus": [[14, "enumlivestreamstatus"]], "EnumPresetGroup": [[14, "enumpresetgroup"]], "EnumPresetGroupIcon": [[14, "enumpresetgroupicon"]], "EnumPresetIcon": [[14, "enumpreseticon"]], "EnumPresetTitle": [[14, "enumpresettitle"]], "EnumProvisioning": [[14, "enumprovisioning"]], "EnumRegisterLiveStreamStatus": [[14, "enumregisterlivestreamstatus"]], "EnumRegisterPresetStatus": [[14, "enumregisterpresetstatus"]], "EnumResultGeneric": [[14, "enumresultgeneric"]], "EnumScanEntryFlags": [[14, "enumscanentryflags"]], "EnumScanning": [[14, "enumscanning"]], "EnumWindowSize": [[14, "enumwindowsize"]], "Enums": [[14, "enums"]], "Extended (13-bit) Packets": [[12, "extended-13-bit-packets"]], "Extended (16-bit) Packets": [[12, "extended-16-bit-packets"]], "FTU (79)": [[8, "ftu-79"]], "Finish Pairing": [[11, "finish-pairing"]], "Flatmode (89)": [[8, "flatmode-89"]], "Frames Per Second (3)": [[7, "frames-per-second-3"]], "Framing (193)": [[7, "framing-193"]], "GPS (83)": [[7, "gps-83"]], "GPS Lock (68)": [[8, "gps-lock-68"]], "General": [[9, "general"]], "General (5-bit) Packets": [[12, "general-5-bit-packets"]], "Getting Started": [[9, "getting-started"]], "Hilights": [[3, "hilights"]], "HindSight (167)": [[7, "hindsight-167"]], "Hindsight (106)": [[8, "hindsight-106"]], "Hypersmooth (135)": [[7, "hypersmooth-135"]], "ID Tables": [[13, "id-tables"]], "Internal Battery (70)": [[8, "internal-battery-70"]], "Internal Battery Bars (2)": [[8, "internal-battery-bars-2"]], "JSON": [[7, "json"]], "Keep Alive": [[15, "keep-alive"]], "LCD Lock (11)": [[8, "lcd-lock-11"]], "Lapse Mode (187)": [[7, "lapse-mode-187"]], "Last Pairing Success (21)": [[8, "last-pairing-success-21"]], "Last Pairing Type (20)": [[8, "last-pairing-type-20"]], "Last Wifi Scan Success (23)": [[8, "last-wifi-scan-success-23"]], "Lens Type (105)": [[8, "lens-type-105"]], "Limitations": [[9, "limitations"]], "Linux Core (104)": [[8, "linux-core-104"]], "Live Bursts (100)": [[8, "live-bursts-100"]], "Live Streaming": [[4, "live-streaming"]], "Liveview Exposure Select Mode (65)": [[8, "liveview-exposure-select-mode-65"]], "Liveview X (67)": [[8, "liveview-x-67"]], "Liveview Y (66)": [[8, "liveview-y-66"]], "Locate (45)": [[8, "locate-45"]], "Max Lens (162)": [[7, "max-lens-162"]], "Max Lens Mod (189)": [[7, "max-lens-mod-189"]], "Max Lens Mod Enable (190)": [[7, "max-lens-mod-enable-190"]], "Media": [[14, "media"]], "Media Format (128)": [[7, "media-format-128"]], "Media Mod State (102)": [[8, "media-mod-state-102"]], "Message Payload": [[12, "message-payload"]], "Microphone Accessory (74)": [[8, "microphone-accessory-74"]], "Minimum Status Poll Period (60)": [[8, "minimum-status-poll-period-60"]], "Mobile Friendly (78)": [[8, "mobile-friendly-78"]], "Multi Shot Aspect Ratio (192)": [[7, "multi-shot-aspect-ratio-192"]], "NotifProvisioningState": [[14, "notifprovisioningstate"]], "NotifStartScanning": [[14, "notifstartscanning"]], "NotifyCOHNStatus": [[14, "notifycohnstatus"]], "NotifyLiveStreamStatus": [[14, "notifylivestreamstatus"]], "NotifyPresetStatus": [[14, "notifypresetstatus"]], "OTA (41)": [[8, "ota-41"]], "OTA Charged (83)": [[8, "ota-charged-83"]], "Operations": [[0, "operations"], [1, "operations"], [2, "operations"], [3, "operations"], [4, "operations"], [5, "operations"], [6, "operations"], [7, "operations"]], "Overheating (6)": [[8, "overheating-6"]], "Packet Headers": [[12, "packet-headers"]], "Packetization": [[12, "packetization"]], "Pairing Mode": [[11, "pairing-mode"]], "Pairing State (19)": [[8, "pairing-state-19"]], "Pairing State (Legacy) (28)": [[8, "pairing-state-legacy-28"]], "Pending FW Update Cancel (42)": [[8, "pending-fw-update-cancel-42"]], "Photo Horizon Leveling (151)": [[7, "photo-horizon-leveling-151"]], "Photo Interval Capture Count (118)": [[8, "photo-interval-capture-count-118"]], "Photo Interval Duration (172)": [[7, "photo-interval-duration-172"]], "Photo Lens (122)": [[7, "photo-lens-122"]], "Photo Mode (191)": [[7, "photo-mode-191"]], "Photo Preset (94)": [[8, "photo-preset-94"]], "Photo Single Interval (171)": [[7, "photo-single-interval-171"]], "Photos (38)": [[8, "photos-38"]], "Preset": [[14, "preset"]], "Preset (97)": [[8, "preset-97"]], "Preset Group (96)": [[8, "preset-group-96"]], "Preset Groups": [[5, "preset-groups"]], "Preset Modified (98)": [[8, "preset-modified-98"]], "Preset Modified Status": [[5, "preset-modified-status"]], "PresetGroup": [[14, "presetgroup"]], "PresetSetting": [[14, "presetsetting"]], "Presets": [[5, "presets"]], "Preview Stream (32)": [[8, "preview-stream-32"]], "Preview Stream Available (55)": [[8, "preview-stream-available-55"]], "Primary Storage (33)": [[8, "primary-storage-33"]], "Profiles (184)": [[7, "profiles-184"]], "Protobuf": [[12, "protobuf"]], "Protobuf Documentation": [[14, "protobuf-documentation"]], "Protobuf IDs": [[13, "protobuf-ids"]], "Protocol": [[10, "protocol"]], "Provisioning Procedure": [[1, "provisioning-procedure"]], "Queries": [[12, "queries"]], "Query": [[6, "query"]], "Query IDs": [[13, "query-ids"]], "Quick Capture (9)": [[8, "quick-capture-9"]], "Ready (82)": [[8, "ready-82"]], "Remaining Live Bursts (99)": [[8, "remaining-live-bursts-99"]], "Remaining Photos (34)": [[8, "remaining-photos-34"]], "Remaining Video Time (35)": [[8, "remaining-video-time-35"]], "Remote Connected (27)": [[8, "remote-connected-27"]], "Remote Version (26)": [[8, "remote-version-26"]], "RequestCOHNCert": [[14, "requestcohncert"]], "RequestClearCOHNCert": [[14, "requestclearcohncert"]], "RequestConnect": [[14, "requestconnect"]], "RequestConnectNew": [[14, "requestconnectnew"]], "RequestCreateCOHNCert": [[14, "requestcreatecohncert"]], "RequestCustomPresetUpdate": [[14, "requestcustompresetupdate"]], "RequestGetApEntries": [[14, "requestgetapentries"]], "RequestGetCOHNStatus": [[14, "requestgetcohnstatus"]], "RequestGetLastCapturedMedia": [[14, "requestgetlastcapturedmedia"]], "RequestGetLiveStreamStatus": [[14, "requestgetlivestreamstatus"]], "RequestGetPresetStatus": [[14, "requestgetpresetstatus"]], "RequestReleaseNetwork": [[14, "requestreleasenetwork"]], "RequestSetCOHNSetting": [[14, "requestsetcohnsetting"]], "RequestSetCameraControlStatus": [[14, "requestsetcameracontrolstatus"]], "RequestSetLiveStreamMode": [[14, "requestsetlivestreammode"]], "RequestSetTurboActive": [[14, "requestsetturboactive"]], "RequestStartScan": [[14, "requeststartscan"]], "ResponseCOHNCert": [[14, "responsecohncert"]], "ResponseConnect": [[14, "responseconnect"]], "ResponseConnectNew": [[14, "responseconnectnew"]], "ResponseGeneric": [[14, "responsegeneric"]], "ResponseGetApEntries": [[14, "responsegetapentries"]], "ResponseGetApEntries::ScanEntry": [[14, "responsegetapentries-scanentry"]], "ResponseLastCapturedMedia": [[14, "responselastcapturedmedia"]], "ResponseStartScanning": [[14, "responsestartscanning"]], "Rotation (86)": [[8, "rotation-86"]], "SD Card Capacity (117)": [[8, "sd-card-capacity-117"]], "SD Card Errors (112)": [[8, "sd-card-errors-112"]], "SD Card Remaining (54)": [[8, "sd-card-remaining-54"]], "Scheduled Capture (108)": [[8, "scheduled-capture-108"]], "Scheduled Capture Preset ID (107)": [[8, "scheduled-capture-preset-id-107"]], "Send Messages": [[11, "send-messages"]], "Setting IDs": [[7, "setting-ids"], [13, "setting-ids"]], "Settings": [[7, "settings"]], "Setup Anti-Flicker (134)": [[7, "setup-anti-flicker-134"]], "State Management": [[15, "state-management"]], "Status IDs": [[8, "status-ids"], [13, "status-ids"]], "Statuses": [[8, "statuses"]], "Supported Cameras": [[9, "supported-cameras"]], "System Video Mode (180)": [[7, "system-video-mode-180"]], "Time Lapse Digital Lenses (123)": [[7, "time-lapse-digital-lenses-123"]], "Time Since Last Hilight (59)": [[8, "time-since-last-hilight-59"]], "Time Warp Speed (103)": [[8, "time-warp-speed-103"]], "Timelapse Interval Countdown (49)": [[8, "timelapse-interval-countdown-49"]], "Timelapse Preset (95)": [[8, "timelapse-preset-95"]], "Trail Length (179)": [[7, "trail-length-179"]], "Turbo Transfer (113)": [[8, "turbo-transfer-113"]], "Type Length Value": [[12, "type-length-value"]], "USB Connected (115)": [[8, "usb-connected-115"]], "USB Controlled (116)": [[8, "usb-controlled-116"]], "Valid SD Card Write Speed (111)": [[8, "valid-sd-card-write-speed-111"]], "Verifying Certificate": [[1, "verifying-certificate"]], "Video Aspect Ratio (108)": [[7, "video-aspect-ratio-108"]], "Video Bit Rate (182)": [[7, "video-bit-rate-182"]], "Video Easy Mode (186)": [[7, "video-easy-mode-186"]], "Video Encoding Duration (13)": [[8, "video-encoding-duration-13"]], "Video Horizon Leveling (150)": [[7, "video-horizon-leveling-150"]], "Video Lens (121)": [[7, "video-lens-121"]], "Video Performance Mode (173)": [[7, "video-performance-mode-173"]], "Video Preset (93)": [[8, "video-preset-93"]], "Video Resolution (2)": [[7, "video-resolution-2"]], "Videos (39)": [[8, "videos-39"]], "View Certificate Details": [[1, "view-certificate-details"]], "Webcam Digital Lenses (43)": [[7, "webcam-digital-lenses-43"]], "Welcome to Open GoPro BLE API\u2019s documentation!": [[9, "welcome-to-open-gopro-ble-api-s-documentation"]], "WiFi SSID (30)": [[8, "wifi-ssid-30"]], "Wifi Bars (56)": [[8, "wifi-bars-56"]], "Wifi Provisioning State (24)": [[8, "wifi-provisioning-state-24"]], "Wifi Scan State (22)": [[8, "wifi-scan-state-22"]], "Wireless Band (178)": [[7, "wireless-band-178"]], "Wireless Band (76)": [[8, "wireless-band-76"]], "Wireless Connections Enabled (17)": [[8, "wireless-connections-enabled-17"]], "XLSX": [[7, "xlsx"]], "Zoom Available (77)": [[8, "zoom-available-77"]], "Zoom Level (75)": [[8, "zoom-level-75"]], "Zoom while Encoding (88)": [[8, "zoom-while-encoding-88"]]}, "docnames": ["features/access_points", "features/cohn", "features/control", "features/hilights", "features/live_streaming", "features/presets", "features/query", "features/settings", "features/statuses", "index", "protocol", "protocol/ble_setup", "protocol/data_protocol", "protocol/id_tables", "protocol/protobuf", "protocol/state_management"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["features/access_points.rst", "features/cohn.rst", "features/control.rst", "features/hilights.rst", "features/live_streaming.rst", "features/presets.rst", "features/query.rst", "features/settings.rst", "features/statuses.rst", "index.rst", "protocol.rst", "protocol/ble_setup.rst", "protocol/data_protocol.rst", "protocol/id_tables.rst", "protocol/protobuf.rst", "protocol/state_management.rst"], "indexentries": {}, "objects": {"": [[14, 0, 0, "enumcohnnetworkstate", "EnumCOHNNetworkState"], [14, 0, 0, "enumcohnstatus", "EnumCOHNStatus"], [14, 0, 0, "enumcameracontrolstatus", "EnumCameraControlStatus"], [14, 0, 0, "enumflatmode", "EnumFlatMode"], [14, 0, 0, "enumlens", "EnumLens"], [14, 0, 0, "enumlivestreamerror", "EnumLiveStreamError"], [14, 0, 0, "enumlivestreamstatus", "EnumLiveStreamStatus"], [14, 0, 0, "enumpresetgroup", "EnumPresetGroup"], [14, 0, 0, "enumpresetgroupicon", "EnumPresetGroupIcon"], [14, 0, 0, "enumpreseticon", "EnumPresetIcon"], [14, 0, 0, "enumpresettitle", "EnumPresetTitle"], [14, 0, 0, "enumprovisioning", "EnumProvisioning"], [14, 0, 0, "enumregisterlivestreamstatus", "EnumRegisterLiveStreamStatus"], [14, 0, 0, "enumregisterpresetstatus", "EnumRegisterPresetStatus"], [14, 0, 0, "enumresultgeneric", "EnumResultGeneric"], [14, 0, 0, "enumscanentryflags", "EnumScanEntryFlags"], [14, 0, 0, "enumscanning", "EnumScanning"], [14, 0, 0, "enumwindowsize", "EnumWindowSize"], [14, 0, 0, "media", "Media"], [14, 0, 0, "notifprovisioningstate", "NotifProvisioningState"], [14, 0, 0, "notifstartscanning", "NotifStartScanning"], [14, 0, 0, "notifycohnstatus", "NotifyCOHNStatus"], [14, 0, 0, "notifylivestreamstatus", "NotifyLiveStreamStatus"], [14, 0, 0, "notifypresetstatus", "NotifyPresetStatus"], [14, 0, 0, "preset", "Preset"], [14, 0, 0, "presetgroup", "PresetGroup"], [14, 0, 0, "presetsetting", "PresetSetting"], [14, 0, 0, "requestcohncert", "RequestCOHNCert"], [14, 0, 0, "requestclearcohncert", "RequestClearCOHNCert"], [14, 0, 0, "requestconnect", "RequestConnect"], [14, 0, 0, "requestconnectnew", "RequestConnectNew"], [14, 0, 0, "requestcreatecohncert", "RequestCreateCOHNCert"], [14, 0, 0, "requestcustompresetupdate", "RequestCustomPresetUpdate"], [14, 0, 0, "requestgetapentries", "RequestGetApEntries"], [14, 0, 0, "requestgetcohnstatus", "RequestGetCOHNStatus"], [14, 0, 0, "requestgetlastcapturedmedia", "RequestGetLastCapturedMedia"], [14, 0, 0, "requestgetlivestreamstatus", "RequestGetLiveStreamStatus"], [14, 0, 0, "requestgetpresetstatus", "RequestGetPresetStatus"], [14, 0, 0, "requestreleasenetwork", "RequestReleaseNetwork"], [14, 0, 0, "requestsetcohnsetting", "RequestSetCOHNSetting"], [14, 0, 0, "requestsetcameracontrolstatus", "RequestSetCameraControlStatus"], [14, 0, 0, "requestsetlivestreammode", "RequestSetLiveStreamMode"], [14, 0, 0, "requestsetturboactive", "RequestSetTurboActive"], [14, 0, 0, "requeststartscan", "RequestStartScan"], [14, 0, 0, "responsecohncert", "ResponseCOHNCert"], [14, 0, 0, "responseconnect", "ResponseConnect"], [14, 0, 0, "responseconnectnew", "ResponseConnectNew"], [14, 0, 0, "responsegeneric", "ResponseGeneric"], [14, 0, 0, "responsegetapentries", "ResponseGetApEntries"], [14, 0, 0, "responselastcapturedmedia", "ResponseLastCapturedMedia"], [14, 0, 0, "responsestartscanning", "ResponseStartScanning"], [14, 0, 0, "scanentry", "ScanEntry"], [1, 1, 0, "clear-cohn-certificate", "clear cohn certificate"], [0, 1, 0, "connect-to-a-new-access-point", "connect to a new access point"], [0, 1, 0, "connect-to-provisioned-access-point", "connect to provisioned access point"], [1, 1, 0, "create-cohn-certificate", "create cohn certificate"], [0, 1, 0, "get-ap-scan-results", "get ap scan results"], [5, 1, 0, "get-available-presets", "get available presets"], [1, 1, 0, "get-cohn-certificate", "get cohn certificate"], [1, 1, 0, "get-cohn-status", "get cohn status"], [6, 1, 0, "get-date-time", "get date time"], [6, 1, 0, "get-hardware-info", "get hardware info"], [6, 1, 0, "get-last-captured-media", "get last captured media"], [4, 1, 0, "get-livestream-status", "get livestream status"], [6, 1, 0, "get-local-date-time", "get local date time"], [6, 1, 0, "get-open-gopro-version", "get open gopro version"], [6, 1, 0, "get-setting-capabilities", "get setting capabilities"], [6, 1, 0, "get-setting-values", "get setting values"], [6, 1, 0, "get-status-values", "get status values"], [3, 1, 0, "hilight-moment", "hilight moment"], [2, 1, 0, "keep-alive", "keep alive"], [5, 1, 0, "load-preset", "load preset"], [5, 1, 0, "load-preset-group", "load preset group"], [6, 1, 0, "register-for-setting-capability-updates", "register for setting capability updates"], [6, 1, 0, "register-for-setting-value-updates", "register for setting value updates"], [6, 1, 0, "register-for-status-value-updates", "register for status value updates"], [0, 1, 0, "scan-for-access-points", "scan for access points"], [2, 1, 0, "set-analytics", "set analytics"], [2, 1, 0, "set-ap-control", "set ap control"], [2, 1, 0, "set-camera-control", "set camera control"], [1, 1, 0, "set-cohn-setting", "set cohn setting"], [2, 1, 0, "set-date-time", "set date time"], [4, 1, 0, "set-livestream-mode", "set livestream mode"], [2, 1, 0, "set-local-date-time", "set local date time"], [7, 1, 0, "set-setting", "set setting"], [2, 1, 0, "set-shutter", "set shutter"], [2, 1, 0, "set-turbo-transfer", "set turbo transfer"], [2, 1, 0, "sleep", "sleep"], [6, 1, 0, "unregister-for-setting-capability-updates", "unregister for setting capability updates"], [6, 1, 0, "unregister-for-setting-value-updates", "unregister for setting value updates"], [6, 1, 0, "unregister-for-status-value-updates", "unregister for status value updates"], [5, 1, 0, "update-custom-preset", "update custom preset"], [7, 2, 0, "setting-108", "Setting 108 (Video Aspect Ratio)"], [7, 2, 0, "setting-121", "Setting 121 (Video Lens)"], [7, 2, 0, "setting-122", "Setting 122 (Photo Lens)"], [7, 2, 0, "setting-123", "Setting 123 (Time Lapse Digital Lenses)"], [7, 2, 0, "setting-128", "Setting 128 (Media Format)"], [7, 2, 0, "setting-134", "Setting 134 (Setup Anti-Flicker)"], [7, 2, 0, "setting-135", "Setting 135 (Hypersmooth)"], [7, 2, 0, "setting-150", "Setting 150 (Video Horizon Leveling)"], [7, 2, 0, "setting-151", "Setting 151 (Photo Horizon Leveling)"], [7, 2, 0, "setting-162", "Setting 162 (Max Lens)"], [7, 2, 0, "setting-167", "Setting 167 (HindSight)"], [7, 2, 0, "setting-171", "Setting 171 (Photo Single Interval)"], [7, 2, 0, "setting-172", "Setting 172 (Photo Interval Duration)"], [7, 2, 0, "setting-173", "Setting 173 (Video Performance Mode)"], [7, 2, 0, "setting-175", "Setting 175 (Controls)"], [7, 2, 0, "setting-176", "Setting 176 (Easy Mode Speed)"], [7, 2, 0, "setting-177", "Setting 177 (Enable Night Photo)"], [7, 2, 0, "setting-178", "Setting 178 (Wireless Band)"], [7, 2, 0, "setting-179", "Setting 179 (Trail Length)"], [7, 2, 0, "setting-180", "Setting 180 (System Video Mode)"], [7, 2, 0, "setting-182", "Setting 182 (Video Bit Rate)"], [7, 2, 0, "setting-183", "Setting 183 (Bit Depth)"], [7, 2, 0, "setting-184", "Setting 184 (Profiles)"], [7, 2, 0, "setting-186", "Setting 186 (Video Easy Mode)"], [7, 2, 0, "setting-187", "Setting 187 (Lapse Mode)"], [7, 2, 0, "setting-189", "Setting 189 (Max Lens Mod)"], [7, 2, 0, "setting-190", "Setting 190 (Max Lens Mod Enable)"], [7, 2, 0, "setting-191", "Setting 191 (Photo Mode)"], [7, 2, 0, "setting-192", "Setting 192 (Multi Shot Aspect Ratio)"], [7, 2, 0, "setting-193", "Setting 193 (Framing)"], [7, 2, 0, "setting-2", "Setting 2 (Video Resolution)"], [7, 2, 0, "setting-3", "Setting 3 (Frames Per Second)"], [7, 2, 0, "setting-43", "Setting 43 (Webcam Digital Lenses)"], [7, 2, 0, "setting-59", "Setting 59 (Auto Power Down)"], [7, 2, 0, "setting-83", "Setting 83 (GPS)"], [8, 3, 0, "status-1", "Status 1 (Is the system's internal battery present?)"], [8, 3, 0, "status-10", "Status 10 (Is the system currently encoding?)"], [8, 3, 0, "status-100", "Status 100 (Total number of Live Bursts on sdcard)"], [8, 3, 0, "status-102", "Status 102 (None)"], [8, 3, 0, "status-103", "Status 103 (None)"], [8, 3, 0, "status-104", "Status 104 (Is the system's Linux core active?)"], [8, 3, 0, "status-106", "Status 106 (Is Video Hindsight Capture Active?)"], [8, 3, 0, "status-107", "Status 107 (None)"], [8, 3, 0, "status-108", "Status 108 (Is Scheduled Capture set?)"], [8, 3, 0, "status-11", "Status 11 (Is LCD lock active?)"], [8, 3, 0, "status-111", "Status 111 (Does sdcard meet specified minimum write speed?)"], [8, 3, 0, "status-112", "Status 112 (Number of sdcard write speed errors since device booted)"], [8, 3, 0, "status-113", "Status 113 (Is Turbo Transfer active?)"], [8, 3, 0, "status-114", "Status 114 (Camera control status ID)"], [8, 3, 0, "status-115", "Status 115 (Is the camera connected to a PC via USB?)"], [8, 3, 0, "status-116", "Status 116 (Camera control over USB state)"], [8, 3, 0, "status-117", "Status 117 (Total SD card capacity in Kilobytes)"], [8, 3, 0, "status-118", "Status 118 (None)"], [8, 3, 0, "status-13", "Status 13 (When encoding video, this is the duration (seconds) of the video so far; 0 otherwise)"], [8, 3, 0, "status-17", "Status 17 (Are Wireless Connections enabled?)"], [8, 3, 0, "status-19", "Status 19 (None)"], [8, 3, 0, "status-2", "Status 2 (Rough approximation of internal battery level in bars (or charging))"], [8, 3, 0, "status-20", "Status 20 (The last type of pairing in which the camera was engaged)"], [8, 3, 0, "status-21", "Status 21 (Time since boot (milliseconds) of last successful pairing complete action)"], [8, 3, 0, "status-22", "Status 22 (State of current scan for WiFi Access Points)"], [8, 3, 0, "status-23", "Status 23 (Time since boot (milliseconds) that the WiFi Access Point scan completed)"], [8, 3, 0, "status-24", "Status 24 (WiFi AP provisioning state)"], [8, 3, 0, "status-26", "Status 26 (Wireless remote control version)"], [8, 3, 0, "status-27", "Status 27 (Is a wireless remote control connected?)"], [8, 3, 0, "status-31", "Status 31 (The number of wireless devices connected to the camera)"], [8, 3, 0, "status-32", "Status 32 (Is Preview Stream enabled?)"], [8, 3, 0, "status-33", "Status 33 (None)"], [8, 3, 0, "status-34", "Status 34 (How many photos can be taken with current settings before sdcard is full)"], [8, 3, 0, "status-35", "Status 35 (How many seconds of video can be captured with current settings before sdcard is full)"], [8, 3, 0, "status-38", "Status 38 (Total number of photos on sdcard)"], [8, 3, 0, "status-39", "Status 39 (Total number of videos on sdcard)"], [8, 3, 0, "status-41", "Status 41 (The current status of Over The Air (OTA) update)"], [8, 3, 0, "status-42", "Status 42 (Is there a pending request to cancel a firmware update download?)"], [8, 3, 0, "status-45", "Status 45 (Is locate camera feature active?)"], [8, 3, 0, "status-54", "Status 54 (Remaining space on the sdcard in Kilobytes)"], [8, 3, 0, "status-55", "Status 55 (Is preview stream supported in current recording/mode/secondary-stream?)"], [8, 3, 0, "status-56", "Status 56 (WiFi signal strength in bars)"], [8, 3, 0, "status-58", "Status 58 (The number of hilights in currently-encoding video (value is set to 0 when encoding stops))"], [8, 3, 0, "status-59", "Status 59 (Time since boot (milliseconds) of most recent hilight in encoding video (set to 0 when encoding stops))"], [8, 3, 0, "status-6", "Status 6 (Is the system currently overheating?)"], [8, 3, 0, "status-65", "Status 65 (None)"], [8, 3, 0, "status-66", "Status 66 (Liveview Exposure Select: y-coordinate (percent))"], [8, 3, 0, "status-67", "Status 67 (Liveview Exposure Select: y-coordinate (percent))"], [8, 3, 0, "status-68", "Status 68 (Does the camera currently have a GPS lock?)"], [8, 3, 0, "status-69", "Status 69 (Is AP mode enabled?)"], [8, 3, 0, "status-70", "Status 70 (Internal battery level (percent))"], [8, 3, 0, "status-74", "Status 74 (None)"], [8, 3, 0, "status-75", "Status 75 (Digital Zoom level (percent))"], [8, 3, 0, "status-76", "Status 76 (None)"], [8, 3, 0, "status-77", "Status 77 (Is Digital Zoom feature available?)"], [8, 3, 0, "status-78", "Status 78 (Are current video settings mobile friendly? (related to video compression and frame rate))"], [8, 3, 0, "status-79", "Status 79 (Is the camera currently in First Time Use (FTU) UI flow?)"], [8, 3, 0, "status-8", "Status 8 (Is the camera busy?)"], [8, 3, 0, "status-81", "Status 81 (Is 5GHz wireless band available?)"], [8, 3, 0, "status-82", "Status 82 (Is the system fully booted and ready to accept commands?)"], [8, 3, 0, "status-83", "Status 83 (Is the internal battery charged sufficiently to start Over The Air (OTA) update?)"], [8, 3, 0, "status-85", "Status 85 (Is the camera getting too cold to continue recording?)"], [8, 3, 0, "status-86", "Status 86 (Rotational orientation of the camera)"], [8, 3, 0, "status-88", "Status 88 (Is this camera model capable of zooming while encoding?)"], [8, 3, 0, "status-89", "Status 89 (Current Flatmode ID)"], [8, 3, 0, "status-9", "Status 9 (Is Quick Capture feature enabled?)"], [8, 3, 0, "status-93", "Status 93 (Current Video Preset (ID))"], [8, 3, 0, "status-94", "Status 94 (Current Photo Preset (ID))"], [8, 3, 0, "status-95", "Status 95 (Current Time Lapse Preset (ID))"], [8, 3, 0, "status-97", "Status 97 (Current Preset (ID))"], [8, 3, 0, "status-98", "Status 98 (Preset Modified Status, which contains an event ID and a Preset (Group) ID)"], [8, 3, 0, "status-99", "Status 99 (The number of Live Bursts can be captured with current settings before sdcard is full)"]], "Status 101 (Is Capture Delay currently active (i.e": [[8, 3, 0, "status-101", " counting down)?)"]], "Status 105 (Camera lens type (reflects changes to lens settings such as 162, 189, 194, ..": [[8, 3, 0, "status-105", "))"]], "Status 110 (Note that this is a bitmasked value": [[8, 3, 0, "status-110", ")"]], "Status 28 (Wireless Pairing State": [[8, 3, 0, "status-28", " Each bit contains state information (see WirelessPairingStateFlags))"]], "Status 29 (SSID of the AP the camera is currently connected to": [[8, 3, 0, "status-29", " On BLE connection, value is big-endian byte-encoded int32)"]], "Status 30 (The camera's WiFi SSID": [[8, 3, 0, "status-30", " On BLE connection, value is big-endian byte-encoded int32)"]], "Status 49 (The current timelapse interval countdown value (e.g. 5...4...3...2...1..": [[8, 3, 0, "status-49", "))"]], "Status 60 (The minimum time between camera status updates (milliseconds)": [[8, 3, 0, "status-60", " Best practice is to not poll for status more\noften than this\n)"]], "Status 96 (Current Preset Group (ID) (corresponds to ui_mode_groups in settings": [[8, 3, 0, "status-96", "json))"]]}, "objnames": {"0": ["operation", "Proto", "Proto"], "1": ["operation", "Operation", "Operation"], "2": ["operation", "Setting", "Setting"], "3": ["operation", "Status", "Status"]}, "objtypes": {"0": "operation:Proto", "1": "operation:Operation", "2": "operation:Setting", "3": "operation:Status"}, "terms": {"": [1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15], "0": [2, 6, 7, 8, 12, 13, 14], "00": [2, 9, 12], "0001": 11, "0002": 11, "0002a5d5c51b": 11, "0003": 11, "0004": 11, "0005": 11, "0072": [11, 12], "0073": 11, "0074": [11, 12], "0075": 11, "0076": [11, 12], "0077": 11, "0090": 11, "0091": 11, "0092": 11, "01": [2, 6, 9, 12], "02": 2, "03": [2, 9], "04": 2, "05": 2, "07": 2, "0x0": 12, "0x01": [2, 13], "0x02": [0, 13], "0x03": [0, 13], "0x04": [0, 13], "0x05": [0, 2, 13], "0x0b": [0, 13], "0x0c": [0, 13], "0x0d": [2, 13], "0x0e": [6, 13], "0x0f": [2, 13], "0x10": [6, 13], "0x12": [6, 13], "0x13": [6, 13], "0x17": [2, 13], "0x18": [3, 13], "0x32": [6, 13], "0x3c": [6, 13], "0x3e": [5, 13], "0x40": [5, 13], "0x42": 2, "0x50": [2, 13], "0x51": [6, 13], "0x52": [6, 13], "0x53": [6, 13], "0x5b": [2, 13], "0x62": [6, 13], "0x64": [5, 13], "0x65": [1, 13], "0x66": [1, 13], "0x67": [1, 13], "0x69": [2, 13], "0x6b": [2, 13], "0x6d": [6, 13], "0x6e": [1, 13], "0x6f": [1, 13], "0x72": [5, 6, 13], "0x73": [6, 13], "0x74": [4, 13], "0x79": [4, 13], "0x82": [0, 6, 13], "0x83": [0, 13], "0x84": [0, 13], "0x85": [0, 13], "0x92": [6, 13], "0x93": [6, 13], "0xa2": [6, 13], "0xe4": [5, 13], "0xe5": [1, 13], "0xe6": [1, 13], "0xe7": [1, 13], "0xe9": [2, 13], "0xeb": [2, 13], "0xed": [6, 13], "0xee": [1, 13], "0xef": [1, 13], "0xf": 12, "0xf1": [1, 2, 4, 5, 13], "0xf2": [5, 13], "0xf3": [5, 13], "0xf4": [4, 13], "0xf5": [1, 4, 5, 6, 13], "0xf9": [4, 13], "0xfea6": 11, "1": [1, 2, 6, 7, 12, 13, 14], "10": [2, 7, 9, 12, 13, 14], "100": [7, 13], "1000": 14, "1001": 14, "1002": 14, "101": [7, 13], "102": [7, 13], "103": [7, 13], "104": [7, 13], "105": [7, 13], "106": [7, 13], "107": [7, 13], "108": 13, "1080": 7, "109": 7, "11": [6, 7, 13, 14], "110": [7, 13], "111": [7, 13], "112": [7, 13], "113": [7, 13], "114": [2, 7, 13, 14], "115": [7, 13], "116": [7, 13], "117": [7, 13], "118": [7, 13], "119": 7, "11e3": 11, "12": [2, 6, 7, 14], "120": 7, "121": 13, "122": 13, "123": 13, "124": 7, "125": 7, "126": 7, "127": 7, "128": [11, 13], "129": 7, "13": [7, 13, 14], "130": 7, "131": 7, "132": 7, "133": 7, "134": 13, "135": 13, "136": 7, "137": 7, "14": [7, 14], "1440": 7, "15": [7, 14], "150": 13, "151": 13, "15min": 15, "16": [7, 14], "162": [5, 8, 13], "167": 13, "17": [7, 13, 14], "171": 13, "172": 13, "173": [5, 13], "175": [5, 13], "176": 13, "177": [5, 13], "178": 13, "179": 13, "18": [7, 14], "180": [5, 13], "182": 13, "183": 13, "184": 13, "186": [5, 13], "187": [5, 13], "189": [5, 8, 13], "19": [7, 13, 14], "190": [5, 13], "191": [5, 13], "192": 13, "193": 13, "194": [8, 13], "1f": 2, "1x": 7, "2": [12, 13, 14], "20": [7, 12, 13, 14], "200": 7, "2023": 2, "21": [7, 13, 14], "22": [7, 13, 14], "23": [2, 6, 7, 13, 14], "24": [7, 13, 14], "240": 7, "240fp": 7, "25": [7, 14], "255": 12, "26": [7, 13, 14], "2674f7f65f78": 6, "27": [7, 13, 14], "28": [7, 13, 14], "29": [13, 14], "2x": 7, "3": [2, 8, 12, 13, 14], "30": [7, 13, 14], "30min": 15, "31": [2, 6, 13, 14], "32": [13, 14], "33": [13, 14], "34": [13, 14], "35": [13, 14], "36": 14, "37": 14, "38": [13, 14], "39": [13, 14], "3k": 7, "4": [7, 8, 12, 13, 14], "40": 14, "41": [13, 14], "42": [13, 14], "43": 13, "45": 13, "49": 13, "4ghz": 7, "4k": 7, "4x": 7, "5": [7, 8, 13, 14], "50": 7, "50hz": 7, "54": 13, "55": [9, 13], "56": [6, 13], "57": 9, "58": [9, 13, 14], "59": [2, 6, 13, 14], "5ghz": [7, 13], "5k": 7, "5min": 15, "6": [6, 7, 12, 13, 14], "60": [7, 9, 13, 14], "60hz": 7, "61": 14, "62": [9, 14], "63": [2, 14], "64": 14, "65": [13, 14], "66": [13, 14], "67": [13, 14], "68": [13, 14], "69": [13, 14], "7": [2, 7, 12, 14], "70": [9, 13, 14], "71": 14, "72": 14, "73": 14, "74": [13, 14], "75": [13, 14], "76": [13, 14], "77": [13, 14], "78": [13, 14], "79": [13, 14], "7k": 7, "8": [7, 11, 13, 14], "81": 13, "8191": 12, "8192": 12, "82": [13, 14], "83": [13, 14], "85": [13, 14], "86": 13, "88": [2, 13], "89": 13, "8x": 7, "9": [7, 13, 14], "9046": 11, "93": [13, 14], "94": [5, 13, 14], "95": 13, "96": 13, "97": 13, "98": [5, 13], "99": [6, 13], "A": [0, 1, 5, 7, 12, 14, 15], "As": [4, 14], "At": 1, "For": [1, 2, 4, 7, 9, 11, 12, 15], "If": [2, 6, 7, 11, 12, 14, 15], "In": [1, 2, 7, 11, 12, 15], "It": 12, "NOT": 14, "No": 14, "Not": 14, "ON": 11, "On": [0, 1, 2, 7, 8, 13, 14], "The": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "Then": 9, "There": 12, "These": 7, "To": [0, 5, 12], "aa8d": 11, "abil": 4, "about": [1, 2, 4, 6, 14], "abov": [2, 6, 7, 9], "accept": [4, 8, 13, 14, 15], "access": [1, 2, 4, 8, 9, 11, 13, 14], "accommod": 12, "accomplish": [4, 12], "accordingli": [2, 14], "accumul": 12, "across": [1, 2, 4, 5, 14], "act": 1, "action": [0, 1, 2, 4, 5, 6, 8, 12, 13], "activ": [5, 9, 13, 14, 15], "adapt": 14, "add": [3, 14], "addit": [4, 14], "addition": [1, 9, 14], "address": [1, 14], "adher": 7, "advertis": [2, 10, 14], "affect": 5, "after": [0, 2, 11, 12, 14, 15], "again": 11, "air": [8, 13], "aliv": [2, 10, 13], "all": [1, 2, 6, 11, 12], "allow": [1, 11], "alreadi": 14, "also": [1, 14], "altern": [7, 11, 12], "alwai": [5, 7, 9, 12, 14, 15], "an": [0, 1, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15], "analyt": [2, 13], "ani": [2, 4, 5, 9, 14], "anoth": 7, "anti": 13, "ap": [0, 2, 11, 13, 14], "ap_mac_address": 6, "ap_mac_address_length": 6, "ap_ssid": 6, "ap_ssid_length": 6, "api": [5, 6, 14], "app": [2, 14, 15], "appear": 14, "appropri": 12, "approxim": [8, 13], "ar": [0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "arrai": [6, 12, 14], "arrow": [5, 14], "ascii": 14, "aspect": 13, "associ": [6, 9, 14], "assum": 9, "asynchron": [1, 4, 5, 11, 13, 14], "attain": 7, "attemp": 14, "attempt": [0, 14], "auth": [1, 14], "authent": [0, 14], "author": 1, "auto": [2, 13], "automat": [2, 14, 15], "avail": [0, 5, 9, 13, 14], "avoid": 12, "b5f9xxxx": 11, "back": [5, 14], "bad": 14, "band": 13, "bandwidth": 12, "bar": [13, 14], "base": 9, "basic": [1, 7, 9, 14], "batch": 14, "batt": 7, "batteri": [2, 7, 13], "becaus": [7, 14], "been": [0, 12, 14], "befor": [8, 11, 12, 13, 14, 15], "begin": 4, "behavior": [2, 14, 15], "being": 14, "below": [5, 7, 9, 11, 12], "best": [2, 8, 11, 13, 15], "between": [8, 9, 13, 14, 15], "big": [8, 12, 13], "bit": [0, 8, 11, 13], "bitmask": [8, 13, 14], "bitrat": 14, "black": [1, 6, 7, 9], "blacklist": 7, "ble": [2, 8, 10, 12, 13], "bluetooth": 9, "bool": 14, "boost": 7, "boot": [8, 11, 13], "both": 2, "buffer": 12, "build": 11, "burst": 13, "busi": [13, 15], "button": [2, 14], "byte": [0, 2, 6, 8, 12, 13, 14], "c1234567812345": 6, "ca": [1, 14], "cach": 11, "cafil": 1, "camera": [0, 2, 4, 5, 6, 10, 11, 12, 13, 14], "camera_control": 14, "camera_control_statu": 14, "camera_external_control": 14, "camera_idl": 14, "can": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14], "can_add_preset": 14, "cancel": [6, 13], "capabl": [1, 6, 8, 9, 13], "capac": 13, "caption": [5, 14], "captur": [6, 13, 14, 15], "card": [13, 14], "case": [1, 5, 9, 14], "caus": [2, 11, 14], "cert": [1, 14], "certif": [13, 14], "chain": 1, "chang": [0, 1, 4, 5, 6, 7, 8, 9, 13, 14, 15], "charact": 14, "characterist": [10, 12], "charg": 13, "claim": [2, 14, 15], "clear": [1, 13, 14], "click": 1, "client": [1, 2, 5, 11, 14, 15], "close": 14, "code": [2, 9], "cohn": [1, 13, 14], "cohn_act": 14, "cohn_provis": 14, "cohn_state_connectingtonetwork": 14, "cohn_state_error": 14, "cohn_state_exit": 14, "cohn_state_idl": 14, "cohn_state_init": 14, "cohn_state_invalid": 14, "cohn_state_networkconnect": 14, "cohn_state_networkdisconnect": 14, "cohn_unprovis": 14, "cold": 13, "collect": 5, "combin": 2, "command": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15], "common": 14, "commonli": 14, "commun": [1, 9, 10, 11], "complet": [0, 8, 9, 13, 14], "compress": [8, 13], "compris": [7, 12, 14], "configur": [0, 1, 2, 4, 10, 14], "connect": [0, 1, 2, 4, 11, 13, 14, 15], "consid": 12, "construct": 7, "contain": [1, 6, 7, 8, 12, 13, 14], "contextu": [2, 14], "continu": [8, 13], "control": [0, 1, 5, 9, 10, 11, 13, 14], "coordin": [8, 13], "core": [9, 13], "correspond": [8, 11, 13, 14], "count": [13, 14], "countdown": 13, "counter": 12, "creat": [1, 5, 13, 14], "creation": [1, 14], "credenti": 1, "crt": 1, "current": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14], "custom": [5, 13, 14], "custom1": 14, "custom2": 14, "custom3": 14, "custom_nam": [5, 14], "dai": [2, 6], "data": [2, 6, 9, 10, 11], "date": [2, 6, 13], "date_tim": 2, "daylight": [2, 6], "dbm": 14, "dcim": [6, 14], "deciph": 10, "declar": 14, "default": [5, 14], "defin": [2, 6, 7, 12, 14], "delai": 13, "delet": [5, 14], "demo": 9, "demonstr": 9, "depacket": 12, "depend": [1, 5, 6, 7, 12, 14, 15], "deprec": 6, "deprecated_length": 6, "depth": 13, "describ": [0, 6, 8, 9, 12, 14], "descript": [11, 12], "deseri": 12, "desir": [9, 14], "detail": [2, 4, 7, 14], "detect": [0, 14], "determin": 12, "devic": [11, 13], "dhcp": 1, "differ": [5, 12], "digit": [8, 9, 13], "directori": [6, 14], "disabl": [0, 2, 14], "disconnect": 14, "discourag": 15, "discov": [11, 14], "discover": 11, "displai": [2, 14], "dn": 14, "dns_primari": 14, "dns_secondari": 14, "do": [0, 11, 12, 14], "doc": [0, 1, 2, 4, 5, 6], "document": [6, 7, 10, 12], "doe": [0, 1, 8, 11, 13, 14], "done": 11, "down": [2, 8, 13], "download": [1, 8, 13], "drop": 14, "dst": 2, "due": 14, "durat": 13, "dure": [0, 3, 11, 14], "dynam": [7, 11], "e": [1, 2, 5, 6, 8, 13, 14, 15], "e7": 2, "each": [7, 8, 11, 12, 13], "easi": 13, "either": [4, 5, 12, 14], "element": [6, 12, 13], "els": 12, "empti": 6, "enabl": [2, 5, 11, 13, 14], "encod": [3, 9, 13, 14, 15], "endian": [8, 12, 13], "energi": 9, "engag": [8, 13], "english": 14, "enough": 14, "ensur": [0, 11], "entiti": [2, 14], "entri": [0, 14], "enumpresetgroup": 5, "error": [12, 13, 14], "establish": 2, "event": [8, 13], "everi": [2, 7], "exampl": [2, 7, 9, 11, 12, 15], "exit": [2, 5, 12, 14], "expir": 1, "exposur": 13, "ext": 7, "extend": 7, "extern": [2, 14], "extract": 12, "f": 12, "facebook": 4, "factori": [5, 11, 14], "fail": [5, 7, 14], "failur": 7, "fals": [8, 14], "far": [8, 13], "fea6": 11, "featur": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14], "fewer": 12, "ff": 2, "field": [6, 14], "file": [1, 7, 14], "filenam": [6, 14], "find": 5, "finish": [10, 14], "firmwar": [6, 7, 8, 9, 13], "firmware_vers": 6, "firmware_version_length": 6, "first": [0, 1, 6, 7, 8, 9, 11, 12, 13, 14], "flag": [11, 15], "flat_mode_broadcast_broadcast": 14, "flat_mode_broadcast_record": 14, "flat_mode_idl": 14, "flat_mode_live_burst": 14, "flat_mode_loop": 14, "flat_mode_night_lapse_photo": 14, "flat_mode_night_lapse_video": 14, "flat_mode_photo": 14, "flat_mode_photo_burst": 14, "flat_mode_photo_night": 14, "flat_mode_photo_singl": 14, "flat_mode_playback": 14, "flat_mode_setup": 14, "flat_mode_slomo": 14, "flat_mode_time_lapse_photo": 14, "flat_mode_time_lapse_video": 14, "flat_mode_time_warp_video": 14, "flat_mode_unknown": 14, "flat_mode_video": 14, "flat_mode_video_burst_slomo": 14, "flat_mode_video_light_paint": 14, "flat_mode_video_light_trail": 14, "flat_mode_video_star_trail": 14, "flatmod": [13, 14], "flicker": 13, "flow": [8, 13], "flowchart": 12, "folder": 14, "follow": [1, 4, 7, 10, 11, 12, 14], "form": 12, "format": [9, 12, 13, 14, 15], "found": [0, 5, 6, 7, 14], "fov": [7, 9, 14], "fp": 7, "frame": [8, 13], "french": 14, "frequenc": 14, "friendli": 13, "from": [2, 5, 6, 7, 8, 11, 12, 14], "ftu": 13, "full": [7, 8, 13, 14], "fulli": [8, 13], "function": [1, 9], "futur": [4, 14], "g": [1, 5, 8, 13, 14, 15], "gatewai": 14, "gatt": [10, 12], "gener": [1, 2, 4, 5, 14], "german": 14, "get": [0, 1, 4, 5, 6, 7, 8, 13, 14, 15], "given": [7, 14], "global": [2, 14], "go": 2, "googl": 12, "gopro": [1, 2, 6, 10, 11, 12, 13, 15], "goprorootca": 1, "gp": [11, 12, 13], "gp12345678": 6, "green": 7, "group": [6, 13, 14], "guarante": 7, "h21": 9, "h22": 9, "h23": [6, 9], "ha": [0, 1, 12, 14], "had": 12, "handl": 2, "handshak": 14, "hard": 2, "hardwar": [6, 13], "have": [0, 1, 8, 11, 12, 13], "hd9": 9, "hdr": 7, "header": [1, 14], "here": [7, 12], "hero": 7, "hero10": [1, 9], "hero11": [1, 9], "hero12": [1, 6, 9], "hero9": [1, 9], "high": [1, 7], "highest": 7, "hilight": [9, 13], "hindsight": [9, 13], "home": [9, 14], "honor": 14, "horizon": 13, "hour": [2, 6, 7, 11], "how": [4, 8, 9, 12, 13], "howev": 15, "http": [0, 1, 14], "hypersmooth": 13, "hyperview": 7, "hz": 7, "i": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "icon": [5, 7, 14], "icon_id": [5, 14], "id": [0, 1, 2, 3, 4, 5, 6, 9, 10, 12, 14], "identifi": 12, "idl": [2, 14], "immedi": [0, 2, 5, 14], "inadvert": 2, "includ": [12, 14], "inclus": 14, "incom": 15, "incorrect": 14, "indic": [4, 11, 14], "indirectli": 1, "individu": [6, 7, 12, 14], "info": [6, 13, 14], "inform": [2, 6, 7, 8, 11, 13, 14], "initi": [0, 4, 5, 6, 10, 14], "instal": 1, "instruct": 1, "int": 12, "int16": [2, 6], "int32": [8, 13, 14], "intend": [0, 14], "interact": [2, 14], "intern": 13, "internet": [0, 14], "interv": 13, "invalid": [12, 14], "ip": [1, 14], "ipaddress": 14, "is_capt": 14, "is_dst": [2, 6], "is_fix": 14, "is_modifi": 14, "italian": 14, "its": [8, 12], "json": [8, 13], "kbp": 14, "keep": [2, 10, 13], "keep_al": 2, "kilobyt": [8, 13], "languag": [9, 14], "laps": [5, 8, 13], "larger": 12, "last": [6, 13, 14], "lcd": [2, 13], "leas": 1, "len": [5, 13, 14], "length": [6, 13], "lens": [9, 13, 14], "lens_linear": 14, "lens_superview": 14, "lens_wid": 14, "less": 12, "level": [1, 12, 13, 14], "life": 2, "lifespan": 1, "light": 7, "limit": [11, 12], "linear": 7, "linux": [13, 14], "list": [0, 7, 9, 14], "live": [0, 9, 13, 14], "live_stream_bitr": 14, "live_stream_encod": 14, "live_stream_encode_support": 14, "live_stream_error": 14, "live_stream_error_camera_block": 14, "live_stream_error_createstream": 14, "live_stream_error_inputstream": 14, "live_stream_error_internet": 14, "live_stream_error_network": 14, "live_stream_error_non": 14, "live_stream_error_osnetwork": 14, "live_stream_error_outofmemori": 14, "live_stream_error_sd_card_ful": 14, "live_stream_error_sd_card_remov": 14, "live_stream_error_selectednetworktimeout": 14, "live_stream_error_ssl_handshak": 14, "live_stream_error_unknown": 14, "live_stream_lens_support": 14, "live_stream_lens_supported_arrai": 14, "live_stream_max_lens_unsupport": 14, "live_stream_maximum_stream_bitr": 14, "live_stream_minimum_stream_bitr": 14, "live_stream_state_complete_stay_on": 14, "live_stream_state_config": 14, "live_stream_state_failed_stay_on": 14, "live_stream_state_idl": 14, "live_stream_state_readi": 14, "live_stream_state_reconnect": 14, "live_stream_state_stream": 14, "live_stream_state_unavail": 14, "live_stream_statu": 14, "live_stream_window_size_supported_arrai": 14, "livestream": [4, 13, 14], "liveview": 13, "load": [2, 5, 13, 15], "local": [1, 2, 6, 13, 14], "locat": 13, "lock": [7, 13], "log": 7, "logic": 2, "long": [5, 7, 14], "longer": 12, "longest": 7, "look": 1, "low": [7, 9, 14], "mac": 14, "macaddress": 14, "maco": 1, "mai": [7, 14, 15], "maintain": 15, "major": 6, "major_length": 6, "manag": [0, 9, 10, 11], "mani": [1, 2, 4, 5, 8, 13, 14], "map": 12, "market": 9, "mask": 14, "match": 12, "max": [5, 13, 14], "max_entri": 14, "maxim": [2, 12], "maximum": [7, 14], "maximum_bitr": 14, "mean": [7, 14], "media": [2, 4, 6, 13, 15], "meet": [8, 13], "memori": 14, "menu": [2, 14], "messag": [0, 1, 2, 4, 5, 6, 9, 10, 13, 14, 15], "meta": 14, "mhz": 14, "millisecond": [8, 13], "min": 7, "mini": [1, 9], "minim": 9, "minimum": [9, 13, 14], "minimum_bitr": 14, "minor": 6, "minor_length": 6, "minut": [2, 6, 7], "mo": 7, "mobil": 13, "mod": [5, 13], "mode": [0, 2, 4, 5, 9, 10, 13, 14], "model": [6, 8, 9, 13, 14], "model_nam": 6, "model_name_length": 6, "model_numb": 6, "model_number_length": 6, "modifi": [13, 14], "moment": [3, 13], "month": [2, 6], "more": [1, 6, 7, 8, 11, 12, 13, 14], "most": [1, 2, 8, 9, 13, 14], "mous": 1, "multi": 13, "multipl": 12, "must": [1, 5, 11, 12, 14], "mutabl": 14, "n": 12, "name": [5, 7, 8, 9, 14], "narrow": [7, 11], "nearli": 1, "necessari": [0, 7, 11, 12, 15], "need": [0, 1, 9, 11], "network": [0, 9, 11, 14], "never": 7, "new": [0, 1, 5, 11, 13, 14], "next": 7, "night": [5, 13], "non": [5, 14], "none": [7, 13], "noout": 1, "nope": 12, "note": [6, 8, 12, 13], "notif": [0, 1, 2, 4, 5, 6, 11, 13, 14], "notifi": [5, 11, 14], "notifprovisioningst": [0, 13], "notifstartscan": [0, 13], "notifycohnstatu": [1, 13], "notifylivestreamstatu": [4, 13], "notifypresetstatu": [5, 13], "number": [6, 8, 13, 14], "obei": 14, "object": [0, 7, 12, 14], "occur": 14, "off": [2, 7, 15], "offset": [2, 6], "often": [7, 8, 13], "ok": 1, "onc": [1, 11, 12], "one": [5, 6, 7, 12, 14], "ongo": 6, "onli": [0, 3, 5, 6, 7, 12, 14], "onto": 12, "open": [1, 6, 10, 12, 13], "openssl": 1, "oper": [8, 10, 13, 14], "option": [4, 5, 6, 7, 8, 12, 14], "order": [1, 2, 5, 7, 10, 11, 12, 15], "organ": 5, "orient": [8, 13], "ota": 13, "other": [4, 15], "otherwis": [2, 8, 12, 13], "out": 14, "outlin": 7, "outsid": 14, "over": [1, 8, 13], "overh": 13, "overrid": 14, "overview": 11, "p": 12, "packet": 10, "page": [2, 14], "paint": 7, "pair": [10, 12, 13], "paramet": [2, 5, 6, 7, 12], "pars": [11, 12], "part": [2, 6, 14], "parti": [2, 14, 15], "pass": [5, 14], "password": [1, 11, 14], "path": [1, 6, 14], "payload": [6, 10], "pc": [8, 13], "pem": 14, "pend": 13, "per": [12, 13], "percent": [8, 13], "perform": [1, 5, 9, 13, 14], "period": [0, 5, 14, 15], "peripher": 11, "permiss": 11, "pertain": 9, "photo": [5, 6, 9, 13, 14, 15], "physic": [2, 14], "pill": [5, 14], "platform": 4, "point": [1, 2, 4, 8, 9, 11, 13, 14], "poll": [4, 13], "portugues": 14, "possibl": 12, "power": [2, 11, 13, 15], "practic": [2, 8, 11, 13, 15], "prepend": 12, "present": [7, 13], "preset": [2, 7, 9, 13, 15], "preset_arrai": 14, "preset_group_arrai": 14, "preset_group_endurance_video_icon_id": 14, "preset_group_id_photo": 14, "preset_group_id_timelaps": 14, "preset_group_id_video": 14, "preset_group_long_bat_video_icon_id": 14, "preset_group_max_photo_icon_id": 14, "preset_group_max_timelapse_icon_id": 14, "preset_group_max_video_icon_id": 14, "preset_group_photo_icon_id": 14, "preset_group_timelapse_icon_id": 14, "preset_group_video_icon_id": 14, "preset_icon_act": 14, "preset_icon_activity_endur": 14, "preset_icon_air": 14, "preset_icon_bas": 14, "preset_icon_basic_quality_video": 14, "preset_icon_bik": 14, "preset_icon_bit": 14, "preset_icon_burst": 14, "preset_icon_burst_2": 14, "preset_icon_c": 14, "preset_icon_chesti": 14, "preset_icon_cinemat": 14, "preset_icon_cinematic_endur": 14, "preset_icon_custom": 14, "preset_icon_ep": 14, "preset_icon_follow_cam": 14, "preset_icon_full_fram": 14, "preset_icon_helmet": 14, "preset_icon_highest_quality_video": 14, "preset_icon_indoor": 14, "preset_icon_light_paint": 14, "preset_icon_light_trail": 14, "preset_icon_live_burst": 14, "preset_icon_loop": 14, "preset_icon_motor": 14, "preset_icon_mount": 14, "preset_icon_nightlaps": 14, "preset_icon_nightlapse_photo": 14, "preset_icon_outdoor": 14, "preset_icon_panorama": 14, "preset_icon_photo": 14, "preset_icon_photo_2": 14, "preset_icon_photo_night": 14, "preset_icon_pov": 14, "preset_icon_selfi": 14, "preset_icon_shaki": 14, "preset_icon_simple_night_photo": 14, "preset_icon_simple_super_photo": 14, "preset_icon_sk": 14, "preset_icon_slomo_endur": 14, "preset_icon_snail": 14, "preset_icon_snow": 14, "preset_icon_standard_endur": 14, "preset_icon_standard_quality_video": 14, "preset_icon_star": 14, "preset_icon_star_trail": 14, "preset_icon_stationary_1": 14, "preset_icon_stationary_2": 14, "preset_icon_stationary_3": 14, "preset_icon_stationary_4": 14, "preset_icon_surf": 14, "preset_icon_timelaps": 14, "preset_icon_timelapse_2": 14, "preset_icon_timelapse_photo": 14, "preset_icon_timewarp": 14, "preset_icon_timewarp_2": 14, "preset_icon_trail": 14, "preset_icon_travel": 14, "preset_icon_ultra_slo_mo": 14, "preset_icon_video": 14, "preset_icon_video_2": 14, "preset_icon_wat": 14, "preset_title_act": 14, "preset_title_activity_endur": 14, "preset_title_air": 14, "preset_title_bas": 14, "preset_title_basic_quality_video": 14, "preset_title_bik": 14, "preset_title_bit": 14, "preset_title_burst": 14, "preset_title_c": 14, "preset_title_chesti": 14, "preset_title_cinemat": 14, "preset_title_cinematic_endur": 14, "preset_title_custom": 14, "preset_title_ep": 14, "preset_title_extended_batteri": 14, "preset_title_follow_cam": 14, "preset_title_full_fram": 14, "preset_title_helmet": 14, "preset_title_highest_qu": 14, "preset_title_highest_quality_video": 14, "preset_title_indoor": 14, "preset_title_light_paint": 14, "preset_title_light_trail": 14, "preset_title_live_burst": 14, "preset_title_longest_batteri": 14, "preset_title_loop": 14, "preset_title_motor": 14, "preset_title_mount": 14, "preset_title_night": 14, "preset_title_night_laps": 14, "preset_title_outdoor": 14, "preset_title_panorama": 14, "preset_title_photo": 14, "preset_title_photo_2": 14, "preset_title_pov": 14, "preset_title_selfi": 14, "preset_title_shaki": 14, "preset_title_simple_night_photo": 14, "preset_title_simple_super_photo": 14, "preset_title_simple_time_warp": 14, "preset_title_simple_video": 14, "preset_title_simple_video_endur": 14, "preset_title_sk": 14, "preset_title_slomo": 14, "preset_title_slomo_endur": 14, "preset_title_snow": 14, "preset_title_standard": 14, "preset_title_standard_endur": 14, "preset_title_standard_quality_video": 14, "preset_title_star": 14, "preset_title_star_trail": 14, "preset_title_stationary_1": 14, "preset_title_stationary_2": 14, "preset_title_stationary_3": 14, "preset_title_stationary_4": 14, "preset_title_surf": 14, "preset_title_time_laps": 14, "preset_title_time_warp": 14, "preset_title_time_warp_2": 14, "preset_title_trail": 14, "preset_title_travel": 14, "preset_title_ultra_slo_mo": 14, "preset_title_user_defined_custom_nam": [5, 14], "preset_title_video": 14, "preset_title_wat": 14, "press": [2, 5, 14], "prevent": [2, 15], "preview": 13, "previous": [0, 7, 14], "primari": 14, "pro": 7, "procedur": [11, 12], "process": [1, 11], "profil": 13, "program": 9, "programmat": 2, "properti": [1, 14], "protobuf": [0, 1, 2, 4, 5, 6, 9, 10], "protocol": [9, 11], "provid": 1, "provis": [0, 13, 14], "provisioning_aborted_by_system": 14, "provisioning_cancelled_by_us": 14, "provisioning_error_eula_block": 14, "provisioning_error_failed_to_associ": 14, "provisioning_error_no_internet": 14, "provisioning_error_password_auth": 14, "provisioning_error_unsupported_typ": 14, "provisioning_never_start": 14, "provisioning_st": 14, "provisioning_start": 14, "provisioning_success_new_ap": 14, "provisioning_success_old_ap": 14, "provisioning_unknown": 14, "pseudocod": 12, "public": 9, "purpos": 1, "put": [2, 4, 11], "qualiti": 7, "queri": [1, 4, 5, 7, 8, 9, 10, 11, 15], "quick": [1, 13], "rang": 14, "rate": [8, 13], "ratio": 13, "re": [7, 11, 14], "reach": 2, "read": [9, 10, 11], "readi": [4, 10, 13, 14], "receiv": [0, 6, 9, 11, 12, 14], "recent": [8, 9, 13], "reclaim": [2, 14], "reconnect": 14, "record": [3, 8, 13], "refer": 10, "reflect": [8, 13], "regist": [1, 4, 5, 6, 13, 14], "register_cohn_statu": 14, "register_live_stream_statu": 14, "register_live_stream_status_bitr": 14, "register_live_stream_status_error": 14, "register_live_stream_status_mod": 14, "register_live_stream_status_statu": 14, "register_preset_statu": 14, "register_preset_status_preset": 14, "register_preset_status_preset_group_arrai": 14, "regularli": 2, "reject": [7, 9, 14, 15], "rel": [6, 14], "relat": [8, 13], "releas": 7, "relev": [0, 9, 11, 12], "remain": 13, "remot": 13, "remov": 14, "reorder": [5, 14], "replac": 1, "report": 6, "repres": [7, 14], "represent": 14, "request": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "requestclearcohncert": [1, 13], "requestcohncert": [1, 13], "requestconnect": [0, 13], "requestconnectnew": [0, 13], "requestcreatecohncert": [1, 13], "requestcustompresetupd": [5, 13], "requestgetapentri": [0, 13], "requestgetcohnstatu": [1, 13], "requestgetlastcapturedmedia": [6, 13], "requestgetlivestreamstatu": [4, 13], "requestgetpresetstatu": [5, 13], "requestsetcameracontrolstatu": [2, 13], "requestsetcohnset": [1, 13], "requestsetlivestreammod": [4, 13], "requestsetturboact": [2, 13], "requeststartscan": [0, 13], "requir": [1, 11, 14], "reserv": [6, 12], "reset": [1, 2, 5, 11, 12], "resolut": [13, 14], "respect": 12, "respond": 12, "respons": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14], "response_length": 6, "responsecohncert": [1, 13], "responseconnect": [0, 13], "responseconnectnew": [0, 13], "responsegener": [1, 2, 4, 5, 13], "responsegetapentri": [0, 13], "responselastcapturedmedia": [6, 13], "responsestartscan": [0, 13], "result": [0, 6, 7, 9, 12, 13, 14], "result_argument_invalid": 14, "result_argument_out_of_bound": 14, "result_ill_form": 14, "result_not_support": 14, "result_resource_not_avail": 14, "result_resource_not_availbl": 14, "result_success": 14, "result_unknown": 14, "return": [0, 1, 2, 5, 6, 14], "right": 1, "room": 14, "root": [1, 14], "rotat": 13, "rough": [8, 13], "router": 1, "row": [7, 12], "rtmp": [4, 14], "rule": 7, "russian": 14, "saturdai": 6, "save": [2, 6, 14], "scan": [0, 11, 13, 14], "scan_entry_flag": 14, "scan_flag_associ": 14, "scan_flag_authent": 14, "scan_flag_best_ssid": 14, "scan_flag_configur": [0, 14], "scan_flag_open": 14, "scan_flag_unsupported_typ": 14, "scan_id": 14, "scanning_aborted_by_system": 14, "scanning_cancelled_by_us": 14, "scanning_never_start": 14, "scanning_st": 14, "scanning_start": 14, "scanning_success": 14, "scanning_unknown": 14, "schedul": 13, "schema": 7, "scheme": 12, "screen": [2, 14], "sd": [13, 14], "sdcard": [6, 8, 13, 14, 15], "second": [2, 6, 8, 13, 14], "secondari": [8, 13, 14], "section": [6, 8, 9, 10, 11, 12], "secur": 1, "see": [1, 4, 6, 7, 8, 9, 11, 12, 13], "select": 13, "send": [2, 5, 9, 12, 14, 15], "sent": [0, 4, 5, 6, 11, 12, 14], "serial": [0, 2, 12, 14], "serial_numb": 6, "serial_number_length": 6, "server": 14, "servic": 11, "set": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15], "setting_arrai": 14, "settingid": [7, 13], "setup": [9, 10, 13, 14], "short": 7, "shorthand": 11, "shot": 13, "should": [9, 11, 15], "shutter": [2, 4, 13], "sign": 1, "signal": [8, 13, 14, 15], "signal_frequency_mhz": 14, "signal_strength_bar": 14, "simultan": 15, "sinc": 13, "singl": [6, 12, 13, 14], "site": 4, "size": 12, "sleep": [2, 11, 13], "slo": 7, "so": [8, 11, 13], "social": 4, "some": [0, 1, 2, 12, 15], "sourc": [0, 1, 2, 4, 5, 6, 14], "space": [8, 13], "spanish": 14, "special": 14, "specif": [1, 15], "specifi": [5, 8, 12, 13, 14], "speed": 13, "split": 12, "spreadsheet": 7, "ssid": [11, 13, 14], "ssl": [1, 14], "sta": [0, 14], "stack": 14, "standard": 7, "star": 7, "start": [0, 2, 4, 6, 8, 12, 13, 14], "start_index": 14, "starting_bitr": 14, "startup": 14, "state": [0, 5, 6, 7, 9, 10, 11, 12, 13, 14], "static": 14, "static_ip": 14, "station": [0, 4, 14], "stationari": 7, "statu": [0, 1, 2, 4, 6, 10, 12, 14, 15], "status": [6, 9, 12, 14], "step": [1, 11], "still": 2, "stop": [4, 8, 13, 14], "store": 11, "stream": [0, 9, 13, 14], "streamer": 14, "strength": [8, 13, 14], "string": [6, 8, 12, 14], "structur": 12, "submenu": 5, "subnet": 14, "subscrib": 11, "subscript": 11, "subsequ": [9, 11, 12], "success": [12, 13, 14], "suffici": [8, 13], "summar": 12, "summari": 14, "sundai": 6, "super": 7, "superset": 7, "superview": 7, "support": [0, 1, 2, 4, 6, 7, 8, 11, 13, 14], "suppos": 7, "swedish": 14, "synchron": [4, 5, 14], "system": [1, 8, 13, 14, 15], "tabl": [5, 9, 10, 11, 12], "take": 14, "taken": [8, 13], "tap": 2, "task": 14, "tell": [2, 14, 15], "terminologi": 12, "text": [1, 14], "than": [8, 12, 13, 15], "thei": 12, "therebi": 5, "therefor": [0, 15], "thi": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "thing": 1, "third": [2, 14, 15], "those": 6, "through": [1, 9, 10], "throughout": 12, "time": [2, 6, 11, 13, 14, 15], "timelaps": 13, "timeout": 14, "timeout_second": 14, "timer": 2, "timewarp": 7, "timezon": [2, 6], "titl": [5, 14], "title_id": [5, 14], "title_numb": 14, "tl": [1, 14], "tlv": [2, 3, 5, 6, 7, 12], "too": [8, 13], "top": 12, "total": [8, 13, 14], "total_configured_ssid": 14, "total_entri": 14, "track": 2, "trail": 13, "transfer": [2, 13, 14], "tri": 7, "trigger": [0, 1, 14], "triplet": 12, "tripod": 7, "true": 8, "trust": 1, "try": 9, "turbo": [2, 13, 14], "tutori": [9, 12], "twitch": 4, "two": [1, 11, 12], "type": [0, 1, 2, 3, 4, 5, 6, 7, 10, 13, 14], "typespec": 14, "u": 12, "ubuntu": 1, "ui": [2, 5, 8, 11, 13, 14], "ui_mode_group": [8, 13], "uint16": [2, 6], "uint32": 5, "uint8": [2, 6, 7], "ultra": 7, "un": 2, "unavail": 14, "undefin": [9, 15], "under": 6, "understand": 9, "unknown": 14, "unless": [12, 15], "unregist": [6, 13, 14], "unregister_live_stream_statu": 14, "unregister_preset_statu": 14, "unset": [4, 15], "unsign": 6, "until": 4, "up": 11, "updat": [1, 2, 5, 6, 9, 13, 14], "upon": 11, "url": [4, 14], "us": [0, 1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 15], "usb": 13, "user": [2, 5, 7, 9, 14, 15], "user_defin": 14, "usernam": [1, 14], "usual": [7, 14], "utc": [2, 6], "utf": 14, "util": 1, "uuid": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12], "v01": 9, "v2": 7, "v4": 12, "valid": [1, 7, 11, 14], "valu": [1, 2, 5, 6, 7, 8, 9, 13, 14], "value_length": 7, "variabl": [7, 12], "variou": [6, 9, 10], "vehicl": 7, "version": [6, 7, 9, 12, 13], "vertic": 7, "via": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 13, 14], "video": [5, 6, 9, 13, 14, 15], "wa": [7, 8, 11, 13, 14], "wai": 11, "wait": [11, 14, 15], "wake": 11, "walk": 9, "webcam": 13, "weekdai": 6, "well": 9, "were": 5, "when": [1, 2, 5, 6, 8, 12, 13, 14], "whenev": 6, "where": [0, 9, 12], "whether": [2, 5, 11, 12, 14], "which": [0, 1, 2, 5, 8, 11, 13, 14], "while": [0, 3, 9, 11, 13, 14, 15], "whitelist": 7, "who": 14, "wide": 7, "widescreen": 7, "wifi": [2, 11, 13, 14], "window": 1, "window_s": 14, "window_size_1080": 14, "window_size_480": 14, "window_size_720": 14, "wireless": 13, "wirelesspairingstateflag": [8, 13], "wish": [2, 14, 15], "within": [5, 14], "without": [1, 2, 6], "work": [7, 12], "worksheet": 7, "write": [11, 13], "x509": 1, "xxxx": 11, "y": 13, "ye": 6, "year": [1, 2, 6], "yet": 14, "youtub": 4, "zero": [0, 2, 5, 14], "zone": 14, "zoom": 13}, "titles": ["Access Point", "Camera on the Home Network", "Control", "Hilights", "Live Streaming", "Presets", "Query", "Settings", "Statuses", "Welcome to Open GoPro BLE API\u2019s documentation!", "Protocol", "BLE Setup", "Data Protocol", "ID Tables", "Protobuf Documentation", "State Management"], "titleterms": {"": 9, "1": 8, "10": 8, "100": 8, "101": 8, "102": 8, "103": 8, "104": 8, "105": 8, "106": 8, "107": 8, "108": [7, 8], "11": 8, "110": 8, "111": 8, "112": 8, "113": 8, "114": 8, "115": 8, "116": 8, "117": 8, "118": 8, "121": 7, "122": 7, "123": 7, "128": 7, "13": [8, 12], "134": 7, "135": 7, "150": 7, "151": 7, "16": 12, "162": 7, "167": 7, "17": 8, "171": 7, "172": 7, "173": 7, "175": 7, "176": 7, "177": 7, "178": 7, "179": 7, "180": 7, "182": 7, "183": 7, "184": 7, "186": 7, "187": 7, "189": 7, "19": 8, "190": 7, "191": 7, "192": 7, "193": 7, "2": [7, 8], "20": 8, "21": 8, "22": 8, "23": 8, "24": 8, "26": 8, "27": 8, "28": 8, "29": 8, "3": 7, "30": 8, "31": 8, "32": 8, "33": 8, "34": 8, "35": 8, "38": 8, "39": 8, "41": 8, "42": 8, "43": 7, "45": 8, "49": 8, "5": 12, "54": 8, "55": 8, "56": 8, "58": 8, "59": [7, 8], "5ghz": 8, "6": 8, "60": 8, "65": 8, "66": 8, "67": 8, "68": 8, "69": 8, "70": 8, "74": 8, "75": 8, "76": 8, "77": 8, "78": 8, "79": 8, "8": 8, "81": 8, "82": 8, "83": [7, 8], "85": 8, "86": 8, "88": 8, "89": 8, "9": 8, "93": 8, "94": 8, "95": 8, "96": 8, "97": 8, "98": 8, "99": 8, "access": 0, "accessori": 8, "activ": 8, "advertis": 11, "aliv": 15, "anti": 7, "ap": 8, "api": 9, "aspect": 7, "auto": 7, "avail": 8, "band": [7, 8], "bar": 8, "batteri": 8, "bit": [7, 12], "ble": [9, 11], "burst": 8, "busi": 8, "camera": [1, 7, 8, 9, 15], "cancel": 8, "capabl": 7, "capac": 8, "captur": 8, "card": 8, "certif": 1, "characterist": 11, "charg": 8, "cold": 8, "command": [12, 13], "configur": 11, "connect": 8, "continu": 12, "control": [2, 7, 8, 15], "core": 8, "count": 8, "countdown": 8, "data": 12, "deciph": 12, "delai": 8, "depth": 7, "detail": 1, "devic": 8, "digit": 7, "disconnect": 0, "displai": 8, "document": [9, 14], "down": 7, "durat": [7, 8], "easi": 7, "enabl": [7, 8], "encod": 8, "enum": 14, "enumcameracontrolstatu": 14, "enumcohnnetworkst": 14, "enumcohnstatu": 14, "enumflatmod": 14, "enumlen": 14, "enumlivestreamerror": 14, "enumlivestreamstatu": 14, "enumpresetgroup": 14, "enumpresetgroupicon": 14, "enumpreseticon": 14, "enumpresettitl": 14, "enumprovis": 14, "enumregisterlivestreamstatu": 14, "enumregisterpresetstatu": 14, "enumresultgener": 14, "enumscan": 14, "enumscanentryflag": 14, "enumwindows": 14, "error": 8, "exposur": 8, "extend": 12, "finish": 11, "flatmod": 8, "flicker": 7, "format": 7, "frame": 7, "friendli": 8, "from": 0, "ftu": 8, "fw": 8, "gatt": 11, "gener": [9, 12], "get": 9, "gopro": 9, "gp": [7, 8], "group": [5, 8], "header": 12, "hilight": [3, 8], "hindsight": [7, 8], "home": 1, "horizon": 7, "hypersmooth": 7, "id": [7, 8, 13], "intern": 8, "interv": [7, 8], "json": 7, "keep": 15, "laps": 7, "last": 8, "lcd": 8, "legaci": 8, "len": [7, 8], "length": [7, 12], "lens": 7, "level": [7, 8], "limit": 9, "linux": 8, "live": [4, 8], "liveview": 8, "locat": 8, "lock": 8, "manag": 15, "max": 7, "media": [7, 8, 14], "messag": [11, 12], "microphon": 8, "minimum": 8, "mobil": 8, "mod": [7, 8], "mode": [7, 8, 11], "modifi": [5, 8], "multi": 7, "network": 1, "night": 7, "notifprovisioningst": 14, "notifstartscan": 14, "notifycohnstatu": 14, "notifylivestreamstatu": 14, "notifypresetstatu": 14, "open": 9, "oper": [0, 1, 2, 3, 4, 5, 6, 7], "ota": 8, "overh": 8, "packet": 12, "pair": [8, 11], "payload": 12, "pend": 8, "per": 7, "perform": 7, "period": 8, "photo": [7, 8], "point": 0, "poll": 8, "power": 7, "present": 8, "preset": [5, 8, 14], "presetgroup": 14, "presetset": 14, "preview": 8, "primari": 8, "procedur": 1, "profil": 7, "protobuf": [12, 13, 14], "protocol": [10, 12], "provis": [1, 8], "queri": [6, 12, 13], "quick": 8, "rate": 7, "ratio": 7, "readi": [8, 15], "remain": 8, "remot": 8, "requestclearcohncert": 14, "requestcohncert": 14, "requestconnect": 14, "requestconnectnew": 14, "requestcreatecohncert": 14, "requestcustompresetupd": 14, "requestgetapentri": 14, "requestgetcohnstatu": 14, "requestgetlastcapturedmedia": 14, "requestgetlivestreamstatu": 14, "requestgetpresetstatu": 14, "requestreleasenetwork": 14, "requestsetcameracontrolstatu": 14, "requestsetcohnset": 14, "requestsetlivestreammod": 14, "requestsetturboact": 14, "requeststartscan": 14, "resolut": 7, "responsecohncert": 14, "responseconnect": 14, "responseconnectnew": 14, "responsegener": 14, "responsegetapentri": 14, "responselastcapturedmedia": 14, "responsestartscan": 14, "rotat": 8, "scan": 8, "scanentri": 14, "schedul": 8, "sd": 8, "second": 7, "select": 8, "send": 11, "set": [7, 13], "setup": [7, 11], "shot": 7, "sinc": 8, "singl": 7, "speed": [7, 8], "ssid": 8, "start": 9, "state": [8, 15], "statu": [5, 8, 13], "status": 8, "storag": 8, "stream": [4, 8], "success": 8, "support": 9, "system": 7, "tabl": 13, "time": [7, 8], "timelaps": 8, "trail": 7, "transfer": 8, "turbo": 8, "type": [8, 12], "updat": 8, "usb": 8, "valid": 8, "valu": 12, "verifi": 1, "version": 8, "video": [7, 8], "view": 1, "warp": 8, "webcam": 7, "welcom": 9, "while": 8, "wifi": 8, "wireless": [7, 8], "write": 8, "x": 8, "xlsx": 7, "y": 8, "zoom": 8}}) \ No newline at end of file diff --git a/contribution.html b/contribution.html index f6a4d6b0..0df432d4 100644 --- a/contribution.html +++ b/contribution.html @@ -521,10 +521,10 @@

Quiz

%} -
+
-
What is the question?
-
+
What is the question?
+

@@ -537,10 +537,10 @@

Quiz

- - @@ -556,10 +556,10 @@

Quiz

%}
-
+
-
True or False?
-
+
True or False?
+

@@ -569,10 +569,10 @@

Quiz

- - @@ -595,7 +595,7 @@

Tabs

-
    +
    • tab1 @@ -610,7 +610,7 @@

      Tabs

    -
      +
      • This is the content of the first tab.

        diff --git a/feed.xml b/feed.xml index 8c67eec9..2f42df53 100644 --- a/feed.xml +++ b/feed.xml @@ -1 +1 @@ -Jekyll2024-05-08T14:28:04-07:00https://gopro.github.io/OpenGoPro/feed.xmlOpen GoProOpen Source GoPro InterfaceGoPro \ No newline at end of file +Jekyll2024-05-09T11:44:27-07:00https://gopro.github.io/OpenGoPro/feed.xmlOpen GoProOpen Source GoPro InterfaceGoPro \ No newline at end of file diff --git a/http.html b/http.html index 474ea394..7334ea94 100644 --- a/http.html +++ b/http.html @@ -144,561 +144,561 @@ padding-top: 4em !important; } - -
        -

Alternatively, the IP address can be discovered via mDNS as the camera registers the _gopro-web service.

-
-

-General Usage

-
Limitations
-
-

-Analytics

-
+

+Analytics

+

Query / Configure Analytics

-
-
-

-Set Client as Third Party

-
+
+

+Set Client as Third Party

+
+" class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq">

Supported Protocols:

  • usb
  • @@ -1021,37 +1021,37 @@


-

Responses

+

Responses

-
-
Response Schema: application/json +
+
Response Schema: application/json
-object -
+object +
-
-
-