build: Update version to 2.0.1
[iotivity.git] / resource / csdk / include / octypes.h
index 117ef7e..3cca42d 100644 (file)
@@ -22,7 +22,7 @@
 /**
  * @file
  *
- * This file contains the definition, types and APIs for resource(s) be implemented.
+ * This file contains the definitions, types and APIs for resources to be implemented.
  */
 
 #ifndef OCTYPES_H_
@@ -48,7 +48,7 @@ extern "C" {
 //-----------------------------------------------------------------------------
 
 /** Version of IoTivity. */
-#define IOTIVITY_VERSION                      "1.3.0"
+#define IOTIVITY_VERSION                      "2.0.1"
 
 /**
  * OIC Virtual resources supported by every OIC device.
@@ -65,6 +65,9 @@ extern "C" {
 /** Platform URI.*/
 #define OC_RSRVD_PLATFORM_URI                 "/oic/p"
 
+/** Maintenance URI.*/
+#define OC_RSRVD_MAINTENANCE_URI              "/oic/mnt"
+
 /** Resource Type.*/
 #define OC_RSRVD_RESOURCE_TYPES_URI           "/oic/res/types/d"
 
@@ -77,6 +80,9 @@ extern "C" {
 /** KeepAlive URI.*/
 #define OC_RSRVD_KEEPALIVE_URI                "/oic/ping"
 
+/** Cloudconf URI.*/
+#define OC_RSRVD_CLOUDCONF_URI                "/CoapCloudConfResURI"
+
 /** Presence */
 
 /** Presence URI through which the OIC devices advertise their presence.*/
@@ -165,6 +171,9 @@ extern "C" {
 /** To represent resource type with collection.*/
 #define OC_RSRVD_RESOURCE_TYPE_COLLECTION "oic.wk.col"
 
+/** To represent resource type with atomic measurement.*/
+#define OC_RSRVD_RESOURCE_TYPE_AM "oic.wk.atomicmeasurement"
+
 /** To represent resource type with RES.*/
 #define OC_RSRVD_RESOURCE_TYPE_RES      "oic.wk.res"
 
@@ -183,12 +192,12 @@ extern "C" {
 /** To represent interface.*/
 #define OC_RSRVD_INTERFACE              "if"
 
-/** To indicate how long RD should publish this item.*/
-#define OC_RSRVD_DEVICE_TTL             "lt"
-
 /** To represent time to live.*/
 #define OC_RSRVD_TTL                    "ttl"
 
+/** To indicate how long RD should publish this item.*/
+#define OC_RSRVD_DEVICE_TTL             OC_RSRVD_TTL
+
 /** To represent non*/
 #define OC_RSRVD_NONCE                  "non"
 
@@ -264,6 +273,9 @@ extern "C" {
 /** To represent priority.*/
 #define OC_RSRVD_PRIORITY               "pri"
 
+/** For resource instance ID.*/
+#define OC_RSRVD_INSTANCE_ID            "id"
+
 /**
  *  Platform.
  */
@@ -303,39 +315,52 @@ extern "C" {
 
 /** VID for the platform. */
 #define OC_RSRVD_VID                    "vid"
+
 /**
  *  Device.
  */
 
 /** Device ID.*/
-#define OC_RSRVD_DEVICE_ID              "di"
+#define OC_RSRVD_DEVICE_ID               "di"
 
 /** Device Name.*/
-#define OC_RSRVD_DEVICE_NAME            "n"
+#define OC_RSRVD_DEVICE_NAME             "n"
 
 /** Device specification version.*/
-#define OC_RSRVD_SPEC_VERSION           "icv"
+#define OC_RSRVD_SPEC_VERSION            "icv"
 
 /** Device data model.*/
-#define OC_RSRVD_DATA_MODEL_VERSION     "dmv"
+#define OC_RSRVD_DATA_MODEL_VERSION      "dmv"
 
-/** Device specification version.*/
-#define OC_SPEC_VERSION                 "ocf.1.1.0"
+/** Device description, localized */
+#define OC_RSRVD_DEVICE_DESCRIPTION      "ld"
 
-/** Integer value of spec version (OCF1.0 0b0000:1000:0000:0000).*/
-#define OC_SPEC_VERSION_VALUE           2048
+/** Device software version */
+#define OC_RSRVD_SOFTWARE_VERSION        "sv"
 
-/** Device Data Model version.*/
-#define OC_DATA_MODEL_VERSION           "ocf.res.1.1.0,ocf.sh.1.1.0"
+/** Device manufacturer name, localized */
+#define OC_RSRVD_DEVICE_MFG_NAME         "dmn"
+
+/** Device model number */
+#define OC_RSRVD_DEVICE_MODEL_NUM        "dmno"
 
 /** Protocol-Independent ID.*/
 #define OC_RSRVD_PROTOCOL_INDEPENDENT_ID "piid"
 
+/** Device specification version.*/
+#define OC_SPEC_VERSION                  "ocf.1.1.0"
+
+/** Integer value of spec version (OCF1.0 0b0000:1000:0000:0000).*/
+#define OC_SPEC_VERSION_VALUE            2048
+
+/** Device Data Model version.*/
+#define OC_DATA_MODEL_VERSION            "ocf.res.1.1.0,ocf.sh.1.1.0"
+
 /**
-*  Introspection.
-*/
-/** Name.*/
-#define OC_RSRVD_INTROSPECTION_NAME     "name"
+ *  Introspection.
+ */
+/** Name property name(n).*/
+#define OC_RSRVD_INTROSPECTION_NAME     "n"
 
 /** Value of name.*/
 #define OC_RSRVD_INTROSPECTION_NAME_VALUE "Introspection"
@@ -425,6 +450,9 @@ extern "C" {
 /** Allowable resource types in the links. */
 #define OC_RSRVD_RTS                     "rts"
 
+/** Mandatory resource types in the links [shall be a subset of rts]. */
+#define OC_RSRVD_RTSM                    "rts-m"
+
 /** Default relationship. */
 #define OC_RSRVD_DREL                    "drel"
 
@@ -446,16 +474,16 @@ extern "C" {
 /** Cloud Account */
 
 /** Account URI.*/
-#define OC_RSRVD_ACCOUNT_URI               "/oic/account"
+#define OC_RSRVD_ACCOUNT_URI               "/oic/sec/account"
 
 /** Account user URI.*/
 #define OC_RSRVD_ACCOUNT_SEARCH_URI        "/oic/account/search"
 
 /** Account session URI.*/
-#define OC_RSRVD_ACCOUNT_SESSION_URI       "/oic/account/session"
+#define OC_RSRVD_ACCOUNT_SESSION_URI       "/oic/sec/session"
 
 /** Account token refresh URI.*/
-#define OC_RSRVD_ACCOUNT_TOKEN_REFRESH_URI "/oic/account/tokenrefresh"
+#define OC_RSRVD_ACCOUNT_TOKEN_REFRESH_URI "/oic/sec/tokenrefresh"
 
 /** ACL group URI.*/
 #define OC_RSRVD_ACL_GROUP_URI             "/oic/acl/group"
@@ -522,13 +550,13 @@ extern "C" {
 
 #define OC_RSRVD_LAST_UPDATE              "lu"
 
-#define OC_RSRVD_THIS_UPDATE              "tu"
+#define OC_RSRVD_THIS_UPDATE              "thisupdate"
 
 #define OC_RSRVD_NEXT_UPDATE              "nu"
 
 #define OC_RSRVD_SERIAL_NUMBERS           "rcsn"
 
-#define OC_RSRVD_CRL                      "crl"
+#define OC_RSRVD_CRL                      "crldata"
 
 #define OC_RSRVD_CRL_ID                   "crlid"
 
@@ -630,6 +658,12 @@ extern "C" {
 
 #define OC_RSRVD_CERTIFICATE              "certificate"
 
+/**
+ * TODO: Move these COAP defines to CoAP lib once approved.
+ */
+#define COAP_OPTION_ACCEPT_VERSION 2049
+#define COAP_OPTION_CONTENT_VERSION 2053
+
 /**
  * These enums (OCTransportAdapter and OCTransportFlags) must
  * be kept synchronized with OCConnectivityType (below) as well as
@@ -962,7 +996,7 @@ typedef enum
  */
 typedef enum
 {
-    /** When none of the bits are set, the resource is non-discoverable &
+    /** When none of the bits are set, the resource is non-secure, non-discoverable &
      *  non-observable by the client.*/
     OC_RES_PROP_NONE = (0),
 
@@ -982,6 +1016,9 @@ typedef enum
      *  processing its requests from clients.*/
     OC_SLOW          = (1 << 3),
 
+    /** When this bit is set, the resource supports access via non-secure endpoints. */
+    OC_NONSECURE     = (1 << 6),
+
 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
     /** When this bit is set, the resource is a secure resource.*/
     OC_SECURE        = (1 << 4),
@@ -1009,6 +1046,8 @@ typedef enum
 #endif
 } OCResourceProperty;
 
+#define OC_MASK_RESOURCE_SECURE    (OC_NONSECURE | OC_SECURE)
+
 /**
  * Transport Protocol IDs.
  */
@@ -1040,7 +1079,7 @@ typedef enum
     OC_STACK_INVALID_IP,
     OC_STACK_INVALID_PORT,
     OC_STACK_INVALID_CALLBACK,
-    OC_STACK_INVALID_METHOD,
+    OC_STACK_INVALID_METHOD,        /** 405 */
 
     /** Invalid parameter.*/
     OC_STACK_INVALID_PARAM,
@@ -1087,6 +1126,7 @@ typedef enum
      */
     OC_STACK_AUTHENTICATION_FAILURE,
     OC_STACK_NOT_ALLOWED_OXM,
+    OC_STACK_CONTINUE_OPERATION,
 
     /** Request come from endpoint which is not mapped to the resource. */
     OC_STACK_BAD_ENDPOINT,
@@ -1100,12 +1140,13 @@ typedef enum
 
     /** Request is denied by the user*/
     OC_STACK_USER_DENIED_REQ,
-    OC_STACK_NOT_ACCEPTABLE,
+    OC_STACK_NOT_ACCEPTABLE,         /** 406 */
 
     /** ERROR code from server */
     OC_STACK_FORBIDDEN_REQ,          /** 403*/
     OC_STACK_INTERNAL_SERVER_ERROR,  /** 500*/
     OC_STACK_GATEWAY_TIMEOUT,        /** 504*/
+    OC_STACK_SERVICE_UNAVAILABLE,    /** 503*/
 
     /** ERROR in stack.*/
     OC_STACK_ERROR = 255
@@ -1415,6 +1456,24 @@ typedef enum
     PAYLOAD_TYPE_INTROSPECTION
 } OCPayloadType;
 
+/** Enum to describe payload representation for collection and non collection resources.*/
+typedef enum
+{
+    /** Used for collection resource when the payload to be created for representation
+     *  with one or more resource representations should be created as an array of object/ objects
+     *  1. Collection resource with Link list and Batch interface etc.
+     */
+    PAYLOAD_REP_ARRAY,
+
+    /** Used for Non Collection resources when payload to be created for the representation with
+     *  zero or one child representation should be created as an Object and the payload with more
+     *  than one representation should be created as an Array of Objects.
+     *  1. Non Collection resource with Link list, Default interfaces etc.
+     *  2. Collection resource with Default interface.
+     */
+    PAYLOAD_REP_OBJECT_ARRAY
+} OCPayloadRepresentationType;
+
 /**
  * A generic struct representing a payload returned from a resource operation
  *
@@ -1498,6 +1557,7 @@ typedef struct OCRepPayload
     OCStringLL* types;
     OCStringLL* interfaces;
     OCRepPayloadValue* values;
+    OCPayloadRepresentationType repType;
     struct OCRepPayload* next;
 } OCRepPayload;
 
@@ -1671,7 +1731,7 @@ typedef struct
     /** Request handle.*/
     OCRequestHandle requestHandle;
 
-    /** Resource handle.*/
+    /** Resource handle. (@deprecated: This parameter is not used.) */
     OCResourceHandle resourceHandle;
 
     /** Allow the entity handler to pass a result with the response.*/
@@ -1686,7 +1746,7 @@ typedef struct
     /** An array of the vendor specific header options the entity handler wishes to use in response.*/
     OCHeaderOption sendVendorSpecificHeaderOptions[MAX_HEADER_OPTIONS];
 
-    /** URI of new resource that entity handler might create.*/
+    /** Resource path of new resource that entity handler might create.*/
     char resourceUri[MAX_URI_LENGTH];
 
     /** Server sets to true for persistent response buffer,false for non-persistent response buffer*/
@@ -1850,25 +1910,14 @@ typedef OCEntityHandlerResult (*OCEntityHandler)
 typedef OCEntityHandlerResult (*OCDeviceEntityHandler)
 (OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest, char* uri, void* callbackParam);
 
-//#ifdef DIRECT_PAIRING
-/**
- * Callback function definition of direct-pairing
- *
- * @param[OUT] ctx - user context returned in the callback.
- * @param[OUT] peer - pairing device info.
- * @param[OUT] result - It's returned with 'OC_STACK_XXX'. It will return 'OC_STACK_OK'
- *                                   if D2D pairing is success without error
- */
-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
  *
- * @param[IN] ctx - user context returned in the callback.
- * @param[IN] credId - trustCertChain changed for this ID
- * @param[IN] trustCertChain - trustcertchain binary blob.
- * @param[IN] chainSize - size of trustchain
+ * @param[in] ctx - user context returned in the callback.
+ * @param[in] credId - trustCertChain changed for this ID
+ * @param[in] trustCertChain - trustcertchain binary blob.
+ * @param[in] chainSize - size of trustchain
  */
 typedef void (*TrustCertChainChangeCB)(void *ctx, uint16_t credId, uint8_t *trustCertChain,
         size_t chainSize);