X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fstack%2Finclude%2Finternal%2Focstackinternal.h;h=3dfc8ce7b11beecd91c8f577c25f3644aee42610;hb=17c68b2fd1e74586f85e552eeab4e32dc121f8a0;hp=709a4b044b04cd1b25640a8c17d880210d2d127d;hpb=8c01dff2c5bc5496f7dc1632c498943ec6ecb015;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/stack/include/internal/ocstackinternal.h b/resource/csdk/stack/include/internal/ocstackinternal.h index 709a4b0..3dfc8ce 100644 --- a/resource/csdk/stack/include/internal/ocstackinternal.h +++ b/resource/csdk/stack/include/internal/ocstackinternal.h @@ -19,9 +19,15 @@ //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= // -//----------------------------------------------------------------------------- -// Internal include file used by lower layers of the OC stack -//----------------------------------------------------------------------------- + + +/** + * @file + * + * This file contains the Internal include file used by lower layers of the OC stack + * + */ + #ifndef OCSTACKINTERNAL_H_ #define OCSTACKINTERNAL_H_ @@ -32,11 +38,11 @@ #include "ocstack.h" #include "ocstackconfig.h" #include "occlientcb.h" -#include #include #include "cacommon.h" #include "cainterface.h" +#include "securevirtualresourcetypes.h" #ifdef __cplusplus extern "C" { @@ -46,50 +52,86 @@ extern "C" { //----------------------------------------------------------------------------- // Global variables //----------------------------------------------------------------------------- + +/** Default device entity Handler.*/ extern OCDeviceEntityHandler defaultDeviceHandler; + +/** Default Callback parameter.*/ extern void* defaultDeviceHandlerCallbackParameter; //----------------------------------------------------------------------------- // Defines //----------------------------------------------------------------------------- + +/** The coap scheme */ #define OC_COAP_SCHEME "coap://" -#define OC_OFFSET_SEQUENCE_NUMBER (4) // the first outgoing sequence number will be 5 + +/** the first outgoing sequence number will be 5*/ +#define OC_OFFSET_SEQUENCE_NUMBER (4) /** * This structure will be created in occoap and passed up the stack on the server side. */ typedef struct { - // Observe option field + /** Observe option field.*/ uint32_t observationOption; - // the REST method retrieved from received request PDU + + /** The REST method retrieved from received request PDU.*/ OCMethod method; - // resourceUrl will be filled in occoap using the path options in received request PDU + + /** the requested payload format. */ + OCPayloadFormat acceptFormat; + + /** resourceUrl will be filled in occoap using the path options in received request PDU.*/ char resourceUrl[MAX_URI_LENGTH]; - // resource query send by client + + /** resource query send by client.*/ char query[MAX_QUERY_LENGTH]; - // reqJSON is retrieved from the payload of the received request PDU - uint8_t payload[MAX_REQUEST_LENGTH]; - // qos is indicating if the request is CON or NON + + /** reqJSON is retrieved from the payload of the received request PDU.*/ + uint8_t *payload; + + /** qos is indicating if the request is CON or NON.*/ OCQualityOfService qos; - // An array of the received vendor specific header options + + /** Number of the received vendor specific header options.*/ uint8_t numRcvdVendorSpecificHeaderOptions; + + /** Array of received vendor specific header option .*/ OCHeaderOption rcvdVendorSpecificHeaderOptions[MAX_HEADER_OPTIONS]; - /** Remote endpoint address **/ + /** Remote end-point address **/ OCDevAddr devAddr; - //token for the observe request + /** Token for the observe request.*/ CAToken_t requestToken; - uint8_t tokenLength; //token length - // The ID of CoAP pdu + + /** token length.*/ + uint8_t tokenLength; + + /** The ID of CoAP PDU.*/ uint16_t coapID; + + /** For delayed Response.*/ uint8_t delayedResNeeded; + + /** For More packet.*/ uint8_t reqMorePacket; + + /** The number of requested packet.*/ uint32_t reqPacketNum; + + /** The size of requested packet.*/ uint16_t reqPacketSize; + + /** The number of responded packet.*/ uint32_t resPacketNum; + + /** Responded packet size.*/ uint16_t resPacketSize; + + /** The total size of requested packet.*/ size_t reqTotalSize; } OCServerProtocolRequest; @@ -98,21 +140,25 @@ typedef struct */ typedef struct { - // handle is retrieved by comparing the token-handle pair in the PDU. + /** handle is retrieved by comparing the token-handle pair in the PDU.*/ ClientCB * cbNode; - // This is how long this response is valid for (in seconds). + + /** This is how long this response is valid for (in seconds).*/ uint32_t maxAge; - // This is the Uri of the resource. (ex. "coap://192.168.1.1/a/led") + + /** This is the Uri of the resource. (ex. "coap://192.168.1.1/a/led").*/ char * fullUri; - // This is the relative Uri of the resource. (ex. "/a/led") + + /** This is the relative Uri of the resource. (ex. "/a/led").*/ char * rcvdUri; - // This is the received payload. + + /** This is the received payload.*/ char * bufRes; - // This is the token received OTA. + /** This is the token received OTA.*/ CAToken_t rcvdToken; - // this structure will be passed to client + /** this structure will be passed to client.*/ OCClientResponse * clientResponse; } OCResponse; @@ -126,25 +172,46 @@ typedef uint8_t ServerID[16]; //----------------------------------------------------------------------------- +/** + * Handler function for sending a response from multiple resources, such as a collection. + * Aggregates responses from multiple resource until all responses are received then sends the + * concatenated response + * + * TODO: Need to add a timeout in case a (remote?) resource does not respond + * + * @param token Token to search for. + * @param tokenLength Length of token. + * @param status Feedback status. + * @return + * ::OCStackResult + */ + OCStackResult OCStackFeedBack(CAToken_t token, uint8_t tokenLength, uint8_t status); + +/** + * Handler function to execute stack requests + * + * @param protocolRequest Pointer to the protocol requests from server. + * + * @return + * ::OCStackResult + */ OCStackResult HandleStackRequests(OCServerProtocolRequest * protocolRequest); OCStackResult SendDirectStackResponse(const CAEndpoint_t* endPoint, const uint16_t coapID, const CAResponseResult_t responseResult, const CAMessageType_t type, const uint8_t numOptions, const CAHeaderOption_t *options, - CAToken_t token, uint8_t tokenLength); + CAToken_t token, uint8_t tokenLength, const char *resourceUri); #ifdef WITH_PRESENCE /** * Notify Presence subscribers that a resource has been modified. * - * @param resourceType Handle to the resourceType linked list of resource - * that was modified. - * @param trigger The simplified reason this API was invoked. Valid values are - * @ref OC_PRESENCE_TRIGGER_CREATE, @ref OC_PRESENCE_TRIGGER_CHANGE, - * @ref OC_PRESENCE_TRIGGER_DELETE. + * @param resourceType Handle to the resourceType linked list of resource that was modified. + * @param trigger The simplified reason this API was invoked. + * * @return ::OC_STACK_OK on success, some other value upon failure. */ OCStackResult SendPresenceNotification(OCResourceType *resourceType, @@ -157,6 +224,16 @@ OCStackResult SendPresenceNotification(OCResourceType *resourceType, */ OCStackResult SendStopNotification(); #endif // WITH_PRESENCE + +/** + * Function to parse the IPv4 address. + * + * @param ipAddrStr Pointer to a string of IPv4 address. + * @param ipAddr pointer to IPv4 adress. + * @param port Port number. + * + * @return true on success, false upon failure. + */ bool ParseIPv4Address(char * ipAddrStr, uint8_t * ipAddr, uint16_t * port); /** @@ -164,12 +241,13 @@ bool ParseIPv4Address(char * ipAddrStr, uint8_t * ipAddr, uint16_t * port); * * @param resource Target resource. * @param resourceInterfaceName Resource interface. + * * @return ::OC_STACK_OK on success, some other value upon failure. */ OCStackResult BindResourceInterfaceToResource(OCResource* resource, const char *resourceInterfaceName); /** - * Bind a resourcetype to a resource. + * Bind a resource type to a resource. * * @param resource Target resource. * @param resourceTypeName Name of resource type. @@ -178,11 +256,11 @@ OCStackResult BindResourceInterfaceToResource(OCResource* resource, OCStackResult BindResourceTypeToResource(OCResource* resource, const char *resourceTypeName); -// Converts a CAResult_t type to a OCStackResult type. + /** * Converts a CAResult_t type to a OCStackResult type. * - * @param caResult CAResult_t value to convert + * @param caResult CAResult_t value to convert. * @return OCStackResult that was converted from the input CAResult_t value. */ OCStackResult CAResultToOCResult(CAResult_t caResult); @@ -190,7 +268,7 @@ OCStackResult CAResultToOCResult(CAResult_t caResult); /** * Get a byte representation of the server instance ID. * The memory is managed internal to this function, so freeing it externally will - * result in a runtime error + * result in a runtime error. * * Note: This will NOT seed the RNG, so it must be called after the RNG is seeded. * This is done automatically during the OCInit process, @@ -198,24 +276,13 @@ OCStackResult CAResultToOCResult(CAResult_t caResult); * * @return A uint8_t representation the server instance ID. */ -const uint8_t* OCGetServerInstanceID(void); - -/** - * Get a string representation the server instance ID. - * The memory is managed internal to this function, so freeing externally will result - * in a runtime error - * Note: This will NOT seed the RNG, so it must be called after the RNG is seeded. - * This is done automatically during the OCInit process, - * so ensure that this call is done after that. - * - * @return A string representation the server instance ID. - */ -const char* OCGetServerInstanceIDString(void); +const OicUuid_t* OCGetServerInstanceID(void); /** * Map OCQualityOfService to CAMessageType. * * @param qos Input qos. + * * @return CA message type for a given qos. */ CAMessageType_t qualityOfServiceToMessageType(OCQualityOfService qos); @@ -224,9 +291,9 @@ CAMessageType_t qualityOfServiceToMessageType(OCQualityOfService qos); /** * Enable/disable a resource property. * - * @param inputProperty Pointer to resource property. - * @param resourceProperties Property to be enabled/disabled. - * @param enable 0:disable, 1:enable. + * @param inputProperty Pointer to resource property. + * @param resourceProperties Property to be enabled/disabled. + * @param enable 0:disable, 1:enable. * * @return OCStackResult that was converted from the input CAResult_t value. */ @@ -248,4 +315,3 @@ void CopyDevAddrToEndpoint(const OCDevAddr *in, CAEndpoint_t *out); #endif // __cplusplus #endif /* OCSTACKINTERNAL_H_ */ -