# Introspection capabilities

**URL:** <https://forum.opencyphal.org/t/introspection-capabilities/1724>\
**Category:** Applications & Usage\
**Created:** [August 1, 2022, 9:50am UTC](https://forum.opencyphal.org/t/introspection-capabilities/1724 "2022-08-01T09:50:19Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![pat1](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/p/43a26b/32.png) [@pat1](https://forum.opencyphal.org/u/pat1)\
**Post date:** [August 1, 2022, 9:50am UTC](https://forum.opencyphal.org/t/introspection-capabilities/1724/1 "2022-08-01T09:50:19Z")

</div>

using linux node or STM32 node I cannot get yakut working with Automatic network discovery

```auto
y r 125 rmap.module.TH.1.0.id 5678

y r 125 rmap.module.TH.1.0.id
5678

y r 125 rmap.module.TH.1.0.type
rmap.module.TH.1.0              

y sub 5678:rmap.module.TH --redraw
---
5678:
  metadata:
    timerange:
      Pindicator: {value: 255}
      P1: {value: 4294967295}
      P2: {value: 4294967295}
    level:
      LevelType1: {value: 255}
      L1: {value: 4294967295}
      LevelType2: {value: 255}
      L2: {value: 4294967295}
  temperature:
    val: {value: 27640}
    confidence: {value: 98}
  humidity:
    val: {value: 23}
    confidence: {value: 89}

y sub 5678
NetworkDiscoveryError: Automatic network discovery did not return suitable dtypes for subject 5678. Either the subject-ID is incorrect, or the nodes that utilize it are currently offline, or they do not support the introspection services required for automatic discovery. Consider specifying the data type manually? The syntax is like 5678:namespace.DataType

```

-v option do not provide more information.  
What is missed?

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 1, 2022, 9:56am UTC](https://forum.opencyphal.org/t/introspection-capabilities/1724/2 "2022-08-01T09:56:03Z")

</div>

You are missing port introspection registers for this port, which is an error. I wrote about this already in [Python API to configure the subject-IDs/service-IDs/registers](https://forum.opencyphal.org/t/python-api-to-configure-the-subject-ids-service-ids-registers/1705).

The correct pattern is `uavcan.(pub|sub|cln|srv).PORT_NAME.(id|type)`. For example, `uavcan.pub.rmap_module_th.id` and `uavcan.pub.rmap_module_th.type`. You are free to have other registers named as you see fit, but you must have these standard ones as well.

---

<div class="post-metadata">

**Author:** ![pat1](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/p/43a26b/32.png) [@pat1](https://forum.opencyphal.org/u/pat1)\
**Post date:** [August 5, 2022, 10:39am UTC](https://forum.opencyphal.org/t/introspection-capabilities/1724/4 "2022-08-05T10:39:58Z")

</div>

> [@pavel.kirienko](#):
>
> The correct pattern is `uavcan.(pub|sub|cln|srv).PORT_NAME.(id|type)`. For example, `uavcan.pub.rmap_module_th.id` and `uavcan.pub.rmap_module_th.type`. You are free to have other registers named as you see fit, but you must have these standard ones as well.

I do not understand the sequence yakut (or other node) do to make introspection:

```auto
y sub 5678

```

do not provide PORT\_NAME  
so yakut have to do a register list, get every register that provide id  
find the id= 5678 to get PORT\_NAME  
query uavcan.pub.PORT\_NAME.type  
subscribe to id with type found  
It’s correct?

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 5, 2022, 10:42am UTC](https://forum.opencyphal.org/t/introspection-capabilities/1724/5 "2022-08-05T10:42:40Z")

</div>

Correct! This is where it is implemented (it is somewhat convoluted indeed):

> <https://github.com/OpenCyphal/yakut/blob/main/yakut/subject_specifier_processor.py>

> <https://github.com/OpenCyphal/yakut/blob/main/yakut/subject_resolver.py>
