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_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);
}
예제 #2
0
void sml_attention_response_write(sml_attention_response *msg, sml_buffer *buf) {
	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 4);

	sml_octet_string_write(msg->server_id, buf);
	sml_octet_string_write(msg->attention_number, buf);
	sml_octet_string_write(msg->attention_message, buf);
	sml_tree_write(msg->attention_details, buf);
}
예제 #3
0
void sml_open_response_write(sml_open_response *msg, sml_buffer *buf) {
	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 6);

	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_time_write(msg->ref_time, buf);
	sml_u8_write(msg->sml_version, buf);
}
void sml_get_profile_pack_response_write(sml_get_profile_pack_response *msg, sml_buffer *buf) {
	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, sml_prof_obj_header_entry_write_);
	sml_sequence_write(msg->period_list, buf, sml_prof_obj_period_entry_write_);
	sml_octet_string_write(msg->rawdata, buf);
	sml_signature_write(msg->profile_signature, buf);
}
예제 #5
0
void sml_period_entry_write(sml_period_entry *period, sml_buffer *buf) {
	if (period == 0) {
		sml_buf_optional_write(buf);
		return;
	}

	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5);

	sml_octet_string_write(period->obj_name, buf);
	sml_unit_write(period->unit, buf);
	sml_i8_write(period->scaler, buf);
	sml_value_write(period->value, buf);
	sml_octet_string_write(period->value_signature, buf);
}
static void sml_prof_obj_header_entry_write_( void * p, sml_buffer *buf) {
	sml_prof_obj_header_entry * entry = p;

	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);
}
예제 #7
0
void sml_tupel_entry_write(sml_tupel_entry *tupel, sml_buffer *buf) {
	if (tupel == 0) {
		sml_buf_optional_write(buf);
		return;
	}

	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 23);

	sml_octet_string_write(tupel->server_id, buf);
	sml_time_write(tupel->sec_index, buf);
	sml_u64_write(tupel->status, buf);

	sml_unit_write(tupel->unit_pA, buf);
	sml_i8_write(tupel->scaler_pA, buf);
	sml_i64_write(tupel->value_pA, buf);

	sml_unit_write(tupel->unit_R1, buf);
	sml_i8_write(tupel->scaler_R1, buf);
	sml_i64_write(tupel->value_R1, buf);

	sml_unit_write(tupel->unit_R4, buf);
	sml_i8_write(tupel->scaler_R4, buf);
	sml_i64_write(tupel->value_R4, buf);

	sml_octet_string_write(tupel->signature_pA_R1_R4, buf);

	sml_unit_write(tupel->unit_mA, buf);
	sml_i8_write(tupel->scaler_mA, buf);
	sml_i64_write(tupel->value_mA, buf);

	sml_unit_write(tupel->unit_R2, buf);
	sml_i8_write(tupel->scaler_R2, buf);
	sml_i64_write(tupel->value_R2, buf);

	sml_unit_write(tupel->unit_R3, buf);
	sml_i8_write(tupel->scaler_R3, buf);
	sml_i64_write(tupel->value_R3, buf);

	sml_octet_string_write(tupel->signature_mA_R2_R3, buf);
}
예제 #8
0
void sml_tree_path_write(sml_tree_path *tree_path, sml_buffer *buf) {
	if (tree_path == 0) {
		sml_buf_optional_write(buf);
		return;
	}

	if (tree_path->path_entries && tree_path->path_entries_len > 0) {
		sml_buf_set_type_and_length(buf, SML_TYPE_LIST, tree_path->path_entries_len);
		
		int i;
		for (i = 0; i < tree_path->path_entries_len; i++) {
			sml_octet_string_write(tree_path->path_entries[i], buf);
		}
	}
}
예제 #9
0
파일: sml_message.c 프로젝트: mhei/libsml
void sml_message_write(sml_message *msg, sml_buffer *buf) {
	int msg_start = buf->cursor;
	
	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 6);
	sml_octet_string_write(msg->transaction_id, buf);
	sml_u8_write(msg->group_id, buf);
	sml_u8_write(msg->abort_on_error, buf);
	sml_message_body_write(msg->message_body, buf);

	msg->crc = sml_u16_init(sml_crc16_calculate(&(buf->buffer[msg_start]), buf->cursor - msg_start));
	sml_u16_write(msg->crc, buf);

	// end of message
	buf->buffer[buf->cursor] = 0x0;
	buf->cursor++;
}
예제 #10
0
void sml_open_request_write(sml_open_request *msg, sml_buffer *buf) {
	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 7);

	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_u8_write(msg->sml_version, buf);
}
예제 #11
0
void sml_value_write(sml_value *value, sml_buffer *buf) {
	if (value == 0) {
		sml_buf_optional_write(buf);
		return;
	}

	switch (value->type & SML_TYPE_FIELD) {
		case SML_TYPE_OCTET_STRING:
			sml_octet_string_write(value->data.bytes, buf);
			break;
		case SML_TYPE_BOOLEAN:
			sml_boolean_write(value->data.boolean, buf);
			break;
		case SML_TYPE_UNSIGNED:
		case SML_TYPE_INTEGER:
			sml_number_write(value->data.uint8, (value->type & SML_TYPE_FIELD),
				(value->type & SML_LENGTH_FIELD), buf);
			break;
	}
}
예제 #12
0
void sml_tree_write(sml_tree *tree, sml_buffer *buf) {
	if (tree == 0) {
		sml_buf_optional_write(buf);
		return;
	}

	sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 3);

	sml_octet_string_write(tree->parameter_name, buf);
	sml_proc_par_value_write(tree->parameter_value, buf);

	if (tree->child_list && tree->child_list_len > 0) {
		sml_buf_set_type_and_length(buf, SML_TYPE_LIST, tree->child_list_len);

		int i;
		for (i = 0; i < tree->child_list_len; i++) {
			sml_tree_write(tree->child_list[i], buf);
		}
	}
	else {
		sml_buf_optional_write(buf);
	}
}