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