replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / stack / include / octypes.h
index 522f91d..f1ed8b1 100644 (file)
@@ -43,10 +43,18 @@ extern "C" {
 #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,7 +82,7 @@ extern "C" {
 /** KeepAlive URI.*/
 #define OC_RSRVD_KEEPALIVE_URI                "/oic/ping"
 
-
+#ifdef WITH_PRESENCE
 /** Presence */
 
 /** Presence URI through which the OIC devices advertise their presence.*/
@@ -83,8 +91,7 @@ extern "C" {
 /** 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)
+#endif // WITH_PRESENCE
 
 /** For multicast Discovery mechanism.*/
 #define OC_MULTICAST_DISCOVERY_URI            "/oic/res"
@@ -92,6 +99,7 @@ extern "C" {
 /** Separator for multiple query string.*/
 #define OC_QUERY_SEPARATOR                    "&;"
 
+#ifdef WITH_PRESENCE
 /**
  *  OC_DEFAULT_PRESENCE_TTL_SECONDS sets the default time to live (TTL) for presence.
  */
@@ -119,6 +127,8 @@ extern "C" {
 /** To delete.*/
 #define OC_RSRVD_TRIGGER_DELETE         "delete"
 
+#endif // WITH_PRESENCE
+
 /**
  *  Attributes used to form a proper OIC conforming JSON message.
  */
@@ -145,8 +155,10 @@ extern "C" {
 /** To represent resource type.*/
 #define OC_RSRVD_RESOURCE_TYPE          "rt"
 
+#ifdef WITH_PRESENCE
 /** To represent resource type with presence.*/
 #define OC_RSRVD_RESOURCE_TYPE_PRESENCE "oic.wk.ad"
+#endif
 
 /** To represent resource type with device.*/
 #define OC_RSRVD_RESOURCE_TYPE_DEVICE   "oic.wk.d"
@@ -154,6 +166,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 +236,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 +279,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 +301,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 +390,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"
@@ -409,32 +428,32 @@ extern "C" {
 /** Defines user UUID. */
 #define OC_RSRVD_USER_UUID                 "uid"
 
-/** Defines user ID. */
-#define OC_RSRVD_USER_ID                   "userid"
-
 /** Defines group ID. */
 #define OC_RSRVD_GROUP_ID                  "gid"
 
-/** Defines group Master ID. */
-#define OC_RSRVD_GROUP_MASTER_ID           "gmid"
-
-/** Defines group type. */
-#define OC_RSRVD_GROUP_TYPE                "gtype"
-
 /** Defines member of group ID. */
 #define OC_RSRVD_MEMBER_ID                 "mid"
 
-/** Defines device ID list. */
-#define OC_RSRVD_DEVICE_ID_LIST            "dilist"
+/** Defines invite. */
+#define OC_RSRVD_INVITE                    "invite"
 
-/** Defines public. */
-#define OC_RSRVD_PUBLIC                    "Public"
+/** Defines accept. */
+#define OC_RSRVD_ACCEPT                    "accept"
 
-/** Defines private. */
-#define OC_RSRVD_PRIVATE                   "Private"
+/** Defines operation. */
+#define OC_RSRVD_OPERATION                 "op"
 
-/** Defines invite. */
-#define OC_RSRVD_INVITE                    "invite"
+/** Defines add. */
+#define OC_RSRVD_ADD                       "add"
+
+/** Defines delete. */
+#define OC_RSRVD_DELETE                    "delete"
+
+/** Defines owner. */
+#define OC_RSRVD_OWNER                     "owner"
+
+/** Defines members. */
+#define OC_RSRVD_MEMBERS                   "members"
 
 /** To represent grant type with refresh token. */
 #define OC_RSRVD_GRANT_TYPE_REFRESH_TOKEN  "refresh_token"
@@ -592,6 +611,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 +736,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;
 
 /**
@@ -978,6 +1023,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
@@ -993,9 +1039,19 @@ typedef enum
     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_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 +1071,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 +1126,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,9 +1171,11 @@ typedef enum
     OC_EH_TOO_LARGE = 413,
     OC_EH_UNSUPPORTED_MEDIA_TYPE = 415,
     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 +1219,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 +1262,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,16 +1307,18 @@ 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,
     /** The payload is an OCSecurityPayload */
     PAYLOAD_TYPE_SECURITY,
+#ifdef WITH_PRESENCE
     /** The payload is an OCPresencePayload */
     PAYLOAD_TYPE_PRESENCE
+#endif
 } OCPayloadType;
 
 /**
@@ -1365,9 +1435,6 @@ typedef struct OCDiscoveryPayload
     /** Name */
     char *name;
 
-    /** HREF */
-    char *uri;
-
     /** Resource Type */
     OCStringLL *type;
 
@@ -1385,26 +1452,6 @@ 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;
@@ -1697,7 +1744,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 +1766,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