forked from intercreate/smpmgr
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample_group.py
More file actions
98 lines (62 loc) · 1.87 KB
/
Copy pathexample_group.py
File metadata and controls
98 lines (62 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import asyncio
import logging
from enum import IntEnum, unique
from typing import cast
import smp.error as smperr
import smp.message as smpmsg
import typer
from rich import print
from smpmgr.common import Options, connect_with_spinner, get_smpclient
app = typer.Typer(name="example", help="Example user group 88")
logger = logging.getLogger(__name__)
@unique
class EXAMPLE_RET_RC(IntEnum):
OK = 0
NOT_OK = 1
class ExampleErrorV1(smperr.ErrorV1):
_GROUP_ID = 88
class ExampleErrorV2(smperr.ErrorV2[EXAMPLE_RET_RC]):
_GROUP_ID = 88
class ExampleWriteRequest(smpmsg.WriteRequest):
_GROUP_ID = 88
_COMMAND_ID = 0
d: str
class ExampleWriteResponse(smpmsg.WriteResponse):
_GROUP_ID = 88
_COMMAND_ID = 0
r: str
class ExampleWrite(ExampleWriteRequest):
_Response = ExampleWriteResponse
_ErrorV1 = ExampleErrorV1
_ErrorV2 = ExampleErrorV2
class ExampleReadRequest(smpmsg.ReadRequest):
_GROUP_ID = 88
_COMMAND_ID = 1
class ExampleReadResponse(smpmsg.ReadResponse):
_GROUP_ID = 88
_COMMAND_ID = 1
something: int
class ExampleRead(ExampleReadRequest):
_Response = ExampleReadResponse
_ErrorV1 = ExampleErrorV1
_ErrorV2 = ExampleErrorV2
@app.command()
def write(ctx: typer.Context, message: str) -> None:
"""Example echo write."""
options = cast(Options, ctx.obj)
smpclient = get_smpclient(options)
async def f() -> None:
await connect_with_spinner(smpclient)
r = await smpclient.request(ExampleWrite(d=message))
print(r)
asyncio.run(f())
@app.command()
def read(ctx: typer.Context) -> None:
"""Example echo read."""
options = cast(Options, ctx.obj)
smpclient = get_smpclient(options)
async def f() -> None:
await connect_with_spinner(smpclient)
r = await smpclient.request(ExampleRead())
print(r)
asyncio.run(f())