xref: /btstack/src/classic/obex_message_builder.h (revision 7c006017049f293307f1ba63f1a6136a5ef8ad5b)
1 /*
2  * Copyright (C) 2019 BlueKitchen GmbH
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the copyright holders nor the names of
14  *    contributors may be used to endorse or promote products derived
15  *    from this software without specific prior written permission.
16  * 4. Any redistribution, use, or modification is done solely for
17  *    personal benefit and not for any commercial purpose or for
18  *    monetary gain.
19  *
20  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  * Please inquire about commercial licensing options at
34  * [email protected]
35  *
36  */
37 
38 #ifndef __OBEX_MESSAGE_BUILDER_H
39 
40 #if defined __cplusplus
41 extern "C" {
42 #endif
43 
44 #include <stdint.h>
45 #include <stdio.h>
46 #include <stdlib.h>
47 #include <string.h>
48 
49 #include "btstack_defines.h"
50 
51 //------------------------------------------------------------------------------------------------------------
52 // obex_message_builder.h
53 //
54 //
55 //
56 
57 /* API_START */
58 
59 /**
60  * @brief Start Connect request
61  * @param buffer
62  * @param buffer_len
63  * @param obex_version_number
64  * @param flags
65  * @param maximum_obex_packet_length
66  */
67 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);
68 
69 /**
70  * @brief Start Disconnect request
71  * @param buffer
72  * @param buffer_len
73  * @param connection_id
74  */
75 uint8_t obex_message_builder_request_create_disconnect(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
76 
77 /**
78  * @brief Create Get request
79  * @param buffer
80  * @param buffer_len
81  * @param connection_id
82  */
83 uint8_t obex_message_builder_request_create_get(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
84 
85 /**
86  * @brief Create Put request
87  * @param buffer
88  * @param buffer_len
89  * @param connection_id
90  */
91 uint8_t obex_message_builder_request_create_put(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
92 
93 
94 /**
95  * @brief Create Abort request
96  * @param buffer
97  * @param buffer_len
98  * @param connection_id
99  */
100 uint8_t obex_message_builder_request_create_abort(uint8_t * buffer, uint16_t buffer_len, uint32_t connection_id);
101 
102 /**
103  * @brief Start Set Path request
104  * @param buffer
105  * @param buffer_len
106  * @param connection_id
107  */
108 uint8_t obex_message_builder_request_create_set_path(uint8_t * buffer, uint16_t buffer_len, uint8_t flags, uint32_t connection_id);
109 
110 /**
111  * @brief Add SRM Enable
112  * @param buffer
113  * @param buffer_len
114  */
115 uint8_t obex_message_builder_header_add_srm_enable(uint8_t * buffer, uint16_t buffer_len);
116 
117 // /**
118 //  * @brief Add header with single byte value (8 bit)
119 //  * @param buffer
120 //  * @param buffer_len
121 //  * @param header_type
122 //  * @param value
123 //  */
124 // uint8_t obex_message_builder_header_add_byte(uint8_t * buffer, uint16_t buffer_len, uint8_t header_type, uint8_t value);
125 
126 // /**
127 //  * @brief Add header with word value (32 bit)
128 //  * @param buffer
129 //  * @param buffer_len
130 //  * @param header_type
131 //  * @param value
132 //  */
133 // uint8_t obex_message_builder_header_add_word(uint8_t * buffer, uint16_t buffer_len, uint8_t header_type, uint32_t value);
134 
135 // /**
136 //  * @brief Add header with variable size
137 //  * @param buffer
138 //  * @param buffer_len
139 //  * @param header_type
140 //  * @param header_data
141 //  * @param header_data_length
142 //  */
143 // 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);
144 
145 /**
146  * @brief Add name header to current request
147  * @param buffer
148  * @param buffer_len
149  * @param name
150  */
151 uint8_t obex_message_builder_header_add_name(uint8_t * buffer, uint16_t buffer_len, const char * name);
152 
153 /**
154  * @brief Add target header to current request
155  * @param buffer
156  * @param buffer_len
157  * @param target
158  * @param lenght of target
159  */
160 uint8_t obex_message_builder_header_add_target(uint8_t * buffer, uint16_t buffer_len, const uint8_t * target, uint16_t length);
161 
162 /**
163  * @brief Add type header to current request
164  * @param buffer
165  * @param buffer_len
166  * @param type
167  */
168 uint8_t obex_message_builder_header_add_type(uint8_t * buffer, uint16_t buffer_len, const char * type);
169 
170 /**
171  * @brief Add count header to current request
172  * @param buffer
173  * @param buffer_len
174  * @param count
175  */
176 uint8_t obex_message_builder_header_add_count(uint8_t * buffer, uint16_t buffer_len, uint32_t count);
177 
178 /**
179  * @brief Add application parameters header to current request
180  * @param buffer
181  * @param buffer_len
182  * @param data
183  * @param lenght of application parameters
184  */
185 uint8_t obex_message_builder_header_add_application_parameters(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint16_t length);
186 
187 /**
188  * @brief Add application parameters header to current request
189  * @param buffer
190  * @param buffer_len
191  * @param data
192  * @param lenght of challenge response
193  */
194 uint8_t obex_message_builder_header_add_challenge_response(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint16_t length);
195 
196 /**
197  * @brief Add body
198  * @param buffer
199  * @param buffer_len
200  * @param data
201  * @param lenght
202  */
203 uint8_t obex_message_builder_static_add_body(uint8_t * buffer, uint16_t buffer_len, const uint8_t * data, uint32_t length);
204 // int  obex_message_builder_add_body_dynamic(uint8_t * buffer, uint16_t buffer_len, uint32_t length, void (*data_callback)(uint32_t offset, uint8_t * buffer, uint32_t len));
205 
206 
207 /* API_END */
208 
209 #if defined __cplusplus
210 }
211 #endif
212 #endif
213 
214