Revert "[CONPRO-1568] Ignoring duplicate IPv6/Ipv4 messages"
[platform/upstream/iotivity.git] / resource / csdk / connectivity / api / cacommon.h
index 1f31730..d1e53f7 100755 (executable)
@@ -27,6 +27,9 @@
 #define CA_COMMON_H_
 
 #include "iotivity_config.h"
+#ifdef WITH_PROCESS_EVENT
+#include "ocevent.h"
+#endif
 
 #ifndef WITH_ARDUINO
 #ifdef TCP_ADAPTER
 #include <stdlib.h>
 #include <stdbool.h>
 
+#ifdef __TIZENRT__
+#include <poll.h>
+#else
 #ifdef HAVE_SYS_POLL_H
 #include <sys/poll.h>
 #endif
+#endif
 
 #ifdef HAVE_WINSOCK2_H
 #include <winsock2.h>
@@ -53,6 +60,15 @@ extern "C"
 #endif
 
 /**
+ * TAG of Analyzer log.
+ */
+#define ANALYZER_TAG       "OIC_CA_ANALYZER_102301"
+#define BLE_CLIENT_TAG     "OIC_CA_LE_CLIENT_1023"
+#define BLE_SERVER_MCD_TAG "OIC_CA_LE_SER_MC_1023"
+#define IP_SERVER_TAG      "OIC_CA_IP_SERVER_1023"
+#define TCP_SERVER_TAG     "OIC_CA_TCP_SERVER_1023"
+
+/**
  * IP address Length.
  */
 #define CA_IPADDR_SIZE 16
@@ -70,7 +86,7 @@ extern "C"
 /**
  * Max header options data length.
  */
-#ifdef ARDUINO
+#if defined(ARDUINO) || defined(__TIZENRT__)
 #define CA_MAX_HEADER_OPTION_DATA_LENGTH 20
 #else
 #define CA_MAX_HEADER_OPTION_DATA_LENGTH 1024
@@ -82,6 +98,11 @@ extern "C"
 #define CA_MAX_TOKEN_LEN (8)
 
 /**
+* Max interface name length.
+*/
+#define CA_MAX_INTERFACE_NAME_LEN (16)
+
+/**
  * Max URI length.
  */
 #ifdef ARDUINO
@@ -106,7 +127,12 @@ extern "C"
 /**
  *Maximum length of the remoteEndpoint identity.
  */
-#define CA_MAX_ENDPOINT_IDENTITY_LEN   (32)
+#define CA_MAX_ENDPOINT_IDENTITY_LEN  CA_MAX_IDENTITY_SIZE
+
+/**
+ * Max identity size.
+ */
+#define CA_MAX_IDENTITY_SIZE (37)
 
 /**
  * option types - the highest option number 63.
@@ -210,6 +236,17 @@ typedef enum
     CA_SCOPE_GLOBAL    = 0xE, // IPv6 Global scope
 } CATransportFlags_t;
 
+typedef enum
+{
+    CA_DEFAULT_BT_FLAGS = 0,
+    // flags for BLE transport
+    CA_LE_ADV_DISABLE   = 0x1,   // disable BLE advertisement.
+    CA_LE_ADV_ENABLE    = 0x2,   // enable BLE advertisement.
+    CA_LE_SERVER_DISABLE = (1 << 4),   // disable gatt server.
+    // flags for EDR transport
+    CA_EDR_SERVER_DISABLE = (1 << 7)   // disable rfcomm server.
+} CATransportBTFlags_t;
+
 #define CA_IPFAMILY_MASK (CA_IPV6|CA_IPV4)
 #define CA_SCOPE_MASK 0xf     // mask scope bits above
 
@@ -280,6 +317,7 @@ typedef struct
     uint16_t                port;       // for IP
     char                    addr[MAX_ADDR_STR_SIZE_CA]; // address for all
     uint32_t                ifindex;    // usually zero for default interface
+    char                    remoteId[CA_MAX_IDENTITY_SIZE]; // device ID of remote device
 #if defined (ROUTING_GATEWAY) || defined (ROUTING_EP)
     char                    routeData[MAX_ADDR_STR_SIZE_CA]; /**< GatewayId:ClientId of
                                                                     destination. **/
@@ -344,8 +382,11 @@ typedef enum
     CA_NOT_ACCEPTABLE = 406,                /**< Not Acceptable */
     CA_REQUEST_ENTITY_INCOMPLETE = 408,     /**< Request Entity Incomplete */
     CA_REQUEST_ENTITY_TOO_LARGE = 413,      /**< Request Entity Too Large */
+    CA_TOO_MANY_REQUESTS = 429,             /**< Too Many Requests */
     CA_INTERNAL_SERVER_ERROR = 500,         /**< Internal Server Error */
-    CA_BAD_GATEWAY = 502,
+    CA_NOT_IMPLEMENTED = 501,               /**< Not Implenented */
+    CA_BAD_GATEWAY = 502,                   /**< Bad Gateway */
+    CA_SERVICE_UNAVAILABLE = 503,           /**< Server Unavailable */
     CA_RETRANSMIT_TIMEOUT = 504,            /**< Retransmit timeout */
     CA_PROXY_NOT_SUPPORTED = 505            /**< Proxy not enabled to service a request */
     /* Response status code - END HERE */
@@ -361,9 +402,19 @@ typedef enum
     CA_REQUEST_DATA = 1,
     CA_RESPONSE_DATA,
     CA_ERROR_DATA,
-    CA_RESPONSE_FOR_RES
+    CA_RESPONSE_FOR_RES,
+    CA_NETWORK_COMMAND,
+    CA_REQUEST_DATA_SERVER_INIT,
+    CA_RESPONSE_DATA_CLIENT_INIT
 } CADataType_t;
 
+typedef enum
+{
+    CA_DISCONNECTED = 0,
+    CA_CONNECTED,
+    CA_REQ_DISCONNECT
+} CAConnectEvent_t;
+
 /**
  * Transport Protocol IDs for additional options.
  */
@@ -439,6 +490,7 @@ typedef struct
     CAURI_t resourceUri;        /**< Resource URI information **/
     CARemoteId_t identity;      /**< endpoint identity */
     CADataType_t dataType;      /**< data type */
+    CAConnectEvent_t event;     /**< network request message / event type */
 } CAInfo_t;
 
 /**
@@ -559,10 +611,11 @@ typedef struct
 #if defined(_WIN32)
         WSAEVENT shutdownEvent;     /**< Event used to signal threads to stop */
 #else
+#ifndef __TIZENRT__
         int shutdownFds[2];         /**< fds used to signal threads to stop */
 #endif
+#endif
         int selectTimeout;          /**< in seconds */
-        int maxfd;                  /**< highest fd (for select) */
         bool started;               /**< the IP adapter has started */
         bool terminate;             /**< the IP adapter needs to stop */
         bool ipv6enabled;           /**< IPv6 enabled by OCInit flags */
@@ -599,19 +652,28 @@ typedef struct
         void *svrlist;          /**< unicast IPv4 TCP server information*/
         int selectTimeout;      /**< in seconds */
         int listenBacklog;      /**< backlog counts*/
+#ifndef __TIZENRT__
         int shutdownFds[2];     /**< shutdown pipe */
+#endif
         int connectionFds[2];   /**< connection pipe */
-        int maxfd;              /**< highest fd (for select) */
         bool started;           /**< the TCP adapter has started */
         bool terminate;         /**< the TCP adapter needs to stop */
+        bool bindenabled;       /**< binding of TCP socket enabled */
         bool ipv4tcpenabled;    /**< IPv4 TCP enabled by OCInit flags */
         bool ipv6tcpenabled;    /**< IPv6 TCP enabled by OCInit flags */
     } tcp;
 #endif
+    CATransportBTFlags_t bleFlags;
 } CAGlobals_t;
 
 extern CAGlobals_t caglobals;
 
+typedef enum
+{
+    CA_LOG_LEVEL_ALL = 1,             // all logs.
+    CA_LOG_LEVEL_INFO,                // debug level is disabled
+} CAUtilLogLevel_t;
+
 /**
  * Callback function type for request delivery.
  * @param[out]   object       Endpoint object from which the request is received.
@@ -644,6 +706,14 @@ typedef void (*CAErrorCallback)(const CAEndpoint_t *object,
  */
 typedef void (*CANetworkMonitorCallback)(const CAEndpoint_t *info, CANetworkStatus_t status);
 
+/**
+ * Callback function type for editing bluetooth advertisement data before starting bluetooth advertisement.
+ * param[in]   max_data_size    Maximal size of advertisement data array
+ * param[out]  data             Advertisement data array
+ * param[out]  data_size        Actual Data size of advertisement data array
+ */
+typedef void (*CAAdvertisementDataGetterCB)(int max_data_size, char *data, int *data_size);
+
 #ifdef __cplusplus
 } /* extern "C" */
 #endif