97 lines
2.4 KiB
Python
Executable File
97 lines
2.4 KiB
Python
Executable File
#!/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)
|
|
|
|
pin = h.getpin("s")
|
|
pin_validate(pin, hal.HAL_S32, hal.HAL_OUT)
|
|
param = h.getparam("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()
|