--- source_files: - DataPRO/CanFDApiProxy/Protocol.cs - DataPRO/CanFDApiProxy/CanApiException.cs - DataPRO/CanFDApiProxy/HttpClientFactory.cs - DataPRO/CanFDApiProxy/CommandName.cs - DataPRO/CanFDApiProxy/RESTWrapper.cs - DataPRO/CanFDApiProxy/CANFD.cs generated_at: "2026-04-17T15:51:33.293330+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "149776114a3cb89f" --- # Documentation: CANFDApiProxy Module ## 1. Purpose The `CANFDApiProxy` module serves as a client-side SDK for interacting with a CAN-FD hardware device's REST API. It abstracts the underlying HTTP communication, serialization, and endpoint management into a singleton service (`CANFD`). The module allows developers to query device state (battery, serial, CAN bus statistics), configure hardware settings (LEDs, network, clocks), and perform file operations (upload/download logs) via strongly typed C# methods. ## 2. Public Interface ### Class: `CANFDApiProxy.CANFD` A `sealed` class implementing the singleton pattern to provide access to the API. * **Property**: `public static CANFD API` * Returns the singleton instance of the `CANFD` client. * **Constructor**: `private CANFD()` * Private constructor to enforce singleton access via the `API` property. #### Device Information & Status Methods * `Task GetUsbTree(string deviceHost, CancellationToken cancellationToken)` * `Task GetBattery(string deviceHost, CancellationToken cancellationToken)` * `Task GetBIST(string deviceHost, CancellationToken cancellationToken)` * Retrieves Built-In Self-Test results. Parses CSV response into an array of `DiagnosticMessageRow`. * `Task GetCalibrationDate(string deviceHost, CancellationToken cancellationToken)` * `Task GetSerial(string deviceHost, CancellationToken cancellationToken)` * `Task GetLEDs(string deviceHost, CancellationToken cancellationToken)` * `Task GetDeviceInfo(string deviceHost, CancellationToken cancellationToken)` * `Task GetNtp(string deviceHost, CancellationToken cancellationToken)` * `Task GetPower(string deviceHost, CancellationToken cancellationToken)` * `Task GetServices(string deviceHost, CancellationToken cancellationToken)` * `Task GetNetwork(string deviceHost, CancellationToken cancellationToken)` * `Task GetClocks(string deviceHost, CancellationToken cancellationToken)` * `Task GetEventPin(string deviceHost, CancellationToken cancellationToken)` * `Task GetRecording(string deviceHost, CancellationToken cancellationToken)` * `Task GetUsbStats(string deviceHost, CancellationToken cancellationToken)` #### CAN Bus Methods * `Task GetCANInfo(string deviceHost, CancellationToken cancellationToken)` * `Task GetCANState(string deviceHost, CancellationToken cancellationToken)` * `Task GetCANStats(string deviceHost, CancellationToken cancellationToken)` * `Task GetCANConfig(string deviceHost, CancellationToken cancellationToken)` #### Control/Setter Methods * `Task SetSerial(string deviceHost, SerialRequest serialRequest, CancellationToken cancellationToken)` * `Task SetPowerOff(string deviceHost, CancellationToken cancellationToken)` * `Task SetPowerReboot(string deviceHost, CancellationToken cancellationToken)` * `Task SetCANConfig(string deviceHost, CANConfigRequest canConfigRequest, CancellationToken cancellationToken)` * `Task SetLEDs(string deviceHost, LedName led, LedCmd cmd, LedColor color, CancellationToken cancellationToken)` * `Task SetClocks(string deviceHost, DateTime dateTime, CancellationToken cancellationToken)` * `Task SyncClocks(string deviceHost, CancellationToken cancellationToken)` * `Task SetRecordingStart(string deviceHost, CancellationToken cancellationToken)` * `Task SetRecordingTriggerCheck_Quick(string deviceHost, CancellationToken cancellationToken)` * `Task SetRecordingStop(string deviceHost, CancellationToken cancellationToken)` * `Task SetNetwork(string deviceHost, NetworkRequest networkRequest, CancellationToken cancellationToken)` * `Task SetEventPinArm(string deviceHost, CancellationToken cancellationToken)` * `Task SetEventPinDisarm(string deviceHost, CancellationToken cancellationToken)` #### File Operations * `Task Delete(string deviceHost, string usbPath, CancellationToken cancellationToken)` * Deletes a file or directory on the device. * `Task Download(string deviceHost, string usbPath, string destinationDirectory, TimeSpan timeOut, CancellationToken cancellationToken)` * Downloads a file or directory (zipped) from the device to a local directory. * `Task Upload(string deviceHost, string uploadUsbPath, string sourcefile, TimeSpan timeOut, CancellationToken cancellationToken)` * Uploads a local file to the device. ### Class: `CANFDApiProxy.CanApiException` Custom exception for API errors. * **Property**: `public int? StatusCode { get; set; }` * **Constructors**: * `public CanApiException(string message, Exception inner)` * `public CanApiException(string message, int statusCode)` ### Class: `CANFDApiProxy.HttpClientFactory` Static factory for creating HTTP clients. * `public static HttpClient CreateHttpClient()` * Creates a client configured to accept JSON. ### Enum: `CANFDApiProxy.Protocol` * `http` * `https` ## 3. Invariants * **Singleton Pattern**: The `CANFD` class is sealed and has a private constructor. It must be accessed via the static property `CANFD.API`. *