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.

1.7 KiB

oc-basecontrol

oc-basecontrol is an OpenComputers generic base control library.

Documentation

Load oc-basecontrol into your application:

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:

-- 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

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

bc:listen_cancel("<noun>", id)

Testing

Testing is done using a "fake" backend and typing

$ ./lunit test_bc.lua