1 /* ****************************************************************
3 * Copyright 2014 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ******************************************************************/
24 * This file contains common utility functions to manage the CA msg
25 * fragmentation and reassemebly.
28 #ifndef CA_FRAGMENTATION_H_
29 #define CA_FRAGMENTATION_H_
35 * @var MAX_DATA_LENGTH_SUPPORTED
36 * @brief From the adapter level, this is the maximum data length is supported
37 * for the data transmission.
39 #define MAX_DATA_LENGTH_SUPPORTED 4095
42 * @var NUMBER_OF_BITS_TO_IDENTIFY_DATA
43 * @brief The number of bits allocated to represent data length in header.
45 #define NUMBER_OF_BITS_TO_IDENTIFY_DATA 12
48 * @var NUMBER_OF_BITS_IN_CA_HEADER
49 * @brief The length of the header in bits.
51 #define NUMBER_OF_BITS_IN_CA_HEADER 15
54 * @var CA_HEADER_LENGTH
55 * @brief The length of the header in bytes.
57 #define CA_HEADER_LENGTH 2
60 * @var CA_SUPPORTED_BLE_MTU_SIZE
61 * @brief The MTU supported for BLE adapter
63 #define CA_SUPPORTED_BLE_MTU_SIZE 20
67 * @var PLATFORM_IDENTIFIER_BIT
68 * @brief Reserved bit to differentiating the platform. Currently not in use.
70 #define PLATFORM_IDENTIFIER_BIT 1
73 * @var CA_SUPPORTED_EDR_MTU_SIZE
74 * @brief The MTU supported from Tizen platform for EDR adapter.
76 #define CA_SUPPORTED_EDR_MTU_SIZE 512
80 * @var PLATFORM_IDENTIFIER_BIT
81 * @brief Reserved bit to differentiating the platform. Currently not in use.
83 #define PLATFORM_IDENTIFIER_BIT 0
86 * @var CA_SUPPORTED_EDR_MTU_SIZE
87 * @brief The MTU supported from Android platform for EDR adapter.
89 #define CA_SUPPORTED_EDR_MTU_SIZE 200
93 * @var PLATFORM_IDENTIFIER_BIT
94 * @brief Reserved bit to differentiating the platform. Currently not in use.
96 #define PLATFORM_IDENTIFIER_BIT 0
99 * @var CA_SUPPORTED_EDR_MTU_SIZE
100 * @brief The MTU supported from Arduino platform for EDR adapter.
102 #define CA_SUPPORTED_EDR_MTU_SIZE 200
104 #else //Other Platforms
106 * @var PLATFORM_IDENTIFIER_BIT
107 * @brief Reserved bit to differentiating the platform. Currently not in use.
109 #define PLATFORM_IDENTIFIER_BIT 0
112 * @var CA_SUPPORTED_EDR_MTU_SIZE
113 * @brief The MTU supported for EDR adapter
115 #define CA_SUPPORTED_EDR_MTU_SIZE 200
120 * @var HEADER_VERSION
121 * @brief Current Header version.
123 #define HEADER_VERSION 1
130 /*****************************************************************
131 * @file The CA Header format
132 * @brief CA Header will be defined by 2 bytes of Header.
133 * First two bits : Header version(Currently Its not being used)
134 * Third bit and fourth bit: Reserved bits for future use.
135 * 5th to 16th bit : 12 bits to provide the length of the data.
136 *****************************************************************/
139 * @fn CAGenerateHeader
140 * @brief This function is used to generate the CA specific header to maintain the fragmentation
141 * logic. The header structure explained above will be formed and returned to the caller.
143 * @param[in] data Pointer to the character data which needs to be printed.
144 * @param[in] length The total legth of the data which will be represented from 5th -16th bits
147 * @return CA_STATUS_OK on success. One of theCA_STATUS_FAILED or other error values on error.
148 * @retval CA_STATUS_OK Successful
149 * @retval CA_STATUS_INVALID_PARAM Invalid input arguments
150 * @retval CA_STATUS_FAILED Operation failed
152 CAResult_t CAGenerateHeader(char *header, uint32_t length);
156 * @brief This function is used to parse the header in the receiver end. This function will
157 * provide the information of the total length of the data which has been fragmented.
159 * @param[in] header Pointer to the character data which contains the header information.
160 * Note that pointer should point to two bytes of data header
161 * which needs to be parsed.
164 uint32_t CAParseHeader(const char *header);
170 #endif /* CA_FRAGMENTATION_H_ */