diff --git a/moberg.c b/moberg.c index 0f4972e80ef1c4ab452d0f2c45a734cdaab5b7dd..59de337df28ae1d040e9933a4bb8c4c43a3ba1a1 100644 --- a/moberg.c +++ b/moberg.c @@ -90,7 +90,10 @@ static void parse_config_dir_at( static int install_config(struct moberg *moberg) { - return 1; + struct moberg_install_channels install = { + .context=moberg + }; + return moberg_config_install_channels(moberg->config, &install); } struct moberg *moberg_new( diff --git a/moberg.h b/moberg.h index d2cb9d69b0d8a75b72ecfd6a4779769b6799cf08..23e49c4afe4e88eee7461ad72fb97eccde357c3c 100644 --- a/moberg.h +++ b/moberg.h @@ -2,12 +2,14 @@ #define __MOBERG_H__ #include <stdio.h> -#include <moberg_config.h> struct moberg; +struct moberg_config; + enum moberg_status { moberg_OK }; struct moberg *moberg_new(struct moberg_config *config); + void moberg_free(struct moberg *moberg); /* Input/output functions */ diff --git a/moberg_config.c b/moberg_config.c index 9a98854d8e91c16291365b7f1e31cd04078ff856..98491e068497723b9489bc6ece7caa842435e001 100644 --- a/moberg_config.c +++ b/moberg_config.c @@ -30,6 +30,7 @@ struct moberg_config struct device_entry *next; struct moberg_device *device; } *device; +#if 0 struct { int capacity; struct analog_in_entry { @@ -65,6 +66,7 @@ struct moberg_config struct moberg_device_encoder_in *channel; } *value; } encoder_in; +#endif }; struct moberg_config *moberg_config_new() @@ -73,6 +75,7 @@ struct moberg_config *moberg_config_new() if (result) { result->device = NULL; +#if 0 result->analog_in.capacity = 0; result->analog_in.value = NULL; result->analog_out.capacity = 0; @@ -83,6 +86,7 @@ struct moberg_config *moberg_config_new() result->digital_out.value = NULL; result->encoder_in.capacity = 0; result->encoder_in.value = NULL; +#endif } return result; @@ -97,11 +101,13 @@ void moberg_config_free(struct moberg_config *config) moberg_device_free(tmp->device); free(tmp); } +#if 0 free(config->analog_in.value); free(config->analog_out.value); free(config->digital_in.value); free(config->digital_out.value); free(config->encoder_in.value); +#endif free(config); } @@ -130,6 +136,14 @@ int moberg_config_add_device(struct moberg_config *config, return 1; } +int moberg_config_install_channels(struct moberg_config *config, + struct moberg_install_channels *install) +{ + return moberg_device_install_channels(config->device->device, install); +} + + +#if 0 int moberg_config_add_analog_in(struct moberg_config *config, int index, struct moberg_device* device, @@ -190,3 +204,4 @@ err: return 0; } +#endif diff --git a/moberg_config.h b/moberg_config.h index d8a9ef2a6879e247c9a6969f229b37f2135d5bff..25401c303740abea1336a370cc3dfbd2929fb5a5 100644 --- a/moberg_config.h +++ b/moberg_config.h @@ -1,10 +1,9 @@ #ifndef __MOBERG_CONFIG_H__ #define __MOBERG_CONFIG_H__ +#include <moberg.h> #include <moberg_device.h> -struct moberg_config; - struct moberg_config *moberg_config_new(); void moberg_config_free(struct moberg_config *config); @@ -15,6 +14,10 @@ int moberg_config_join(struct moberg_config *dest, int moberg_config_add_device(struct moberg_config *config, struct moberg_device *device); +int moberg_config_install_channels(struct moberg_config *config, + struct moberg_install_channels *install); + +#if 0 int moberg_config_add_analog_in(struct moberg_config *config, int index, struct moberg_device* device, @@ -39,7 +42,6 @@ int moberg_config_add_encoder_in(struct moberg_config *config, int index, struct moberg_device* device, struct moberg_device_encoder_in *channel); - - +# endif #endif diff --git a/moberg_device.c b/moberg_device.c index 1ead53911e1399be0cca6b5ac2b890e2ddc9a6e1..0d7226e5f36a1c96a48926cafd9c832a9d6862de 100644 --- a/moberg_device.c +++ b/moberg_device.c @@ -214,4 +214,11 @@ int moberg_device_add_encoder_in(struct moberg_device* device, } return result; } - + +int moberg_device_install_channels(struct moberg_device *device, + struct moberg_install_channels *install) +{ + printf("INSTALL\n"); + return 1; +} + diff --git a/moberg_device.h b/moberg_device.h index 5fd0710da24b845a2c66ff9d6dbbbd266aab3fcc..275c540b21abd5e6e0d5c9cc86bff88e2c36f1e5 100644 --- a/moberg_device.h +++ b/moberg_device.h @@ -1,6 +1,7 @@ #ifndef __MOBERG_DEVICE_H__ #define __MOBERG_DEVICE_H__ +#include <moberg.h> #include <moberg_config.h> #include <moberg_parser.h> @@ -47,6 +48,15 @@ struct moberg_device_encoder_in { int (*read)(struct moberg_device_encoder_in_context *, long *value); }; +struct moberg_install_channels { + struct moberg *context; + int (*analog_in)(int index, struct moberg_device_analog_in *channel); + int (*analog_out)(int index, struct moberg_device_analog_out *channel); + int (*digital_in)(int index, struct moberg_device_digital_in *channel); + int (*digital_out)(int index, struct moberg_device_digital_in *channel); + int (*encoder_in)(int index, struct moberg_device_encoder_in *channel); +}; + struct moberg_parser_context; struct moberg_device; struct moberg_device_config; @@ -97,4 +107,8 @@ int moberg_device_add_digital_out(struct moberg_device* device, int moberg_device_add_encoder_in(struct moberg_device* device, struct moberg_device_encoder_in *channel); +int moberg_device_install_channels(struct moberg_device *device, + struct moberg_install_channels *install); + + #endif