From 3d23506508fe64050a219fe081ba199b765b764e Mon Sep 17 00:00:00 2001 From: Sashi Penta Date: Wed, 24 Dec 2014 22:18:37 -0800 Subject: [PATCH] [CA-Integration] Initial changes to enable CPP stack. Change-Id: I10cb4cb26782008b30a69d4a5ab49ec6b7c74b5f Signed-off-by: Sashi Penta --- resource/csdk/stack/src/ocstack.c | 6 ++- resource/examples/SConscript | 36 +++++++++--------- resource/examples/roomclient.cpp | 6 +-- resource/examples/simpleclient.cpp | 10 ++--- resource/include/OCHeaderOption.h | 4 ++ resource/include/OCPlatform.h | 9 ++--- resource/src/OCPlatform.cpp | 78 +++++++++++++++++++++++++++----------- resource/src/SConscript | 2 + 8 files changed, 94 insertions(+), 57 deletions(-) diff --git a/resource/csdk/stack/src/ocstack.c b/resource/csdk/stack/src/ocstack.c index 3a29b30..d38b439 100644 --- a/resource/csdk/stack/src/ocstack.c +++ b/resource/csdk/stack/src/ocstack.c @@ -309,7 +309,6 @@ OCFree(resourceTypeName); void HandleCAResponses(const CARemoteEndpoint_t* endPoint, const CAResponseInfo_t* responseInfo) { OC_LOG(INFO, TAG, PCF("Enter HandleCAResponses")); - printf ("Received payload: %s\n", (char *)responseInfo->info.payload); OCStackApplicationResult result = OC_STACK_DELETE_TRANSACTION; if(strcmp(endPoint->resourceUri, OC_PRESENCE_URI) == 0) { @@ -1335,6 +1334,11 @@ OCStackResult OCDoResource(OCDoHandle *handle, OCMethod method, const char *requ // create token caResult = CAGenerateToken(&caToken); + //TODO-CA Remove this temporary fix (for some reason same token is being generated) + static count = 0; + count++; + caToken[0] += count; + if (caResult != CA_STATUS_OK) { OC_LOG(ERROR, TAG, PCF("CAGenerateToken error")); diff --git a/resource/examples/SConscript b/resource/examples/SConscript index c65b4f1..7608701 100644 --- a/resource/examples/SConscript +++ b/resource/examples/SConscript @@ -46,29 +46,31 @@ if target_os == 'android': if target_os in ['darwin', 'ios']: examples_env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE']) +examples_env.AppendUnique(CPPDEFINES = ['CA_INT']) + ###################################################################### # Source files and Targets ###################################################################### simpleserver = examples_env.Program('simpleserver', 'simpleserver.cpp') -simpleserverHQ = examples_env.Program('simpleserverHQ', 'simpleserverHQ.cpp') simpleclient = examples_env.Program('simpleclient', 'simpleclient.cpp') -simpleclientHQ = examples_env.Program('simpleclientHQ', 'simpleclientHQ.cpp') -fridgeserver = examples_env.Program('fridgeserver', 'fridgeserver.cpp') -fridgeclient = examples_env.Program('fridgeclient', 'fridgeclient.cpp') -presenceserver = examples_env.Program('presenceserver', 'presenceserver.cpp') -presenceclient = examples_env.Program('presenceclient', 'presenceclient.cpp') -simpleclientserver = examples_env.Program('simpleclientserver', 'simpleclientserver.cpp') -roomserver = examples_env.Program('roomserver', 'roomserver.cpp') -roomclient = examples_env.Program('roomclient', 'roomclient.cpp') -garageserver = examples_env.Program('garageserver', 'garageserver.cpp') -garageclient = examples_env.Program('garageclient', 'garageclient.cpp') -devicediscoveryserver = examples_env.Program('devicediscoveryserver', 'devicediscoveryserver.cpp') -devicediscoveryclient = examples_env.Program('devicediscoveryclient', 'devicediscoveryclient.cpp') +#simpleserverHQ = examples_env.Program('simpleserverHQ', 'simpleserverHQ.cpp') +#simpleclientHQ = examples_env.Program('simpleclientHQ', 'simpleclientHQ.cpp') +#fridgeserver = examples_env.Program('fridgeserver', 'fridgeserver.cpp') +#fridgeclient = examples_env.Program('fridgeclient', 'fridgeclient.cpp') +#presenceserver = examples_env.Program('presenceserver', 'presenceserver.cpp') +#presenceclient = examples_env.Program('presenceclient', 'presenceclient.cpp') +#simpleclientserver = examples_env.Program('simpleclientserver', 'simpleclientserver.cpp') +#roomserver = examples_env.Program('roomserver', 'roomserver.cpp') +#roomclient = examples_env.Program('roomclient', 'roomclient.cpp') +#garageserver = examples_env.Program('garageserver', 'garageserver.cpp') +#garageclient = examples_env.Program('garageclient', 'garageclient.cpp') -Alias("examples", [simpleserver, simpleserverHQ, simpleclient, simpleclientHQ, - fridgeserver, fridgeclient, presenceserver, presenceclient, - simpleclientserver, roomserver, roomclient, garageserver, - garageclient, devicediscoveryserver, devicediscoveryclient]) +Alias("examples", [simpleserver, simpleclient, + #simpleserverHQ, simpleclientHQ, + #fridgeserver, fridgeclient, presenceserver, presenceclient, + #simpleclientserver, roomserver, roomclient, garageserver, + #garageclient + ]) env.AppendTarget('examples') #ios doesn't allow run application from terminal, so won't build these examples diff --git a/resource/examples/roomclient.cpp b/resource/examples/roomclient.cpp index 3cf5540..9c6dd74 100644 --- a/resource/examples/roomclient.cpp +++ b/resource/examples/roomclient.cpp @@ -233,14 +233,12 @@ int main(int argc, char* argv[]) { try { // Find all resources + #ifdef CA_INT - OCConnectivityType connectivityType = OC_WIFI; - OCPlatform::findResource("", "coap://224.0.1.187/oc/core", connectivityType, - &foundResource); + OCPlatform::findResource("", "coap://224.0.1.187:5298/oc/core", &foundResource); #else OCPlatform::findResource("", "coap://224.0.1.187/oc/core", &foundResource); #endif - std::cout<< "Finding Resource... " <= MIN_HEADER_OPTIONID && optionID <= MAX_HEADER_OPTIONID)) { throw OCException(OC::Exception::OPTION_ID_RANGE_INVALID); } +#endif } /** diff --git a/resource/include/OCPlatform.h b/resource/include/OCPlatform.h index 8639dbe..af4c089 100644 --- a/resource/include/OCPlatform.h +++ b/resource/include/OCPlatform.h @@ -119,12 +119,11 @@ namespace OC uint8_t connectivityType, FindCallback resourceHandler); OCStackResult findResource(const std::string& host, const std::string& resourceURI, uint8_t connectivityType, FindCallback resourceHandler, QualityOfService QoS); -#else +#endif OCStackResult findResource(const std::string& host, const std::string& resourceURI, FindCallback resourceHandler); OCStackResult findResource(const std::string& host, const std::string& resourceURI, FindCallback resourceHandler, QualityOfService QoS); -#endif /** * API for Device Discovery * @@ -400,12 +399,11 @@ namespace OC OCStackResult subscribePresence(OCPresenceHandle& presenceHandle, const std::string& host, const std::string& resourceType, uint8_t connectivityType, SubscribeCallback presenceHandler); -#else +#endif OCStackResult subscribePresence(OCPresenceHandle& presenceHandle, const std::string& host, SubscribeCallback presenceHandler); OCStackResult subscribePresence(OCPresenceHandle& presenceHandle, const std::string& host, const std::string& resourceType, SubscribeCallback presenceHandler); -#endif /** * unsubscribes from a previously subscribed server's presence events. Note that * you may for a short time still receive events from the server since it may take time @@ -448,11 +446,10 @@ namespace OC uint8_t connectivityType, bool isObservable, const std::vector& resourceTypes, const std::vector& interfaces); -#else +#endif OCResource::Ptr constructResourceObject(const std::string& host, const std::string& uri, bool isObservable, const std::vector& resourceTypes, const std::vector& interfaces); -#endif /** * Allows application entity handler to send response to an incoming request. * diff --git a/resource/src/OCPlatform.cpp b/resource/src/OCPlatform.cpp index c5f1773..fa9ffc4 100644 --- a/resource/src/OCPlatform.cpp +++ b/resource/src/OCPlatform.cpp @@ -77,7 +77,7 @@ namespace OC const std::vector& resourceTypes, const std::vector& interfaces) { - return OCPlatform_impl::Instance().constructResourceObject(host, uri, connectivityType, + return OCPlatform_impl::Instance().constructResourceObject(host, uri, connectivityType, isObservable, resourceTypes, interfaces); } @@ -119,47 +119,66 @@ namespace OC deviceInfoHandler, QoS); } #else - OCResource::Ptr constructResourceObject(const std::string& host, - const std::string& uri, - bool isObservable, - const std::vector& resourceTypes, - const std::vector& interfaces) + OCStackResult getDeviceInfo(const std::string& host, + const std::string& deviceURI, + FindDeviceCallback deviceInfoHandler) { - return OCPlatform_impl::Instance().constructResourceObject(host, uri, isObservable, - resourceTypes, interfaces); + return OCPlatform_impl::Instance().getDeviceInfo(host, deviceURI, deviceInfoHandler); } + OCStackResult getDeviceInfo(const std::string& host, + const std::string& deviceURI, + FindDeviceCallback deviceInfoHandler, + QualityOfService QoS) + { + return OCPlatform_impl::Instance().getDeviceInfo(host, deviceURI, + deviceInfoHandler, QoS); + } +#endif + OCStackResult findResource(const std::string& host, const std::string& resourceName, FindCallback resourceHandler) { +//TODO-CA Revisit this API +#ifdef CA_INT + return OCPlatform_impl::Instance().findResource(host, resourceName, + OC_WIFI | OC_ETHERNET, resourceHandler); +#else return OCPlatform_impl::Instance().findResource(host, resourceName, resourceHandler); +#endif } OCStackResult findResource(const std::string& host, const std::string& resourceName, FindCallback resourceHandler, QualityOfService QoS) { +//TODO-CA Revisit this API +#ifdef CA_INT + return OCPlatform_impl::Instance().findResource(host, resourceName, + OC_WIFI | OC_ETHERNET, resourceHandler, QoS); +#else return OCPlatform_impl::Instance().findResource(host, resourceName, resourceHandler, QoS); +#endif } - OCStackResult getDeviceInfo(const std::string& host, - const std::string& deviceURI, - FindDeviceCallback deviceInfoHandler) + OCResource::Ptr constructResourceObject(const std::string& host, + const std::string& uri, + bool isObservable, + const std::vector& resourceTypes, + const std::vector& interfaces) { - return OCPlatform_impl::Instance().getDeviceInfo(host, deviceURI, deviceInfoHandler); +//TODO-CA Revisit this API +#ifdef CA_INT + return OCPlatform_impl::Instance().constructResourceObject(host, uri, isObservable, + OC_WIFI | OC_ETHERNET, resourceTypes, interfaces); +#else + return OCPlatform_impl::Instance().constructResourceObject(host, uri, isObservable, + resourceTypes, interfaces); +#endif } - OCStackResult getDeviceInfo(const std::string& host, - const std::string& deviceURI, - FindDeviceCallback deviceInfoHandler, - QualityOfService QoS) - { - return OCPlatform_impl::Instance().getDeviceInfo(host, deviceURI, - deviceInfoHandler, QoS); - } -#endif OCStackResult registerResource(OCResourceHandle& resourceHandle, std::string& resourceURI, @@ -257,13 +276,19 @@ namespace OC return OCPlatform_impl::Instance().subscribePresence(presenceHandle, host, resourceType, connectivityType, presenceHandler); } -#else +#endif OCStackResult subscribePresence(OCPresenceHandle& presenceHandle, const std::string& host, SubscribeCallback presenceHandler) { +//TODO-CA Revisit this API +#ifdef CA_INT + return OCPlatform_impl::Instance().subscribePresence(presenceHandle, host, + OC_WIFI | OC_ETHERNET, presenceHandler); +#else return OCPlatform_impl::Instance().subscribePresence(presenceHandle, host, presenceHandler); +#endif } OCStackResult subscribePresence(OCPresenceHandle& presenceHandle, @@ -271,10 +296,17 @@ namespace OC const std::string& resourceType, SubscribeCallback presenceHandler) { +//TODO-CA Revisit this API +#ifdef CA_INT + return OCPlatform_impl::Instance().subscribePresence(presenceHandle, host, + resourceType, OC_WIFI | OC_ETHERNET, + presenceHandler); +#else return OCPlatform_impl::Instance().subscribePresence(presenceHandle, host, resourceType, presenceHandler); - } #endif + } + OCStackResult unsubscribePresence(OCPresenceHandle presenceHandle) { return OCPlatform_impl::Instance().unsubscribePresence(presenceHandle); diff --git a/resource/src/SConscript b/resource/src/SConscript index 7ec0c8e..88b80f0 100644 --- a/resource/src/SConscript +++ b/resource/src/SConscript @@ -35,6 +35,8 @@ if target_os in ['darwin', 'ios']: oclib_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')]) oclib_env.AppendUnique(LIBS = ['octbstack', 'coap', 'oc_logger']) +oclib_env.AppendUnique(CPPDEFINES = ['CA_INT']) + ###################################################################### # Source files and Targets ###################################################################### -- 2.7.4