Echelon ISI User Manual

Page 85

Advertising
background image

83

ISI Programmer’s Guide

The RDCT message includes optional host and member assembly fields that

specify which connection table entries are requested. If they are not supported
by the device, or are both set to 0xFF, the connection table entry indicated by the

index is requested. If they are supported and the host or member field is not

0xFF, the index provided is the starting index. The first matching connection
table entry is returned, if any. If both host and member fields are set to a value

different from 0xFF, the connection table entries are returned that match either
the host or the member fields, if any.

This allows a connection controller to read the entire connection table, or to read
the table selectively in order to provide quick answers to questions like “is

assembly Z on device X connected, and is it the host of the connection?”

If the requested data is available, the response to a RDCT message is a read
connection table success (RDCS) message. This message contains the requested

connection table index and data. If the connection table index does not exist, or if

the requested assemblies do not exist, the response is a read connection table
failure (RDCF) message.

A connection controller can determine if a device does not support the optional
host and member assembly fields by comparing the assembly numbers in the

read response to the requested assembly number, or by receiving an RDCF
message indicating a failed read. If a device does not support the host and

member assembly fields, the connection controller must read every entry in the
connection table individually. This has minimal impact for devices with one or

two connection table entries, but increases network traffic for devices with many

connection table entries.

E

XAMPLE

1

The following connection controller example recovers all the connections from

a device.


#include <msg_addr.h>
#include <isi.h>

#define RETRY_COUNT 3
#define ENCODED_TX_TIMER 11 // 768ms
#define ENCODED_RPT_TIMER 2

#define PRIMARY_DOMAIN 0

// This structure holds information required while reading a remote
// device's connection table
struct {
unsigned neuronId[NEURON_ID_LEN];
unsigned index;
} recoveryJob;

// Issue one read connection table request using the global
// recoveryJob variable for destination address and current
// connection table index information. Increment the index
// kept in that global variable.

void RequestConnectionTable(void) {
IsiMessage request;
msg_out_addr destination;

request.Header.Code = isiRdct;

Advertising