TEST(sml_get_profile_pack_request, parse) {
	hex2binary("7901010101010101730648616C6C6F0648616C6C6F0648616C6C6F01", sml_buf_get_current_buf(buf));
	sml_get_profile_pack_request *r = sml_get_profile_pack_request_parse(buf);
	TEST_ASSERT_NOT_NULL(r);
	TEST_ASSERT_NOT_NULL(r->object_list);
	TEST_ASSERT_NOT_NULL(r->object_list->next);
	TEST_ASSERT_NOT_NULL(r->object_list->next->next);
	TEST_ASSERT_NULL(r->object_list->next->next->next);
	sml_get_profile_pack_request_free( r );
}
示例#2
0
文件: sml_message.c 项目: mhei/libsml
sml_message_body *sml_message_body_parse(sml_buffer *buf) {
	sml_message_body *msg_body = (sml_message_body *) malloc(sizeof(sml_message_body));
	memset(msg_body, 0, sizeof(sml_message_body));

	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;
	}

	msg_body->tag = sml_u16_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	switch (*(msg_body->tag)) {
		case SML_MESSAGE_OPEN_REQUEST:
			msg_body->data = sml_open_request_parse(buf);
			break;
		case SML_MESSAGE_OPEN_RESPONSE:
			msg_body->data = sml_open_response_parse(buf);
			break;
		case SML_MESSAGE_CLOSE_REQUEST:
			msg_body->data = sml_close_request_parse(buf);
			break;
		case SML_MESSAGE_CLOSE_RESPONSE:
			msg_body->data = sml_close_response_parse(buf);
			break;
		case SML_MESSAGE_GET_PROFILE_PACK_REQUEST:
			msg_body->data = sml_get_profile_pack_request_parse(buf);
			break;
		case SML_MESSAGE_GET_PROFILE_PACK_RESPONSE:
			msg_body->data = sml_get_profile_pack_response_parse(buf);
			break;
		case SML_MESSAGE_GET_PROFILE_LIST_REQUEST:
			msg_body->data = sml_get_profile_list_request_parse(buf);
			break;
		case SML_MESSAGE_GET_PROFILE_LIST_RESPONSE:
			msg_body->data = sml_get_profile_list_response_parse(buf);
			break;
		case SML_MESSAGE_GET_PROC_PARAMETER_REQUEST:
			msg_body->data = sml_get_proc_parameter_request_parse(buf);
			break;
		case SML_MESSAGE_GET_PROC_PARAMETER_RESPONSE:
			msg_body->data = sml_get_proc_parameter_response_parse(buf);
			break;
		case SML_MESSAGE_SET_PROC_PARAMETER_REQUEST:
			msg_body->data = sml_set_proc_parameter_request_parse(buf);
			break;
		case SML_MESSAGE_GET_LIST_REQUEST:
			msg_body->data = sml_get_list_request_parse(buf);
			break;
		case SML_MESSAGE_GET_LIST_RESPONSE:
			msg_body->data = sml_get_list_response_parse(buf);
			break;
		case SML_MESSAGE_ATTENTION_RESPONSE:
			msg_body->data = sml_attention_response_parse(buf);
			break;
		default:
			printf("error: message type %04X not yet implemented\n", *(msg_body->tag));
			break;
	}

	return msg_body;

error:
	free(msg_body);
	return 0;
}