You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB

oc-basecontrol
==============
oc-basecontrol is an OpenComputers generic base control library.
## Documentation ##
Load oc-basecontrol into your application:
```lua
bc = require("bc"):init(<nouns>, <verbs>)
```
where `<nouns>` is a table containing all nouns (described later) and their
initial value and `<verbs>` is a table containing all verbs and their callbacks.
The basic idea behind basecontrol is, that network nodes have a set of **nouns**,
which represent different values. A computer near a reactor for example could have
a noun called `power-output`. Network nodes also have **verbs**, actions that other
nodes can perform. The reactor computer could have a `shutdown` verb for example.
The `bc` object has the following methods to interface with verbs and nouns:
```lua
-- Retrieve a noun from it's network node
val = bc:get_noun("<noun>")
-- Set a noun on the local machine
bc:set_noun("<noun>", value)
-- Call a verb on it's network node
bc:call_verb("<verb>", param)
```
Additionally, there is
```lua
id = bc:listen_noun("<noun>", event_type, event_arg, function callback)
```
which is used to register asynchroneous callbacks on (possibly remote) noun
changes. `event_type` is one of
* `onchange` => whenever the value changes, `event_arg` is ignored
* `onrising` => whenever the value gets bigger, `event_arg` is ignored
* `onfalling` => whenever the value gets smaller, `event_arg` is ignored
* `onvalue` => whenever the value equals `event_arg`
* `onabove` => whenever the value is bigger than `event_arg`
* `onbelow` => whenever the value smaller than `event_arg`
A listener can be removed using
```lua
bc:listen_cancel("<noun>", id)
```
## Testing ##
Testing is done using a "fake" backend and typing
```console
$ ./lunit test_bc.lua
```