44 lines
1.6 KiB
C++
44 lines
1.6 KiB
C++
#pragma once
|
|
|
|
// Canonical USB-capable images compile at least one of these two diagnostics.
|
|
// One runtime gate covers every diagnostic category that writes to the USB
|
|
// Serial stream, so a separate logging firmware is unnecessary.
|
|
#if defined(ARDUINO) && \
|
|
((defined(MESH_DEBUG) && MESH_DEBUG) || \
|
|
(defined(MESH_PACKET_LOGGING) && MESH_PACKET_LOGGING))
|
|
#define MESH_USB_LOGGING_AVAILABLE 1
|
|
#else
|
|
#define MESH_USB_LOGGING_AVAILABLE 0
|
|
#endif
|
|
|
|
#if defined(ARDUINO)
|
|
#include <Arduino.h>
|
|
|
|
namespace mesh {
|
|
|
|
// Ordinary merged images start enabled. USB/Full Companion starts disabled to
|
|
// protect framed traffic and restores its saved choice after preferences load.
|
|
bool isUsbLoggingEnabled();
|
|
void setUsbLoggingEnabled(bool enabled);
|
|
|
|
// Kept as a platform-neutral persistence hook. Single-TTY builds need no
|
|
// descriptor mirror; nRF52 selects its optional second interface after loading
|
|
// the normal role preferences.
|
|
bool saveUsbLoggingBootPreference(bool enabled);
|
|
|
|
// Start the optional dedicated USB logging interface. Ordinary and single-TTY
|
|
// builds use Serial; nRF52 Full Companion uses a second CDC ACM port.
|
|
void beginUsbLoggingPort();
|
|
// Emit a short identity marker whenever a host opens the dedicated logging
|
|
// endpoint. The device can report its USB interface, but the host alone chooses
|
|
// names such as /dev/ttyACM1 or COM7.
|
|
void serviceUsbLoggingPort();
|
|
Stream& usbLoggingPort();
|
|
bool hasDedicatedUsbLoggingPort();
|
|
bool isDedicatedUsbLoggingPortConfigured();
|
|
bool usbLoggingInterfaceRestartRequired();
|
|
const char* usbLoggingPortDescription();
|
|
|
|
} // namespace mesh
|
|
#endif
|