aboutsummaryrefslogtreecommitdiffstats
path: root/verteco.c
diff options
context:
space:
mode:
authorJonathan McCrohan <jmccrohan@gmail.com>2011-10-13 02:00:41 +0100
committerJonathan McCrohan <jmccrohan@gmail.com>2011-10-13 02:00:41 +0100
commite60a7cc135af7ee738d67ecc7bd02ce18963ace6 (patch)
treec6e8ee2ea6fe37547c7aeb68bbcd96f7c20b2fbb /verteco.c
parent6cfbf2dee130cc36a72d57adea0e9c04bb31f620 (diff)
downloadverteco-e60a7cc135af7ee738d67ecc7bd02ce18963ace6.tar.gz
Integrate libmodbus and libconfig
Diffstat (limited to 'verteco.c')
-rw-r--r--verteco.c60
1 files changed, 47 insertions, 13 deletions
diff --git a/verteco.c b/verteco.c
index a039952..91391dd 100644
--- a/verteco.c
+++ b/verteco.c
@@ -1,33 +1,67 @@
+/ gcc verteco.c -o verteco `pkg-config --libs --cflags libmodbus libconfig`
+
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
+#include <libconfig.h>
#include <modbus.h>
-#define SLAVE_ID 1
-#define START_ADDRESS 0
-#define NUMBER_REGISTERS 14
-
-#define DEBUG_MODE 0
+#define SLAVE_ID 1
+#define START_ADDRESS 0
+#define NUMBER_REGISTERS 14
+#define DEBUG 1
int main(int argc, char *argv[])
{
-if ( argc != 2 ){
+const char *CONFIG_FILE = "verteco.cfg";
+
+ config_t cfg;
+ //config_setting_t *setting;
+
+ const char *modbus_device_address;
+ int modbus_baud_rate;
+ int modbus_data_bits;
+ const char *modbus_parity;
+ int modbus_stop_bits;
+
+ config_init(&cfg);
+
+
+ if(!config_read_file(&cfg, CONFIG_FILE))
+ {
+ fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg),
+ config_error_line(&cfg), config_error_text(&cfg));
+ config_destroy(&cfg);
+ fprintf(stderr, "Unable to find CONFIG_FILE.\n");
return -1;
+ }
+
+ modbus_t *ctx;
+ uint16_t tab_reg[64];
+ int rc;
+ int i;
+
+ if(!(config_lookup_string(&cfg, "modbus.device", &modbus_device_address)
+ && config_lookup_int(&cfg, "modbus.baud", &modbus_baud_rate)
+ && config_lookup_int(&cfg, "modbus.data_bits", &modbus_data_bits)
+ && config_lookup_string(&cfg, "modbus.parity", &modbus_parity)
+ && config_lookup_int(&cfg, "modbus.stop_bits", &modbus_stop_bits))
+){
+ fprintf(stderr, "Check modbus configuration in configuration file.\n");
+ return -1;
}
+ if(DEBUG){
+ printf("%s %d %c %d %d\n",modbus_device_address, modbus_baud_rate, modbus_parity[0], modbus_data_bits, modbus_stop_bits);
+ }
-modbus_t *ctx;
-uint16_t tab_reg[64];
-int rc;
-int i;
+ctx = modbus_new_rtu(modbus_device_address, modbus_baud_rate, modbus_parity[0], modbus_data_bits, modbus_stop_bits);
-ctx = modbus_new_rtu(argv[1], 19200, 'E', 8, 1);
modbus_set_slave(ctx, SLAVE_ID);
-
-modbus_set_debug(ctx, DEBUG_MODE);
+modbus_set_debug(ctx, DEBUG);
if (ctx == NULL) {
fprintf(stderr, "Unable to create the libmodbus context\n");