$#! · 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
 Tailoring and Optimizing for specific applications
 Testing Addresses for Property Match
 Timers,Threads,Queues and Polling
 Transmit buffer management
 Transport protocols
 UACN management
 Using Acacian
 UUID iteration macros
 UUID search
 UUID structure
 UUID tracking
 wrapper flags
Acacian provides many compile-time switches to customize your build – see documentation in acncfg.h.
static void term_event(uint32_t evf,
void *evptr)
Input has arrived from the terminal.
static inline int testbit(const uint8_t *uuid,
uuidtst_t tstloc)
Return 1 if the bit from uuid defined by tstloc is set, 0 if clear.
There is an inner poll loop and event queue in event.c.
Convert binary t o hexadecimal strings
Tokens are statically declared and have an enumeration and a string value.
static int tokmatchofs(const ddlchar_t *str,
const struct allowtok_s *allowed)
static tok_t tokmatchtok(const ddlchar_t *str,
const struct allowtok_s *allowed)
This has been simplified by observing that there are few if any realistic use-cases for packing multiple PDUs at the root layer We therefore do not support this on send (though we still correctly receive them).
DMP may operate over multiple transport protocols.
Outgoing wrappers.
void type_bitmap_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_boolean_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_char_UTF_16_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_char_UTF_32_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_char_UTF_8_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_enum_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_fixBinob_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_float_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_sint_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_string_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_uint_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
void type_varBinob_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
The UACN (User Assigned Component Name) is specified in EPI-19 (discovery).
void uacn_change(const uint8_t *dp,
int size)
Change the value of our UACN.
void uacn_close()
Call after a component is de-registered
UACN default.
void uacn_init(const char *cidstr)
Initialize our UACN from a file.
extern int unlinkuuid(struct uuidset_s *set,
const uint8_t *uuid)
Removes uuid from the set
explicitly mark a variable or argument as unused to avoid “unused variable” compiler warnings.
void URI_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
static void usage(bool fail)
Print a usage message and exit.
The way you use Acacian will depend very much on your application.
These macros iterate over all the UUIDs stored in a set in sorted order without recursion.
There are several places where we need to store records indexed by UUID which need highly optimized lookup.
Connecting source CIDs as received in incoming packets, dicovery etc.
Manipulation and tracking of UUIDs
UUID conversion, handling and tracking
void UUID_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
char * uuid2str(const uint8_t *uuid,
char *uuidstr)
generate a UUID string Return a pointer to start of string String is fixed length CID_STR_SIZE (including Nul terminator) e.g.
8-bit equivalent of VECTOR_FLAG
if set vector is present
void volatile_bva(struct dcxt_s *dcxp,
const struct bv_s *bv)
static bool wordmatch(char **str,
const char *word,
int minlen)
Match a command word.
Message is to all members of the channel.
Do not add background ACKs to the wrapper.
Do not automatically flush full or incompatible wrappers.
Message doesn’t care whether wrapper is reliable or not.
Message requires unreliable wrapper.
Message requires reliable wrapper.
Message is a reply (SDT sets the association field appropriately).
When accumulating messages in a wrapper, some require reliable transmission.
void xformtoindx(union addrmap_u *amap)
zero out a structure starting at member through to the end