implemented sml_get_profile_pack_response
This commit is contained in:
parent
17dcb0e993
commit
4bbe95db7c
2 changed files with 239 additions and 8 deletions
|
@ -34,8 +34,8 @@ typedef struct {
|
|||
sml_time *act_time; // specified by germans (current time was meant) ;)
|
||||
u32 *reg_period;
|
||||
sml_tree_path *parameter_tree_path;
|
||||
sml_sequence *header_list;
|
||||
sml_sequence *period_list;
|
||||
sml_sequence *header_list; // list of sml_prof_obj_header_entry
|
||||
sml_sequence *period_list; // list of sml_prof_obj_period_entry
|
||||
octet_string *rawdata; // optional
|
||||
sml_signature *profile_signature; // optional
|
||||
|
||||
|
@ -47,7 +47,6 @@ void sml_get_profile_pack_response_write(sml_get_profile_pack_response *msg, sml
|
|||
void sml_get_profile_pack_response_free(sml_get_profile_pack_response *msg);
|
||||
|
||||
typedef struct {
|
||||
|
||||
octet_string *obj_name;
|
||||
sml_unit *unit;
|
||||
i8 *scaler;
|
||||
|
@ -65,6 +64,21 @@ typedef struct {
|
|||
sml_signature *period_signature;
|
||||
} sml_prof_obj_period_entry;
|
||||
|
||||
sml_prof_obj_period_entry *sml_prof_obj_period_entry_init();
|
||||
sml_prof_obj_period_entry *sml_prof_obj_period_entry_parse(sml_buffer *buf);
|
||||
void sml_prof_obj_period_entry_write(sml_prof_obj_period_entry *entry, sml_buffer *buf);
|
||||
void sml_prof_obj_period_entry_free(sml_prof_obj_period_entry *entry);
|
||||
|
||||
typedef struct {
|
||||
sml_value *value;
|
||||
sml_signature *value_signature;
|
||||
} sml_value_entry;
|
||||
|
||||
sml_value_entry *sml_value_entry_init();
|
||||
sml_value_entry *sml_value_entry_parse(sml_buffer *buf);
|
||||
void sml_value_entry_write(sml_value_entry *entry, sml_buffer *buf);
|
||||
void sml_value_entry_free(sml_value_entry *entry);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -20,20 +20,237 @@
|
|||
#include <sml/sml_get_profile_pack_response.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// sml_get_profile_pack_response
|
||||
|
||||
sml_get_profile_pack_response *sml_get_profile_pack_response_init() {
|
||||
printf("NYI: %s\n", __FUNCTION__);
|
||||
return 0;
|
||||
sml_get_profile_pack_response *msg = (sml_get_profile_pack_response *) malloc(sizeof(sml_get_profile_pack_response));
|
||||
memset(msg, 0, sizeof(sml_get_profile_pack_response));
|
||||
return msg;
|
||||
}
|
||||
|
||||
sml_get_profile_pack_response *sml_get_profile_pack_response_parse(sml_buffer *buf){
|
||||
printf("NYI: %s\n", __FUNCTION__);
|
||||
sml_get_profile_pack_response *msg = sml_get_profile_pack_response_init();
|
||||
|
||||
if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (sml_buf_get_next_length(buf) != 8) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
msg->server_id = sml_octet_string_parse(buf);
|
||||
msg->act_time = sml_time_parse(buf);
|
||||
msg->reg_period = sml_u32_parse(buf);
|
||||
msg->parameter_tree_path = sml_tree_path_parse(buf);
|
||||
msg->header_list = sml_sequence_parse(buf, (void *) &sml_prof_obj_header_entry_parse, (void (*)(void *)) &sml_prof_obj_header_entry_free);
|
||||
msg->period_list = sml_sequence_parse(buf, (void *) &sml_prof_obj_period_entry_parse, (void (*)(void *)) &sml_prof_obj_period_entry_free);
|
||||
msg->rawdata = sml_octet_string_parse(buf);
|
||||
msg->profile_signature = sml_signature_parse(buf);
|
||||
|
||||
return msg;
|
||||
|
||||
error:
|
||||
sml_get_profile_pack_response_free(msg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sml_get_profile_pack_response_write(sml_get_profile_pack_response *msg, sml_buffer *buf) {
|
||||
printf("NYI: %s\n", __FUNCTION__);
|
||||
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 8);
|
||||
|
||||
sml_octet_string_write(msg->server_id, buf);
|
||||
sml_time_write(msg->act_time, buf);
|
||||
sml_u32_write(msg->reg_period, buf);
|
||||
sml_tree_path_write(msg->parameter_tree_path, buf);
|
||||
sml_sequence_write(msg->header_list, buf, (void (*)(void *, sml_buffer *)) &sml_prof_obj_header_entry_write);
|
||||
sml_sequence_write(msg->period_list, buf, (void (*)(void *, sml_buffer *)) &sml_prof_obj_period_entry_write);
|
||||
sml_octet_string_write(msg->rawdata, buf);
|
||||
sml_signature_write(msg->profile_signature, buf);
|
||||
}
|
||||
|
||||
void sml_get_profile_pack_response_free(sml_get_profile_pack_response *msg){
|
||||
printf("NYI: %s\n", __FUNCTION__);
|
||||
if (msg) {
|
||||
sml_octet_string_free(msg->server_id);
|
||||
sml_time_free(msg->act_time);
|
||||
sml_number_free(msg->reg_period);
|
||||
sml_tree_path_parse(msg->parameter_tree_path);
|
||||
sml_sequence_free(msg->header_list);
|
||||
sml_sequence_free(msg->period_list);
|
||||
sml_octet_string_free(msg->rawdata);
|
||||
sml_signature_free(msg->profile_signature);
|
||||
|
||||
free(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// sml_prof_obj_header_entry;
|
||||
|
||||
sml_prof_obj_header_entry *sml_prof_obj_header_entry_init() {
|
||||
sml_prof_obj_header_entry *entry = (sml_prof_obj_header_entry *) malloc(sizeof(sml_prof_obj_header_entry));
|
||||
memset(entry, 0, sizeof(sml_prof_obj_header_entry));
|
||||
return entry;
|
||||
}
|
||||
|
||||
sml_prof_obj_header_entry *sml_prof_obj_header_entry_parse(sml_buffer *buf) {
|
||||
sml_prof_obj_header_entry *entry = sml_prof_obj_header_entry_init();
|
||||
|
||||
if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (sml_buf_get_next_length(buf) != 3) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
entry->obj_name = sml_octet_string_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
entry->unit = sml_unit_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
entry->scaler = sml_i8_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
|
||||
return entry;
|
||||
error:
|
||||
buf->error = 1;
|
||||
sml_prof_obj_header_entry_free(entry);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sml_prof_obj_header_entry_write(sml_prof_obj_header_entry *entry, sml_buffer *buf) {
|
||||
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 3);
|
||||
|
||||
sml_octet_string_write(entry->obj_name, buf);
|
||||
sml_unit_write(entry->unit, buf);
|
||||
sml_i8_write(entry->scaler, buf);
|
||||
}
|
||||
|
||||
void sml_prof_obj_header_entry_free(sml_prof_obj_header_entry *entry) {
|
||||
if (entry) {
|
||||
sml_octet_string_free(entry->obj_name);
|
||||
sml_unit_free(entry->unit);
|
||||
sml_number_free(entry->scaler);
|
||||
|
||||
free(entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// sml_prof_obj_period_entry;
|
||||
|
||||
|
||||
sml_prof_obj_period_entry *sml_prof_obj_period_entry_init() {
|
||||
sml_prof_obj_period_entry *entry = (sml_prof_obj_period_entry *) malloc(sizeof(sml_prof_obj_period_entry));
|
||||
memset(entry, 0, sizeof(sml_prof_obj_period_entry));
|
||||
return entry;
|
||||
}
|
||||
|
||||
sml_prof_obj_period_entry *sml_prof_obj_period_entry_parse(sml_buffer *buf) {
|
||||
sml_prof_obj_period_entry *entry = sml_prof_obj_period_entry_init();
|
||||
|
||||
if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (sml_buf_get_next_length(buf) != 4) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
||||
entry->val_time = sml_time_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
entry->status = sml_u64_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
entry->value_list = sml_sequence_parse(buf, (void *) &sml_value_entry_parse, (void (*)()) &sml_value_entry_free);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
entry->period_signature = sml_signature_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
|
||||
return entry;
|
||||
|
||||
error:
|
||||
buf->error = 1;
|
||||
sml_prof_obj_period_entry_free(entry);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sml_prof_obj_period_entry_write(sml_prof_obj_period_entry *entry, sml_buffer *buf) {
|
||||
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 4);
|
||||
sml_time_write(entry->val_time, buf);
|
||||
sml_u64_write(entry->status, buf);
|
||||
sml_sequence_write(entry->value_list, buf, (void (*)(void *, sml_buffer *)) &sml_value_entry_write);
|
||||
sml_signature_write(entry->period_signature, buf);
|
||||
}
|
||||
|
||||
void sml_prof_obj_period_entry_free(sml_prof_obj_period_entry *entry) {
|
||||
if (entry) {
|
||||
sml_time_free(entry->val_time);
|
||||
sml_number_free(entry->status);
|
||||
sml_sequence_free(entry->value_list);
|
||||
sml_signature_free(entry->period_signature);
|
||||
|
||||
free(entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// sml_value_entry;
|
||||
|
||||
sml_value_entry *sml_value_entry_init() {
|
||||
sml_value_entry *entry = (sml_value_entry *) malloc(sizeof(sml_value_entry));
|
||||
memset(entry, 0, sizeof(sml_value_entry));
|
||||
return entry;
|
||||
}
|
||||
|
||||
sml_value_entry *sml_value_entry_parse(sml_buffer *buf) {
|
||||
sml_value_entry *entry = sml_value_entry_init();
|
||||
|
||||
if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (sml_buf_get_next_length(buf) != 2) {
|
||||
buf->error = 1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
entry->value = sml_value_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
entry->value_signature = sml_signature_parse(buf);
|
||||
if (sml_buf_has_errors(buf)) goto error;
|
||||
|
||||
return entry;
|
||||
error:
|
||||
buf->error = 1;
|
||||
sml_value_entry_free(entry);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sml_value_entry_write(sml_value_entry *entry, sml_buffer *buf) {
|
||||
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 2);
|
||||
sml_value_write(entry->value, buf);
|
||||
sml_signature_write(entry->value_signature, buf);
|
||||
}
|
||||
|
||||
void sml_value_entry_free(sml_value_entry *entry) {
|
||||
if (entry) {
|
||||
sml_value_free(entry->value);
|
||||
sml_signature_free(entry->value_signature);
|
||||
|
||||
free(entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue