File: test.py

package info (click to toggle)
linuxcnc 1%3A2.9.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 285,604 kB
  • sloc: python: 202,568; ansic: 109,036; cpp: 99,239; tcl: 16,054; xml: 10,631; sh: 10,303; makefile: 1,255; javascript: 138; sql: 72; asm: 15
file content (91 lines) | stat: -rwxr-xr-x 2,283 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/env python3
import hal
import os

h = hal.component("x")
try:
    ps = h.newpin("s", hal.HAL_S32, hal.HAL_OUT)
    pu = h.newpin("u", hal.HAL_U32, hal.HAL_OUT)
    pf = h.newpin("f", hal.HAL_FLOAT, hal.HAL_OUT)
    param = h.newparam("param", hal.HAL_BIT, hal.HAL_RW)
    h.ready()

    def try_set(p, v):
        try:
            h[p] = v
            hp = h[p]
            print("set {} {} {}".format(p, v, "ok" if hp == v else repr(hp)))
        except (ValueError, OverflowError) as e:
            print("set {} {} {}".format(p, v, "fail"))

    def try_set_pin(p, v):
        try:
            p.set(v)
            print("set {} {} {}".format(p.get_name(), v, p.get()))
        except (ValueError, OverflowError):
            print("set {} {} {}".format(p.get_name(), v, "fail"))

    try_set("s", -1)
    try_set("s", 0)
    try_set("s", 1)
    try_set("s", -1)
    try_set("s", 0)
    try_set("s", 1)
    try_set("s", 0x7fffffff)
    try_set("s", -0x80000000)

    try_set("u", 0)
    try_set("u", 1)
    try_set("u", 0xffffffff)

    try_set("f", 0)
    try_set("f", 0.0)
    try_set("f", 0)
    try_set("f", -1)
    try_set("f", -1.0)
    try_set("f", -1)
    try_set("f", 1)
    try_set("f", 1.0)
    try_set("f", 1)

    try_set("f", 1 << 1023)

    try_set("s", 0x80000000)
    try_set("s", -0x80000001)

    try_set("u", -1)
    try_set("u", 1 << 32)

    try_set("f", 1 << 1024)

    pin = h.getitem("s")

    def pin_validate(i, t, d):
        print("pincheck {} {} {} {}".format(
            i.get_name(), i.is_pin(), i.get_type() == t, i.get_dir() == d))

    pin_validate(ps, hal.HAL_S32, hal.HAL_OUT)
    pin_validate(pu, hal.HAL_U32, hal.HAL_OUT)
    pin_validate(pf, hal.HAL_FLOAT, hal.HAL_OUT)

    pin = h.getitem("s")

    pin_validate(pin, hal.HAL_S32, hal.HAL_OUT)
    try:
        pin = h.getitem("not-found")
        print("{} {} {}".format("getitem", "not-found", "ok"))
    except:
        print("{} {} {}".format("getitem", "not-found", "fail"))

    pin_validate(param, hal.HAL_BIT, hal.HAL_RW)
    param = h.getitem("param")
    pin_validate(param, hal.HAL_BIT, hal.HAL_RW)

    try_set_pin(pu, 0)
    try_set_pin(pu, -1)
except:
    import traceback
    print("Exception: {}".format(traceback.format_exc()))
    raise
finally:
    h.exit()