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