[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(&lt_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(&lt_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(&lt_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