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"
41 typedef struct OicParseQueryIter OicParseQueryIter_t;
44 * OicRestQueryIter data structure is used for book-keeping
45 * sub-REST query's attribute's and value's, starting location &
46 * length between calls to GetNextQuery(). This struct needs
47 * to be first initialized with ParseQueryIterInit().
50 struct OicParseQueryIter
52 unsigned char * attrPos; /**<stating location of attribute */
53 size_t attrLen; /**<length of the attribute */
54 unsigned char * valPos; /**<starting location of value*/
55 size_t valLen; /**<length of the value*/
56 coap_parse_iterator_t pi; /**<coap struct for tokenizing the query*/
60 * Macro to verify success of operation.
61 * eg: VERIFY_SUCCESS(TAG, OC_STACK_OK == foo(), ERROR);
62 * @note Invoking function must define "exit:" label for goto functionality to work correctly.
65 #define VERIFY_SUCCESS(tag, op, logLevel) do{ if (!(op)) \
66 {OIC_LOG((logLevel), tag, #op " failed!!"); goto exit; } }while(0)
70 * Macro to verify argument is not equal to NULL.
71 * eg: VERIFY_NON_NULL(TAG, ptrData, ERROR);
72 * @note Invoking function must define "exit:" label for goto functionality to work correctly.
75 #define VERIFY_NON_NULL(tag, arg, logLevel) do{ if (NULL == (arg)) \
76 { OIC_LOG((logLevel), tag, #arg " is NULL"); goto exit; } }while(0)
79 * This method initializes the OicParseQueryIter_t struct
81 * @param query - REST query, to be parsed
82 * @param parseIter - OicParseQueryIter_t struct, to be initialized
85 void ParseQueryIterInit(unsigned char * query, OicParseQueryIter_t * parseIter);
88 * This method fills the OicParseQueryIter_t struct with next REST query's
89 * attribute's and value's information
91 * @param parseIter - OicParseQueryIter_t struct, has next query's attribute's & value's info
93 * @return reference to @ref OicParseQueryIter_t with parsed query info or NULL has no query to parse.
95 OicParseQueryIter_t * GetNextQuery(OicParseQueryIter_t * parseIter);
98 * This method acts as a helper funtion for JSON unmarshalling by various SVR's.
100 * @param jsonRoot - root JSON node containing the OicUuid array
101 * @param arrayItem - name of the JSON OicUuid array item
102 * @param numUuids - pointer to the number of OicUuid's available in JSON array
103 * @param uuids - pointer to the array of OicUuid's
105 * @return ::OC_STACK_OK on success, some other value upon failure.
107 OCStackResult AddUuidArray(cJSON* jsonRoot, const char* arrayItem,
108 size_t *numUuids, OicUuid_t** uuids );
111 * Function to getting string of ownership transfer method
113 * @prarm oxmType ownership transfer method
115 * @return string value of ownership transfer method
117 const char* GetOxmString(OicSecOxm_t oxmType);
121 #endif // __cplusplus
123 #endif //IOTVT_SRM_UTILITY_H