From 12fb1433c73e569c99c7459613234161952a12f9 Mon Sep 17 00:00:00 2001 From: Belkadi & Buret Date: Mon, 27 Jun 2011 18:47:09 +0200 Subject: cleo/app/libspid: add libspid_hpav_info_read_file(), refs #2449 Add a libspid function that returns the contents of the hpav.info file. --- cleopatre/application/libspid/inc/defs.h | 2 + cleopatre/application/libspid/inc/libspid.h | 17 +++++++ cleopatre/application/libspid/src/hpav_info.c | 67 +++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 cleopatre/application/libspid/src/hpav_info.c (limited to 'cleopatre/application/libspid') diff --git a/cleopatre/application/libspid/inc/defs.h b/cleopatre/application/libspid/inc/defs.h index 938e502c96..6646753c22 100644 --- a/cleopatre/application/libspid/inc/defs.h +++ b/cleopatre/application/libspid/inc/defs.h @@ -68,6 +68,8 @@ #define LIBSPID_HPAV_INFO_STATUS_MAX_LEN 16 /** PLC stack CCo string maximum length */ #define LIBSPID_HPAV_INFO_CCO_MAX_LEN 8 +/** Number of items in hpav.info */ +#define LIBSPID_HPAV_INFO_ITEMS_COUNT (5) /* LIBSPID_SIGNAL_INFO_PATH */ /** Delimiter of "signal.info" file. */ diff --git a/cleopatre/application/libspid/inc/libspid.h b/cleopatre/application/libspid/inc/libspid.h index e6b91a0dfb..5e505cbe72 100644 --- a/cleopatre/application/libspid/inc/libspid.h +++ b/cleopatre/application/libspid/inc/libspid.h @@ -113,6 +113,20 @@ typedef enum { LIBSPID_SECU_SALT_TYPE_NB } libspid_secu_salt_type_t; +typedef struct +{ + /* status value */ + char status[LIBSPID_HPAV_INFO_STATUS_MAX_LEN]; + /* CCo value */ + char cco[LIBSPID_HPAV_INFO_CCO_MAX_LEN]; + /* backup CCo value */ + libspid_boolean_t is_backup_cco; + /* Simple Connect value */ + libspid_boolean_t is_sc; + /* Simple Connect button value */ + libspid_boolean_t is_sc_button; +} libspid_hpav_info_t; + /** Signal handler. */ typedef void (*libspid_signal_handler_t) (int); @@ -155,4 +169,7 @@ libspid_multicast_info_read_file (libspid_multicast_info_t *mcast_info, extern libspid_error_t libspid_multicast_info_write_file (libspid_multicast_info_t *mcast_info); +extern libspid_error_t +libspid_hpav_info_read_file (libspid_hpav_info_t *hpav_info); + #endif /* LIBSPID_H */ diff --git a/cleopatre/application/libspid/src/hpav_info.c b/cleopatre/application/libspid/src/hpav_info.c new file mode 100644 index 0000000000..4e259c64ed --- /dev/null +++ b/cleopatre/application/libspid/src/hpav_info.c @@ -0,0 +1,67 @@ +/* SPC300 bundle {{{ + * + * Copyright (C) 2009-2011 Spidcom + * + * <<>> + * + * }}} */ +/** + * \file application/libspid/src/hpav_info.c + * \brief function for reading the HPAV info file. + * \ingroup libspid + * + */ + +#include "libspid.h" + +libspid_error_t +libspid_hpav_info_read_file (libspid_hpav_info_t *hpav_info) +{ + char is_backup_cco_str[LIBSPID_BOOLEAN_STR_MAX_LEN] = {0}; + char is_sc_str[LIBSPID_BOOLEAN_STR_MAX_LEN] = {0}; + char is_sc_button_str[LIBSPID_BOOLEAN_STR_MAX_LEN] = {0}; + libspid_error_t ret; + + if (NULL == hpav_info) + { + return LIBSPID_ERROR_PARAM; + } + + const char *labels[LIBSPID_HPAV_INFO_ITEMS_COUNT] = + { + LIBSPID_HPAV_INFO_LABEL_STATUS, + LIBSPID_HPAV_INFO_LABEL_CCO, + LIBSPID_HPAV_INFO_LABEL_BACKUP_CCO, + LIBSPID_HPAV_INFO_LABEL_SC, + LIBSPID_HPAV_INFO_LABEL_SC_BUTTON + }; + + char *values[LIBSPID_HPAV_INFO_ITEMS_COUNT] = + { + hpav_info->status, + hpav_info->cco, + is_backup_cco_str, + is_sc_str, + is_sc_button_str + }; + + int buffers_len[LIBSPID_HPAV_INFO_ITEMS_COUNT]= + { + LIBSPID_HPAV_INFO_STATUS_MAX_LEN, + LIBSPID_HPAV_INFO_CCO_MAX_LEN, + LIBSPID_BOOLEAN_STR_MAX_LEN, + LIBSPID_BOOLEAN_STR_MAX_LEN, + LIBSPID_BOOLEAN_STR_MAX_LEN + }; + + ret = libspid_config_read_items (LIBSPID_HPAV_INFO_PATH, labels, values, + buffers_len, LIBSPID_HPAV_INFO_ITEMS_COUNT); + if (LIBSPID_SUCCESS == ret) + { + hpav_info->is_backup_cco = LIBSPID_GET_BOOLEAN (is_backup_cco_str); + hpav_info->is_sc = LIBSPID_GET_BOOLEAN (is_sc_str); + hpav_info->is_sc_button = LIBSPID_GET_BOOLEAN (is_sc_button_str); + } + + return ret; +} -- cgit v1.2.3