[OSADL-svn-commits] r51 - in fddi-20070618-1-trunk: include/osadl src tests
OSADL repository commits
osadl-svn-commits at lists.osadl.org
Tue Oct 2 11:44:38 CEST 2007
Author: robert
Date: Wed Jul 11 17:40:47 2007
New Revision: 51
Log:
more modbus example stuff
Modified:
fddi-20070618-1-trunk/include/osadl/fddi.h
fddi-20070618-1-trunk/src/libfddi.c
fddi-20070618-1-trunk/src/libfddi_libmodbus.c
fddi-20070618-1-trunk/tests/GNUmakefile.am
fddi-20070618-1-trunk/tests/libfddi_examplebus.c
Modified: fddi-20070618-1-trunk/include/osadl/fddi.h
==============================================================================
--- fddi-20070618-1-trunk/include/osadl/fddi.h (original)
+++ fddi-20070618-1-trunk/include/osadl/fddi.h Wed Jul 11 17:40:47 2007
@@ -78,9 +78,29 @@
};
+typedef enum {
+
+ BOOL,
+
+} fddi_pv_type_enum_t;
+
struct fddi_pv {
+
+ /* FIXME: maybe put into generic list implementation */
struct fddi_pv *next;
struct fddi_pv *previous;
+
+ char *id_prefix;
+ int id_index;
+ char *id_postfix;
+ char *id;
+
+ fddi_param_t *param_list_head;
+ fddi_param_t *name;
+ fddi_pv_type_enum_t type;
+ unsigned int offset;
+ unsigned int bit;
+
};
struct fddi_tpu {
@@ -89,7 +109,7 @@
unsigned long flags;
struct fddi_tpu *next;
struct fddi_tpu *previous;
- fddi_pv_t *pv_list;
+ fddi_pv_t *pv_list_head;
char *payload;
};
Modified: fddi-20070618-1-trunk/src/libfddi.c
==============================================================================
--- fddi-20070618-1-trunk/src/libfddi.c (original)
+++ fddi-20070618-1-trunk/src/libfddi.c Wed Jul 11 17:40:47 2007
@@ -59,7 +59,11 @@
if (!attr)
return EINVAL;
- attr->fddi_device_name = fddi_device_name;
+ attr->fddi_device_name = malloc(strlen(fddi_device_name));
+ if (!attr->fddi_device_name)
+ return ENOMEM;
+
+ strcpy(attr->fddi_device_name, fddi_device_name);
return 0;
}
@@ -77,6 +81,7 @@
/* initialize instance variables */
memset(iface, 0, sizeof(fddi_iface_t));
+ iface->name = attr->fddi_device_name;
/* attach to backend library */
@@ -96,19 +101,19 @@
lt_dlerror();
/* register backend functions */
- iface->backend.configure = lt_dlsym(iface->backend_lib, "configure");
+ iface->backend.configure = lt_dlsym(iface->backend_lib, "fddi_backend_configure");
if ((error_string = lt_dlerror())) {
pthread_mutex_unlock(<_dl_mutex);
goto iface_init_err;
}
- iface->backend.setstate = lt_dlsym(iface->backend_lib, "setstate");
+ iface->backend.setstate = lt_dlsym(iface->backend_lib, "fddi_backend_setstate");
if ((error_string = lt_dlerror())) {
pthread_mutex_unlock(<_dl_mutex);
goto iface_init_err;
}
- iface->backend.cmd = lt_dlsym(iface->backend_lib, "cmd");
+ iface->backend.cmd = lt_dlsym(iface->backend_lib, "fddi_backend_cmd");
if ((error_string = lt_dlerror())) {
pthread_mutex_unlock(<_dl_mutex);
goto iface_init_err;
@@ -453,7 +458,7 @@
if ((!tpu) || (!pv))
return EINVAL;
- *pv = tpu->pv_list;
+ *pv = tpu->pv_list_head;
return 0;
}
Modified: fddi-20070618-1-trunk/src/libfddi_libmodbus.c
==============================================================================
--- fddi-20070618-1-trunk/src/libfddi_libmodbus.c (original)
+++ fddi-20070618-1-trunk/src/libfddi_libmodbus.c Wed Jul 11 17:40:47 2007
@@ -2,17 +2,91 @@
* fddi backend for libmodbus
*/
+#include <errno.h>
#include <stdio.h>
+#include <stdlib.h>
#include <osadl/fddi.h>
-int configure(fddi_iface_t *iface, const char *configfile, void *data)
+int fddi_backend_configure(fddi_iface_t *iface, const char *configfile, void *data)
{
+ fddi_tpu_t *tpu;
+ fddi_pv_t *pv1, *pv2, *pv3;
+
printf("parsing configfile: %s\n", configfile);
+ printf("for interface: %s\n", iface->name);
+
+ /*
+ * FIXME: add xml parser here, we configure this hard
+ * for a first test
+ */
+
+ tpu = calloc(1, sizeof(fddi_tpu_t));
+ if (!tpu)
+ goto out;
+
+ pv1 = calloc(1, sizeof(fddi_pv_t));
+ if (!tpu)
+ goto pv1;
+
+ pv2 = calloc(1, sizeof(fddi_pv_t));
+ if (!tpu)
+ goto pv2;
+
+ pv3 = calloc(1, sizeof(fddi_pv_t));
+ if (!tpu)
+ goto pv3;
+
+ iface->tpulist_head = tpu;
+ tpu->pv_list_head = pv1;
+
+ // pv1->id_prefix =
+ // pv1->id_index =
+ // pv1->id_postfix =
+ // pv1->id =
+ // pv1->param_list_head = NULL;
+ // pv1->name =
+ pv1->type = BOOL;
+ pv1->offset = 0;
+ pv1->bit = 0;
+ pv1->previous = NULL;
+ pv1->next = pv2;
+
+ // pv2->id_prefix =
+ // pv2->id_index =
+ // pv2->id_postfix =
+ // pv2->id =
+ // pv2->param_list_head = NULL;
+ // pv2->name =
+ pv2->type = BOOL;
+ pv2->offset = 0;
+ pv2->bit = 1;
+ pv2->previous = pv1;
+ pv2->next = pv3;
+
+ // pv3->id_prefix =
+ // pv3->id_index =
+ // pv3->id_postfix =
+ // pv3->id =
+ // pv3->param_list_head = NULL;
+ // pv3->name =
+ pv3->type = BOOL;
+ pv3->offset = 0;
+ pv3->bit = 2;
+ pv3->previous = pv2;
+ pv3->next = NULL;
return 0;
+pv3:
+ free(pv2);
+pv2:
+ free(pv1);
+pv1:
+ free(tpu);
+out:
+ return ENOMEM;
}
-int setstate(fddi_iface_t *iface, fddi_state_enum_t state)
+int fddi_backend_setstate(fddi_iface_t *iface, fddi_state_enum_t state)
{
int retval = -1;
@@ -32,7 +106,7 @@
return retval;
}
-int cmd(fddi_iface_t *iface, fddi_cmd_enum_t cmd)
+int fddi_backend_cmd(fddi_iface_t *iface, fddi_cmd_enum_t cmd)
{
int retval = -1;
Modified: fddi-20070618-1-trunk/tests/GNUmakefile.am
==============================================================================
--- fddi-20070618-1-trunk/tests/GNUmakefile.am (original)
+++ fddi-20070618-1-trunk/tests/GNUmakefile.am Wed Jul 11 17:40:47 2007
@@ -1,5 +1,4 @@
BACKEND_EXAMPLEBUS_TESTS = \
- test_fddi_examplebus1 \
test_fddi_examplebus_attach_backend \
test_fddi_examplebus_configure \
test_fddi_examplebus_cmd_start \
@@ -14,6 +13,8 @@
test_fddi_examplebus_setstate_preoperational \
test_fddi_examplebus_setstate_unconfigured
+# test_fddi_examplebus1
+
if BACKEND_LIBMODBUS
BACKEND_LIBMODBUS_TESTS = \
test_fddi_libmodbus1
Modified: fddi-20070618-1-trunk/tests/libfddi_examplebus.c
==============================================================================
--- fddi-20070618-1-trunk/tests/libfddi_examplebus.c (original)
+++ fddi-20070618-1-trunk/tests/libfddi_examplebus.c Wed Jul 11 17:40:47 2007
@@ -5,12 +5,12 @@
#include <stdio.h>
#include <osadl/fddi.h>
-int configure(fddi_iface_t *iface, const char *configfile, void *data)
+int fddi_backend_configure(fddi_iface_t *iface, const char *configfile, void *data)
{
return 0;
}
-int setstate(fddi_iface_t *iface, fddi_state_enum_t state)
+int fddi_backend_setstate(fddi_iface_t *iface, fddi_state_enum_t state)
{
int retval = -1;
@@ -30,7 +30,7 @@
return retval;
}
-int cmd(fddi_iface_t *iface, fddi_cmd_enum_t cmd)
+int fddi_backend_cmd(fddi_iface_t *iface, fddi_cmd_enum_t cmd)
{
int retval = -1;
More information about the OSADL-svn-commits
mailing list