-
Notifications
You must be signed in to change notification settings - Fork 435
Component Modem
Vexatos edited this page Jul 13, 2014
·
9 revisions
For those that don't like images: the wiki has moved to a new place, http://ocdoc.cil.li/.
This wiki will no longer be updated.
This component is provided by network cards. Wireless network cards behave much like normal network cards, but additionally send the message as a wireless "packet" when a strength is set.
Component name: modem
.
Callbacks:
-
isWireless(): boolean
Returns whether this modem is capable of sending wireless messages. -
maxPacketSize(): number
Returns the maximum packet size for sending messages via network cards. Defaults to 8192. You can change this in the OpenComputers configuration file. -
isOpen(port: number): boolean
Returns whether the specified "port" is currently being listened on. Messages only trigger signals when they arrive on a port that is open. -
open(port: number): boolean
Opens the specified port number for listening. Returnstrue
if the port was opened,false
if it was already open. -
close([port: number]): boolean
Closes the specified port (default: all ports). Returns true if ports were closed. -
send(address: string, port: number[, ...]): boolean
Sends a network message to the specified address. Returnstrue
if the message was sent. This does not mean the message was received, only that it was sent. No port-sniffing for you.
Any additional arguments are passed along as data. These arguments must be basic types: nil, boolean, number and string values are supported, tables and functions are not. See the text API for serialization of tables. -
broadcast(port: number, ...): boolean
Sends a broadcast message. This message is delivered to all reachable network cards. Returnstrue
if the message was sent. Note that broadcast messages are not delivered to the modem that sent the message.
All additional arguments are passed along as data. Seesend
. -
getStrength(): number
The current signal strength to apply when sending messages.
Wireless network cards only. -
setStrength(value: number): number
Sets the signal strength. If this is set to a value larger than zero, sending a message will also generate a wireless message. The higher the signal strength the more energy is required to send messages, though.
Wireless network cards only.
This component generates a signal named modem_message
if a message from another network card is received. It has the signature localAddress: string, remoteAddress: string, port: number, distance: number, ...
.
-
localAddress
is the address of the modem component the message was received by. -
remoteAddress
is the address of the network card the message was sent from. -
port
is the port number the message was delivered to. -
distance
is the distance to the modem that sent the message. This is only set for wireless messages. For normal messages this is always 0. - All further values are values passed along by the sender (i.e. the
...
insend
andbroadcast
).
Example use:
local component = require("component")
local event = require("event")
local m = component.modem -- get primary modem component
m.open(123)
print(m.isOpen(123)) -- true
-- Send some message.
m.broadcast(321, "this is a test")
-- Wait for a message from another network card.
local _, _, from, port, _, message = event.pull("modem_message")
print("Got a message from " .. from .. " on port " .. port .. ": " .. tostring(message))