X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=resource%2Fcsdk%2Fstack%2Finclude%2Focpayload.h;h=7d39aa8518841d822586117f5a89f4774e94c82f;hb=3c093548382bb2542c87a67e6e5fa32552c29cb3;hp=4cde82473fa4aceca548f764e649d7b45bcc8de0;hpb=7033427e9b2787649d5b3a7769a32520e19b47d2;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/stack/include/ocpayload.h b/resource/csdk/stack/include/ocpayload.h old mode 100755 new mode 100644 index 4cde824..7d39aa8 --- a/resource/csdk/stack/include/ocpayload.h +++ b/resource/csdk/stack/include/ocpayload.h @@ -21,15 +21,48 @@ #ifndef OCPAYLOAD_H_ #define OCPAYLOAD_H_ +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS +#endif +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS +#endif + #include #include #include "octypes.h" +#if defined(__WITH_TLS__) || defined(__WITH_DTLS__) +#include "securevirtualresourcetypes.h" +#endif + #ifdef __cplusplus extern "C" { #endif +/** + * Macro to verify the validity of cbor operation. + */ +#define VERIFY_CBOR_SUCCESS(log_tag, err, log_message) \ + if ((CborNoError != (CborError)(err)) && (CborErrorOutOfMemory != (CborError)(err))) \ + { \ + if ((log_tag) && (log_message)) \ + { \ + OIC_LOG_V(ERROR, (log_tag), "%s with cbor error: \'%s\'.", \ + (log_message), (cbor_error_string((CborError)err))); \ + } \ + goto exit; \ + } \ + +#define VERIFY_PARAM_NON_NULL(log_tag, err, log_message) \ + if (NULL == (err)) \ + { \ + OIC_LOG_V(FATAL, (log_tag), "%s", (log_message)); \ + goto exit;\ + } \ + + typedef struct OCResource OCResource; void OCPayloadDestroy(OCPayload* payload); @@ -41,15 +74,18 @@ size_t calcDimTotal(const size_t dimensions[MAX_REP_ARRAY_DEPTH]); OCRepPayload* OCRepPayloadClone(const OCRepPayload* payload); +OCRepPayload* OCRepPayloadBatchClone(const OCRepPayload* repPayload); + void OCRepPayloadAppend(OCRepPayload* parent, OCRepPayload* child); bool OCRepPayloadSetUri(OCRepPayload* payload, const char* uri); bool OCRepPayloadAddResourceType(OCRepPayload* payload, const char* resourceType); -bool OCRepPayloadAddInterface(OCRepPayload* payload, const char* interface); +bool OCRepPayloadAddInterface(OCRepPayload* payload, const char* iface); +bool OCRepPayloadAddModelVersion(OCRepPayload* payload, const char* dmv); bool OCRepPayloadAddResourceTypeAsOwner(OCRepPayload* payload, char* resourceType); -bool OCRepPayloadAddInterfaceAsOwner(OCRepPayload* payload, char* interface); +bool OCRepPayloadAddInterfaceAsOwner(OCRepPayload* payload, char* iface); bool OCRepPayloadIsNull(const OCRepPayload* payload, const char* name); bool OCRepPayloadSetNull(OCRepPayload* payload, const char* name); @@ -60,6 +96,43 @@ bool OCRepPayloadGetPropInt(const OCRepPayload* payload, const char* name, int64 bool OCRepPayloadSetPropDouble(OCRepPayload* payload, const char* name, double value); bool OCRepPayloadGetPropDouble(const OCRepPayload* payload, const char* name, double* value); +/** + * This function allocates memory for the byte string and sets it in the payload. + * + * @param payload Pointer to the payload to which byte string needs to be added. + * @param name Name of the byte string. + * @param value Byte string and it's length. + * + * @return true on success, false upon failure. + */ +bool OCRepPayloadSetPropByteString(OCRepPayload* payload, const char* name, OCByteString value); + +/** + * This function sets the byte string in the payload. + * + * @param payload Pointer to the payload to which byte string needs to be added. + * @param name Name of the byte string. + * @param value Byte string and it's length. + * + * @return true on success, false upon failure. + */ +bool OCRepPayloadSetPropByteStringAsOwner(OCRepPayload* payload, const char* name, + OCByteString* value); + +/** + * This function gets the byte string from the payload. + * + * @param payload Pointer to the payload from which byte string needs to be retrieved. + * @param name Name of the byte string. + * @param value Byte string and it's length. + * + * @note: Caller needs to invoke OCFree on value.bytes after it is finished using the byte string. + * + * @return true on success, false upon failure. + */ +bool OCRepPayloadGetPropByteString(const OCRepPayload* payload, const char* name, + OCByteString* value); + bool OCRepPayloadSetPropString(OCRepPayload* payload, const char* name, const char* value); bool OCRepPayloadSetPropStringAsOwner(OCRepPayload* payload, const char* name, char* value); bool OCRepPayloadGetPropString(const OCRepPayload* payload, const char* name, char** value); @@ -68,10 +141,57 @@ bool OCRepPayloadSetPropBool(OCRepPayload* payload, const char* name, bool value bool OCRepPayloadGetPropBool(const OCRepPayload* payload, const char* name, bool* value); bool OCRepPayloadSetPropObject(OCRepPayload* payload, const char* name, const OCRepPayload* value); -bool OCRepPayloadSetPropObjectAsOwner(OCRepPayload* payload, const char* name, - OCRepPayload* value); +bool OCRepPayloadSetPropObjectAsOwner(OCRepPayload* payload, const char* name, OCRepPayload* value); bool OCRepPayloadGetPropObject(const OCRepPayload* payload, const char* name, OCRepPayload** value); +#ifdef __WITH_TLS__ +bool OCRepPayloadSetPropPubDataType(OCRepPayload *payload, const char *name, const OicSecKey_t *value); +bool OCRepPayloadSetPropPubDataTypeAsOwner(OCRepPayload *payload, const char *name, const OicSecKey_t *value); +bool OCRepPayloadGetPropPubDataType(const OCRepPayload *payload, const char *name, OicSecKey_t *value); +#endif + +/** + * This function allocates memory for the byte string array and sets it in the payload. + * + * @param payload Pointer to the payload to which byte string array needs to be added. + * @param name Name of the byte string. + * @param array Byte string array. + * @param dimensions Number of byte strings in above array. + * + * @return true on success, false upon failure. + */ +bool OCRepPayloadSetByteStringArrayAsOwner(OCRepPayload* payload, const char* name, + OCByteString* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]); + +/** + * This function sets the byte string array in the payload. + * + * @param payload Pointer to the payload to which byte string array needs to be added. + * @param name Name of the byte string. + * @param array Byte string array. + * @param dimensions Number of byte strings in above array. + * + * @return true on success, false upon failure. + */ +bool OCRepPayloadSetByteStringArray(OCRepPayload* payload, const char* name, + const OCByteString* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]); + +/** + * This function gets the byte string array from the payload. + * + * @param payload Pointer to the payload from which byte string array needs to be retrieved. + * @param name Name of the byte string array. + * @param value Byte string array. + * @param dimensions Number of byte strings in above array. + * + * @note: Caller needs to invoke OICFree on 'bytes' field of all array elements after it is + * finished using the byte string array. + * + * @return true on success, false upon failure. + */ +bool OCRepPayloadGetByteStringArray(const OCRepPayload* payload, const char* name, + OCByteString** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]); + bool OCRepPayloadSetIntArrayAsOwner(OCRepPayload* payload, const char* name, int64_t* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]); bool OCRepPayloadSetIntArray(OCRepPayload* payload, const char* name, @@ -112,39 +232,62 @@ void OCRepPayloadDestroy(OCRepPayload* payload); // Discovery Payload OCDiscoveryPayload* OCDiscoveryPayloadCreate(); -OCSecurityPayload* OCSecurityPayloadCreate(const char* securityData); +OCSecurityPayload* OCSecurityPayloadCreate(const uint8_t* securityData, size_t size); void OCSecurityPayloadDestroy(OCSecurityPayload* payload); +#ifndef TCP_ADAPTER +void OCDiscoveryPayloadAddResource(OCDiscoveryPayload* payload, const OCResource* res, + uint16_t securePort); +#else void OCDiscoveryPayloadAddResource(OCDiscoveryPayload* payload, const OCResource* res, - uint16_t port); + uint16_t securePort, uint16_t tcpPort); +#endif void OCDiscoveryPayloadAddNewResource(OCDiscoveryPayload* payload, OCResourcePayload* res); -bool OCResourcePayloadAddResourceType(OCResourcePayload* payload, const char* resourceType); -bool OCResourcePayloadAddInterface(OCResourcePayload* payload, const char* interface); +bool OCResourcePayloadAddStringLL(OCStringLL **payload, const char* type); size_t OCDiscoveryPayloadGetResourceCount(OCDiscoveryPayload* payload); OCResourcePayload* OCDiscoveryPayloadGetResource(OCDiscoveryPayload* payload, size_t index); +void OCDiscoveryResourceDestroy(OCResourcePayload* payload); void OCDiscoveryPayloadDestroy(OCDiscoveryPayload* payload); -// Device Payload -OCDevicePayload* OCDevicePayloadCreate(const char* uri, const uint8_t* sid, const char* dname, - const char* specVer, const char* dmVer); -void OCDevicePayloadDestroy(OCDevicePayload* payload); - -// Platform Payload -OCPlatformPayload* OCPlatformPayloadCreate(const char* uri, const OCPlatformInfo* platformInfo); -OCPlatformPayload* OCPlatformPayloadCreateAsOwner(char* uri, OCPlatformInfo* platformInfo); - -void OCPlatformPayloadDestroy(OCPlatformPayload* payload); - +#ifdef WITH_PRESENCE // Presence Payload OCPresencePayload* OCPresencePayloadCreate(uint32_t seqNum, uint32_t maxAge, OCPresenceTrigger trigger, const char* resourceType); void OCPresencePayloadDestroy(OCPresencePayload* payload); +#endif + +// Helper API +OCStringLL* CloneOCStringLL (OCStringLL* ll); +void OCFreeOCStringLL(OCStringLL* ll); + +/** + * This function creates a list from a string (with separated contents if several) + * @param text single string or CSV text fields + * @return newly allocated linked list + * @note separator is ',' (according to rfc4180, ';' is not valid) + **/ +OCStringLL* OCCreateOCStringLL(const char* text); + +/** + * This function creates a string from a list (with separated contents if several) + * @param ll Pointer to list + * @return newly allocated string. Caller takes ownership and must later free this memory with OICFree. + * @note separator is ',' (according to rfc4180) + **/ +char* OCCreateString(const OCStringLL* ll); + +/** + * This function copies contents (and allocates if necessary) + * @param dest existing bytestring (or null to allocate here) + * @param source existing bytestring + * @return true of success false on any errors + **/ +bool OCByteStringCopy(OCByteString *dest, const OCByteString *source); #ifdef __cplusplus } #endif #endif -