Index
$#! · 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
D
 Data Marshalling and Unmarshalling
 DATA_bFLAG
 DATA_FLAG
 DCID_bva
 dcid_lit
 DD2HIP
 DD2NI
 DDL
 DDL Access Protocol Identifiers
 DDL Support
 ddl_tree.c
 ddlparse.h
 ddlref
 ddltree
 DEFAULT_MTU
 demo.dev.ddl
 demo_utils.c
 demo_utils.h
 Dependencies
 Device description
 device.c
 Devices
 disconnectAll
 discover
 Discovery
 Discovery in SDT
 Discovery strings(see EPI19)
 discovery.c
 discovery.h
 dlAddHead
 dlAddTail
 dlInsertL
 dlInsertR
 dlLink
 dlUnlink
 DMP
 DMP address array conversions
 DMP Constants
 DMP Message format
 DMP structures
 DMP Transmit Functions
 dmp.c
 dmp.h
 dmp_abortblock
 dmp_closeblock
 dmp_closeflush
 dmp_closepdu
 DMP_EVENT
 dmp_flushpdus
 DMP_GET_PROPERTY
 DMP_GET_PROPERTY_FAIL
 DMP_GET_PROPERTY_REPLY
 DMP_HEADER_LEN
 dmp_Lcomp_s
 DMP_MAX_SUBSCRIPTIONS
 dmp_message_e
 dmp_newblock
 dmp_openpdu
 DMP_PROTOCOL_DDLNAME
 DMP_PROTOCOL_ID
 DMP_PROTOCOL_NAME
 dmp_Rcomp_s
 dmp_reason_e
 dmp_register
 dmp_sdtRx
 DMP_SET_PROPERTY
 DMP_SET_PROPERTY_FAIL
 DMP_SUBSCRIBE
 DMP_SUBSCRIBE_ACCEPT
 DMP_SUBSCRIBE_REJECT
 DMP_SYNC_EVENT
 dmp_truncatepdu
 DMP_UNSUBSCRIBE
 DMP_VECTOR_LEN
 DMPAD_1BYTE
 DMPAD_2BYTE
 DMPAD_4BYTE
 DMPAD_BADSIZE
 DMPAD_RANGE_ARRAY
 DMPAD_RANGE_NODATA
 DMPAD_RANGE_SINGLE
 DMPAD_RANGE_STRUCT
 DMPAD_SINGLE
 DMPAD_SIZEMASK
 DMPAD_TYPEMASK
 dmpconnect
 dmpmap.c
 dmpmap.h
 dmpprop_s
 DMPRC_BADDATA
 DMPRC_NOEVENT
 DMPRC_NOPERMISSION
 DMPRC_NOREAD
 DMPRC_NORESOURCES
 DMPRC_NOSUBSCRIBE
 DMPRC_NOSUCHPROP
 DMPRC_NOWRITE
 DMPRC_SUCCESS
 DMPRC_UNSPECIFIED
 dmxaccess.h
 dodiscover
 dosubscribe
 Double linked lists
 drop_member
8-bit equivalent of DATA_FLAG
if set data is present
void DCID_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
static char * dcid_lit(uint8_t *dcid,
char *buf)
Convert a UUID (DCID) to a C literal which compiles to a binary array.
Convert to host order
COnvert to network order
All DMP messages relate to property addresses.
Simple demonstration DDL tree print.
DDL parser
struct ddlprop_s * ddlref(struct rootdev_s *root,
struct ddlprop_s *pp,
const ddlchar_t *path)
Trace a DDL property cross reference using xml IDs and the syntax specified in the DDL spec.
static void ddltree(char **bpp)
Print the property tree of the specified device.
default value
Device Description for simple Acacian demo device.
Utilities common to multiple demo programs.
Header for demo_utils.c
Acacian has been built on a number of Linux systems using GCC and Gnu Make.
This demo device consists of an EPI23 (ANSI E1.30-1) standard Device Identifier subdevice (including facility to change the device’s UACN) and a two dimensional array of scalar integer properties labelled as a ‘bargraph’ (probably because this was originally the intented display method).
Simple demonstration device application.
For building a simple device, the property map is a static part of the code of the device itself, and the device has no need for DDL (except to serve it up as opaque files as required by EPI-11.
static int disconnectAll(struct Lchannel_s *Lchan,
uint8_t reason)
void discover(void)
Call openSLP to discover available acn.esta services.
Acacian does not implement discovery itself – this is a separate problem which is well addressed by openSLP [SLP] or other SLP implementations.
SDT messages Join and Channel Parameters include ad-hoc address and expiry information that has belongs in Discovery and has no place in SDT.
Utilities for SLP (Service Location Protocol) as specified in epi19
insert an object at the head of the list
insert an object at the tail of the list
insert an object to the left of itemp
insert an object to the right of itemp
declare a link structure
unlink an object
Convert between DMP property address ranges and Arrays suitable for handling in C/C++
Constants from Device Management Protocol
All DMP messages relate to DMP addresses within a component and so all specify one or more addresses in a standard address format.
Within an SDT wrapper it is possible to send multiple DMP blocks.
DMP (Device Management Protocol) functions and API
Device Management Protocol
void dmp_abortblock(struct dmptcxt_s *tcxt)
Reset the pointers for the block and forget any accumulated data.
void dmp_closeblock(struct dmptcxt_s *tcxt)
Close the accumulated PDU block for the transmit context.
void dmp_closeflush(struct dmptcxt_s *tcxt,
uint8_t *nxtp)
Close the current PDU then close and flush all accumulated blocks.
void dmp_closepdu(struct dmptcxt_s *tcxt,
uint8_t *nxtp)
Close and finalize the previously opened PDU
Event
void dmp_flushpdus(struct dmptcxt_s *tcxt)
Flush (transmit) the transmit context.
Get-Property
Get-Property fail
Get-Property reply
Length of header in DMP
Local component DMP layer structure
Number of property subscriptions to accept
DMP messsage vectors (commands)
int dmp_newblock(struct dmptcxt_s *tcxt,
int *size)
Allocate and open a new DMP PDU block for the given transmit context.
uint8_t *dmp_openpdu(struct dmptcxt_s *tcxt,
uint16_t vecnrange,
struct adspec_s *ads,
int size)
Open a new PDU with the message type and address format given by vecnrange.
DMP (DDL appendix B)
Device Management Protocol (DMP section 13)
Device Management Protocol (EPI-19)
Remote component DMP layer structure
Reason codes (From DMP spec)
int dmp_register(ifMC(struct Lcomponent_s *Lcomp))
Register a local component for DMP access.
void dmp_sdtRx(struct member_s *memb,
const uint8_t *pdus,
int blocksize,
void *ref)
This is a callback function which must be passed to SDT to have Acacian’s DMP code parse and handle incoming DMP.
Set-Property
Set-Property fail
Eubscribe
Subscribe accept
Subscribe reject
Synchronization event
void dmp_truncatepdu(struct dmptcxt_s *tcxt,
uint32_t count,
uint8_t *nxtp)
Truncate and close the current PDU at a smaller size/count than specified when it was opened.
Unsubscribe
Length of vector in DMP
Address, and count and increment if range, are 1 byte each
Address, and count and increment if range, are 2 bytes each
Address, and count and increment if range, are 4 bytes each
Illegal value
Redundant in ACN-2010 (applied to obsolete virtual addresses)
Range address, no property values (e.g.
Range address, single value for all properties in range
Range address, one value per property in range
A single property
Mask to select just the address size from header field
Mask to select just the address type from header field
static void dmpconnect(char **bpp)
Open a DMP connection to the specified device.
DMP address and property handling.
DMP address and property mapping
Contains information required for DMP access to a property.
“illegal” data value supplied
property does not support event generation
requester does not have permission for request
property is not readable by Get-Property
unspecified resource limit
device cannot accept subscriptions (does not generate events)
property does not exist
property is not writeable by Set-Property
success
unspecified refusal or failure
DMX512 and E1.31 access in DDL descriptions
static void dodiscover()
Initiate SLP discovery.
static void dosubscribe(char **bpp,
bool subs)
Construct and send a subscribe message.
Each list member structure contains two pointers lnk.r and lnk.l pointing to its right and left neighbours.
void drop_member(struct member_s *memb,
uint8_t reason)
Drop a member from both its channels.
Close