#include "ocpayload.h"
#include "payload_logging.h"
#include "ocremoteaccessclient.h"
+#include "common.h"
+#define SET_BUT_NOT_USED(x) (void) x
// Tracking user input
static int TEST_CASE = 0;
-static const char * MULTICAST_DEVICE_DISCOVERY_QUERY = "/oic/d";
-static const char * MULTICAST_PLATFORM_DISCOVERY_QUERY = "/oic/p";
static const char * MULTICAST_RESOURCE_DISCOVERY_QUERY = "/oic/res";
static std::string coapServerIP = "255.255.255.255";
static OCDevAddr responseAddr;
//Use ipv4addr for both InitDiscovery and InitPlatformOrDeviceDiscovery
char remoteServerJabberID[MAX_ADDR_STR_SIZE];
-void StripNewLineChar(char* str);
static uint16_t maxNotification = 15;
// The handle for the observe registration
static void PrintUsage()
{
- OC_LOG(INFO, TAG, "This sample makes all requests via the remote access adapter");
- OC_LOG(INFO, TAG, "Usage : ocremoteaccessclient -t <number>");
- OC_LOG(INFO, TAG, "-t 1 : Discover Resources");
- OC_LOG(INFO, TAG, "-t 2 : Discover & Get");
- OC_LOG(INFO, TAG, "-t 3 : Discover & Put");
- OC_LOG(INFO, TAG, "-t 4 : Discover & Post");
- OC_LOG(INFO, TAG, "-t 5 : Discover & Delete");
- OC_LOG(INFO, TAG, "-t 6 : Discover & Observe");
- OC_LOG(INFO, TAG, "-t 7 : Discover & Observe then cancel immediately with High QOS");
+ OIC_LOG(INFO, TAG, "This sample makes all requests via the remote access adapter");
+ OIC_LOG(INFO, TAG, "Usage : ocremoteaccessclient -t <number>");
+ OIC_LOG(INFO, TAG, "-t 1 : Discover Resources");
+ OIC_LOG(INFO, TAG, "-t 2 : Discover & Get");
+ OIC_LOG(INFO, TAG, "-t 3 : Discover & Put");
+ OIC_LOG(INFO, TAG, "-t 4 : Discover & Post");
+ OIC_LOG(INFO, TAG, "-t 5 : Discover & Delete");
+ OIC_LOG(INFO, TAG, "-t 6 : Discover & Observe");
+ OIC_LOG(INFO, TAG, "-t 7 : Discover & Observe then cancel immediately with High QOS");
}
OCStackResult InvokeOCDoResource(std::ostringstream &query,
cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- OCStackResult ret = OCDoResource(
- &handle,
- method,
- query.str().c_str(),
- &responseAddr,
- (method == OC_REST_PUT) ? putPayload() : NULL,
- CT_ADAPTER_REMOTE_ACCESS,
- qos,
- &cbData,
- options,
- numOptions);
+ OCPayload* payload = (method == OC_REST_PUT) ? putPayload() : NULL;
+
+ OCStackResult ret = OCDoRequest(&handle,
+ method,
+ query.str().c_str(),
+ &responseAddr,
+ payload,
+ CT_ADAPTER_REMOTE_ACCESS,
+ qos,
+ &cbData,
+ options,
+ numOptions);
+
+ OCPayloadDestroy(payload);
if (ret != OC_STACK_OK)
{
- OC_LOG_V(ERROR, TAG, "OCDoResource returns error %d with method %d", ret, method);
+ OIC_LOG_V(ERROR, TAG, "OCDoResource returns error %d with method %d", ret, method);
}
else if (method == OC_REST_OBSERVE || method == OC_REST_OBSERVE_ALL)
{
{
if(clientResponse == NULL)
{
- OC_LOG(INFO, TAG, "Received NULL response");
+ OIC_LOG(INFO, TAG, "Received NULL response");
return OC_STACK_DELETE_TRANSACTION;
}
if(ctx == (void*)DEFAULT_CONTEXT_VALUE)
{
- OC_LOG(INFO, TAG, "Callback Context recvd successfully");
+ OIC_LOG(INFO, TAG, "Callback Context recvd successfully");
}
- OC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
- OC_LOG_V(INFO, TAG, "SEQUENCE NUMBER: %d", clientResponse->sequenceNumber);
- OC_LOG_PAYLOAD(INFO, clientResponse->payload);
+ OIC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
+ OIC_LOG_V(INFO, TAG, "SEQUENCE NUMBER: %d", clientResponse->sequenceNumber);
+ OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
if(clientResponse->numRcvdVendorSpecificHeaderOptions > 0)
{
- OC_LOG (INFO, TAG, "Received vendor specific options. Ignoring");
+ OIC_LOG (INFO, TAG, "Received vendor specific options. Ignoring");
}
+ SET_BUT_NOT_USED(handle);
return OC_STACK_DELETE_TRANSACTION;
}
{
if(!clientResponse)
{
- OC_LOG_V(INFO, TAG, "obsReqCB received NULL response");
+ OIC_LOG_V(INFO, TAG, "obsReqCB received NULL response");
}
if(ctx == (void*)DEFAULT_CONTEXT_VALUE)
{
- OC_LOG(INFO, TAG, "Callback Context recvd successfully");
+ OIC_LOG(INFO, TAG, "Callback Context recvd successfully");
}
- OC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
- OC_LOG_V(INFO, TAG, "SEQUENCE NUMBER: %d", clientResponse->sequenceNumber);
- OC_LOG_V(INFO, TAG, "OBSERVE notification %d recvd", gNumObserveNotifies);
- OC_LOG_PAYLOAD(INFO, clientResponse->payload);
+ OIC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
+ OIC_LOG_V(INFO, TAG, "SEQUENCE NUMBER: %d", clientResponse->sequenceNumber);
+ OIC_LOG_V(INFO, TAG, "OBSERVE notification %d recvd", gNumObserveNotifies);
+ OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
gNumObserveNotifies++;
if (gNumObserveNotifies == maxNotification)
{
if (OCCancel (gObserveDoHandle, OC_LOW_QOS, NULL, 0) != OC_STACK_OK)
{
- OC_LOG(ERROR, TAG, "Observe cancel error");
+ OIC_LOG(ERROR, TAG, "Observe cancel error");
}
return OC_STACK_DELETE_TRANSACTION;
}
{
if (OCCancel (gObserveDoHandle, OC_HIGH_QOS, NULL, 0) != OC_STACK_OK)
{
- OC_LOG(ERROR, TAG, "Observe cancel error");
+ OIC_LOG(ERROR, TAG, "Observe cancel error");
}
}
if(clientResponse->sequenceNumber == OC_OBSERVE_REGISTER)
{
- OC_LOG(INFO, TAG, "Registration confirmed");
+ OIC_LOG(INFO, TAG, "Registration confirmed");
}
else if(clientResponse->sequenceNumber == OC_OBSERVE_DEREGISTER)
{
- OC_LOG(INFO, TAG, "de-registration confirmed");
+ OIC_LOG(INFO, TAG, "de-registration confirmed");
return OC_STACK_DELETE_TRANSACTION;
}
else if(clientResponse->sequenceNumber == OC_OBSERVE_NO_OPTION)
{
- OC_LOG(INFO, TAG, "Registration/deregistration failed");
+ OIC_LOG(INFO, TAG, "Registration/deregistration failed");
return OC_STACK_DELETE_TRANSACTION;
}
+ SET_BUT_NOT_USED(handle);
return OC_STACK_KEEP_TRANSACTION;
}
#ifdef WITH_PRESENCE
{
if(ctx == (void*)DEFAULT_CONTEXT_VALUE)
{
- OC_LOG(INFO, TAG, "Callback Context recvd successfully");
+ OIC_LOG(INFO, TAG, "Callback Context recvd successfully");
}
if (clientResponse)
{
- OC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
- OC_LOG_V(INFO, TAG, "NONCE NUMBER: %u", clientResponse->sequenceNumber);
- OC_LOG_V(INFO, TAG, "PRESENCE notification %d recvd", gNumPresenceNotifies);
- OC_LOG_PAYLOAD(INFO, clientResponse->payload);
+ OIC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
+ OIC_LOG_V(INFO, TAG, "NONCE NUMBER: %u", clientResponse->sequenceNumber);
+ OIC_LOG_V(INFO, TAG, "PRESENCE notification %d recvd", gNumPresenceNotifies);
+ OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
gNumPresenceNotifies++;
if (gNumPresenceNotifies == maxNotification)
{
if (OCCancel(gPresenceHandle, OC_LOW_QOS, NULL, 0) != OC_STACK_OK)
{
- OC_LOG(ERROR, TAG, "Presence cancel error");
+ OIC_LOG(ERROR, TAG, "Presence cancel error");
}
return OC_STACK_DELETE_TRANSACTION;
}
}
else
{
- OC_LOG_V(INFO, TAG, "presenceCB received Null clientResponse");
+ OIC_LOG_V(INFO, TAG, "presenceCB received Null clientResponse");
}
+ SET_BUT_NOT_USED(handle);
return OC_STACK_KEEP_TRANSACTION;
}
#endif
{
if (ctx == (void*) DEFAULT_CONTEXT_VALUE)
{
- OC_LOG(INFO, TAG, "DISCOVER callback recvd");
+ OIC_LOG(INFO, TAG, "DISCOVER callback recvd");
}
if (!clientResponse)
{
- OC_LOG_V(INFO, TAG, "discoveryReqCB received Null clientResponse");
+ OIC_LOG_V(INFO, TAG, "discoveryReqCB received Null clientResponse");
}
- OC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
- OC_LOG_PAYLOAD(INFO, clientResponse->payload);
+ OIC_LOG_V(INFO, TAG, "StackResult: %s", getResult(clientResponse->result));
+ OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
responseAddr = clientResponse->devAddr;
switch(TEST_CASE)
{
- OC_LOG_V(INFO, TAG, "TEST_CASE %u\n", TEST_CASE);
+ OIC_LOG_V(INFO, TAG, "TEST_CASE %u\n", TEST_CASE);
case TEST_GET_REQ_NON:
InitGetRequest(OC_LOW_QOS);
break;
PrintUsage();
break;
}
+ SET_BUT_NOT_USED(handle);
return OC_STACK_KEEP_TRANSACTION;
}
{
if (ctx == (void*) DEFAULT_CONTEXT_VALUE)
{
- OC_LOG(INFO, TAG, "Callback Context for Platform DISCOVER query recvd successfully");
+ OIC_LOG(INFO, TAG, "Callback Context for Platform DISCOVER query recvd successfully");
}
if(clientResponse)
{
- OC_LOG_PAYLOAD(INFO, clientResponse->payload);
+ OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
}
else
{
- OC_LOG_V(INFO, TAG, "PlatformDiscoveryReqCB received Null clientResponse");
+ OIC_LOG_V(INFO, TAG, "PlatformDiscoveryReqCB received Null clientResponse");
}
+ SET_BUT_NOT_USED(handle);
return OC_STACK_DELETE_TRANSACTION;
}
{
if (ctx == (void*) DEFAULT_CONTEXT_VALUE)
{
- OC_LOG(INFO, TAG, "Callback Context for Device DISCOVER query recvd successfully");
+ OIC_LOG(INFO, TAG, "Callback Context for Device DISCOVER query recvd successfully");
}
if(clientResponse)
{
- OC_LOG_PAYLOAD(INFO, clientResponse->payload);
+ OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
}
else
{
- OC_LOG_V(INFO, TAG, "PlatformDiscoveryReqCB received Null clientResponse");
+ OIC_LOG_V(INFO, TAG, "PlatformDiscoveryReqCB received Null clientResponse");
}
+ SET_BUT_NOT_USED(handle);
return OC_STACK_DELETE_TRANSACTION;
}
int InitObserveRequest(OCQualityOfService qos)
{
- OC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+ OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
std::ostringstream query;
query << coapServerResource;
return (InvokeOCDoResource(query,
int InitPutRequest(OCQualityOfService qos)
{
- OC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+ OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
std::ostringstream query;
query << coapServerResource;
return (InvokeOCDoResource(query, OC_REST_PUT, (qos == OC_HIGH_QOS)? OC_HIGH_QOS:OC_LOW_QOS,
int InitPostRequest(OCQualityOfService qos)
{
- OC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+ OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
std::ostringstream query;
query << coapServerResource;
// First POST operation (to create an Light instance)
if (OC_STACK_OK != result)
{
// Error can happen if for example, network connectivity is down
- OC_LOG(INFO, TAG, "First POST call did not succeed");
+ OIC_LOG(INFO, TAG, "First POST call did not succeed");
}
// Second POST operation (to create an Light instance)
restRequestCB, NULL, 0);
if (OC_STACK_OK != result)
{
- OC_LOG(INFO, TAG, "Second POST call did not succeed");
+ OIC_LOG(INFO, TAG, "Second POST call did not succeed");
}
// This POST operation will update the original resourced /a/light
{
std::ostringstream query;
query << coapServerResource;
- OC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+ OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
// First DELETE operation
OCStackResult result = InvokeOCDoResource(query, OC_REST_DELETE,
if (OC_STACK_OK != result)
{
// Error can happen if for example, network connectivity is down
- OC_LOG(INFO, TAG, "DELETE call did not succeed");
+ OIC_LOG(INFO, TAG, "DELETE call did not succeed");
}
return result;
}
int InitGetRequest(OCQualityOfService qos)
{
- OC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+ OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
std::ostringstream query;
query << coapServerResource;
return (InvokeOCDoResource(query, OC_REST_GET,
dest.flags = OC_DEFAULT_FLAGS;
strncpy (dest.addr, remoteServerJabberID, MAX_ADDR_STR_SIZE - 1);
- OCStackResult ret = OCDoResource(NULL,
- OC_REST_GET,
- MULTICAST_RESOURCE_DISCOVERY_QUERY,
- &dest,
- NULL,
- CT_ADAPTER_REMOTE_ACCESS,
- (qos == OC_HIGH_QOS) ? OC_HIGH_QOS : OC_LOW_QOS,
- &cbData,
- NULL,
- 0
- );
+ OCStackResult ret = OCDoRequest(NULL,
+ OC_REST_GET,
+ MULTICAST_RESOURCE_DISCOVERY_QUERY,
+ &dest,
+ NULL,
+ CT_ADAPTER_REMOTE_ACCESS,
+ (qos == OC_HIGH_QOS) ? OC_HIGH_QOS : OC_LOW_QOS,
+ &cbData,
+ NULL,
+ 0);
if (ret != OC_STACK_OK)
{
- OC_LOG_V(ERROR, TAG, "Error %u in OCDoResource with discovery", ret);
+ OIC_LOG_V(ERROR, TAG, "Error %u in OCDoResource with discovery", ret);
}
return ret;
}
-OCStackResult initRemoteAccessAdapter ()
+static void jidbound(char *jid)
{
- OCRAInfo_t rainfo;
- rainfo.hostname = "localhost";
- rainfo.port = 5222;
- rainfo.xmpp_domain = "localhost";
- rainfo.username = "test1";
- rainfo.password = "intel123";
- rainfo.resource = "";
- rainfo.user_jid = "";
-
- return OCSetRAInfo(&rainfo);
+ OIC_LOG_V(INFO, TAG, "\n\n Bound JID: %s\n\n", jid);
}
int main(int argc, char* argv[])
{
- int opt;
+ char host[] = "localhost";
+ char user[] = "test1";
+ char pass[] = "intel123";
+ char empstr[] = "";
+ OCRAInfo_t rainfo = {};
- while ((opt = getopt(argc, argv, "t:")) != -1)
+ rainfo.hostname = host;
+ rainfo.port = 5222;
+ rainfo.xmpp_domain = host;
+ rainfo.username = user;
+ rainfo.password = pass;
+ rainfo.resource = empstr;
+ rainfo.user_jid = empstr;
+ rainfo.jidbound = jidbound;
+
+ int opt = 0;
+ while ((opt = getopt(argc, argv, "t:s:p:d:u:w:r:j:")) != -1)
{
switch(opt)
{
case 't':
TEST_CASE = atoi(optarg);
break;
+ case 's':
+ rainfo.hostname = optarg;
+ break;
+ case 'p':
+ rainfo.port = atoi(optarg);
+ break;
+ case 'd':
+ rainfo.xmpp_domain = optarg;
+ break;
+ case 'u':
+ rainfo.username = optarg;
+ break;
+ case 'w':
+ rainfo.password = optarg;
+ break;
+ case 'j':
+ rainfo.user_jid = optarg;
+ break;
+ case 'r':
+ rainfo.resource = optarg;
+ break;
default:
PrintUsage();
return -1;
}
}
- if (initRemoteAccessAdapter() != OC_STACK_OK)
+ if (OCSetRAInfo(&rainfo) != OC_STACK_OK)
{
- OC_LOG(ERROR, TAG, "Error initiating remote access adapter");
+ OIC_LOG(ERROR, TAG, "Error initiating remote access adapter");
return 0;
}
if (OCInit(NULL, 0, OC_CLIENT) != OC_STACK_OK)
{
- OC_LOG(ERROR, TAG, "OCStack init error");
+ OIC_LOG(ERROR, TAG, "OCStack init error");
return 0;
}
- OC_LOG(INFO, TAG, "Enter JID of remote server");
+ OIC_LOG(INFO, TAG, "Enter JID of remote server");
if (fgets(remoteServerJabberID, MAX_ADDR_STR_SIZE, stdin))
{
StripNewLineChar(remoteServerJabberID);
}
else
{
- OC_LOG(ERROR, TAG, "Bad input for jabberID");
+ OIC_LOG(ERROR, TAG, "Bad input for jabberID");
return OC_STACK_INVALID_PARAM;
}
InitDiscovery(OC_LOW_QOS);
// Break from loop with Ctrl+C
- OC_LOG(INFO, TAG, "Press CTRL+C to stop the stack");
+ OIC_LOG(INFO, TAG, "Press CTRL+C to stop the stack");
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);
}
- OC_LOG(INFO, TAG, "Exiting ocremoteaccessclient main loop...");
+ OIC_LOG(INFO, TAG, "Exiting ocremoteaccessclient main loop...");
if (OCStop() != OC_STACK_OK)
{
- OC_LOG(ERROR, TAG, "OCStack stop error");
+ OIC_LOG(ERROR, TAG, "OCStack stop error");
}
return 0;