Functions to Access the Real-time Vehicle Database (C-Interface). More...
#include <errno.h>
#include <pthread.h>
#include "kogmo_rtdb_types.h"
Go to the source code of this file.
Defines | |
#define | _const |
constant argument, but irrelevant in C | |
#define | HAVE_DEFINED_setstatus |
#define | KOGMO_RTDB_ERR_NOPERM EACCES |
13 Permission denied | |
#define | KOGMO_RTDB_ERR_NOTFOUND ENOENT |
2 Object/Process not found | |
#define | KOGMO_RTDB_ERR_NOMEMORY ENOMEM |
12 Out of Memory | |
#define | KOGMO_RTDB_ERR_INVALID EINVAL |
22 Invalid Argument(s) | |
#define | KOGMO_RTDB_ERR_OUTOFOBJ EMFILE |
24 Out of Object/Process Slots | |
#define | KOGMO_RTDB_ERR_NOTUNIQ EEXIST |
17 Unique Object already exists | |
#define | KOGMO_RTDB_ERR_UNKNOWN EPERM |
1 General/unspecified error (-1) | |
#define | KOGMO_RTDB_ERR_CONNDENY ECONNREFUSED |
111 Connection refused | |
#define | KOGMO_RTDB_ERR_NOCONN ENOTCONN |
107 Not connected to the RTDB, can be returned by any function with a database handle, | |
#define | KOGMO_RTDB_ERR_HISTWRAP ESTALE |
even if not explicitly specified as possible return value | |
#define | KOGMO_RTDB_ERR_TOOFAST EAGAIN |
11 Updates too fast, try again | |
#define | KOGMO_RTDB_ERR_TIMEOUT ETIMEDOUT |
Waiting for data timed out. | |
Functions | |
int | kogmo_rtdb_obj_initinfo (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_info_t *metadata_p, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objsize_t size_max) |
Initialize Metadata for a new Object. | |
kogmo_rtdb_objid_t | kogmo_rtdb_obj_insert (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_info_t *metadata_p) |
Insert a new Object into the Database. | |
int | kogmo_rtdb_obj_delete (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_info_t *metadata_p) |
Delete an existing Object. | |
int | kogmo_rtdb_obj_readinfo (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, kogmo_rtdb_obj_info_t *metadata_p) |
Read the Metadata of an Object given by its Object-ID. | |
char * | kogmo_rtdb_obj_dumpinfo_str (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_info_t *metadata_p) |
Dump the Metadata of a given Object into an ASCII-String. | |
kogmo_rtdb_objid_t | kogmo_rtdb_obj_searchinfo (kogmo_rtdb_handle_t *db_h, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objid_t parent_oid, kogmo_rtdb_objid_t proc_oid, kogmo_timestamp_t ts, kogmo_rtdb_objid_list_t idlist, int nth) |
Find Objects by their Name, Parent, creating Process and Time. | |
kogmo_rtdb_objid_t | kogmo_rtdb_obj_searchinfo_wait (kogmo_rtdb_handle_t *db_h, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objid_t parent_oid, kogmo_rtdb_objid_t proc_oid) |
Search and Wait until an Object specified by its Name, Parent, creating Process and Time exists. | |
kogmo_rtdb_objid_t | kogmo_rtdb_obj_searchinfo_wait_until (kogmo_rtdb_handle_t *db_h, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objid_t parent_oid, kogmo_rtdb_objid_t proc_oid, kogmo_timestamp_t wakeup_ts) |
Search and Wait until an Object specified by its Name, Parent, creating Process and Time exists, but return after a Timeout. | |
int | kogmo_rtdb_obj_searchinfo_waitnext (kogmo_rtdb_handle_t *db_h, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objid_t parent_oid, kogmo_rtdb_objid_t proc_oid, kogmo_rtdb_objid_list_t known_idlist, kogmo_rtdb_objid_list_t added_idlist, kogmo_rtdb_objid_list_t deleted_idlist) |
Watch for the Creation and Deletion of Objects matching certain criteria and Wait until there is a Change. | |
int | kogmo_rtdb_obj_searchinfo_waitnext_until (kogmo_rtdb_handle_t *db_h, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objid_t parent_oid, kogmo_rtdb_objid_t proc_oid, kogmo_rtdb_objid_list_t known_idlist, kogmo_rtdb_objid_list_t added_idlist, kogmo_rtdb_objid_list_t deleted_idlist, kogmo_timestamp_t wakeup_ts) |
Watch for the Creation and Deletion of Objects matching certain criteria and Wait until there is a Change, but return after a Timeout. | |
int | kogmo_rtdb_obj_initdata (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_info_t *metadata_p, void *data_p) |
Initialize a new data block for an existing object. | |
int | kogmo_rtdb_obj_writedata (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, void *data_p) |
Write the local Data block of an Object to the Database. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_p, kogmo_rtdb_objsize_t size) |
Read the latest Data of an Object from the Database. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_older (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_p, kogmo_rtdb_objsize_t size) |
Read the Data of an Object committed before a given Timestamp. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_younger (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_p, kogmo_rtdb_objsize_t size) |
Read the Data of an Object committed after a given Timestamp. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_datatime (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_p, kogmo_rtdb_objsize_t size) |
Read the Data of an Object from the Database that was valid for the given Data Timestamp. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_dataolder (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_p, kogmo_rtdb_objsize_t size) |
Read the Data of Object that has an Data Timestamp older than a given Timestamp. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_datayounger (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_p, kogmo_rtdb_objsize_t size) |
Read the Data of Object that has an Data Timestamp younger than a given Timestamp. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_waitnext (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t old_ts, void *data_p, kogmo_rtdb_objsize_t size) |
Get the latest Data for an Object that has been committed after a given timestamp, and wait if there is no newer data. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_waitnext_ptr (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t old_ts, void *data_p, kogmo_rtdb_objsize_t size) |
kogmo_rtdb_obj_readdata_waitnext() with pointer. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_ptr (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t ts, void *data_pp) |
Get a Pointer to the latest Data of an Object within the Database. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_writedata_ptr_begin (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, void *data_pp) |
Start pointer-based write (fast but dangerous). | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_writedata_ptr_commit (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, void *data_pp) |
Finish pointer-based write and publish data. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_waitnext_until (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t old_ts, void *data_p, kogmo_rtdb_objsize_t size, kogmo_timestamp_t wakeup_ts) |
kogmo_rtdb_obj_readdata_waitnext() with wakeup. see: kogmo_rtdb_obj_readdata_waitnext() | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdata_waitnext_until_ptr (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_objid_t oid, kogmo_timestamp_t old_ts, void *data_p, kogmo_rtdb_objsize_t size, kogmo_timestamp_t wakeup_ts) |
kogmo_rtdb_obj_readdata_waitnext_ptr() with wakeup. see: kogmo_rtdb_obj_readdata_waitnext_ptr() | |
kogmo_timestamp_t | kogmo_rtdb_timestamp_now (kogmo_rtdb_handle_t *db_h) |
Get absolute Timestamp for current Time within the given database (can be different to kogmo_timestamp_now() when in simulation mode. | |
int | kogmo_rtdb_timestamp_set (kogmo_rtdb_handle_t *db_h, kogmo_timestamp_t new_ts) |
Set current Time to the given absolute Timestamp. This has only an effect if the rtdb is in simulation mode (kogmo_rtdb_man -s) and the clients use kogmo_rtdb_timestamp_now() instead of kogmo_timestamp_now()). | |
int | kogmo_rtdb_connect_initinfo (kogmo_rtdb_connect_info_t *conninfo, _const char *dbhost, _const char *procname, float cycletime) |
Init Info for a new Database Connection This does not connect. It's only for convenience. See kogmo_rtdb_connect_info_t. | |
kogmo_rtdb_objid_t | kogmo_rtdb_connect (kogmo_rtdb_handle_t **db_h, kogmo_rtdb_connect_info_t *conninfo) |
Open Connection to Real-time Vehicle Database. | |
int | kogmo_rtdb_disconnect (kogmo_rtdb_handle_t *db_h, void *discinfo) |
int | kogmo_rtdb_setstatus (kogmo_rtdb_handle_t *db_h, uint32_t status, _const char *msg, uint32_t flags) |
int | kogmo_rtdb_cycle_done (kogmo_rtdb_handle_t *db_h, uint32_t flags) |
int | kogmo_rtdb_pthread_create (kogmo_rtdb_handle_t *db_h, pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) |
int | kogmo_rtdb_pthread_kill (kogmo_rtdb_handle_t *db_h, pthread_t thread, int sig) |
int | kogmo_rtdb_pthread_join (kogmo_rtdb_handle_t *db_h, pthread_t thread, void **value_ptr) |
int | kogmo_rtdb_sleep_until (kogmo_rtdb_handle_t *db_h, _const kogmo_timestamp_t wakeup_ts) |
int | kogmo_rtdb_obj_searchinfo_lists_nonblocking (kogmo_rtdb_handle_t *db_h, _const char *name, kogmo_rtdb_objtype_t otype, kogmo_rtdb_objid_t parent_oid, kogmo_rtdb_objid_t proc_oid, kogmo_rtdb_objid_list_t known_idlist, kogmo_rtdb_objid_list_t added_idlist, kogmo_rtdb_objid_list_t deleted_idlist) |
Temporary solution for simulation because of thread-blocking (boost problem?) similar to kogmo_rtdb_obj_searchinfo_waitnext() but non-blocking. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdataslot_ptr (kogmo_rtdb_handle_t *db_h, int32_t mode, int32_t offset, kogmo_rtdb_obj_slot_t *objslot, void *data_pp) |
(internal) Function to access object history slot-by-slot mode: 0=get latest + init objslot (use this first) 1=check old objslot + use offset for reading (use this afterwards and set offset) -1=use offset for reading (don't check old objslot - will not detect a wrap-around) | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdataslot_init (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_slot_t *objslot, kogmo_rtdb_objid_t oid) |
Comfortable Function to access object history slot-by-slot see examples/kogmo_rtdb_slotreader.c for an example. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdataslot_relative (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_slot_t *objslot, int offset, void *data_p, kogmo_rtdb_objsize_t size) |
Comfortable Function to access object history slot-by-slot see examples/kogmo_rtdb_slotreader.c for an example. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdataslot_relative_ptr (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_slot_t *objslot, int offset, void *data_pp) |
Comfortable Function to access object history slot-by-slot. | |
kogmo_rtdb_objsize_t | kogmo_rtdb_obj_readdataslot_check (kogmo_rtdb_handle_t *db_h, kogmo_rtdb_obj_slot_t *objslot) |
Comfortable Function to access object history slot-by-slot. | |
Variables | |
int | kogmo_rtdb_debug |
current debug-level (internal) |
Functions to Access the Real-time Vehicle Database (C-Interface).
Copyright (c) 2003-2006 Matthias Goebl <matthias.goebl*goebl.net> Lehrstuhl fuer Realzeit-Computersysteme (RCS) Technische Universitaet Muenchen (TUM)
Definition in file kogmo_rtdb_funcs.h.
#define _const |
constant argument, but irrelevant in C
Definition at line 21 of file kogmo_rtdb_funcs.h.
kogmo_rtdb_objsize_t kogmo_rtdb_obj_readdataslot_check | ( | kogmo_rtdb_handle_t * | db_h, | |
kogmo_rtdb_obj_slot_t * | objslot | |||
) |
Comfortable Function to access object history slot-by-slot.
kogmo_rtdb_objsize_t kogmo_rtdb_obj_readdataslot_init | ( | kogmo_rtdb_handle_t * | db_h, | |
kogmo_rtdb_obj_slot_t * | objslot, | |||
kogmo_rtdb_objid_t | oid | |||
) |
Comfortable Function to access object history slot-by-slot see examples/kogmo_rtdb_slotreader.c for an example.
kogmo_rtdb_objsize_t kogmo_rtdb_obj_readdataslot_ptr | ( | kogmo_rtdb_handle_t * | db_h, | |
int32_t | mode, | |||
int32_t | offset, | |||
kogmo_rtdb_obj_slot_t * | objslot, | |||
void * | data_pp | |||
) |
(internal) Function to access object history slot-by-slot mode: 0=get latest + init objslot (use this first) 1=check old objslot + use offset for reading (use this afterwards and set offset) -1=use offset for reading (don't check old objslot - will not detect a wrap-around)
kogmo_rtdb_objsize_t kogmo_rtdb_obj_readdataslot_relative | ( | kogmo_rtdb_handle_t * | db_h, | |
kogmo_rtdb_obj_slot_t * | objslot, | |||
int | offset, | |||
void * | data_p, | |||
kogmo_rtdb_objsize_t | size | |||
) |
Comfortable Function to access object history slot-by-slot see examples/kogmo_rtdb_slotreader.c for an example.
kogmo_rtdb_objsize_t kogmo_rtdb_obj_readdataslot_relative_ptr | ( | kogmo_rtdb_handle_t * | db_h, | |
kogmo_rtdb_obj_slot_t * | objslot, | |||
int | offset, | |||
void * | data_pp | |||
) |
Comfortable Function to access object history slot-by-slot.
int kogmo_rtdb_obj_searchinfo_lists_nonblocking | ( | kogmo_rtdb_handle_t * | db_h, | |
_const char * | name, | |||
kogmo_rtdb_objtype_t | otype, | |||
kogmo_rtdb_objid_t | parent_oid, | |||
kogmo_rtdb_objid_t | proc_oid, | |||
kogmo_rtdb_objid_list_t | known_idlist, | |||
kogmo_rtdb_objid_list_t | added_idlist, | |||
kogmo_rtdb_objid_list_t | deleted_idlist | |||
) |
Temporary solution for simulation because of thread-blocking (boost problem?) similar to kogmo_rtdb_obj_searchinfo_waitnext() but non-blocking.