X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fstack%2Fsamples%2Flinux%2FSimpleClientServer%2Focservercoll.cpp;h=bedce0da9df103e6f4a9655a248758908bfe510e;hb=8229635f6d207516ccbbdf23b13be164e0fc1787;hp=feec1f8fcd8eb09968d8b6b8925be6091a3c7999;hpb=59668488d00471f87c89d939e8f4a7c62fdf1c96;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocservercoll.cpp b/resource/csdk/stack/samples/linux/SimpleClientServer/ocservercoll.cpp index feec1f8..bedce0d 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocservercoll.cpp +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocservercoll.cpp @@ -19,17 +19,26 @@ //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include "iotivity_config.h" #include #include #include #include +#ifdef HAVE_UNISTD_H #include +#endif +#ifdef HAVE_WINDOWS_H +#include +#endif #include +#ifdef HAVE_PTHREAD_H #include +#endif #include #include - -const char *getResult(OCStackResult result); +#include +#include "ocpayload.h" +#include "common.h" #define TAG PCF("ocservercontainer") @@ -44,32 +53,9 @@ typedef struct LIGHTRESOURCE{ static LightResource light; -// TODO : hard coded for now, change after Sprint10 -const char rspGetRoomDefault[] = "{\"href\":\"/a/room\",\"rep\":{\"name\":\"John's Room\"}}"; -const char rspGetRoomCollection[] = "{\"href\":\"/a/room\"}"; -// TODO : Needs to be changed to retrieve current status of room and return that in response -const char rspPutRoomDefault[] = "{\"href\":\"/a/room\",\"rep\":{\"name\":\"John's Room\"}}"; -const char rspPutRoomCollection[] = "{\"href\":\"/a/room\"}"; -const char rspFailureRoom[] = "{\"href\":\"/a/room\",\"rep\":{\"error\":\"ROOM_OP_FAIL\"}}"; - -// TODO : hard coded for now, change after Sprint4 -const char rspGetLightDefault[] = - "{\"href\":\"/a/light\",\"rep\":{\"state\":\"false\",\"color\":\"0\"}}"; -const char rspGetLightCollection[] = "{\"href\":\"/a/light\"}"; -// TODO : Needs to be changed to retrieve current status of light and return that in response -const char rspPutLightDefault[] = - "{\"href\":\"/a/light\",\"rep\":{\"state\":\"true\",\"color\":\"0\"}}"; -const char rspPutLightCollection[] = "{\"href\":\"/a/light\"}"; -const char rspFailureLight[] = "{\"href\":\"/a/light\",\"rep\":{\"error\":\"LIGHT_OP_FAIL\"}}"; - - -// TODO : hard coded for now, change after Sprint4 -const char rspGetFanDefault[] = "{\"href\":\"/a/fan\",\"rep\":{\"state\":\"true\",\"speed\":10}}"; -const char rspGetFanCollection[] = "{\"href\":\"/a/fan\"}"; -// TODO : Needs to be changed to retrieve current status of fan and return that in response -const char rspPutFanDefault[] = "{\"href\":\"/a/fan\",\"rep\":{\"state\":\"false\",\"speed\":0}}"; -const char rspPutFanCollection[] = "{\"href\":\"/a/fan\"}"; -const char rspFailureFan[] = "{\"href\":\"/a/fan\",\"rep\":{\"error\":\"FAN_OP_FAIL\"}}"; +char *gLightResourceUri= (char *)"/a/light"; +char *gRoomResourceUri= (char *)"/a/room"; +char *gFanResourceUri= (char *)"/a/fan"; typedef enum { @@ -81,43 +67,15 @@ typedef enum void PrintUsage() { - OC_LOG(INFO, TAG, "Usage : ocservercoll -t "); - OC_LOG(INFO, TAG, + OIC_LOG(INFO, TAG, "Usage : ocservercoll -t "); + OIC_LOG(INFO, TAG, "Test Case 1 : Create room resource with default collection entity handler."); - OC_LOG(INFO, TAG, + OIC_LOG(INFO, TAG, "Test Case 2 : Create room resource with application collection entity handler."); } unsigned static int TEST = TEST_INVALID; -static OCEntityHandlerResult -HandleCallback(OCEntityHandlerRequest * ehRequest, - const char* opStr, - const char* errStr, - char *payload, - uint16_t maxPayloadSize) -{ - OCEntityHandlerResult ret = OC_EH_OK; - - // Append opStr or errStr, after making sure there is - // enough room in the payload - if (strlen(opStr) < (maxPayloadSize - strlen(payload))) - { - strncat((char*)payload, opStr, strlen(opStr)); - } - else if (strlen(errStr) < (maxPayloadSize - strlen(payload))) - { - strncat((char*)payload, errStr, strlen(errStr)); - ret = OC_EH_ERROR; - } - else - { - ret = OC_EH_ERROR; - } - - return ret; -} - static void PrintReceivedMsgInfo(OCEntityHandlerFlag flag, OCEntityHandlerRequest * ehRequest) { @@ -149,77 +107,119 @@ PrintReceivedMsgInfo(OCEntityHandlerFlag flag, OCEntityHandlerRequest * ehReques typeOfMethod = "OC_REST_PUT"; } - OC_LOG_V(INFO, TAG, "Receiving message type: %s, method %s", typeOfMessage, + OIC_LOG_V(INFO, TAG, "Receiving message type: %s, method %s", typeOfMessage, typeOfMethod); } +//The only case when this entity handler is for a non-existing resource. +OCEntityHandlerResult +OCDeviceEntityHandlerCb (OCEntityHandlerFlag flag, + OCEntityHandlerRequest *entityHandlerRequest, char* uri, void* /*callbackParam*/) +{ + OIC_LOG_V(INFO, TAG, "Inside device default entity handler - flags: 0x%x, uri: %s", flag, uri); + + OCEntityHandlerResult ehResult = OC_EH_OK; + OCEntityHandlerResponse response; + + if (!entityHandlerRequest) + { + OIC_LOG(ERROR, TAG, "Invalid request pointer"); + return OC_EH_ERROR; + } + + if (entityHandlerRequest->resource == NULL) + { + OIC_LOG(INFO, TAG, "Received request from client to a non-existing resource"); + ehResult = OC_EH_RESOURCE_NOT_FOUND; + } + else + { + OIC_LOG_V(INFO, TAG, "Device Handler: Received unsupported request from client %d", + entityHandlerRequest->method); + ehResult = OC_EH_ERROR; + } + + if (!((ehResult == OC_EH_ERROR) || (ehResult == OC_EH_FORBIDDEN))) + { + // Format the response. Note this requires some info about the request + response.requestHandle = entityHandlerRequest->requestHandle; + response.resourceHandle = entityHandlerRequest->resource; + response.ehResult = ehResult; + response.payload = nullptr; + response.numSendVendorSpecificHeaderOptions = 0; + memset(response.sendVendorSpecificHeaderOptions, + 0, sizeof response.sendVendorSpecificHeaderOptions); + // Indicate that response is NOT in a persistent buffer + response.persistentBufferFlag = 0; + + // Send the response + if (OCDoResponse(&response) != OC_STACK_OK) + { + OIC_LOG(ERROR, TAG, "Error sending response"); + ehResult = OC_EH_ERROR; + } + } + return ehResult; +} + OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, OCEntityHandlerRequest * ehRequest, - void* callback) + void* /*callback*/) { OCEntityHandlerResult ret = OC_EH_OK; OCEntityHandlerResponse response; - char payload[MAX_RESPONSE_LENGTH] = {0}; - OC_LOG_V(INFO, TAG, "Callback for Room"); + OIC_LOG_V(INFO, TAG, "Callback for Room"); PrintReceivedMsgInfo(flag, ehRequest ); if(ehRequest && flag == OC_REQUEST_FLAG ) { std::string query = (const char*)ehRequest->query; + OCRepPayload* payload = OCRepPayloadCreate(); if(OC_REST_GET == ehRequest->method) { if(query.find(OC_RSRVD_INTERFACE_DEFAULT) != std::string::npos) { - ret = HandleCallback(ehRequest, - rspGetRoomDefault, rspFailureRoom, payload, sizeof(payload)); - if(ret != OC_EH_ERROR) - { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspGetLightCollection, rspFailureLight, payload, sizeof(payload)); - } - if(ret != OC_EH_ERROR) - { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspGetFanCollection, rspFailureFan, payload, sizeof(payload)); - } + OCRepPayloadSetUri(payload, gRoomResourceUri); + OCRepPayloadSetPropString(payload, "name", "John's Room"); + + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gLightResourceUri); + OCRepPayloadAppend(payload, tempPayload); + + OCRepPayload *tempPayload2 = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload2, gFanResourceUri); + OCRepPayloadAppend(payload, tempPayload2); } else if(query.find(OC_RSRVD_INTERFACE_LL) != std::string::npos) { - ret = HandleCallback(ehRequest, - rspGetRoomCollection, rspFailureRoom, payload, sizeof(payload)); - if(ret != OC_EH_ERROR) - { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspGetLightCollection, rspFailureLight, payload, sizeof(payload)); - } - if(ret != OC_EH_ERROR) - { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspGetFanCollection, rspFailureFan, payload, sizeof(payload)); - } + OCRepPayloadSetUri(payload, gRoomResourceUri); + + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gLightResourceUri); + OCRepPayloadAppend(payload, tempPayload); + + OCRepPayload *tempPayload2 = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload2, gFanResourceUri); + OCRepPayloadAppend(payload, tempPayload2); } else if(query.find(OC_RSRVD_INTERFACE_BATCH) != std::string::npos) { - ret = HandleCallback(ehRequest, - rspGetRoomCollection, rspFailureRoom, payload, sizeof(payload)); - if(ret != OC_EH_ERROR) - { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspGetLightDefault, rspFailureLight, payload, sizeof(payload)); - } - if(ret != OC_EH_ERROR) - { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspGetFanDefault, rspFailureFan, payload, sizeof(payload)); - } + + OCRepPayloadSetUri(payload, gRoomResourceUri); + + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gLightResourceUri); + OCRepPayloadSetPropBool(tempPayload, "state", false); + OCRepPayloadSetPropInt(tempPayload, "power", 0); + OCRepPayloadAppend(payload, tempPayload); + + OCRepPayload *tempPayload2 = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload2, gFanResourceUri); + OCRepPayloadSetPropBool(tempPayload2, "state", true); + OCRepPayloadSetPropInt(tempPayload2, "speed", 10); + OCRepPayloadAppend(payload, tempPayload2); } if (ret == OC_EH_OK) { @@ -227,8 +227,7 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, response.requestHandle = ehRequest->requestHandle; response.resourceHandle = ehRequest->resource; response.ehResult = ret; - response.payload = payload; - response.payloadSize = strlen(payload); + response.payload = reinterpret_cast(payload); response.numSendVendorSpecificHeaderOptions = 0; memset(response.sendVendorSpecificHeaderOptions, 0, sizeof response.sendVendorSpecificHeaderOptions); @@ -238,7 +237,7 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, // Send the response if (OCDoResponse(&response) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Error sending response"); + OIC_LOG(ERROR, TAG, "Error sending response"); ret = OC_EH_ERROR; } } @@ -249,48 +248,50 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, { if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, - rspPutRoomDefault, rspFailureRoom, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gRoomResourceUri); + OCRepPayloadSetPropString(payload, "name", "John's Room"); } } if(query.find(OC_RSRVD_INTERFACE_LL) != std::string::npos) { if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, - rspPutRoomCollection, rspFailureRoom, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gRoomResourceUri); } if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspPutLightCollection, rspFailureLight, payload, sizeof(payload)); + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gLightResourceUri); + OCRepPayloadAppend(payload, tempPayload); } if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspPutFanCollection, rspFailureFan, payload, sizeof(payload)); + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gFanResourceUri); + OCRepPayloadAppend(payload, tempPayload); } } if(query.find(OC_RSRVD_INTERFACE_BATCH ) != std::string::npos) { if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, - rspPutRoomCollection, rspFailureRoom, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gRoomResourceUri); } if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspPutLightDefault, rspFailureLight, payload, sizeof(payload)); + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gLightResourceUri); + OCRepPayloadSetPropBool(tempPayload, "state", true); + OCRepPayloadSetPropInt(tempPayload, "power", 0); + OCRepPayloadAppend(payload, tempPayload); } if(ret != OC_EH_ERROR) { - ret = HandleCallback(ehRequest, ",", ",", payload, sizeof(payload)); - ret = HandleCallback(ehRequest, - rspPutFanDefault, rspFailureFan, payload, sizeof(payload)); + OCRepPayload *tempPayload = OCRepPayloadCreate(); + OCRepPayloadSetUri(tempPayload, gFanResourceUri); + OCRepPayloadSetPropBool(tempPayload, "state", false); + OCRepPayloadSetPropInt(tempPayload, "speed", 0); + OCRepPayloadAppend(payload, tempPayload); } } if (ret == OC_EH_OK) @@ -299,8 +300,7 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, response.requestHandle = ehRequest->requestHandle; response.resourceHandle = ehRequest->resource; response.ehResult = ret; - response.payload = payload; - response.payloadSize = strlen(payload); + response.payload = reinterpret_cast(payload); response.numSendVendorSpecificHeaderOptions = 0; memset(response.sendVendorSpecificHeaderOptions, 0, sizeof response.sendVendorSpecificHeaderOptions); @@ -310,17 +310,18 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, // Send the response if (OCDoResponse(&response) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Error sending response"); + OIC_LOG(ERROR, TAG, "Error sending response"); ret = OC_EH_ERROR; } } } else { - OC_LOG_V (INFO, TAG, "Received unsupported method %d from client", + OIC_LOG_V (INFO, TAG, "Received unsupported method %d from client", ehRequest->method); ret = OC_EH_ERROR; } + OCRepPayloadDestroy(payload); } else if (ehRequest && flag == OC_OBSERVE_FLAG) { @@ -330,30 +331,32 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag, } OCEntityHandlerResult OCEntityHandlerLightCb(OCEntityHandlerFlag flag, - OCEntityHandlerRequest * ehRequest,void* callbackParam) + OCEntityHandlerRequest * ehRequest,void* /*callbackParam*/) { OCEntityHandlerResult ret = OC_EH_OK; OCEntityHandlerResponse response; - char payload[MAX_RESPONSE_LENGTH] = {0}; - OC_LOG_V(INFO, TAG, "Callback for Light"); + OIC_LOG_V(INFO, TAG, "Callback for Light"); PrintReceivedMsgInfo(flag, ehRequest ); if(ehRequest && flag == OC_REQUEST_FLAG) { + OCRepPayload* payload = OCRepPayloadCreate(); if(OC_REST_GET == ehRequest->method) { - ret = HandleCallback(ehRequest, - rspGetLightDefault, rspFailureLight, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gLightResourceUri); + OCRepPayloadSetPropBool(payload, "state", false); + OCRepPayloadSetPropInt(payload, "power", 0); } else if(OC_REST_PUT == ehRequest->method) { - ret = HandleCallback(ehRequest, - rspPutLightDefault, rspFailureLight, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gLightResourceUri); + OCRepPayloadSetPropBool(payload, "state", true); + OCRepPayloadSetPropInt(payload, "power", 0); } else { - OC_LOG_V (INFO, TAG, "Received unsupported method %d from client", + OIC_LOG_V (INFO, TAG, "Received unsupported method %d from client", ehRequest->method); ret = OC_EH_ERROR; } @@ -364,8 +367,7 @@ OCEntityHandlerResult OCEntityHandlerLightCb(OCEntityHandlerFlag flag, response.requestHandle = ehRequest->requestHandle; response.resourceHandle = ehRequest->resource; response.ehResult = ret; - response.payload = payload; - response.payloadSize = strlen(payload); + response.payload = reinterpret_cast(payload); response.numSendVendorSpecificHeaderOptions = 0; memset(response.sendVendorSpecificHeaderOptions, 0, sizeof response.sendVendorSpecificHeaderOptions); @@ -376,10 +378,11 @@ OCEntityHandlerResult OCEntityHandlerLightCb(OCEntityHandlerFlag flag, // Send the response if (OCDoResponse(&response) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Error sending response"); + OIC_LOG(ERROR, TAG, "Error sending response"); ret = OC_EH_ERROR; } } + OCRepPayloadDestroy(payload); } else if (ehRequest && flag == OC_OBSERVE_FLAG) { @@ -390,30 +393,33 @@ OCEntityHandlerResult OCEntityHandlerLightCb(OCEntityHandlerFlag flag, } OCEntityHandlerResult OCEntityHandlerFanCb(OCEntityHandlerFlag flag, - OCEntityHandlerRequest * ehRequest, void* callback) + OCEntityHandlerRequest * ehRequest, void* /*callback*/) { OCEntityHandlerResult ret = OC_EH_OK; OCEntityHandlerResponse response; - char payload[MAX_RESPONSE_LENGTH] = {0}; - OC_LOG_V(INFO, TAG, "Callback for Fan"); + OIC_LOG_V(INFO, TAG, "Callback for Fan"); PrintReceivedMsgInfo(flag, ehRequest ); if(ehRequest && flag == OC_REQUEST_FLAG) { + OCRepPayload* payload = OCRepPayloadCreate(); + if(OC_REST_GET == ehRequest->method) { - ret = HandleCallback(ehRequest, rspGetFanDefault, - rspFailureFan, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gFanResourceUri); + OCRepPayloadSetPropBool(payload, "state", true); + OCRepPayloadSetPropInt(payload, "speed", 10); } else if(OC_REST_PUT == ehRequest->method) { - ret = HandleCallback(ehRequest, rspPutFanDefault, - rspFailureFan, payload, sizeof(payload)); + OCRepPayloadSetUri(payload, gFanResourceUri); + OCRepPayloadSetPropBool(payload, "state", false); + OCRepPayloadSetPropInt(payload, "speed", 0); } else { - OC_LOG_V (INFO, TAG, "Received unsupported method %d from client", + OIC_LOG_V (INFO, TAG, "Received unsupported method %d from client", ehRequest->method); ret = OC_EH_ERROR; } @@ -424,8 +430,7 @@ OCEntityHandlerResult OCEntityHandlerFanCb(OCEntityHandlerFlag flag, response.requestHandle = ehRequest->requestHandle; response.resourceHandle = ehRequest->resource; response.ehResult = ret; - response.payload = payload; - response.payloadSize = strlen(payload); + response.payload = reinterpret_cast(payload); response.numSendVendorSpecificHeaderOptions = 0; memset(response.sendVendorSpecificHeaderOptions, 0, sizeof response.sendVendorSpecificHeaderOptions); @@ -436,10 +441,11 @@ OCEntityHandlerResult OCEntityHandlerFanCb(OCEntityHandlerFlag flag, // Send the response if (OCDoResponse(&response) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Error sending response"); + OIC_LOG(ERROR, TAG, "Error sending response"); ret = OC_EH_ERROR; } } + OCRepPayloadDestroy(payload); } else if (ehRequest && flag == OC_OBSERVE_FLAG) @@ -470,7 +476,7 @@ void *ChangeLightRepresentation (void *param) light.power += 5; if (gLightUnderObservation) { - OC_LOG_V(INFO, TAG, + OIC_LOG_V(INFO, TAG, " =====> Notifying stack of new power level %d\n", light.power); result = OCNotifyAllObservers (light.handle, OC_NA_QOS); if (OC_STACK_NO_OBSERVERS == result) @@ -505,14 +511,16 @@ int main(int argc, char* argv[]) return -1; } - OC_LOG(DEBUG, TAG, "OCServer is starting..."); + OIC_LOG(DEBUG, TAG, "OCServer is starting..."); if (OCInit(NULL, 0, OC_SERVER) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "OCStack init error"); + OIC_LOG(ERROR, TAG, "OCStack init error"); return 0; } + OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb, NULL); + /* * Declare and create the example resource: light */ @@ -524,13 +532,13 @@ int main(int argc, char* argv[]) pthread_create (&threadId, NULL, ChangeLightRepresentation, (void *)NULL); // Break from loop with Ctrl-C - OC_LOG(INFO, TAG, "Entering ocserver main loop..."); + OIC_LOG(INFO, TAG, "Entering ocserver main loop..."); signal(SIGINT, handleSigInt); while (!gQuitFlag) { if (OCProcess() != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "OCStack process error"); + OIC_LOG(ERROR, TAG, "OCStack process error"); return 0; } sleep(2); @@ -539,18 +547,21 @@ int main(int argc, char* argv[]) /* * Cancel the light thread and wait for it to terminate */ +#ifdef HAVE_PTHREAD_H pthread_cancel(threadId); pthread_join(threadId, NULL); +#endif - OC_LOG(INFO, TAG, "Exiting ocserver main loop..."); + OIC_LOG(INFO, TAG, "Exiting ocserver main loop..."); if (OCStop() != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "OCStack process error"); + OIC_LOG(ERROR, TAG, "OCStack process error"); } return 0; } + void createResources() { light.state = false; @@ -563,7 +574,7 @@ void createResources() OCEntityHandlerFanCb, NULL, OC_DISCOVERABLE|OC_OBSERVABLE); - OC_LOG_V(INFO, TAG, "Created fan resource with result: %s", getResult(res)); + OIC_LOG_V(INFO, TAG, "Created fan resource with result: %s", getResult(res)); OCResourceHandle light; res = OCCreateResource(&light, @@ -573,7 +584,7 @@ void createResources() OCEntityHandlerLightCb, NULL, OC_DISCOVERABLE|OC_OBSERVABLE); - OC_LOG_V(INFO, TAG, "Created light resource with result: %s", getResult(res)); + OIC_LOG_V(INFO, TAG, "Created light resource with result: %s", getResult(res)); OCResourceHandle room; @@ -598,14 +609,14 @@ void createResources() OC_DISCOVERABLE); } - OC_LOG_V(INFO, TAG, "Created room resource with result: %s", getResult(res)); + OIC_LOG_V(INFO, TAG, "Created room resource with result: %s", getResult(res)); OCBindResourceInterfaceToResource(room, OC_RSRVD_INTERFACE_LL); OCBindResourceInterfaceToResource(room, OC_RSRVD_INTERFACE_DEFAULT); res = OCBindResource(room, light); - OC_LOG_V(INFO, TAG, "OC Bind Contained Resource to resource: %s", getResult(res)); + OIC_LOG_V(INFO, TAG, "OC Bind Contained Resource to resource: %s", getResult(res)); res = OCBindResource(room, fan); - OC_LOG_V(INFO, TAG, "OC Bind Contained Resource to resource: %s", getResult(res)); + OIC_LOG_V(INFO, TAG, "OC Bind Contained Resource to resource: %s", getResult(res)); }