used new number/boolean free methods, utilized new

optional handling
This commit is contained in:
Juri Glass 2011-07-14 12:54:11 +02:00
parent ed582bb6a2
commit cf8482c83c
10 changed files with 61 additions and 93 deletions

View file

@ -31,27 +31,10 @@ void sml_get_list_request_write(sml_get_list_request *msg, sml_buffer *buf) {
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5);
sml_octet_string_write(msg->client_id, buf);
// optional server_id
if (msg->server_id != NULL){
sml_octet_string_write(msg->server_id, buf);
} else sml_buf_optional_write(buf);
// optional username
if (msg->username != NULL){
sml_octet_string_write(msg->username, buf);
} else sml_buf_optional_write(buf);
// optional password
if (msg->password != NULL){
sml_octet_string_write(msg->password, buf);
} else sml_buf_optional_write(buf);
// optional list_name
if (msg->list_name != NULL){
sml_octet_string_write(msg->list_name,buf);
} else sml_buf_optional_write(buf);
sml_octet_string_write(msg->server_id, buf);
sml_octet_string_write(msg->username, buf);
sml_octet_string_write(msg->password, buf);
sml_octet_string_write(msg->list_name,buf);
}

View file

@ -31,24 +31,11 @@ sml_get_proc_parameter_request *sml_get_proc_parameter_request_init() {
void sml_get_proc_parameter_request_write(sml_get_proc_parameter_request *msg, sml_buffer *buf) {
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5);
// optional server_id
if (msg->server_id != NULL){
sml_octet_string_write(msg->server_id, buf);
} else sml_buf_optional_write(buf);
// optional username
if (msg->username != NULL) {
sml_octet_string_write(msg->username, buf);
} else sml_buf_optional_write(buf);
// optional password
if (msg->password != NULL){
sml_octet_string_write(msg->password, buf);
} else sml_buf_optional_write(buf);
sml_tree_path_write(msg->parameter_tree_path, buf);
sml_tree_write(msg->parameter_tree, buf);
sml_octet_string_write(msg->server_id, buf);
sml_octet_string_write(msg->username, buf);
sml_octet_string_write(msg->password, buf);
sml_tree_path_write(msg->parameter_tree_path, buf);
sml_tree_write(msg->parameter_tree, buf);
}
void sml_get_proc_parameter_request_free(sml_get_proc_parameter_request *msg) {

View file

@ -111,6 +111,8 @@ void sml_list_entry_free(sml_list *list) {
sml_octet_string_free(list->obj_name);
sml_status_free(list->status);
sml_time_free(list->val_time);
sml_number_free(list->unit);
sml_number_free(list->scaler);
sml_value_free(list->value);
sml_octet_string_free(list->value_signature);
free(list);

View file

@ -84,10 +84,11 @@ sml_message *sml_message_init() {
void sml_message_free(sml_message *msg) {
if (msg) {
if (msg->transaction_id)
sml_octet_string_free(msg->transaction_id);
if (msg->message_body)
sml_message_body_free(msg->message_body);
sml_octet_string_free(msg->transaction_id);
sml_number_free(msg->group_id);
sml_number_free(msg->abort_on_error);
sml_message_body_free(msg->message_body);
sml_number_free(msg->crc);
free(msg);
}
}
@ -200,6 +201,8 @@ void sml_message_body_write(sml_message_body *message_body, sml_buffer *buf) {
void sml_message_body_free(sml_message_body *message_body) {
if (message_body) {
sml_number_free(message_body->tag);
switch (*(message_body->tag)) {
case SML_MESSAGE_OPEN_REQUEST:
sml_open_request_free((sml_open_request *) message_body->data);

View file

@ -29,43 +29,16 @@ sml_open_request *sml_open_request_init(){
return open_request;
}
/*
sml_open_request *sml_open_request_init(char* client_id,char* req_file_id, char* server_id){
sml_open_request *open_request = (sml_open_request *) malloc(sizeof(sml_open_request));
memset(open_request, 0, sizeof(sml_open_request));
// printf("TODO: %s\n", __FUNCTION__);
open_request->client_id = sml_octet_string_init((unsigned char *)client_id,strlen(client_id));
open_request->req_file_id = sml_octet_string_init((unsigned char *)req_file_id,strlen(req_file_id));
open_request->server_id = sml_octet_string_init((unsigned char *)server_id, strlen(server_id));
return open_request;
}
sml_open_request *sml_open_request_init() {
// sml_open_request *open_request = (sml_open_request *) malloc(sizeof(sml_open_request));
//memset(open_request, 0, sizeof(sml_open_request));
// printf("TODO: %s\n", __FUNCTION__);
//open_request->username = sml_octet_string_init((unsigned char *)"kunde",5);
//open_request->username = sml_octet_string_init((unsigned char *)"kunde",5);
//open_request->client_id = sml_octet_string_init((unsigned char *)"SEDICMA", 7);
//open_request->req_file_id = sml_octet_string_init((unsigned char *)"01", 2);
char server_id[] ={0x06, 0x45, 0x4d, 0x48, 0x01, 0x02, 0x71, 0x53, 0x3b, 0xcd};
//open_request->server_id = sml_octet_string_init(server_id, 10);
return sml_open_request_init("SEDICMA", "02", server_id);
}
*/
void sml_open_request_write(sml_open_request *msg, sml_buffer *buf) {
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 7);
sml_buf_optional_write(buf);
sml_octet_string_write(msg->codepage, buf);
sml_octet_string_write(msg->client_id, buf);
sml_octet_string_write(msg->req_file_id, buf);
sml_octet_string_write(msg->server_id, buf);
sml_octet_string_write(msg->username,buf);
sml_octet_string_write(msg->password,buf);
sml_buf_optional_write(buf);
sml_u8_write(msg->sml_version, buf);
}
sml_open_request *sml_open_request_parse(sml_buffer *buf) {
@ -100,7 +73,7 @@ sml_open_request *sml_open_request_parse(sml_buffer *buf) {
msg->password = sml_octet_string_parse(buf);
if (sml_buf_has_errors(buf)) goto error;
msg->sml_version = SML_SKIP_OPTIONAL sml_u8_parse(buf);
msg->sml_version = sml_u8_parse(buf);
if (sml_buf_has_errors(buf)) goto error;
return msg;
@ -111,13 +84,16 @@ error:
}
void sml_open_request_free(sml_open_request *msg) {
free(msg->client_id);
free(msg->password);
free(msg->req_file_id);
free(msg->server_id);
free(msg->username);
free(msg);
// printf("NYI: %s\n", __FUNCTION__);
if (msg) {
sml_octet_string_free(msg->codepage);
sml_octet_string_free(msg->client_id);
sml_octet_string_free(msg->req_file_id);
sml_octet_string_free(msg->server_id);
sml_octet_string_free(msg->username);
sml_octet_string_free(msg->password);
sml_number_free(msg->sml_version);
free(msg);
}
}

View file

@ -50,7 +50,7 @@ sml_open_response *sml_open_response_parse(sml_buffer *buf) {
msg->ref_time = SML_SKIP_OPTIONAL sml_time_parse(buf);
if (sml_buf_has_errors(buf)) goto error;
msg->sml_version = SML_SKIP_OPTIONAL sml_u8_parse(buf);
msg->sml_version = sml_u8_parse(buf);
if (sml_buf_has_errors(buf)) goto error;
return msg;
@ -66,6 +66,7 @@ void sml_open_response_free(sml_open_response *msg) {
sml_octet_string_free(msg->req_file_id);
sml_octet_string_free(msg->server_id);
sml_time_free(msg->ref_time);
sml_number_free(msg->sml_version);
free(msg);
}
}

View file

@ -19,8 +19,6 @@
#include <sml/sml_set_proc_parameter_request.h>
#include <stdio.h>
sml_set_proc_parameter_request *sml_set_proc_parameter_request_init() {
sml_set_proc_parameter_request *msg = (sml_set_proc_parameter_request *) malloc(sizeof (sml_set_proc_parameter_request));
memset(msg, 0, sizeof(sml_set_proc_parameter_request));
@ -29,15 +27,22 @@ sml_set_proc_parameter_request *sml_set_proc_parameter_request_init() {
void sml_set_proc_parameter_request_write(sml_set_proc_parameter_request *msg, sml_buffer *buf) {
sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5);
sml_buf_optional_write(buf);
sml_buf_optional_write(buf);
sml_buf_optional_write(buf);
sml_octet_string_write(msg->server_id, buf);
sml_octet_string_write(msg->username, buf);
sml_octet_string_write(msg->password, buf);
sml_tree_path_write(msg->parameter_tree_path, buf);
sml_tree_write(msg->parameter_tree, buf);
}
void sml_set_proc_parameter_request_free(sml_set_proc_parameter_request *msg) {
printf("NYI: %s\n", __FUNCTION__);
if (msg) {
sml_octet_string_free(msg->server_id);
sml_octet_string_free(msg->username);
sml_octet_string_free(msg->password);
sml_tree_path_free(msg->parameter_tree_path);
sml_tree_free(msg->parameter_tree);
free(msg);
}
}

View file

@ -63,6 +63,7 @@ sml_status *sml_status_parse(sml_buffer *buf) {
void sml_status_free(sml_status *status) {
if (status) {
sml_number_free(status->status8);
free(status);
}
}

View file

@ -57,8 +57,10 @@ void sml_time_write(sml_time *time, sml_buffer *buf) {
sml_buf_optional_write(buf);
}
void sml_time_free(sml_time *time) {
if (time) {
free(time);
void sml_time_free(sml_time *tme) {
if (tme) {
sml_number_free(tme->tag);
sml_number_free(tme->data);
free(tme);
}
}

View file

@ -117,9 +117,17 @@ sml_value *sml_value_init() {
void sml_value_free(sml_value *value) {
if (value) {
if (value->type == SML_TYPE_OCTET_STRING) {
sml_octet_string_free(value->data.bytes);
}
switch (value->type) {
case SML_TYPE_OCTET_STRING:
sml_octet_string_free(value->data.bytes);
break;
case SML_TYPE_BOOLEAN:
sml_boolean_free(value->data.boolean);
break;
default:
sml_number_free(value->data.int8);
break;
}
free(value);
}
}