Work on README, add duplicated logic for targeting

This commit is contained in:
Salt 2024-02-26 00:30:44 -06:00
parent c8806be02d
commit 9f2b3a8050
2 changed files with 11 additions and 10 deletions

View File

@ -14,9 +14,7 @@ The master node must have a modem attached and be within range of all slave node
## Communication Protocol ## Communication Protocol
Port 42914 is used for Master => Slave broadcasting Messages are sent over rednet with the protocol `ccstoragenet`.
Port 42915 is used for Slave => Master return broadcasting
### Packet Format ### Packet Format
@ -52,17 +50,15 @@ Packet format is uniform between master <-> slaves and is structured like so:
| `itemquant` | false | int | Quantity of the aforementioned item | | `itemquant` | false | int | Quantity of the aforementioned item |
| `destination` | false | int | The CC ID of the intended recipient of the item | | `destination` | false | int | The CC ID of the intended recipient of the item |
Messages are sent over rednet with the protocol `ccstoragenet`.
### Slave Node Initialization ### Slave Node Initialization
* The slave starts up * The slave starts up and immediately listens for messages
### Master Node Initialization ### Master Node Initialization
* The master node starts up * The master node starts up
* The master node sends a packet with type `ping`. * The master node sends a packet with type `ping`.
* The master node listens for `pong` packets for a configurable timeout. * The master node listens for `pong` packets from all slaves.
* The `sourceid` of all `pong` packets is recorded for statistics displays. This cached data is only used for user display. Node availability is evaluated at request time. * The `sourceid` of all `pong` packets is recorded for statistics displays. This cached data is only used for user display. Node availability is evaluated at request time.
### Inventory Search (query) ### Inventory Search (query)

View File

@ -22,6 +22,7 @@ print("Computer " .. os.getComputerID() .. " configured as " .. mode)
modem = peripheral.find("modem") or error("No modem attached", 0) modem = peripheral.find("modem") or error("No modem attached", 0)
modem_side = peripheral.getName(modem) modem_side = peripheral.getName(modem)
-- Master globals -- Master globals
m_slaves = {}
-- Slave globals -- Slave globals
-- Common functions -- Common functions
@ -38,7 +39,8 @@ function c_waitForMessage()
if if
(not message["type"]) or -- Message type is required (not message["type"]) or -- Message type is required
(message["sourcetype"] == mode) or -- Ignore packets from our class of machines (message["sourcetype"] == mode) or -- Ignore packets from our class of machines
(message["networkid"] ~= networkid) -- Ignore packets from other networks (message["networkid"] ~= networkid) or -- Ignore packets from other networks
(message["targetid"] and message["targetid"] ~= os.getComputerID) -- Ignore packets for other machines
then then
print("Discarded nonconformant message") print("Discarded nonconformant message")
return nil return nil
@ -74,6 +76,9 @@ function m_loop()
print("Received pong from slave: " .. msg["sourceid"]) print("Received pong from slave: " .. msg["sourceid"])
end end
end end
function m_ping()
c_sendMessage({type="ping"})
end
-- Slave functions -- Slave functions
function s_loop() function s_loop()