X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fconnectivity%2Fapi%2Fcacommon.h;h=360ceb16036057f8ee844d5b73598cef7b059a1f;hb=1b3989f5777db18d830407badd8e0332c1b1e33e;hp=f912bebdec7e60e645f92e776311f101aa64f259;hpb=e90065dffedaf5ace4537fa49eeaec9152d0a8ff;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/connectivity/api/cacommon.h b/resource/csdk/connectivity/api/cacommon.h index f912beb..360ceb1 100644 --- a/resource/csdk/connectivity/api/cacommon.h +++ b/resource/csdk/connectivity/api/cacommon.h @@ -1,4 +1,4 @@ -/****************************************************************** +/* **************************************************************** * * Copyright 2014 Samsung Electronics All Rights Reserved. * @@ -23,12 +23,12 @@ * @brief This file contains the common data structures between Resource , CA and adapters */ -#ifndef __CA_COMMON_H_ -#define __CA_COMMON_H_ +#ifndef CA_COMMON_H_ +#define CA_COMMON_H_ #include #include - +#include #ifdef __cplusplus @@ -52,9 +52,32 @@ extern "C" #define CA_MAX_HEADER_OPTION_DATA_LENGTH 16 /** +* @brief Max token length +*/ +#define CA_MAX_TOKEN_LEN (8) + +/** * @brief Max URI length */ -#define CA_MAX_URI_LENGTH 2048 +#ifdef ARDUINO +#define CA_MAX_URI_LENGTH 128 /* maximum size of URI for embedded platforms*/ +#else +#define CA_MAX_URI_LENGTH 512 /* maximum size of URI for other platforms*/ +#endif + +/** + * @brief Max PDU length supported + */ +#ifdef ARDUINO +#define COAP_MAX_PDU_SIZE 320 /* maximum size of a CoAP PDU for embedded platforms*/ +#else +#define COAP_MAX_PDU_SIZE 1400 /* maximum size of a CoAP PDU for big platforms*/ +#endif + +/** + *@brief Maximum length of the remoteEndpoint identity + */ +#define CA_MAX_ENDPOINT_IDENTITY_LEN (32) /** * @brief option types - the highest option number 63 @@ -62,6 +85,7 @@ extern "C" #define CA_OPTION_IF_MATCH 1 #define CA_OPTION_ETAG 4 #define CA_OPTION_IF_NONE_MATCH 5 +#define CA_OPTION_OBSERVE 6 #define CA_OPTION_LOCATION_PATH 8 #define CA_OPTION_URI_PATH 11 #define CA_OPTION_CONTENT_FORMAT 12 @@ -70,7 +94,6 @@ extern "C" #define CA_OPTION_URI_QUERY 15 #define CA_OPTION_ACCEPT 17 #define CA_OPTION_LOCATION_QUERY 20 -#define CA_OPTION_OBSERVE 6 /** * @brief Payload information from resource model @@ -87,27 +110,40 @@ typedef char *CAURI_t; */ typedef char *CAToken_t; -/** - * @enum CABool_t - * @brief Boolean value used for specifying the success or failure - */ +// The following flags are the same as the equivalent OIC values in +// octypes.h, allowing direct copying with slight fixup. +// The CA layer should used the OC types when build allows that. +#define MAX_ADDR_STR_SIZE_CA (40) + typedef enum { - CA_FALSE = 0, /**< False */ - CA_TRUE /**< True */ -} CABool_t; + CA_DEFAULT_ADAPTER = 0, + + // value zero indicates discovery + CA_ADAPTER_IP = (1 << 0), // IPv4 and IPv6, including 6LoWPAN + CA_ADAPTER_GATT_BTLE = (1 << 1), // GATT over Bluetooth LE + CA_ADAPTER_RFCOMM_BTEDR = (1 << 2), // RFCOMM over Bluetooth EDR +} CATransportAdapter_t; -/** - * @enum CAConnectivityType_t - * @brief Different connectivities that are handled in Connectivity Abstraction - */ typedef enum { - CA_ETHERNET = (1 << 0), /**< Ethernet Connection */ - CA_WIFI = (1 << 1), /**< WIFI Connection */ - CA_EDR = (1 << 2), /**< EDR Connection */ - CA_LE = (1 << 3) /**< LE Connection */ -} CAConnectivityType_t; + CA_DEFAULT_FLAGS = 0, + + // Insecure transport is the default (subject to change) + CA_SECURE = (1 << 4), // secure the transport path + // IPv4 & IPv6 autoselection is the default + CA_IPV6 = (1 << 5), // IP adapter only + CA_IPV4 = (1 << 6), // IP adapter only + // Link-Local multicast is the default multicast scope for IPv6. + // These correspond in both value and position to the IPv6 address bits. + CA_SCOPE_INTERFACE = 0x1, // IPv6 Interface-Local scope + CA_SCOPE_LINK = 0x2, // IPv6 Link-Local scope (default) + CA_SCOPE_REALM = 0x3, // IPv6 Realm-Local scope + CA_SCOPE_ADMIN = 0x4, // IPv6 Admin-Local scope + CA_SCOPE_SITE = 0x5, // IPv6 Site-Local scope + CA_SCOPE_ORG = 0x8, // IPv6 Organization-Local scope + CA_SCOPE_GLOBAL = 0xE, // IPv6 Global scope +} CATransportFlags_t; /** * @enum CANetworkStatus_t @@ -115,40 +151,18 @@ typedef enum */ typedef enum { - CA_INTERFACE_UP, /**< Connection is Available */ - CA_INTERFACE_DOWN /**< Connection is not available */ + CA_INTERFACE_DOWN, /**< Connection is not available */ + CA_INTERFACE_UP /**< Connection is Available */ } CANetworkStatus_t; -/** - * @brief Address of the local or remote endpoint +/* + * @brief remoteEndpoint identity */ -typedef union +typedef struct { - /** - * @brief BT Mac Information - */ - struct - { - char btMacAddress[CA_MACADDR_SIZE]; /**< BT mac address **/ - } BT; - - /** - * @brief LE MAC Information - */ - struct - { - char leMacAddress[CA_MACADDR_SIZE]; /**< BLE mac address **/ - } LE; - - /** - * @brief IP Information for wifi and ethernet ports - */ - struct - { - char ipAddress[CA_IPADDR_SIZE]; /**< Ip address of the interface**/ - uint32_t port; /**< port information**/ - } IP; -} CAAddress_t; + uint16_t id_length; + unsigned char id[CA_MAX_ENDPOINT_IDENTITY_LEN]; +} CARemoteId_t; /** * @enum CAMessageType_t @@ -159,7 +173,8 @@ typedef enum CA_MSG_CONFIRM = 0, /**< confirmable message (requires ACK/RST) */ CA_MSG_NONCONFIRM, /**< non-confirmable message (one-shot message) */ CA_MSG_ACKNOWLEDGE, /**< used to acknowledge confirmable messages */ - CA_MSG_RESET /**< indicates error in received messages */ + CA_MSG_RESET /**< used to indicates not-interested or error (lack of context)in + received messages */ } CAMessageType_t; /** @@ -175,36 +190,18 @@ typedef enum } CAMethod_t; /** - * @brief Remote endpoint information for connectivities - */ -typedef struct -{ - - CAURI_t resourceUri; /**< Resource URI information **/ - CAAddress_t addressInfo; /**< Remote Endpoint address **/ - CAConnectivityType_t connectivityType; /**< Connectivity of the endpoint**/ - CABool_t isSecured; /**< Secure connection**/ -} CARemoteEndpoint_t; - - -/** - * @brief Group endpoint information for connectivities - */ -typedef struct -{ - CAURI_t resourceUri; /**< Resource URI information **/ - CAConnectivityType_t connectivityType; /**< Connectivity of the endpoint**/ -} CAGroupEndpoint_t; - -/** - @brief Local Connectivity information + * @brief Endpoint information for connectivities + * Must be identical to OCDevAddr. */ typedef struct { - CAAddress_t addressInfo; /**< Address of the interface **/ - CAConnectivityType_t type; /**< Connectivity type that localconnectivity avaialble **/ - CABool_t isSecured; /**< Secure connection**/ -} CALocalConnectivity_t; + CATransportAdapter_t adapter; // adapter type + CATransportFlags_t flags; // transport modifiers + char addr[MAX_ADDR_STR_SIZE_CA]; // address for all + uint32_t interface; // usually zero for default interface + uint16_t port; // for IP + CARemoteId_t identity; // endpoint identity +} CAEndpoint_t; /** * @enum CAResult_t @@ -212,7 +209,7 @@ typedef struct */ typedef enum { - /* Success status code - START HERE */ + // Result code - START HERE CA_STATUS_OK = 0, /**< Success */ CA_STATUS_INVALID_PARAM, /**< Invalid Parameter */ CA_ADAPTER_NOT_ENABLED, /**< Adapter is not enabled */ @@ -221,12 +218,13 @@ typedef enum CA_DESTINATION_NOT_REACHABLE, /**< Destination is not reachable */ CA_SOCKET_OPERATION_FAILED, /**< Socket operation failed */ CA_SEND_FAILED, /**< Send request failed */ - CA_RECEVIE_FAILED, /**< Receive failed */ + CA_RECEIVE_FAILED, /**< Receive failed */ CA_MEMORY_ALLOC_FAILED, /**< Memory allocation failed */ CA_REQUEST_TIMEOUT, /**< Request is Timeout */ CA_DESTINATION_DISCONNECTED, /**< Destination is disconnected */ - CA_STATUS_FAILED, /**< Failure */ - CA_NOT_SUPPORTED /**< Not supported */ + CA_NOT_SUPPORTED, /**< Not supported */ + CA_STATUS_NOT_INITIALIZED, /**< CA layer is not initialized */ + CA_STATUS_FAILED =255 /**< Failure */ /* Result code - END HERE */ } CAResult_t; @@ -236,14 +234,18 @@ typedef enum */ typedef enum { - /* Success status code - START HERE */ - CA_SUCCESS = 200, /**< Success */ - CA_CREATED = 201, /**< Created */ - CA_DELETED = 202, /**< Deleted */ - CA_BAD_REQ = 400, /**< Bad Request */ - CA_BAD_OPT = 402, /**< Bad Option */ - CA_NOT_FOUND = 404, /**< Not found */ - CA_RETRANSMIT_TIMEOUT = 500 /**< Retransmit timeout */ + /* Response status code - START HERE */ + CA_EMPTY = 0, /**< Empty */ + CA_SUCCESS = 200, /**< Success */ + CA_CREATED = 201, /**< Created */ + CA_DELETED = 202, /**< Deleted */ + CA_BAD_REQ = 400, /**< Bad Request */ + CA_UNAUTHORIZED_REQ = 401, /**< Unauthorized Request */ + CA_BAD_OPT = 402, /**< Bad Option */ + CA_FORBIDDEN_REQ = 403, /**< Forbidden Request */ + CA_NOT_FOUND = 404, /**< Not found */ + CA_INTERNAL_SERVER_ERROR = 500, /**< Internal Server Error */ + CA_RETRANSMIT_TIMEOUT = 504 /**< Retransmit timeout */ /* Response status code - END HERE */ } CAResponseResult_t; @@ -263,8 +265,8 @@ typedef enum */ typedef enum { - CA_ADAPTER_ENABLED, /**< Adapter is Enabled */ - CA_ADAPTER_DISABLED /**< Adapter is Disabled */ + CA_ADAPTER_DISABLED, /**< Adapter is Disabled */ + CA_ADAPTER_ENABLED /**< Adapter is Enabled */ } CAAdapterState_t; /** @@ -278,7 +280,7 @@ typedef struct uint16_t optionID; /**< The header option ID which will be added to communication packets */ uint16_t optionLength; /**< Option Length **/ - uint8_t optionData[CA_MAX_HEADER_OPTION_DATA_LENGTH]; /**< Optional data values**/ + char optionData[CA_MAX_HEADER_OPTION_DATA_LENGTH]; /**< Optional data values**/ } CAHeaderOption_t; /** @@ -294,9 +296,11 @@ typedef struct * if message id is zero, it will generated by CA inside. * otherwise, you can use it */ CAToken_t token; /**< Token for CA */ + uint8_t tokenLength; /**< token length*/ CAHeaderOption_t *options; /** Header Options for the request */ uint8_t numOptions; /**< Number of Header options */ CAPayload_t payload; /**< payload of the request */ + CAURI_t resourceUri; /**< Resource URI information **/ } CAInfo_t; /** @@ -308,6 +312,7 @@ typedef struct { CAMethod_t method; /**< Name of the Method Allowed */ CAInfo_t info; /**< Information of the request. */ + bool isMulticast; /**< is multicast request */ } CARequestInfo_t; /** @@ -321,8 +326,33 @@ typedef struct CAInfo_t info; /**< Information of the response */ } CAResponseInfo_t; +/** + * @brief Error information from CA + * contains error code and message information + * + * This structure holds error information + */ +typedef struct +{ + CAResult_t result; /**< CA API request result */ + CAInfo_t info; /**< message information such as token and payload data + helpful to identify the error */ +} CAErrorInfo_t; + +/** + * @brief Hold global variables for CA layer (also used by RI layer) + */ +typedef struct +{ + CATransportFlags_t serverFlags; + CATransportFlags_t clientFlags; +} CAGlobals_t; + +extern CAGlobals_t caglobals; + #ifdef __cplusplus } /* extern "C" */ #endif -#endif //#ifndef __CA_COMMON_H_ +#endif //#ifndef CA_COMMON_H_ +