1 // Copyright 2011 Juri Glass, Mathias Runge, Nadim El Sayed
2 // DAI-Labor, TU-Berlin
3 //
4 // This file is part of libSML.
5 //
6 // libSML is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 //
11 // libSML is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with libSML.  If not, see <http://www.gnu.org/licenses/>.
18 
19 #ifndef SML_GET_PROFILE_PACK_RESPONSE_H_
20 #define SML_GET_PROFILE_PACK_RESPONSE_H_
21 
22 #include "sml_shared.h"
23 #include "sml_octet_string.h"
24 #include "sml_time.h"
25 #include "sml_list.h"
26 #include "sml_tree.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 typedef struct {
33 	octet_string *server_id;
34 	sml_time *act_time; // specified by germans (current time was meant) ;)
35 	u32 *reg_period;
36 	sml_tree_path *parameter_tree_path;
37 	sml_sequence *header_list; 			// list of sml_prof_obj_header_entry
38 	sml_sequence *period_list;			// list of sml_prof_obj_period_entry
39 	octet_string *rawdata;  			// optional
40 	sml_signature *profile_signature; 	// optional
41 
42 } sml_get_profile_pack_response;
43 
44 sml_get_profile_pack_response *sml_get_profile_pack_response_init();
45 sml_get_profile_pack_response *sml_get_profile_pack_response_parse(sml_buffer *buf);
46 void sml_get_profile_pack_response_write(sml_get_profile_pack_response *msg, sml_buffer *buf);
47 void sml_get_profile_pack_response_free(sml_get_profile_pack_response *msg);
48 
49 typedef struct {
50 	octet_string *obj_name;
51 	sml_unit *unit;
52 	i8 *scaler;
53 } sml_prof_obj_header_entry;
54 
55 sml_prof_obj_header_entry *sml_prof_obj_header_entry_init();
56 sml_prof_obj_header_entry *sml_prof_obj_header_entry_parse(sml_buffer *buf);
57 void sml_prof_obj_header_entry_write(sml_prof_obj_header_entry *entry, sml_buffer *buf);
58 void sml_prof_obj_header_entry_free(sml_prof_obj_header_entry *entry);
59 
60 typedef struct {
61 	sml_time *val_time;
62 	u64 *status;
63 	sml_sequence *value_list;
64 	sml_signature *period_signature;
65 } sml_prof_obj_period_entry;
66 
67 sml_prof_obj_period_entry *sml_prof_obj_period_entry_init();
68 sml_prof_obj_period_entry *sml_prof_obj_period_entry_parse(sml_buffer *buf);
69 void sml_prof_obj_period_entry_write(sml_prof_obj_period_entry *entry, sml_buffer *buf);
70 void sml_prof_obj_period_entry_free(sml_prof_obj_period_entry *entry);
71 
72 typedef struct {
73 	sml_value *value;
74 	sml_signature *value_signature;
75 } sml_value_entry;
76 
77 sml_value_entry *sml_value_entry_init();
78 sml_value_entry *sml_value_entry_parse(sml_buffer *buf);
79 void sml_value_entry_write(sml_value_entry *entry, sml_buffer *buf);
80 void sml_value_entry_free(sml_value_entry *entry);
81 
82 #ifdef __cplusplus
83 }
84 #endif
85 
86 
87 #endif /* SML_GET_PROFILE_PACK_RESPONSE_H_ */
88 
89