oc-basecontrol is a library for distributed base control systems in OpenComputers.
Find a file
Rahix 06d37428b6 Implement noun listening
- Replace queue with list
2017-04-11 12:24:20 +02:00
.gitignore Add gitignore 2017-04-10 16:55:59 +02:00
_bc_backend.lua First part of rewrite 2017-04-11 10:51:16 +02:00
bc-old.lua First part of rewrite 2017-04-11 10:51:16 +02:00
bc.lua Implement noun listening 2017-04-11 12:24:20 +02:00
lunit Add lunit suite 2017-04-10 16:52:58 +02:00
lunit-console.lua Add lunit suite 2017-04-10 16:52:58 +02:00
lunit.lua Add lunit suite 2017-04-10 16:52:58 +02:00
modem.lua First part of rewrite 2017-04-11 10:51:16 +02:00
README.md Add test to readme 2017-04-10 18:42:37 +02:00
serialization.lua First part of rewrite 2017-04-11 10:51:16 +02:00
test_bc.lua Implement noun listening 2017-04-11 12:24:20 +02:00

oc-basecontrol

oc-basecontrol is a OpenComputers generic base control library.

Documentation

Load oc-basecontrol into your application:

bc = require("bc"):init("<master-address>")

where <master-address> is the address of you networks master. The master is only required to download the base structure file.

The basic idea behind basecontrol is, that network node 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 comuputer 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)

-- Register a handler for verbs on the current machine
bc:on_verb("<verb>", function handler)

Additionally, there is

id = bc:listen_noun("<noun>", event_type, event_arg, function callback)

which is used to register asynchroneous callbacks on 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 the "fake" backend and typing

$ ./lunit test_bc.lua