@flux-control/effect-modbus-rs
    Preparing search index...

    Class WasmRtuTransportService

    Scoped Effect service wrapping modbus-rs's browser WasmRtuTransport for Modbus RTU over the Web Serial API.

    The transport connection is opened lazily on the first call to withClient(unitId) and automatically closed when the consuming Effect.Scope | Scope finalizes.

    Clients are created per unitId via WasmRtuTransport.createClient and cached, so repeated requests for the same unit ID reuse the same client.

    • WasmRtuTransport — Upstream modbus-rs browser Web Serial RTU transport.
    • requestSerialPort — Obtains the serial port handle this service's port option needs.
    • makeTransportScoped — Generic lifecycle logic from shared-transport.

    Hierarchy

    • {
          clearRequestTimeout: (
              ...args: [],
          ) => Effect<undefined, ModbusNotConnectedError, never>;
          close: (...args: []) => Effect<void, ModbusError, Scope>;
          connectionState: SubscriptionRef<
              {}
              | {}
              | { attempt: number }
              | { cause: ModbusError },
          >;
          hasPendingRequests: () => boolean;
          reconnect: (...args: []) => Effect<undefined, ModbusError, never>;
          setRequestTimeout: (
              ...args: [timeoutMs: number],
          ) => Effect<undefined, ModbusNotConnectedError, never>;
          withClient: (
              ...args: [
                  unitId: number,
                  clientOptions?: { retry?: ModbusRetryPolicy },
              ],
          ) => Effect<EffectModbusClient, ModbusError, never>;
      } & {}
      • WasmRtuTransportService
    Index
    • Parameters

      • _: {
            clearRequestTimeout: (
                ...args: [],
            ) => Effect<undefined, ModbusNotConnectedError, never>;
            close: (...args: []) => Effect<void, ModbusError, Scope>;
            connectionState: SubscriptionRef<
                {}
                | {}
                | { attempt: number }
                | { cause: ModbusError },
            >;
            hasPendingRequests: () => boolean;
            reconnect: (...args: []) => Effect<undefined, ModbusError, never>;
            setRequestTimeout: (
                ...args: [timeoutMs: number],
            ) => Effect<undefined, ModbusNotConnectedError, never>;
            withClient: (
                ...args: [
                    unitId: number,
                    clientOptions?: { retry?: ModbusRetryPolicy },
                ],
            ) => Effect<EffectModbusClient, ModbusError, never>;
        }

      Returns WasmRtuTransportService

    clearRequestTimeout: (
        ...args: [],
    ) => Effect<undefined, ModbusNotConnectedError, never> = ...
    close: (...args: []) => Effect<void, ModbusError, Scope> = ...
    connectionState: SubscriptionRef<
        {}
        | {}
        | { attempt: number }
        | { cause: ModbusError },
    >
    hasPendingRequests: () => boolean = ...
    reconnect: (...args: []) => Effect<undefined, ModbusError, never> = ...
    setRequestTimeout: (
        ...args: [timeoutMs: number],
    ) => Effect<undefined, ModbusNotConnectedError, never> = ...
    withClient: (
        ...args: [unitId: number, clientOptions?: { retry?: ModbusRetryPolicy }],
    ) => Effect<EffectModbusClient, ModbusError, never> = ...
    • Creates a Layer providing an in-memory mock WasmRtuTransportService for testing or development.

      Accepts an array of SlaveDeviceDefinition describing the simulated Modbus slaves and their register/coil maps.

      Parameters

      • devices: readonly {
            coils: readonly { address: number; default: boolean }[];
            discreteInputs: readonly { address: number; default: boolean }[];
            holdingRegisters: readonly { address: number; default: number }[];
            inputRegisters: readonly { address: number; default: number }[];
            unitId: number;
        }[]

        Slave device definitions for the mock.

      Returns (
          options: WasmSerialTransportOptions & { port: WasmSerialPortHandle } & TransportResilienceOptions & MockFaultOptions,
      ) => Layer<WasmRtuTransportService, never, never>

      A function that takes WasmRtuTransportOpenOptions and returns a scoped Layer providing the mock service.

      makeMockTransport — The underlying mock factory.