data_point.c
Go to the documentation of this file.
1 
10 #include "data_point.h"
11 #include "mcl_core/mcl_memory.h"
13 
15 {
16  mcl_error_t code = MCL_OK;
17 
18  MCL_DEBUG_ENTRY("mcl_data_point_t **data_point = <%p>", data_point);
19 
20  // Null check.
21  MCL_ASSERT_NOT_NULL(data_point, code);
22 
23  // Allocate memory for data point.
24  if (MCL_NULL != MCL_NEW(*data_point))
25  {
26  // Set initial values.
27  (*data_point)->custom_data = MCL_NULL;
28  (*data_point)->description = MCL_NULL;
29  (*data_point)->id = MCL_NULL;
30  (*data_point)->name = MCL_NULL;
31  (*data_point)->type = MCL_NULL;
32  (*data_point)->unit = MCL_NULL;
33  }
34  else
35  {
36  MCL_ERROR_STRING("Not enough memory to allocate new data point.");
37  code = MCL_OUT_OF_MEMORY;
38  }
39 
41  MCL_DEBUG_LEAVE("retVal = <%d>", code);
42  return code;
43 }
44 
46 {
47  mcl_error_t code;
48 
49  MCL_DEBUG_ENTRY("mcl_data_point_t *data_point = <%p>, E_MCL_DATA_POINT_PARAMETER parameter = <%d>, const void *value = <%p>", data_point, parameter, value);
50 
51  // Null check.
52  MCL_ASSERT_NOT_NULL(data_point, code);
53  MCL_ASSERT_NOT_NULL(value, code);
54 
55  switch (parameter)
56  {
58  code = mcl_string_util_reset(value, &data_point->id);
59  break;
60 
62  code = mcl_string_util_reset(value, &data_point->name);
63  break;
64 
66  code = mcl_string_util_reset(value, &data_point->description);
67  break;
68 
70  code = mcl_string_util_reset(value, &data_point->type);
71  break;
72 
74  code = mcl_string_util_reset(value, &data_point->unit);
75  break;
76 
78  mcl_json_util_destroy(&data_point->custom_data);
79  code = mcl_json_util_duplicate((const mcl_json_t *) value, &data_point->custom_data);
80  break;
81 
82  default:
83  code = MCL_INVALID_PARAMETER;
84  break;
85  }
86 
88  MCL_DEBUG_LEAVE("retVal = <%d>", code);
89  return code;
90 }
91 
93 {
94  mcl_error_t code = MCL_OK;
95 
96  MCL_DEBUG_ENTRY("data_point_t *data_point = <%p>", data_point);
97 
98  // Checks whether all mandatory parameters of a data point are set or not.
99  if ((MCL_NULL == data_point->id) || (MCL_NULL == data_point->name) || (MCL_NULL == data_point->type) || (MCL_NULL == data_point->unit))
100  {
101  code = MCL_INVALID_PARAMETER;
102  }
103 
104  MCL_DEBUG_LEAVE("retVal = <%d>", code);
105  return code;
106 }
107 
109 {
110  MCL_DEBUG_ENTRY("mcl_data_point_t **data_point = <%p>", data_point);
111 
112  // Destroys the data point data structure.
113  if ((MCL_NULL != data_point) && (MCL_NULL != *data_point))
114  {
115  MCL_FREE((*data_point)->id);
116  MCL_FREE((*data_point)->name);
117  MCL_FREE((*data_point)->description);
118  MCL_FREE((*data_point)->type);
119  MCL_FREE((*data_point)->unit);
120  mcl_json_util_destroy(&(*data_point)->custom_data);
121  MCL_FREE(*data_point);
122  }
123 
124  MCL_DEBUG_LEAVE("retVal = void");
125 }
#define MCL_FUNCTION_LEAVE_LABEL
E_MCL_DATA_POINT_PARAMETER
MCL_OK
struct mcl_data_point_t mcl_data_point_t
char * id
Agent-unique identifier of the data point.
Definition: data_point.h:19
void mcl_json_t
mcl_error_t mcl_data_point_set_parameter(mcl_data_point_t *data_point, E_MCL_DATA_POINT_PARAMETER parameter, const void *value)
Definition: data_point.c:45
MCL_CORE_EXPORT mcl_error_t mcl_string_util_reset(const void *value, char **target)
mcl_int32_t mcl_error_t
void mcl_data_point_destroy(mcl_data_point_t **data_point)
Definition: data_point.c:108
#define MCL_DEBUG_ENTRY(...)
#define MCL_ERROR_STRING(string)
MCL_CORE_EXPORT void mcl_json_util_destroy(mcl_json_t **root)
char * name
Name of the data point.
Definition: data_point.h:20
#define MCL_NEW(p)
mcl_error_t data_point_validate(data_point_t *data_point)
Definition: data_point.c:92
#define MCL_NULL
mcl_error_t mcl_data_point_initialize(mcl_data_point_t **data_point)
Definition: data_point.c:14
#define MCL_FREE(p)
Data point module interface header file.
#define MCL_ASSERT_NOT_NULL(argument, return_variable)
char * unit
Measurement unit of the data point.
Definition: data_point.h:23
Data point module header file.
char * type
Type of the data point.
Definition: data_point.h:22
MCL_CORE_EXPORT mcl_error_t mcl_json_util_duplicate(const mcl_json_t *source_json, mcl_json_t **duplicated_json)
MCL_OUT_OF_MEMORY
MCL_INVALID_PARAMETER
#define MCL_DEBUG_LEAVE(...)