wpilib-nt-client
that fixes connection issues
Fork of WPILIB Network Tables Client
This client uses version 3.0 of the Network Tables Protocol. With a failover to 2.0
Installation
npm install wolfbyte-networktables
Usage
// Declaration
const ntClient = require('wolfbyte-networktables');
const client = new ntClient.Client()
// Connects the client to the server on team 3571's roborio
client.start((isConnected, err) => {
// Displays the error and the state of connection
console.log({ isConnected, err });
}, 'roborio-3571.local');
// Adds a listener to the client
client.addListener((key, val, type, id) => {
console.log({ key, val, type, id });
})
Constructor
-
Client()
- Standard Constructor
-
Client(options)
-
options an object containing is strictInput with a boolean value
- strictInput Does not try to correct incorrect types
-
options an object containing is strictInput with a boolean value
Properties
-
.start((connected, err, is2_0) => any, address, port)
- Connects the client to a specific address and port
- connected - True if the client has successfully completed its handshake
- err - Contains the error if one has occurred
- is2_0 - True if the client had to failover to 2.0 of the Network Tables protocol
- address - The address of the Server. Defaults to loopback
- port - The port of the server
-
.stop()
- Tries to stop the client by sending a fin packet
-
.destroy()
- Closes the connection forcefully
-
.setReconnectDelay(delay)
- delay set the delay before trying to reconnect
- If the dellay is less than 20 than it wll not attempt reconnect
-
.addListener((key, value, valueType, type, id, flags) => any, getCurrent)
- Adds a callback to be called when a value has been added, updated, or deleted, and returns the Listener
- key - The Key for the Entry
- value - The value associated with the key
- valueType - The type of the value Possible Types are listed Bellow
- type - The type of the callback. Possible Types are: "add", "update", "delete", "flagChange"
- id - The ID of the Entry
- flags - The flags of the Entry
- getCurrent - immediatly callback if connected with known entries
-
.removeListener(listener)
- Removes the specified listener
-
listener - The Listener returned from
.addListener()
-
.isConnected()
- Returns true if the client is connected and has completed its handshake
-
.uses2_0()
- Returns true if the client has switched to using version 2.0 of the NetworkTables protocol
-
.getKeyID(key)
- Returns the ID of a key or All of the keys if key is left out
-
.getEntry(id)
- Returns an Entry identified with an ID
-
.Assign(val, name, persist)
- Sets a new Entry
- val - The Value being added
- name - The Key for the Entry
- persist - An optional boolean value of whether the value shoud stay on the server after a restart
- Can return an error if type is an RPC
-
.Update(id, val)
- id - The ID of the Entry to be updated
- val - The new Value
- Can Return an error if the Entry does not exist ot the value is of the wrong type
-
Flag(id, persist)
- Updates the persist flag
- id - The ID of the Entry to be updated
- persist - An optional boolean value of whether the value shoud stay on the server after a restart
- Can return an error if the Entry does not exist
-
.Delete(id)
- Deletes an Entry
- id - The ID of the entry being Deleted
- Can Return an error if the Entry does not exist
-
.DeleteAll()
- Deletes all of the Entries
- Returns an error if the type is the client is using 2.0
-
.RPCExec(id, val, (result) => any)
- Calls a Remote Procedure
- id - The ID of the procedure
- val - The Parameters of the Procedure
- result - The result of the call
- Can Return an error of parameter type does not corespond to the definition, the Entry is not an RPC, or the Entry does not Exist
-
.write(buf)
- Sends a Message dirrectly to the server
- DO NOT USE unless you know what you are doing
Types
- valueType
- Boolean
- Number
- String
- Buffer
- BooleanArray
- NumberArray
- StringArray
- RPC
- valueID
- 0x00 : "Boolean"
- 0x01 : "Number"
- 0x02 : "String"
- 0x03 : "Buffer"
- 0x10 : "BooleanArray"
- 0x11 : "NumberArray"
- 0x12 : "StringArray"
- 0x20 : "RPC"
In 2.0
- Delete does not work
- Flags do not exist
- RPC does not exist
RPC Entry Definition
Remote Procedure Call
RPC:{
// The name of the Call
name,
// The parameters of the call
par:{
// The Id of the type of the parameter
typeId,
// The name of the Type of the parameter
typeName,
// Name of the Parameter
name,
// Default value for the parameter
default
}[],
// The format of the results
results:{
// The Id of the type of the result
typeId,
// The name of the Type of the result
typeName,
// The name of the result
name
}[]
}