Merge tizen_5.0 codes into tizen_4.0
[platform/upstream/iotivity.git] / resource / csdk / stack / include / octypes.h
index 3505a72..1a5797b 100644 (file)
 extern "C" {
 #endif // __cplusplus
 
-/** For the feature presence.*/
-#define WITH_PRESENCE
-
 #include "ocpresence.h"
+
+// TODO : need for secure psi
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+#define __SECURE_PSI__
+#endif
+
 //-----------------------------------------------------------------------------
 // Defines
 //-----------------------------------------------------------------------------
 
+#define IOTIVITY_VERSION "1.2.1"
+
 /**
  * OIC Virtual resources supported by every OIC device.
  */
@@ -74,18 +79,12 @@ extern "C" {
 /** KeepAlive URI.*/
 #define OC_RSRVD_KEEPALIVE_URI                "/oic/ping"
 
-
-/** Presence */
-
 /** Presence URI through which the OIC devices advertise their presence.*/
 #define OC_RSRVD_PRESENCE_URI                 "/oic/ad"
 
 /** Presence URI through which the OIC devices advertise their device presence.*/
 #define OC_RSRVD_DEVICE_PRESENCE_URI         "/oic/prs"
 
-/** Sets the default time to live (TTL) for presence.*/
-#define OC_DEFAULT_PRESENCE_TTL_SECONDS       (60)
-
 /** For multicast Discovery mechanism.*/
 #define OC_MULTICAST_DISCOVERY_URI            "/oic/res"
 
@@ -154,6 +153,9 @@ extern "C" {
 /** To represent resource type with platform.*/
 #define OC_RSRVD_RESOURCE_TYPE_PLATFORM "oic.wk.p"
 
+/** To represent resource type with collection.*/
+#define OC_RSRVD_RESOURCE_TYPE_COLLECTION "oic.wk.col"
+
 /** To represent resource type with RES.*/
 #define OC_RSRVD_RESOURCE_TYPE_RES      "oic.wk.res"
 
@@ -221,6 +223,9 @@ extern "C" {
 /** TCP Port. */
 #define OC_RSRVD_TCP_PORT               "x.org.iotivity.tcp"
 
+/** TLS Port. */
+#define OC_RSRVD_TLS_PORT               "x.org.iotivity.tls"
+
 /** For Server instance ID.*/
 #define OC_RSRVD_SERVER_INSTANCE_ID     "sid"
 
@@ -261,6 +266,8 @@ extern "C" {
 /** System time for the platform. */
 #define OC_RSRVD_SYSTEM_TIME            "st"
 
+/** VID for the platform. */
+#define OC_RSRVD_VID                    "vid"
 /**
  *  Device.
  */
@@ -281,8 +288,7 @@ extern "C" {
 #define OC_SPEC_VERSION                 "core.1.1.0"
 
 /** Device Data Model version.*/
-#define OC_DATA_MODEL_VERSION           "res.1.1.0"
-
+#define OC_DATA_MODEL_VERSION           "res.1.1.0,sh.1.1.0"
 /**
  *  These provide backward compatibility - their use is deprecated.
  */
@@ -371,7 +377,7 @@ extern "C" {
 #define OC_RSRVD_ACCOUNT_URI               "/oic/account"
 
 /** Account user URI.*/
-#define OC_RSRVD_ACCOUNT_USER_URI          "/oic/account/user"
+#define OC_RSRVD_ACCOUNT_SEARCH_URI        "/oic/account/search"
 
 /** Account session URI.*/
 #define OC_RSRVD_ACCOUNT_SESSION_URI       "/oic/account/session"
@@ -592,6 +598,29 @@ typedef enum
     OC_ADAPTER_NFC           = (1 << 5)
 } OCTransportAdapter;
 
+typedef enum
+{
+    OC_DEFAULT_BT_FLAGS = 0,
+    // flags for BLE transport
+    OC_LE_ADV_DISABLE   = 0x1,   // disable BLE advertisement.
+    OC_LE_ADV_ENABLE    = 0x2,   // enable BLE advertisement.
+    OC_LE_SERVER_DISABLE = (1 << 4),   // disable gatt server.
+    // flags for EDR transport
+    OC_EDR_SERVER_DISABLE = (1 << 7)   // disable rfcomm server.
+} OCTransportBTFlags_t;
+
+/**
+ * Log level to print can be controlled through this enum.
+ * And privacy logs contained uid, Token, Device id, etc can also disable.
+ * This enum (OCLogLevel) must be kept synchronized with
+ * CAUtilLogLevel_t (in CACommon.h).
+ */
+typedef enum
+{
+    OC_LOG_LEVEL_ALL = 1,             // all logs.
+    OC_LOG_LEVEL_INFO,                // debug level is disabled.
+} OCLogLevel;
+
 /**
  *  Enum layout assumes some targets have 16-bit integer (e.g., Arduino).
  */
@@ -694,9 +723,12 @@ typedef struct
 
     /** usually zero for default interface.*/
     uint32_t                ifindex;
-#if defined (ROUTING_GATEWAY) || defined (ROUTING_EP)
-    char                    routeData[MAX_ADDR_STR_SIZE]; //destination GatewayID:ClientId
-#endif
+
+    /** destination GatewayID:ClientId.*/
+    char                    routeData[MAX_ADDR_STR_SIZE];
+
+    /** device ID of remote.*/
+    char                    remoteId[MAX_IDENTITY_SIZE];
 } OCDevAddr;
 
 /**
@@ -803,11 +835,9 @@ typedef enum
     /** Register observe request for all notifications, including stale notifications.*/
     OC_REST_OBSERVE_ALL    = (1 << 5),
 
-#ifdef WITH_PRESENCE
     /** Subscribe for all presence notifications of a particular resource.*/
     OC_REST_PRESENCE       = (1 << 7),
 
-#endif
     /** Allows OCDoResource caller to do discovery.*/
     OC_REST_DISCOVER       = (1 << 8)
 } OCMethod;
@@ -978,6 +1008,7 @@ typedef enum
     OC_STACK_PDM_IS_NOT_INITIALIZED,
     OC_STACK_DUPLICATE_UUID,
     OC_STACK_INCONSISTENT_DB,
+    OC_STACK_SVR_DB_NOT_EXIST,
 
     /**
      * Error code from OTM
@@ -987,15 +1018,24 @@ typedef enum
     OC_STACK_NOT_ALLOWED_OXM,
 
     /** Insert all new error codes here!.*/
-#ifdef WITH_PRESENCE
     OC_STACK_PRESENCE_STOPPED = 128,
     OC_STACK_PRESENCE_TIMEOUT,
     OC_STACK_PRESENCE_DO_NOT_HANDLE,
-#endif
+
+    /** Request is denied by the user*/
+    OC_STACK_USER_DENIED_REQ,
+    OC_STACK_NOT_ACCEPTABLE,
+    OC_STACK_METHOD_NOT_ALLOWED,
 
     /** ERROR code from server */
     OC_STACK_FORBIDDEN_REQ,          /** 403*/
+    OC_STACK_TOO_MANY_REQUESTS,      /** 429*/
     OC_STACK_INTERNAL_SERVER_ERROR,  /** 500*/
+    OC_STACK_NOT_IMPLEMENTED,        /** 501*/
+    OC_STACK_BAD_GATEWAY,            /** 502*/
+    OC_STACK_SERVICE_UNAVAILABLE,    /** 503*/
+    OC_STACK_GATEWAY_TIMEOUT,        /** 504*/
+    OC_STACK_PROXY_NOT_SUPPORTED,    /** 505*/
 
     /** ERROR in stack.*/
     OC_STACK_ERROR = 255
@@ -1015,7 +1055,7 @@ typedef void * OCResourceHandle;
 /**
  * Handle to an OCRequest object owned by the OCStack.
  */
-typedef void * OCRequestHandle;
+typedef uint32_t OCRequestHandle;
 
 /**
  * Unique identifier for each observation request. Used when observations are
@@ -1070,6 +1110,14 @@ typedef struct {
 
     /** Persistent storage unlink handler.*/
     int (* unlink)(const char *path);
+
+    /** Persistent Storage Handler for Encryption.*/
+    int (* encrypt)(const unsigned char *pt, size_t size,
+            unsigned char**ct, size_t *ct_len);
+
+    /**Persistent Storage Handler for Decryption.*/
+    int (* decrypt)(const unsigned char *ct, size_t size,
+            unsigned char**pt, size_t *pt_len);
 } OCPersistentStorage;
 
 /**
@@ -1106,10 +1154,13 @@ typedef enum
     OC_EH_NOT_ACCEPTABLE = 406,
     OC_EH_TOO_LARGE = 413,
     OC_EH_UNSUPPORTED_MEDIA_TYPE = 415,
+    OC_EH_TOO_MANY_REQUESTS = 429,
     OC_EH_INTERNAL_SERVER_ERROR = 500,
+    OC_EH_NOT_IMPLEMENTED = 501,
     OC_EH_BAD_GATEWAY = 502,
     OC_EH_SERVICE_UNAVAILABLE = 503,
-    OC_EH_RETRANSMIT_TIMEOUT = 504
+    OC_EH_RETRANSMIT_TIMEOUT = 504,
+    OC_EH_PROXY_NOT_SUPPORTED = 505
 } OCEntityHandlerResult;
 
 /**
@@ -1153,6 +1204,7 @@ typedef struct OCHeaderOption
 /**
  * This structure describes the platform properties. All non-Null properties will be
  * included in a platform discovery request.
+ * @deprecated: Use OCSetPropertyValue  to set platform value.
  */
 typedef struct
 {
@@ -1195,6 +1247,7 @@ typedef struct
  * This structure is expected as input for device properties.
  * device name is mandatory and expected from the application.
  * device id of type UUID will be generated by the stack.
+ * @deprecated: Use OCSetPropertyValue  to set device value.
  */
 typedef struct
 {
@@ -1239,9 +1292,9 @@ typedef enum
     PAYLOAD_TYPE_INVALID,
     /** The payload is an OCDiscoveryPayload */
     PAYLOAD_TYPE_DISCOVERY,
-    /** The payload is an OCDevicePayload */
+    /** The payload of the device */
     PAYLOAD_TYPE_DEVICE,
-    /** The payload is an OCPlatformPayload */
+    /** The payload type of the platform */
     PAYLOAD_TYPE_PLATFORM,
     /** The payload is an OCRepPayload */
     PAYLOAD_TYPE_REPRESENTATION,
@@ -1365,9 +1418,6 @@ typedef struct OCDiscoveryPayload
     /** Name */
     char *name;
 
-    /** HREF */
-    char *uri;
-
     /** Resource Type */
     OCStringLL *type;
 
@@ -1385,31 +1435,10 @@ typedef struct OCDiscoveryPayload
 typedef struct
 {
     OCPayload base;
-    char *sid;
-    char* deviceName;
-    char* specVersion;
-    OCStringLL *dataModelVersions;
-    OCStringLL *interfaces;
-    OCStringLL *types;
-} OCDevicePayload;
-
-typedef struct
-{
-    OCPayload base;
-    char* uri;
-    OCPlatformInfo info;
-    OCStringLL* rt;
-    OCStringLL* interfaces;
-} OCPlatformPayload;
-
-typedef struct
-{
-    OCPayload base;
     uint8_t* securityData;
     size_t payloadSize;
 } OCSecurityPayload;
 
-#ifdef WITH_PRESENCE
 typedef struct
 {
     OCPayload base;
@@ -1418,7 +1447,6 @@ typedef struct
     OCPresenceTrigger trigger;
     char* resourceType;
 } OCPresencePayload;
-#endif
 
 /**
  * Incoming requests handled by the server. Requests are passed in as a parameter to the
@@ -1495,7 +1523,7 @@ typedef struct
     uint8_t numRcvdVendorSpecificHeaderOptions;
 
     /** An array of the received vendor specific header options.*/
-    OCHeaderOption rcvdVendorSpecificHeaderOptions[MAX_HEADER_OPTIONS];
+    OCHeaderOption *rcvdVendorSpecificHeaderOptions;
 } OCClientResponse;
 
 /**
@@ -1697,7 +1725,6 @@ typedef OCEntityHandlerResult (*OCDeviceEntityHandler)
  */
 typedef void (*OCDirectPairingCB)(void *ctx, OCDPDev_t *peer, OCStackResult result);
 //#endif // DIRECT_PAIRING
-
 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
 /**
  * Callback function definition for Change in TrustCertChain
@@ -1720,6 +1747,29 @@ typedef struct trustCertChainContext
 } trustCertChainContext_t;
 #endif
 
+/**
+ * OTM State
+ */
+typedef enum
+{
+    OC_OTM_READY = 0,
+    OC_OTM_STARTED = 1,
+    OC_OTM_DONE = 2,
+    OC_OTM_ERROR = 3
+} OCOtmEvent_t;
+
+/**
+ * Callback function to receive the OTM event on server side.
+ *
+ * @param[in] ctx user context returned in the callback
+ * @param[in] addr PT's address (address can be NULL in case of init state)
+ * @param[in] port PT's port (It is meaningless in case of init state & BLE)
+ * @param[in] uuid PT's UUID (UUID can be NULL in case of init state & coap reqest)
+ * @param[in] event OTM state (@ref OCOtmEvent_t)
+ */
+typedef void (*OCOtmEventHandler)(void *ctx, const char *addr, uint16_t port,
+        const char *ownerId, OCOtmEvent_t event);
+
 #ifdef __cplusplus
 }
 #endif // __cplusplus