1 //******************************************************************
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #ifndef IOTVT_SRM_UTILITY_H
22 #define IOTVT_SRM_UTILITY_H
26 #include "securevirtualresourcetypes.h"
42 typedef struct OicParseQueryIter OicParseQueryIter_t;
45 * @brief OicRestQueryIter data structure is used for book-keeping
46 * sub-REST query's attribute's and value's, starting location &
47 * length between calls to GetNextQuery(). This struct needs
48 * to be first initialized with ParseQueryIterInit().
51 struct OicParseQueryIter
53 unsigned char * attrPos; /**<stating location of attribute */
54 size_t attrLen; /**<length of the attribute */
55 unsigned char * valPos; /**<starting location of value*/
56 size_t valLen; /**<length of the value*/
57 coap_parse_iterator_t pi; /**<coap struct for tokenizing the query*/
62 * @brief Macro to verify success of operation.
63 * eg: VERIFY_SUCCESS(TAG, OC_STACK_OK == foo(), ERROR);
64 * @note Invoking function must define "exit:" label for goto functionality to work correctly.
67 #define VERIFY_SUCCESS(tag, op, logLevel) { if (!(op)) \
68 {OC_LOG((logLevel), tag, PCF(#op " failed!!")); goto exit;} }
71 * @def VERIFY_NON_NULL
72 * @brief Macro to verify argument is not equal to NULL.
73 * eg: VERIFY_NON_NULL(TAG, ptrData, ERROR);
74 * @note Invoking function must define "exit:" label for goto functionality to work correctly.
77 #define VERIFY_NON_NULL(tag, arg, logLevel) { if (NULL == (arg)) \
78 { OC_LOG((logLevel), tag, PCF(#arg " is NULL")); goto exit; } }
81 * This method initializes the OicParseQueryIter_t struct
83 *@param query - REST query, to be parsed
84 *@param parseIter - OicParseQueryIter_t struct, to be initialized
87 void ParseQueryIterInit(unsigned char * query, OicParseQueryIter_t * parseIter);
91 * This method fills the OicParseQueryIter_t struct with next REST query's
92 * attribute's and value's information
94 *@param parseIter - OicParseQueryIter_t struct, has next query's attribute's & value's info
97 * OicParseQueryIter_t * - has parsed query info
98 * NULL - has no query to parse
100 OicParseQueryIter_t * GetNextQuery(OicParseQueryIter_t * parseIter);
105 * This method acts as a helper funtion for JSON unmarshalling by various SVR's.
107 * @param jsonRoot - root JSON node containing the OicUuid array
108 * @param arrayItem - name of the JSON OicUuid array item
109 * @param numUuids - pointer to the number of OicUuid's available in JSON array
110 * @param uuids - pointer to the array of OicUuid's
112 * @return ::OC_STACK_OK on success, some other value upon failure.
114 OCStackResult AddUuidArray(cJSON* jsonRoot, const char* arrayItem,
115 size_t *numUuids, OicUuid_t** uuids );
119 #endif // __cplusplus
121 #endif //IOTVT_SRM_UTILITY_H