summaryrefslogtreecommitdiff
path: root/cleopatre/application/libspid
diff options
context:
space:
mode:
authorBelkadi & Buret2011-06-27 18:47:09 +0200
committerBelkadi & Buret2011-06-30 15:16:40 +0200
commit12fb1433c73e569c99c7459613234161952a12f9 (patch)
tree7abcd6594868f1539945ba93813a674d71eb30ce /cleopatre/application/libspid
parentcc75d883c5e7dcafdb04cfaea7e248dc2f69e4bb (diff)
cleo/app/libspid: add libspid_hpav_info_read_file(), refs #2449
Add a libspid function that returns the contents of the hpav.info file.
Diffstat (limited to 'cleopatre/application/libspid')
-rw-r--r--cleopatre/application/libspid/inc/defs.h2
-rw-r--r--cleopatre/application/libspid/inc/libspid.h17
-rw-r--r--cleopatre/application/libspid/src/hpav_info.c67
3 files changed, 86 insertions, 0 deletions
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
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \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;
+}