# Subsystem In

This function block provides an input channel for a subsystem scene. Use it to receive data from the parent (main) scene and make that data available inside the subsystem for further processing.

## 📥 Inputs <a href="#inputs" id="inputs"></a>

This function block does not have input sockets.

## 📤 Outputs <a href="#outputs" id="outputs"></a>

`Generic` This output forwards the data value provided by the parent scene into the subsystem. Each instance represents one input channel.

## 🕹️ Controls <a href="#controls" id="controls"></a>

`Title` Editable label shown on the block, usually set to a small index to identify the input channel.

`Index` The instance index (displayed as the block title) that indicates which input channel this block represents inside the subsystem.

Note: The block has minimal visible widgets—most configuration happens by arranging and indexing instances inside the subsystem and by wiring the parent scene.

## 🎯 Features <a href="#features" id="features"></a>

* Multiple input channels: You can add multiple instances of this block inside a subsystem to accept several separate inputs from the main scene.
* Automatic indexing: Each instance is automatically numbered so you can easily map parent inputs to their corresponding internal channels.
* Seamless data forwarding: At runtime the block provides the latest value from the parent scene for the corresponding channel so internal blocks can use it.
* Works with enabled/disabled subsystems: When a subsystem is controlled by an enabling mechanism, this block respects that control and provides the expected input values.

## ⚙️ Running mechanism <a href="#running-mechanism" id="running-mechanism"></a>

* At runtime the parent scene provides a list of input values for the subsystem.
* Each instance of this block represents one position in that list and outputs the value that corresponds to its index.
* Internal processing blocks read from the block's `Generic` output just like any other data source inside the subsystem.
* If the subsystem is disabled (via an enabling block), the input values can be delivered or bypassed depending on the subsystem configuration.

## 📝 Usage Instructions <a href="#usage" id="usage"></a>

1. In the main scene, provide input values to the subsystem (for example by connecting UI inputs or other data-producing blocks to the parent `Subsystem` block).
2. Inside the subsystem scene, add one or more instances of this block for each input channel you need. Each instance will be assigned a numeric index.
3. Use the block's `Generic` output to feed internal processing blocks with the incoming value from the parent scene.
4. To send results back to the parent, use matching output blocks inside the subsystem (for example `Subsystem Out`).
5. Use an enabling input in the parent scene (for example `Subsystem Enabled`) when you want to toggle subsystem execution.

## 💡 Tips and Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Pair this block with `Subsystem Out` inside the subsystem to create clear input/output interfaces between the main scene and the subsystem.
* Use `Subsystem Enabled` in the parent scene to control whether the subsystem runs, and let this block pass inputs only when desired.
* For user-driven values, feed the parent subsystem with `Number Input`, `Logic Input`, or `String Input` blocks; inside the subsystem, this block will expose those values via the `Generic` output.
* When you need to persist or cache incoming values inside the subsystem, combine with `Data Memory` so internal flows can reuse stable values.
* For global sharing between scenes, consider using `Data Write Global` and `Data Read Global` alongside subsystem inputs to coordinate values across multiple subsystems or the main scene.

## 🛠️ Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

* No input appears inside the subsystem: Ensure the parent scene is providing inputs to the subsystem instance and that the number of provided values matches the number of `Subsystem In` instances.
* Values are mismatched (wrong channel): Check the index numbers shown on each block inside the subsystem—reorder or re-create instances so the indexing matches the parent input order.
* Subsystem not running or values not updating: Verify if an enabling control (`Subsystem Enabled`) is active in the parent scene and that connected enabling signals are correct.
* Need persistent input values between runs: Use `Data Memory` inside the subsystem to hold values when upstream inputs are intermittent.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/function-blocks/data-logic/flow-control/subsystem-in.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
