Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix execute_command test #109

Open
wants to merge 3 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ There are certain registers that are looked at by Cyphal nodes to determine how
If the available registers define more than one transport configuration, a redundant transport will be initialized. It is not necessary to assign all of these registers to use a particular transport because all of them except `uavcan.*.iface` come with defaults.

| Transport | Register name | Register type | Environment variable name | Semantics | Example environment variable value |
|-----------|-----------------------|----------------|---------------------------|------------------------------------------------------------|-------------------------------------|
| --------- | --------------------- | -------------- | ------------------------- | ---------------------------------------------------------- | ----------------------------------- |
| (any) | `uavcan.node.id` | `natural16[1]` | `UAVCAN__NODE__ID` | The local node-ID; anonymous if not set | `42` |
| UDP | `uavcan.udp.iface` | `string` | `UAVCAN__UDP__IFACE` | Space-separated local IPs (16 LSB overridden with node-ID) | `127.9.0.0 192.168.0.0` |
| Serial | `uavcan.serial.iface` | `string` | `UAVCAN__SERIAL__IFACE` | Space-separated serial port names | `COM9 socket://127.0.0.1:50905` |
Expand Down Expand Up @@ -305,6 +305,12 @@ You can still override the type if you want to use a different one (e.g., if the
y q 42 least_squares:my_namespace.MySpecialType '[[10, 1], [20, 2]]'
```

If your service call requires multiple arguments, specify them as follows:

```bash
yakut call 125 435:uavcan.node.ExecuteCommand '{command: 65533, parameter: "firmware.bin"}'
yakut call 125 435:uavcan.node.ExecuteCommand '[65533, "firmware.bin"]' # Shorter but position-sensitive

## Monitoring the network

The command `yakut monitor` can be used to display *all* activity on the network in a compact representation. It tracks online nodes and maintains real-time statistics on all transfers exchanged between each node on the network. It may also be able to detect some common network configuration issues like zombie nodes (nodes that do not publish `uavcan.node.Heartbeat`).
Expand Down Expand Up @@ -448,7 +454,7 @@ $ y r 125, m.inductance_dq --detailed --detailed
real32:
value: [1.2999999853491317e-05, 1.2000000424450263e-05]
_meta_: {mutable: true, persistent: true}

# If there is no such register, we get a null (empty):
$ y r 125 no.such.register
null
Expand Down
24 changes: 12 additions & 12 deletions tests/cmd/execute_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,15 +94,15 @@ async def _unittest_basic(_context: tuple[Runner, tuple[Remote, Remote]]) -> Non
assert await run("10-12", "restart", "--timeout=3") == (
0,
{
"10": {"status": 0},
"11": {"status": 0},
"10": {"output": '', "status": 0},
"11": {"output": '', "status": 0},
},
)
assert await run("10-12", "111", "COMMAND ARGUMENT", "--timeout=3") == (
0,
{
"10": {"status": 0},
"11": {"status": 0},
"10": {"output": '', "status": 0},
"11": {"output": '', "status": 0},
},
)
assert (
Expand All @@ -122,15 +122,15 @@ async def _unittest_basic(_context: tuple[Runner, tuple[Remote, Remote]]) -> Non
assert await run("10-12", "restart", "--timeout=3") == (
EXIT_CODE_UNSUCCESSFUL,
{
"10": {"status": 100},
"11": {"status": 200},
"10": {"output": '', "status": 100},
"11": {"output": '', "status": 200},
},
)
assert await run("10-12", "123", "--expect=100,200", "--timeout=3") == (
0,
{
"10": {"status": 100},
"11": {"status": 200},
"10": {"output": '', "status": 100},
"11": {"output": '', "status": 200},
},
)
assert remote_10.last_request and remote_10.last_request.command == 123
Expand All @@ -143,22 +143,22 @@ async def _unittest_basic(_context: tuple[Runner, tuple[Remote, Remote]]) -> Non
EXIT_CODE_UNSUCCESSFUL,
{
"10": None,
"11": {"status": 0},
"11": {"output": '', "status": 0},
},
)
assert await run("10-12", "123", "--expect") == (
0,
{
"10": None,
"11": {"status": 0},
"11": {"output": '', "status": 0},
},
)

# FLAT OUTPUT (NOT GROUPED BY NODE-ID)
remote_11.next_response = ExecuteCommand_1.Response(status=210)
assert await run("11", "123", "FOO BAR", "--timeout=3") == (
EXIT_CODE_UNSUCCESSFUL,
{"status": 210},
{"output": '', "status": 210},
)
assert (
remote_11.last_request
Expand All @@ -167,7 +167,7 @@ async def _unittest_basic(_context: tuple[Runner, tuple[Remote, Remote]]) -> Non
)
assert await run("11", "222", "--timeout=3", "--expect=0..256") == (
0,
{"status": 210},
{"output": '', "status": 210},
)
assert (
remote_11.last_request
Expand Down
2 changes: 1 addition & 1 deletion yakut/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.13.1
0.13.3
1 change: 1 addition & 0 deletions yakut/cmd/call.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ async def call(
yakut call 42 uavcan.node.getinfo +M -T3 -Pe
yakut call 42 least_squares 'points: [{x: 10, y: 1}, {x: 20, y: 2}]'
yakut call 42 least_squares:sirius_cyber_corp.PerformLinearLeastSquaresFit '[[10, 1], [20, 2]]'
yakut call 125 435:uavcan.node.ExecuteCommand '{command: 65533, parameter: "firmware.bin"}'
"""
try:
from pycyphal.application import Node
Expand Down
Loading