xref: /btstack/src/classic/obex_message_builder.h (revision 7e1e42bbf89e68598e3ce9ed9d138d8ddea36c1f)
17c006017SMilanka Ringwald /*
27c006017SMilanka Ringwald  * Copyright (C) 2019 BlueKitchen GmbH
37c006017SMilanka Ringwald  *
47c006017SMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
57c006017SMilanka Ringwald  * modification, are permitted provided that the following conditions
67c006017SMilanka Ringwald  * are met:
77c006017SMilanka Ringwald  *
87c006017SMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
97c006017SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
107c006017SMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
117c006017SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
127c006017SMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
137c006017SMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
147c006017SMilanka Ringwald  *    contributors may be used to endorse or promote products derived
157c006017SMilanka Ringwald  *    from this software without specific prior written permission.
167c006017SMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
177c006017SMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
187c006017SMilanka Ringwald  *    monetary gain.
197c006017SMilanka Ringwald  *
207c006017SMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
217c006017SMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
227c006017SMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
232fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
242fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
257c006017SMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
267c006017SMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
277c006017SMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
287c006017SMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
297c006017SMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
307c006017SMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
317c006017SMilanka Ringwald  * SUCH DAMAGE.
327c006017SMilanka Ringwald  *
337c006017SMilanka Ringwald  * Please inquire about commercial licensing options at
347c006017SMilanka Ringwald  * [email protected]
357c006017SMilanka Ringwald  *
367c006017SMilanka Ringwald  */
377c006017SMilanka Ringwald 
38fe5a6c4eSMilanka Ringwald /**
39fe5a6c4eSMilanka Ringwald  * OBEX Message Builder
40fe5a6c4eSMilanka Ringwald  *
41fe5a6c4eSMilanka Ringwald  */
42fe5a6c4eSMilanka Ringwald 
4380e33422SMatthias Ringwald #ifndef OBEX_MESSAGE_BUILDER_H
4480e33422SMatthias Ringwald #define OBEX_MESSAGE_BUILDER_H
457c006017SMilanka Ringwald 
467c006017SMilanka Ringwald #if defined __cplusplus
477c006017SMilanka Ringwald extern "C" {
487c006017SMilanka Ringwald #endif
497c006017SMilanka Ringwald 
507c006017SMilanka Ringwald #include <stdint.h>
517c006017SMilanka Ringwald #include <string.h>
527c006017SMilanka Ringwald 
537c006017SMilanka Ringwald #include "btstack_defines.h"
547c006017SMilanka Ringwald 
557c006017SMilanka Ringwald //------------------------------------------------------------------------------------------------------------
567c006017SMilanka Ringwald // obex_message_builder.h
577c006017SMilanka Ringwald //
5881fb6ec9SMilanka Ringwald // Functions to incrementaly construct an OBEX message. The current length of the message is stored at
5981fb6ec9SMilanka Ringwald // offset 1 in the buffer. All functions return status code ERROR_CODE_MEMORY_CAPACITY_EXCEEDED id the
6081fb6ec9SMilanka Ringwald // buffer is too small.
617c006017SMilanka Ringwald 
627c006017SMilanka Ringwald /* API_START */
631f6020d5SMilanka Ringwald /**
641f6020d5SMilanka Ringwald  * @brief Get message lenght
651f6020d5SMilanka Ringwald  * @param buffer
661f6020d5SMilanka Ringwald  * @return buffer_length
671f6020d5SMilanka Ringwald  */
681f6020d5SMilanka Ringwald uint16_t obex_message_builder_get_message_length(uint8_t * buffer);
697c006017SMilanka Ringwald 
707c006017SMilanka Ringwald /**
717c006017SMilanka Ringwald  * @brief Start Connect request
727c006017SMilanka Ringwald  * @param buffer
737c006017SMilanka Ringwald  * @param buffer_len
747c006017SMilanka Ringwald  * @param obex_version_number
757c006017SMilanka Ringwald  * @param flags
767c006017SMilanka Ringwald  * @param maximum_obex_packet_length
7781fb6ec9SMilanka Ringwald  * @return status
787c006017SMilanka Ringwald  */
797c006017SMilanka Ringwald uint8_t obex_message_builder_request_create_connect(uint8_t * buffer, uint16_t buffer_len, uint8_t obex_version_number, uint8_t flags, uint16_t maximum_obex_packet_length);
807c006017SMilanka Ringwald 
817c006017SMilanka Ringwald /**
821f6020d5SMilanka Ringwald  * @brief Start Connect response
831f6020d5SMilanka Ringwald  * @param buffer
841f6020d5SMilanka Ringwald  * @param buffer_len
851f6020d5SMilanka Ringwald  * @param obex_version_number
861f6020d5SMilanka Ringwald  * @param flags
871f6020d5SMilanka Ringwald  * @param maximum_obex_packet_length
881f6020d5SMilanka Ringwald  * @param connection_id
891f6020d5SMilanka Ringwald  * @return status
901f6020d5SMilanka Ringwald  */
911f6020d5SMilanka Ringwald uint8_t obex_message_builder_response_create_connect(uint8_t * buffer, uint16_t buffer_len, uint8_t obex_version_number, uint8_t flags, uint16_t maximum_obex_packet_length, uint32_t connection_id);
921f6020d5SMilanka Ringwald 
931f6020d5SMilanka Ringwald /**
948460ee57SMatthias Ringwald  * @brief Start General response with given response code
9509ef1e1eSMatthias Ringwald  * @param buffer
9609ef1e1eSMatthias Ringwald  * @param buffer_len
978460ee57SMatthias Ringwald  * @param response_code
9809ef1e1eSMatthias Ringwald  * @return status
9909ef1e1eSMatthias Ringwald  */
1008460ee57SMatthias Ringwald  uint8_t obex_message_builder_response_create_general(uint8_t * buffer, uint16_t buffer_len, uint8_t response_code);
10109ef1e1eSMatthias Ringwald 
10209ef1e1eSMatthias Ringwald /**
103c2e0c88eSMatthias Ringwald  * @brief Update response code
104c2e0c88eSMatthias Ringwald  * @param buffer
105c2e0c88eSMatthias Ringwald  * @param buffer_len
106c2e0c88eSMatthias Ringwald  * @param response_code
107c2e0c88eSMatthias Ringwald  * @return status
108c2e0c88eSMatthias Ringwald  */
109c2e0c88eSMatthias Ringwald uint8_t obex_message_builder_response_update_code(uint8_t * buffer, uint16_t buffer_len, uint8_t response_code);
110c2e0c88eSMatthias Ringwald 
111c2e0c88eSMatthias Ringwald /**
1127c006017SMilanka Ringwald  * @brief Start Disconnect request
1137c006017SMilanka Ringwald  * @param buffer
1147c006017SMilanka Ringwald  * @param buffer_len
1157c006017SMilanka Ringwald  * @param connection_id
11681fb6ec9SMilanka Ringwald  * @return status
1177c006017SMilanka Ringwald  */
1187c006017SMilanka Ringwald uint8_t obex_message_builder_request_create_disconnect(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
1197c006017SMilanka Ringwald 
1207c006017SMilanka Ringwald /**
1217c006017SMilanka Ringwald  * @brief Create Get request
1227c006017SMilanka Ringwald  * @param buffer
1237c006017SMilanka Ringwald  * @param buffer_len
1247c006017SMilanka Ringwald  * @param connection_id
12581fb6ec9SMilanka Ringwald  * @return status
1267c006017SMilanka Ringwald  */
1277c006017SMilanka Ringwald uint8_t obex_message_builder_request_create_get(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
1287c006017SMilanka Ringwald 
1297c006017SMilanka Ringwald /**
1307c006017SMilanka Ringwald  * @brief Create Put request
1317c006017SMilanka Ringwald  * @param buffer
1327c006017SMilanka Ringwald  * @param buffer_len
1337c006017SMilanka Ringwald  * @param connection_id
13481fb6ec9SMilanka Ringwald  * @return status
1357c006017SMilanka Ringwald  */
1367c006017SMilanka Ringwald uint8_t obex_message_builder_request_create_put(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
1377c006017SMilanka Ringwald 
1387c006017SMilanka Ringwald 
1397c006017SMilanka Ringwald /**
1407c006017SMilanka Ringwald  * @brief Create Abort request
1417c006017SMilanka Ringwald  * @param buffer
1427c006017SMilanka Ringwald  * @param buffer_len
1437c006017SMilanka Ringwald  * @param connection_id
14481fb6ec9SMilanka Ringwald  * @return status
1457c006017SMilanka Ringwald  */
1467c006017SMilanka Ringwald uint8_t obex_message_builder_request_create_abort(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
1477c006017SMilanka Ringwald 
1487c006017SMilanka Ringwald /**
1497c006017SMilanka Ringwald  * @brief Start Set Path request
1507c006017SMilanka Ringwald  * @param buffer
1517c006017SMilanka Ringwald  * @param buffer_len
1527c006017SMilanka Ringwald  * @param connection_id
15381fb6ec9SMilanka Ringwald  * @return status
1547c006017SMilanka Ringwald  */
1557c006017SMilanka Ringwald uint8_t obex_message_builder_request_create_set_path(uint8_t * buffer, uint16_t buffer_len, uint8_t flags, uint32_t connection_id);
1567c006017SMilanka Ringwald 
1577c006017SMilanka Ringwald /**
15849df53afSSimon Budig  * @brief Control the "final" bit
15949df53afSSimon Budig  * @param buffer
16049df53afSSimon Budig  * @param buffer_len
16149df53afSSimon Budig  * @param final
16249df53afSSimon Budig  * @return status
16349df53afSSimon Budig  */
16449df53afSSimon Budig uint8_t obex_message_builder_set_final_bit (uint8_t * buffer, uint16_t buffer_len, bool final);
16549df53afSSimon Budig 
16649df53afSSimon Budig /**
1677c006017SMilanka Ringwald  * @brief Add SRM Enable
1687c006017SMilanka Ringwald  * @param buffer
1697c006017SMilanka Ringwald  * @param buffer_len
17081fb6ec9SMilanka Ringwald  * @return status
1717c006017SMilanka Ringwald  */
1727c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_srm_enable(uint8_t * buffer, uint16_t buffer_len);
1737c006017SMilanka Ringwald 
17481fb6ec9SMilanka Ringwald /**
175*7e1e42bbSMatthias Ringwald  * @brief Add SRMP wait header
176*7e1e42bbSMatthias Ringwald  * @param buffer
177*7e1e42bbSMatthias Ringwald  * @param buffer_len
178*7e1e42bbSMatthias Ringwald  * @return status
179*7e1e42bbSMatthias Ringwald  */
180*7e1e42bbSMatthias Ringwald uint8_t obex_message_builder_header_add_srmp_wait(uint8_t* buffer, uint16_t buffer_len);
181*7e1e42bbSMatthias Ringwald 
182*7e1e42bbSMatthias Ringwald 
183*7e1e42bbSMatthias Ringwald /**
18481fb6ec9SMilanka Ringwald  * @brief Add header with single byte value (8 bit)
18581fb6ec9SMilanka Ringwald  * @param buffer
18681fb6ec9SMilanka Ringwald  * @param buffer_len
18781fb6ec9SMilanka Ringwald  * @param header_type
18881fb6ec9SMilanka Ringwald  * @param value
18981fb6ec9SMilanka Ringwald  * @return status
19081fb6ec9SMilanka Ringwald  */
19181fb6ec9SMilanka Ringwald uint8_t obex_message_builder_header_add_byte(uint8_t * buffer, uint16_t buffer_len, uint8_t header_type, uint8_t value);
1927c006017SMilanka Ringwald 
19381fb6ec9SMilanka Ringwald /**
19481fb6ec9SMilanka Ringwald  * @brief Add header with word value (32 bit)
19581fb6ec9SMilanka Ringwald  * @param buffer
19681fb6ec9SMilanka Ringwald  * @param buffer_len
19781fb6ec9SMilanka Ringwald  * @param header_type
19881fb6ec9SMilanka Ringwald  * @param value
19981fb6ec9SMilanka Ringwald  * @return status
20081fb6ec9SMilanka Ringwald  */
20181fb6ec9SMilanka Ringwald uint8_t obex_message_builder_header_add_word(uint8_t * buffer, uint16_t buffer_len, uint8_t header_type, uint32_t value);
2027c006017SMilanka Ringwald 
20381fb6ec9SMilanka Ringwald /**
20481fb6ec9SMilanka Ringwald  * @brief Add header with variable size
20581fb6ec9SMilanka Ringwald  * @param buffer
20681fb6ec9SMilanka Ringwald  * @param buffer_len
20781fb6ec9SMilanka Ringwald  * @param header_type
20881fb6ec9SMilanka Ringwald  * @param header_data
20981fb6ec9SMilanka Ringwald  * @param header_data_length
21081fb6ec9SMilanka Ringwald  * @return status
21181fb6ec9SMilanka Ringwald  */
21281fb6ec9SMilanka Ringwald uint8_t obex_message_builder_header_add_variable(uint8_t * buffer, uint16_t buffer_len, uint8_t header_type, const uint8_t * header_data, uint16_t header_data_length);
2137c006017SMilanka Ringwald 
2147c006017SMilanka Ringwald /**
21549df53afSSimon Budig  * @brief Add (partial) header with variable size
21649df53afSSimon Budig  * @param buffer
21749df53afSSimon Budig  * @param buffer_len
21849df53afSSimon Budig  * @param header_type
21949df53afSSimon Budig  * @param header_data
22049df53afSSimon Budig  * @param header_data_length
22149df53afSSimon Budig  * @param ret_length
22249df53afSSimon Budig  * @return status
22349df53afSSimon Budig  */
22449df53afSSimon Budig uint8_t obex_message_builder_header_fillup_variable(uint8_t * buffer, uint16_t buffer_len, uint8_t header_type, const uint8_t * header_data, uint16_t header_data_length, uint32_t * ret_length);
22549df53afSSimon Budig 
226*7e1e42bbSMatthias Ringwald 
227*7e1e42bbSMatthias Ringwald /**
228*7e1e42bbSMatthias Ringwald  * @brief returns name header size in bytes from its string len
229*7e1e42bbSMatthias Ringwald  * @param name_len - use value returned by strlen
230*7e1e42bbSMatthias Ringwald  * @return header size in bytes
231*7e1e42bbSMatthias Ringwald  */
232*7e1e42bbSMatthias Ringwald uint8_t obex_message_builder_get_header_name_len_from_strlen(uint16_t name_len);
233*7e1e42bbSMatthias Ringwald 
23449df53afSSimon Budig /**
2357c006017SMilanka Ringwald  * @brief Add name header to current request
2367c006017SMilanka Ringwald  * @param buffer
2377c006017SMilanka Ringwald  * @param buffer_len
2382946c1e3SMatthias Ringwald  * @param name with trailing '\0'
23981fb6ec9SMilanka Ringwald  * @return status
2407c006017SMilanka Ringwald  */
2417c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_name(uint8_t * buffer, uint16_t buffer_len, const char * name);
2427c006017SMilanka Ringwald 
2437c006017SMilanka Ringwald /**
2442946c1e3SMatthias Ringwald  * @brief Add name header to current request
2452946c1e3SMatthias Ringwald  * @param buffer
2462946c1e3SMatthias Ringwald  * @param buffer_len
2472946c1e3SMatthias Ringwald  * @param name
2482946c1e3SMatthias Ringwald  * @param name_len
2492946c1e3SMatthias Ringwald  * @return status
2502946c1e3SMatthias Ringwald  */
2512946c1e3SMatthias Ringwald uint8_t obex_message_builder_header_add_name_prefix(uint8_t * buffer, uint16_t buffer_len, const char * name, uint16_t name_len);
2522946c1e3SMatthias Ringwald 
2532946c1e3SMatthias Ringwald /**
254c1dd2356SMatthias Ringwald  * @brief Add string encoded in unicode to current request
255c1dd2356SMatthias Ringwald  * @param buffer
256c1dd2356SMatthias Ringwald  * @param buffer_len
257c1dd2356SMatthias Ringwald  * @param header_id
258c1dd2356SMatthias Ringwald  * @param string
259c1dd2356SMatthias Ringwald  * @param string_len
260c1dd2356SMatthias Ringwald  * @return status
261c1dd2356SMatthias Ringwald  */
262c1dd2356SMatthias Ringwald uint8_t obex_message_builder_header_add_unicode_prefix(uint8_t * buffer, uint16_t buffer_len, uint8_t header_id, const char * name, uint16_t name_len);
263c1dd2356SMatthias Ringwald 
264c1dd2356SMatthias Ringwald /**
2657c006017SMilanka Ringwald  * @brief Add target header to current request
2667c006017SMilanka Ringwald  * @param buffer
2677c006017SMilanka Ringwald  * @param buffer_len
2687c006017SMilanka Ringwald  * @param target
2692946c1e3SMatthias Ringwald  * @param length of target
27081fb6ec9SMilanka Ringwald  * @return status
2717c006017SMilanka Ringwald  */
2727c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_target(uint8_t * buffer, uint16_t buffer_len, const uint8_t * target, uint16_t length);
2737c006017SMilanka Ringwald 
2747c006017SMilanka Ringwald /**
2751f6020d5SMilanka Ringwald  * @brief Add target header to current request
2761f6020d5SMilanka Ringwald  * @param buffer
2771f6020d5SMilanka Ringwald  * @param buffer_len
2781f6020d5SMilanka Ringwald  * @param who  fixed len of 16 bytes
2791f6020d5SMilanka Ringwald  * @return status
2801f6020d5SMilanka Ringwald  */
2811f6020d5SMilanka Ringwald uint8_t obex_message_builder_header_add_who(uint8_t * buffer, uint16_t buffer_len, const uint8_t * who);
2821f6020d5SMilanka Ringwald 
283*7e1e42bbSMatthias Ringwald /**
284*7e1e42bbSMatthias Ringwald  * @brief returns the length of the type header for string <type>
285*7e1e42bbSMatthias Ringwald  * @param type
286*7e1e42bbSMatthias Ringwald  * @return header len in bytes
287*7e1e42bbSMatthias Ringwald  */
288*7e1e42bbSMatthias Ringwald uint8_t obex_message_builder_get_header_type_len(char* type);
289*7e1e42bbSMatthias Ringwald 
2901f6020d5SMilanka Ringwald 
2911f6020d5SMilanka Ringwald /**
2927c006017SMilanka Ringwald  * @brief Add type header to current request
2937c006017SMilanka Ringwald  * @param buffer
2947c006017SMilanka Ringwald  * @param buffer_len
2957c006017SMilanka Ringwald  * @param type
29681fb6ec9SMilanka Ringwald  * @return status
2977c006017SMilanka Ringwald  */
2987c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_type(uint8_t * buffer, uint16_t buffer_len, const char * type);
2997c006017SMilanka Ringwald 
3007c006017SMilanka Ringwald /**
3017c006017SMilanka Ringwald  * @brief Add count header to current request
3027c006017SMilanka Ringwald  * @param buffer
3037c006017SMilanka Ringwald  * @param buffer_len
3047c006017SMilanka Ringwald  * @param count
30581fb6ec9SMilanka Ringwald  * @return status
3067c006017SMilanka Ringwald  */
3077c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_count(uint8_t * buffer, uint16_t buffer_len, uint32_t count);
3087c006017SMilanka Ringwald 
3097c006017SMilanka Ringwald /**
31049df53afSSimon Budig  * @brief Add length header to current request
31149df53afSSimon Budig  * @param buffer
31249df53afSSimon Budig  * @param buffer_len
31349df53afSSimon Budig  * @param lenght
31449df53afSSimon Budig  * @return status
31549df53afSSimon Budig  */
31649df53afSSimon Budig uint8_t obex_message_builder_header_add_length(uint8_t * buffer, uint16_t buffer_len, uint32_t length);
31749df53afSSimon Budig 
31849df53afSSimon Budig /**
3197c006017SMilanka Ringwald  * @brief Add application parameters header to current request
3207c006017SMilanka Ringwald  * @param buffer
3217c006017SMilanka Ringwald  * @param buffer_len
3227c006017SMilanka Ringwald  * @param data
3231f6020d5SMilanka Ringwald  * @param length of application parameters
32481fb6ec9SMilanka Ringwald  * @return status
3257c006017SMilanka Ringwald  */
3267c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_application_parameters(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint16_t length);
3277c006017SMilanka Ringwald 
3287c006017SMilanka Ringwald /**
3297c006017SMilanka Ringwald  * @brief Add application parameters header to current request
3307c006017SMilanka Ringwald  * @param buffer
3317c006017SMilanka Ringwald  * @param buffer_len
3327c006017SMilanka Ringwald  * @param data
3331f6020d5SMilanka Ringwald  * @param length of challenge response
33481fb6ec9SMilanka Ringwald  * @return status
3357c006017SMilanka Ringwald  */
3367c006017SMilanka Ringwald uint8_t obex_message_builder_header_add_challenge_response(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint16_t length);
3377c006017SMilanka Ringwald 
3387c006017SMilanka Ringwald /**
3397c006017SMilanka Ringwald  * @brief Add body
3407c006017SMilanka Ringwald  * @param buffer
3417c006017SMilanka Ringwald  * @param buffer_len
3427c006017SMilanka Ringwald  * @param data
3431f6020d5SMilanka Ringwald  * @param length
34481fb6ec9SMilanka Ringwald  * @return status
3457c006017SMilanka Ringwald  */
346948b3642SMilanka Ringwald uint8_t obex_message_builder_body_add_static(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint32_t length);
3477c006017SMilanka Ringwald 
34849df53afSSimon Budig /**
34949df53afSSimon Budig  * @brief Add body
35049df53afSSimon Budig  * @param buffer
35149df53afSSimon Budig  * @param buffer_len
35249df53afSSimon Budig  * @param data
35349df53afSSimon Budig  * @param length
35449df53afSSimon Budig  * @param ret_length
35549df53afSSimon Budig  * @return status
35649df53afSSimon Budig  */
35749df53afSSimon Budig uint8_t obex_message_builder_body_fillup_static(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint32_t length, uint32_t *ret_length);
35849df53afSSimon Budig 
3597c006017SMilanka Ringwald /* API_END */
3607c006017SMilanka Ringwald 
361948b3642SMilanka Ringwald // int  obex_message_builder_body_add_dynamic(uint8_t * buffer, uint16_t buffer_len, uint32_t length, void (*data_callback)(uint32_t offset, uint8_t * buffer, uint32_t len));
36281fb6ec9SMilanka Ringwald 
3637c006017SMilanka Ringwald #if defined __cplusplus
3647c006017SMilanka Ringwald }
3657c006017SMilanka Ringwald #endif
3667c006017SMilanka Ringwald #endif
3677c006017SMilanka Ringwald 
368