X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fstack%2Finclude%2Foctypes.h;h=cd4c13b5f13f117abdd7c2a2d4f68ddcfb0f22d3;hb=bfa83c91bc35dec5ead161bebce4bd92ed8d25ed;hp=c9dafbb6ac5c7ce926b259b6bcde14a62a78df8b;hpb=5bc27eeacf517815bdbe79ed58cb134cec84afca;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/stack/include/octypes.h b/resource/csdk/stack/include/octypes.h index c9dafbb..cd4c13b 100644 --- a/resource/csdk/stack/include/octypes.h +++ b/resource/csdk/stack/include/octypes.h @@ -22,38 +22,34 @@ #define OCTYPES_H_ #include "ocstackconfig.h" - +#include +#include +#include #ifdef __cplusplus #include extern "C" { #endif // __cplusplus #define WITH_PRESENCE +#include "ocpresence.h" //----------------------------------------------------------------------------- // Defines //----------------------------------------------------------------------------- -//TODO: May want to refactor this in upcoming sprints. -//Don't want to expose to application layer that lower level stack is using CoAP. - -/// Authority + URI string to prefix well known queries -#define OC_WELL_KNOWN_QUERY "224.0.1.187:5683/oic/res" -#define OC_MULTICAST_DISCOVERY_URI "/oic/res" -#define OC_EXPLICIT_DEVICE_DISCOVERY_URI "224.0.1.187:5683/oic/d?rt=core.led" -/// Multicast address and port string to prefix multicast queries -#define OC_MULTICAST_PREFIX "224.0.1.187:5683" -/// IP Multicast address to use for multicast requests -#define OC_MULTICAST_IP "224.0.1.187" -/// IP Multicast port to use for multicast requests -#define OC_MULTICAST_PORT 5683 - +/** + * OIC Virtual resources supported by every OIC device. + */ +#define OC_RSRVD_WELL_KNOWN_URI "/oic/res" +#define OC_RSRVD_DEVICE_URI "/oic/d" +#define OC_RSRVD_PLATFORM_URI "/oic/p" +#define OC_RSRVD_RESOURCE_TYPES_URI "/oic/res/types/d" #ifdef WITH_PRESENCE +#define OC_RSRVD_PRESENCE_URI "/oic/ad" #define OC_DEFAULT_PRESENCE_TTL_SECONDS (60) /// OC_MAX_PRESENCE_TTL_SECONDS sets the maximum time to live (TTL) for presence. /// NOTE: Changing the setting to a longer duration may lead to unsupported and untested /// operation. #define OC_MAX_PRESENCE_TTL_SECONDS (60 * 60 * 24) // 60 sec/min * 60 min/hr * 24 hr/day -#define OC_PRESENCE_URI "/oic/ad" #endif ///Separtor for multiple query string @@ -62,7 +58,7 @@ extern "C" { /** * Attributes used to form a proper OIC conforming JSON message. */ -#define OC_RSRVD_OC "oic" +//#define OC_RSRVD_OC "oic" #define OC_RSRVD_PAYLOAD "payload" #define OC_RSRVD_HREF "href" #define OC_RSRVD_PROPERTY "prop" @@ -71,7 +67,10 @@ extern "C" { #define OC_RSRVD_RESOURCE_TYPE "rt" #define OC_RSRVD_RESOURCE_TYPE_PRESENCE "oic.wk.ad" #define OC_RSRVD_INTERFACE "if" - +#define OC_RSRVD_TTL "ttl" +#define OC_RSRVD_NONCE "non" +#define OC_RSRVD_TRIGGER "trg" +#define OC_RSRVD_LINKS "links" #define OC_RSRVD_INTERFACE_DEFAULT "oic.if.baseline" #define OC_RSRVD_INTERFACE_LL "oic.if.ll" @@ -81,12 +80,19 @@ extern "C" { #define OC_RSRVD_FW_VERSION "mnfv" #define OC_RSRVD_HOST_NAME "hn" #define OC_RSRVD_VERSION "icv" -#define OC_RSRVD_OBSERVABLE "obs" +#define OC_RSRVD_POLICY "p" +#define OC_RSRVD_BITMAP "bm" #define OC_RSRVD_SECURE "sec" #define OC_RSRVD_HOSTING_PORT "port" #define OC_RSRVD_SERVER_INSTANCE_ID "sid" - //**** Platform **** +//**** Presence "Announcement Triggers" **** +#define OC_RSRVD_TRIGGER_CREATE "create" +#define OC_RSRVD_TRIGGER_CHANGE "change" +#define OC_RSRVD_TRIGGER_DELETE "delete" +//******************* + +//**** Platform **** #define OC_RSRVD_PLATFORM_ID "pi" #define OC_RSRVD_MFG_NAME "mnmn" #define OC_RSRVD_MFG_URL "mnml" @@ -100,7 +106,7 @@ extern "C" { #define OC_RSRVD_SYSTEM_TIME "st" //******************* - //**** Device **** +//**** Device **** #define OC_RSRVD_DEVICE_ID "di" #define OC_RSRVD_DEVICE_NAME "n" #define OC_RSRVD_SPEC_VERSION "lcv" @@ -110,55 +116,156 @@ extern "C" { #define OC_DATA_MODEL_VERSION "sec.0.95" //******************* +// These provide backward compatibility - their use is deprecated +#ifndef GOING_AWAY +#define OC_MULTICAST_PREFIX "224.0.1.187:5683" +#define OC_MULTICAST_IP "224.0.1.187" +#define OC_MULTICAST_PORT 5683 +#endif // GOING_AWAY //----------------------------------------------------------------------------- // Typedefs //----------------------------------------------------------------------------- +#define MAX_ADDR_STR_SIZE (40) +#define MAX_IDENTITY_SIZE (32) + +/* + * These enums (OCTransportAdapter and OCTransportFlags) must + * be kept synchronized with OCConnectivityType (below) as well as + * CATransportAdapter and CATransportFlags (in CACommon.h). + */ + +typedef enum +{ + OC_DEFAULT_ADAPTER = 0, + + // value zero indicates discovery + OC_ADAPTER_IP = (1 << 0), // IPv4 and IPv6, including 6LoWPAN + OC_ADAPTER_GATT_BTLE = (1 << 1), // GATT over Bluetooth LE + OC_ADAPTER_RFCOMM_BTEDR = (1 << 2), // RFCOMM over Bluetooth EDR +} OCTransportAdapter; + +// enum layout assumes some targets have 16-bit integer (e.g., Arduino) +typedef enum +{ + OC_DEFAULT_FLAGS = 0, + + // Insecure transport is the default (subject to change) + OC_FLAG_SECURE = (1 << 4), // secure the transport path + + // IPv4 & IPv6 autoselection is the default + OC_IP_USE_V6 = (1 << 5), // IP adapter only + OC_IP_USE_V4 = (1 << 6), // IP adapter only + + // Link-Local multicast is the default multicast scope for IPv6. + // These are placed here to correspond to the IPv6 multicast address bits. + OC_SCOPE_INTERFACE = 0x1, // IPv6 Interface-Local scope (loopback) + OC_SCOPE_LINK = 0x2, // IPv6 Link-Local scope (default) + OC_SCOPE_REALM = 0x3, // IPv6 Realm-Local scope + OC_SCOPE_ADMIN = 0x4, // IPv6 Admin-Local scope + OC_SCOPE_SITE = 0x5, // IPv6 Site-Local scope + OC_SCOPE_ORG = 0x8, // IPv6 Organization-Local scope + OC_SCOPE_GLOBAL = 0xE, // IPv6 Global scope +} OCTransportFlags; + +#define OC_MASK_SCOPE (0x000F) +#define OC_MASK_MODS (0x0FF0) + +/* + * endpoint identity + */ +typedef struct +{ + uint16_t id_length; + unsigned char id[MAX_IDENTITY_SIZE]; +} OCIdentity; + /** * Data structure to encapsulate IPv4/IPv6/Contiki/lwIP device addresses. + * + * OCDevAddr must be the same as CAEndpoint (in CACommon.h). */ -typedef struct OCDevAddr +typedef struct { - uint32_t size; ///< length of the address stored in addr field. - uint8_t addr[DEV_ADDR_SIZE_MAX]; ///< device address. + OCTransportAdapter adapter; // adapter type + OCTransportFlags flags; // transport modifiers + char addr[MAX_ADDR_STR_SIZE]; // address for all adapters + uint32_t interface; // usually zero for default interface + uint16_t port; // for IP + OCIdentity identity; // secure node identity } OCDevAddr; -/** - * OC Virtual resources supported by every OC device. +/* + * OCConnectivityType includes elements of both OCTransportAdapter + * and OCTransportFlags. It is defined conditionally because the + * smaller definition limits expandability on 32/64 bit integer machines, + * and the larger definition won't fit into an enum on 16-bit integer + * machines like Arduino. + * + * This structure must directly correspond to OCTransportAdapter + * and OCTransportFlags. */ typedef enum { - OC_WELL_KNOWN_URI= 0, ///< "/oic/res" - OC_DEVICE_URI, ///< "/oic/d" - OC_PLATFORM_URI, ///< "/oic/p" - OC_RESOURCE_TYPES_URI, ///< "/oic/res/d/type" - #ifdef WITH_PRESENCE - OC_PRESENCE, ///< "/oic/ad" + CT_DEFAULT = 0, // use when defaults are ok + + #if defined (__UINT32_MAX__) && (__UINT32_MAX__ == 65535) // 16-bit int + CT_ADAPTER_IP = (1 << 10), // IPv4 and IPv6, including 6LoWPAN + CT_ADAPTER_GATT_BTLE = (1 << 11), // GATT over Bluetooth LE + CT_ADAPTER_RFCOMM_BTEDR = (1 << 12), // RFCOMM over Bluetooth EDR + #define CT_ADAPTER_SHIFT 10 + #define CT_MASK_FLAGS 0x03FF + #define CT_MASK_ADAPTER 0xFC00 + #else // assume 32-bit int + CT_ADAPTER_IP = (1 << 16), // IPv4 and IPv6, including 6LoWPAN + CT_ADAPTER_GATT_BTLE = (1 << 17), // GATT over Bluetooth LE + CT_ADAPTER_RFCOMM_BTEDR = (1 << 18), // RFCOMM over Bluetooth EDR + #define CT_ADAPTER_SHIFT 16 + #define CT_MASK_FLAGS 0xFFFF + #define CT_MASK_ADAPTER 0xFFFF0000 #endif - OC_MAX_VIRTUAL_RESOURCES ///