Merge tizen_5.0 codes into tizen_4.0
[platform/upstream/iotivity.git] / resource / csdk / stack / include / octypes.h
index 86f6b37..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"
 
@@ -219,7 +221,10 @@ extern "C" {
 #define OC_RSRVD_HOSTING_PORT           "port"
 
 /** TCP Port. */
-#define OC_RSRVD_TCP_PORT               "tcp"
+#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"
@@ -593,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).
  */
@@ -695,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;
 
 /**
@@ -804,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;
@@ -979,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
@@ -988,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
@@ -1071,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;
 
 /**
@@ -1107,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;
 
 /**
@@ -1368,9 +1418,6 @@ typedef struct OCDiscoveryPayload
     /** Name */
     char *name;
 
-    /** HREF */
-    char *uri;
-
     /** Resource Type */
     OCStringLL *type;
 
@@ -1392,7 +1439,6 @@ typedef struct
     size_t payloadSize;
 } OCSecurityPayload;
 
-#ifdef WITH_PRESENCE
 typedef struct
 {
     OCPayload base;
@@ -1401,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
@@ -1478,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;
 
 /**
@@ -1680,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
@@ -1703,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