$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
 Channel and member structures
 Channel Flags
 Combined message code and address modes
 Command codes and classification
 Command line options
 Compiler and Platform
 Component Handling
 Component Model
 Component registration
 Connection context
 Constants from ACN Architecture
 Constants from EPI-17
 Controller Demo Makefile
 Controller description
 Converting dotted decimal style literals to host or network
static inline void c_putfooter(void)
Print the closing text of the generated .c file.
static void c_putheader(const char *dcidstr,
const char **headers)
Print the opening text of the generated .c file
void cancelWrapper(struct txwrap_s *txwrap)
Cancel a txwrap
static void cd_sdtev(int event,
void *object,
void *info)
Callback function to handle out of band events from the SDT layer.
determine how messages are logged.
Enable DDL code
Parse and apply DDL behaviors
Hash size for DDL modules
Parse and record values for immediate properties.
Maximum XML nesting level within a single DDL module.
Size allocated for parsing text nodes.
Compile DDL for DMP access
Compile DDL for EPI26 (DMX/E1.31) access
enable the DMP layer
Number of connections to/from the same remote component.
Maximum DMP address size
Build DMP device code only
Build DMP controller code only
Build combined device and controller code
Store properties in an array indexed by address.
For a single device or a controller matched to a single device type, define to the name of the statically defined map structure to save a lot of passing pointers and references.
eliminate all address checking code in the DMP layer and simply passes up all addresses unchecked to the application.
Use a binary search to identify the property associated with an address.
Include SDT transport support
Include TCP transport support
Enable E1.31 code
Drop preview packets on read and never set preview on write.
Generate receive code
generate transmit code
Drop ASC packets on read and automatically add a zero start on write
Multicast address allocation
DDL Retrieval
Requirements on Homogeneous Ethernet Networks
IPv4 Addresses.
Multicast allocation infrastructure
ESTA/PLASA Identifiers
Root layer protocol for UDP
Requirements for SDT on UDP
Discovery using RLP
DDL syntax for E1.31/DMX access
IPv4 address assignment
Use Acacian event loop and timing services
Joining our own multicast groups
Hash size for local component table
Delegate all interface decisions to the OS/stack
Log function entry and exit
determine what level of messages are logged.
Enable static map generation extensions
Use inline functions for Data Marshalling
Maximum number of supported IP addresses
One or many components?
IP multicast TTL value
IP version 4
IP version 6 (experimental)
Operating system is Linux.
Hash size for remote component table
enable the ACN root layer
Client protocol ID for single protocol implementations.
Number of client protocols to allocate space for
Optimize PDU packing in RLP (at the cost of speed)
enable the SDT layer
The association field in SDT wrappers is entirely redundant and this implementation has no need of it.
Client protocol for single protocol implementations
Number of client protocols to allocate space for.
When an sdt wrapper is correctly received it is placed in an ordered queue.
Only needed where stack is not defined by the OS default.
Extra error checking
Use simple millisecond integers for times
Use timespec struictures for timing
Use POSIX timeval struictures for timing
Use a hash table to store UUIDs (not tested recently).
Use radix tree (patricia tree) to store UUIDs
An integer which represents the ACN revision to be compiled.
Each local component may have multiple local channels and each channel may contain many members.
Channels can be opened by calling openChannel().
typedef struct Lchannel_s *chanOpen_fn(
   ifMC(struct Lcomponent_s *Lcomp,) struct chanParams_s *params
Callback function (registered in sdt_register as joinRx) to handle unsolicited Join requests.
do not automatically issue connect requests
do not automatically close channel when last member is removed
is reciprocal for remote initiated channel
unicast channel
void CID_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
typedef void clientRx_fn(struct member_s *memb,
const uint8_t *data,
int length,
void *cookie)
Callback function (registered in<sdt_addClient>) to handle received client protocol data.
log2 of integer x rounded up to nearest integer.
void closeChannel(struct Lchannel_s *Lchan)
Close a channel removing all members if necessary.
For many purposes Acacian combines the message code with the address type (header) field.
See acnstd.h, SDT Constants.
These are parsed by library function getopt_long()
This code has currently only been built using GCC and GNU Make on Linux platforms - both desktop and small embedded.
Acacian makes a fundamental distinction between Local components and Remote components.
Utilities for management of local and remote components
DMP related data for local or remote components (see component.h).
DMP is concerned with connections – these structures maintain the transport protocol relevant information including state and context data, details of remote and local components etc.
Once a channel is established, it is no use without a protocol.
void constant_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
These constants represent requirements defined in standard document ANSI E1.17 - 2010 Architecture for Control Networks – ACN Architecture
These constants represent requirements defined in standard document ANSI E1.17 - 2010 Architecture for Control Networks – EPI 17.
Find the containing structure of a member.
Makefile for Demonstration Programs.
This demo controller is a very basic terminal program in which can discover devices, parse their DDL and access the properties exposed.
Simple demonstration controller application.
Controllers must parse DDL dynamically on encountering new device types.
order IPv4 addresses.
Round up to nearest power of 2 larger than or equal to x This is the same as (1 << clog2(x))
transmit context for control messages (see dmptcxt_s).
array holding SDT connections of members of the control group.
get the local component from receive context.
void cyclic_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)