#ifndef _PICL_H
#define _PICL_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#define PICL_VERSION_1 0x1
typedef uint64_t picl_nodehdl_t;
typedef uint64_t picl_prophdl_t;
#define PICL_PROPNAMELEN_MAX 256
#define PICL_CLASSNAMELEN_MAX (PICL_PROPNAMELEN_MAX - sizeof ("__"))
#define PICL_PROPSIZE_MAX (512 * 1024)
#define PICL_READ 0x1
#define PICL_WRITE 0x2
#define PICL_VOLATILE 0x4
typedef enum {
PICL_SUCCESS = 0x0,
PICL_FAILURE,
PICL_NORESPONSE,
PICL_UNKNOWNSERVICE,
PICL_NOTINITIALIZED,
PICL_INVALIDARG,
PICL_VALUETOOBIG,
PICL_PROPNOTFOUND,
PICL_NOTTABLE,
PICL_NOTNODE,
PICL_NOTPROP,
PICL_ENDOFLIST,
PICL_PROPEXISTS,
PICL_NOTWRITABLE,
PICL_PERMDENIED,
PICL_INVALIDHANDLE,
PICL_STALEHANDLE,
PICL_NOTSUPPORTED,
PICL_TIMEDOUT,
PICL_CANTDESTROY,
PICL_TREEBUSY,
PICL_CANTPARENT,
PICL_RESERVEDNAME,
PICL_INVREFERENCE,
PICL_WALK_CONTINUE,
PICL_WALK_TERMINATE,
PICL_NODENOTFOUND,
PICL_NOSPACE,
PICL_NOTREADABLE,
PICL_PROPVALUNAVAILABLE
} picl_errno_t;
typedef enum {
PICL_PTYPE_UNKNOWN = 0x0,
PICL_PTYPE_VOID,
PICL_PTYPE_INT,
PICL_PTYPE_UNSIGNED_INT,
PICL_PTYPE_FLOAT,
PICL_PTYPE_REFERENCE,
PICL_PTYPE_TABLE,
PICL_PTYPE_TIMESTAMP,
PICL_PTYPE_BYTEARRAY,
PICL_PTYPE_CHARSTRING
} picl_prop_type_t;
typedef struct {
picl_prop_type_t type;
unsigned int accessmode;
size_t size;
char name[PICL_PROPNAMELEN_MAX];
} picl_propinfo_t;
extern int picl_initialize(void);
extern int picl_shutdown(void);
extern int picl_get_root(picl_nodehdl_t *nodehandle);
extern int picl_get_propval(picl_prophdl_t proph, void *valbuf,
size_t sz);
extern int picl_get_propval_by_name(picl_nodehdl_t nodeh,
const char *propname, void *valbuf, size_t sz);
extern int picl_set_propval(picl_prophdl_t proph, void *valbuf,
size_t sz);
extern int picl_set_propval_by_name(picl_nodehdl_t nodeh,
const char *propname, void *valbuf, size_t sz);
extern int picl_get_propinfo(picl_prophdl_t proph, picl_propinfo_t *pi);
extern int picl_get_first_prop(picl_nodehdl_t nodeh, picl_prophdl_t *proph);
extern int picl_get_next_prop(picl_prophdl_t proph, picl_prophdl_t *nexth);
extern int picl_get_prop_by_name(picl_nodehdl_t nodeh, const char *nm,
picl_prophdl_t *ph);
extern int picl_get_next_by_row(picl_prophdl_t thish, picl_prophdl_t *proph);
extern int picl_get_next_by_col(picl_prophdl_t thish, picl_prophdl_t *proph);
extern int picl_wait(unsigned int secs);
extern char *picl_strerror(int err);
extern int picl_walk_tree_by_class(picl_nodehdl_t rooth,
const char *classname, void *c_args,
int (*callback_fn)(picl_nodehdl_t hdl, void *args));
extern int picl_get_propinfo_by_name(picl_nodehdl_t nodeh, const char *pname,
picl_propinfo_t *pinfo, picl_prophdl_t *proph);
extern int picl_find_node(picl_nodehdl_t rooth, char *pname,
picl_prop_type_t ptype, void *pval, size_t valsize,
picl_nodehdl_t *retnodeh);
extern int picl_get_node_by_path(const char *piclpath, picl_nodehdl_t *nodeh);
extern int picl_get_frutree_parent(picl_nodehdl_t devh, picl_nodehdl_t *fruh);
#define PICL_NODE_ROOT "/"
#define PICL_NODE_PLATFORM "platform"
#define PICL_NODE_OBP "obp"
#define PICL_NODE_FRUTREE "frutree"
#define PICL_PROP_NAME "name"
#define PICL_PROP_CLASSNAME "_class"
#define PICL_PROP_PARENT "_parent"
#define PICL_PROP_CHILD "_child"
#define PICL_PROP_PEER "_peer"
#define PICL_CLASS_PICL "picl"
#ifdef __cplusplus
}
#endif
#endif