* @param[in] buffer pointer to buffer of bytes
* @param[in] bufferSize max number of byte in buffer
*/
-void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_t bufferSize);
+void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize);
#define OCLog(level,tag,mes) LOG_(LOG_ID_MAIN, (level), (tag), mes)
#define OCLogv(level,tag,fmt,args...) LOG_(LOG_ID_MAIN, (level),tag,fmt,##args)
* @param buffer - pointer to buffer of bytes
* @param bufferSize - max number of byte in buffer
*/
- void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_t bufferSize);
+ void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize);
#else // For arduino platforms
/**
* Initialize the serial logger for Arduino
* @param buffer - pointer to buffer of bytes
* @param bufferSize - max number of byte in buffer
*/
- void OCLogBuffer(LogLevel level, const char *tag, const uint8_t *buffer, size_t bufferSize);
+ void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize);
/**
* Output a variable argument list log string with the specified priority level.
* @param buffer - pointer to buffer of bytes
* @param bufferSize - max number of byte in buffer
*/
-void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_t bufferSize)
+void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize)
{
if (!buffer || !tag || (bufferSize == 0))
{
char lineBuffer[LINE_BUFFER_SIZE];
memset(lineBuffer, 0, sizeof lineBuffer);
size_t lineIndex = 0;
- size_t i;
- for (i = 0; i < bufferSize; i++)
+ for (size_t i = 0; i < bufferSize; i++)
{
// Format the buffer data into a line
- snprintf(&lineBuffer[lineIndex*3], sizeof(lineBuffer)-lineIndex*3, "%02X ", buffer[i]);
+ snprintf(&lineBuffer[lineIndex * 3], sizeof(lineBuffer) - lineIndex * 3, "%02X ", buffer[i]);
lineIndex++;
// Output 16 values per line
- if (((i+1)%16) == 0)
+ if (((i + 1) % 16) == 0)
{
OCLogv(level, tag, "%s", lineBuffer);
memset(lineBuffer, 0, sizeof lineBuffer);
return OC_STACK_OK;
}
-static int storeResourceType(char **resourceTypes, size_t size, uint8_t rowid)
+static int storeResourceType(char **resourceTypes, size_t size, sqlite3_int64 rowid)
{
int res = 1;
VERIFY_SQLITE(sqlite3_exec(gRDDB, "BEGIN TRANSACTION", NULL, NULL, NULL));
sqlite3_stmt *stmt = 0;
VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, deleteRT, strlen(deleteRT) + 1, &stmt, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
res = sqlite3_step(stmt);
VERIFY_SQLITE(sqlite3_finalize(stmt));
if (res != SQLITE_DONE)
{
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@resourceType"),
resourceTypes[i], strlen(resourceTypes[i]), SQLITE_STATIC));
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
}
res = sqlite3_step(stmt);
VERIFY_SQLITE(sqlite3_finalize(stmt));
return res;
}
-static int storeInterfaceType(char **interfaceTypes, size_t size, uint8_t rowid)
+static int storeInterfaceType(char **interfaceTypes, size_t size, sqlite3_int64 rowid)
{
int res = 1;
VERIFY_SQLITE(sqlite3_exec(gRDDB, "BEGIN TRANSACTION", NULL, NULL, NULL));
sqlite3_stmt *stmt = 0;
VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, deleteIF, strlen(deleteIF) + 1, &stmt, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
res = sqlite3_step(stmt);
VERIFY_SQLITE(sqlite3_finalize(stmt));
if (res != SQLITE_DONE)
{
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@interfaceType"),
interfaceTypes[i], strlen(interfaceTypes[i]), SQLITE_STATIC));
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
}
res = sqlite3_step(stmt);
VERIFY_SQLITE(sqlite3_finalize(stmt));
return res;
}
-static int storeLinkPayload(OCRepPayload *rdPayload, int64_t rowid)
+static int storeLinkPayload(OCRepPayload *rdPayload, sqlite3_int64 rowid)
{
int res = 1 ;
size_t j = 0;
VERIFY_SQLITE(sqlite3_exec(gRDDB, "BEGIN TRANSACTION", NULL, NULL, NULL));
OCRepPayload *link = links->arr.objArray[i];
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
char *uri = NULL;
if (OCRepPayloadGetPropString(link, OC_RSRVD_HREF, &uri))
{
VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, updateDeviceLLList, strlen(updateDeviceLLList) + 1,
&stmt, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
if (uri)
{
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@uri"),
OCRepPayload *p = NULL;
if (OCRepPayloadGetPropObject(link, OC_RSRVD_POLICY, &p))
{
- int64_t bm = 0;
+ sqlite3_int64 bm = 0;
if (OCRepPayloadGetPropInt(p, OC_RSRVD_BITMAP, &bm))
{
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@bm"), bm));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@bm"), bm));
}
}
size_t mtDim[MAX_REP_ARRAY_DEPTH] = {0};
size_t itfDim[MAX_REP_ARRAY_DEPTH] = {0};
const char *input = "SELECT ins FROM RD_DEVICE_LINK_LIST WHERE DEVICE_ID=@id AND href=@uri";
VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
if (uri)
{
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@uri"),
}
if (ttl)
{
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
}
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@rdAddress"),
rdAddress, strlen(rdAddress), SQLITE_STATIC));
}
if (ttl)
{
- VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
}
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@rdAddress"),
rdAddress, strlen(rdAddress), SQLITE_STATIC));
OCRepPayloadSetStringArrayAsOwner(link, OC_RSRVD_INTERFACE, itf, ifDim);
}
- uint8_t ins = 0;
+ int64_t ins = 0;
if (OC_STACK_OK == OCGetResourceIns(handle, &ins))
{
OCRepPayloadSetPropInt(link, OC_RSRVD_INS, ins);
for (uint8_t j = 0; j < nHandles; j++)
{
OCResource *handle = (OCResource *) resourceHandles[j];
- uint8_t ins = 0;
+ int64_t ins = 0;
OCGetResourceIns(handle, &ins);
- int lenBufferRequired = snprintf(queryParam + queryLength, MAX_URI_LENGTH - queryLength, "&ins=%d", ins);
+ int lenBufferRequired = snprintf((queryParam + queryLength), (MAX_URI_LENGTH - queryLength), "&ins=%lld", ins);
if (lenBufferRequired >= (MAX_URI_LENGTH - queryLength) || lenBufferRequired < 0)
{
return OC_STACK_INVALID_URI;
{
//Sorts credential list in incremental order of credId
/** @todo: Remove pragma for VS2013 warning; Investigate fixing LL_SORT macro */
- #pragma warning(suppress:4133)
+#ifdef _MSC_VER
+#pragma warning(suppress:4133)
LL_SORT(gCred, CmpCredId);
+#else
+ LL_SORT(gCred, CmpCredId);
+#endif
OicSecCred_t *currentCred = NULL, *credTmp = NULL;
uint16_t nextCredId = 1;
VERIFY_NOT_NULL(TAG, rsrc, ERROR);
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonRsrc = cJSON_GetArrayItem(jsonObj, idxx);
+
+#else
+ cJSON *jsonRsrc = cJSON_GetArrayItem(jsonObj, idxx);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonRsrc, ERROR);
//href
for(size_t i = 0; i < rsrc->typeLen; i++)
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonRsrcType = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#else
+ cJSON *jsonRsrcType = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonRsrcType, ERROR);
rsrc->types[i] = OICStrdup(jsonRsrcType->valuestring);
VERIFY_NOT_NULL(TAG, (rsrc->types[i]), ERROR);
for(size_t i = 0; i < rsrc->interfaceLen; i++)
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonInterface = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#else
+ cJSON *jsonInterface = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonInterface, ERROR);
rsrc->interfaces[i] = OICStrdup(jsonInterface->valuestring);
VERIFY_NOT_NULL(TAG, (rsrc->interfaces[i]), ERROR);
for(size_t i = 0; i < validityLen; i++)
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
jsonValidity = cJSON_GetArrayItem(jsonValidityObj, i);
+
+#else
+ jsonValidity = cJSON_GetArrayItem(jsonValidityObj, i);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonValidity, ERROR);
VERIFY_SUCCESS(TAG, (jsonValidity->type == cJSON_Array), ERROR);
for(size_t i = 0; i < validity->recurrenceLen; i++)
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
jsonRecur = cJSON_GetArrayItem(jsonRecurObj, i);
+
+#else
+ jsonRecur = cJSON_GetArrayItem(jsonRecurObj, i);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonRecur, ERROR);
validity->recurrences[i] = OICStrdup(jsonRecur->valuestring);
VERIFY_NOT_NULL(TAG, validity->recurrences[i], ERROR);
for (size_t i = 0; i < doxm->oxmTypeLen ; i++)
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonOxmTy = cJSON_GetArrayItem(jsonObj, i);
+
+#else
+ cJSON *jsonOxmTy = cJSON_GetArrayItem(jsonObj, i);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonOxmTy, ERROR);
jsonObjLen = strlen(jsonOxmTy->valuestring) + 1;
for (size_t i = 0; i < doxm->oxmLen ; i++)
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonOxm = cJSON_GetArrayItem(jsonObj, i);
+
+#else
+ cJSON *jsonOxm = cJSON_GetArrayItem(jsonObj, i);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonOxm, ERROR);
doxm->oxm[i] = (OicSecOxm_t)jsonOxm->valueint;
}
//OxmSel -- Mandatory
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXM_SEL_NAME);
+
+#else
+ jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXM_SEL_NAME);
+
+#endif
if (jsonObj)
{
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
do
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonOwnr = cJSON_GetArrayItem(jsonObj, idxx);
+
+#else
+ cJSON *jsonOwnr = cJSON_GetArrayItem(jsonObj, idxx);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonOwnr, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonOwnr->type, ERROR);
outLen = 0;
do
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonRsrc = cJSON_GetArrayItem(jsonRlistArray, idxx);
+
+#else
+ cJSON *jsonRsrc = cJSON_GetArrayItem(jsonRlistArray, idxx);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonRsrc, ERROR);
cJSON *jsonRsrcObj = cJSON_GetObjectItem(jsonRsrc, OIC_JSON_HREF_NAME);
do
{
// Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
#pragma warning(suppress : 4267)
cJSON *jsonAms = cJSON_GetArrayItem(jsonObj, idxx);
+
+#else
+ cJSON *jsonAms = cJSON_GetArrayItem(jsonObj, idxx);
+
+#endif
VERIFY_NOT_NULL(TAG, jsonAms, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonAms->type, ERROR);
if target_os not in ['windows', 'msys_nt']:
liboctbstack_env.AppendUnique(LIBS = ['m'])
else:
+ liboctbstack_env.AppendUnique(CCFLAGS=['/W3', '/WX'])
# octbstack.def specifies the list of functions exported by octbstack.dll.
liboctbstack_env.Replace(WINDOWS_INSERT_DEF = ['1'])
union
{
/** An ordinal number that is not repeated - must be unique in the collection context. */
- uint8_t ins;
+ int64_t ins;
/** Any unique string including a URI. */
char *uniqueStr;
/** Use UUID for universal uniqueness - used in /oic/res to identify the device. */
#if defined(RD_CLIENT) || defined(RD_SERVER)
/**
* This function binds an resource unique ins value to the resource. This can be only called
- * when stack is received response from resource-directory.
+ * when the stack has received a response from resource-directory.
*
* @param requestUri URI of the resource.
* @param response Response from queries to remote servers.
*
* @return ::OC_STACK_OK on success, some other value upon failure.
*/
-OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, uint8_t ins);
+OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, int64_t ins);
/**
* This function gets the resource unique id for a resource.
*
* @return Ins if resource found or 0 resource not found.
*/
-OCStackResult OCGetResourceIns(OCResourceHandle handle, uint8_t *ins);
+OCStackResult OCGetResourceIns(OCResourceHandle handle, int64_t *ins);
#ifdef RD_SERVER
/**
#define MAX_IP_ADDR_ST_SZ 16 //string size of "155.255.255.255" (15 + 1)
#define MAX_PORT_ST_SZ 6 //string size of "65535" (5 + 1)
+// Including the NULL terminator, length of UUID string of the form:
+// "a62389f7-afde-00b6-cd3e-12b97d2fcf09"
+#define UUID_STRING_LENGTH sizeof("a62389f7-afde-00b6-cd3e-12b97d2fcf09")
+
static int UnicastDiscovery = 0;
static int TestCase = 0;
static int Connectivity = 0;
OCDiscoveryPayload* pay = (OCDiscoveryPayload*) clientResponse->payload;
OCResourcePayload* res = pay->resources;
- // Including the NUL terminator, length of UUID string of the form:
- // "a62389f7-afde-00b6-cd3e-12b97d2fcf09"
-# define UUID_LENGTH 37
-
- char sidStr[UUID_LENGTH];
+ char sidStr[UUID_STRING_LENGTH];
while(res) {
- int ret = snprintf(sidStr, UUID_LENGTH,
+ int ret = snprintf(sidStr, UUID_STRING_LENGTH,
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
pay->sid[0], pay->sid[1], pay->sid[2], pay->sid[3],
pay->sid[4], pay->sid[5], pay->sid[6], pay->sid[7],
pay->sid[12], pay->sid[13], pay->sid[14], pay->sid[15]
);
- if (ret == UUID_LENGTH - 1)
+ if (ret == (UUID_STRING_LENGTH - 1))
{
if(insertResource(sidStr, res->uri, clientResponse) == 1)
{
if (pointerToOperator)
{
- int powerRequested = atoi(pointerToOperator + 1);
+ int64_t powerRequested;
+ int matchedItems = sscanf((pointerToOperator + 1), "%lld", &powerRequested);
+
+ if (1 != matchedItems)
+ {
+ return true;
+ }
+
if (Light.power > powerRequested)
{
- OIC_LOG_V(INFO, TAG, "Current power: %d. Requested: <%d", Light.power,
+ OIC_LOG_V(INFO, TAG, "Current power: %lld. Requested: <%lld", Light.power,
powerRequested);
return false;
}
Light.power += 5;
if (gLightUnderObservation)
{
- OIC_LOG_V(INFO, TAG, " =====> Notifying stack of new power level %d\n", Light.power);
+ OIC_LOG_V(INFO, TAG, " =====> Notifying stack of new power level %lld\n", Light.power);
if (gObserveNotifyType == 1)
{
// Notify list of observers. Alternate observers on the list will be notified.
{
OCResourceHandle handle;
bool state;
- int power;
+ int64_t power;
} LightResource;
/* Structure to represent the observers */
return 0;
}
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower)
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower)
{
if (!uri)
{
typedef struct LEDRESOURCE{
OCResourceHandle handle;
bool state;
- int power;
+ int64_t power;
} LEDResource;
//-----------------------------------------------------------------------------
/* Function that creates a new LED resource by calling the
* OCCreateResource() method.
*/
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower);
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower);
/* This method constructs a response from the request */
OCRepPayload* constructResponse (OCEntityHandlerRequest *ehRequest);
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#include "iotivity_config.h"
+#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void AlarmHandler(int sig);
int WINAPI AlarmThread(void *seconds)
{
-// Explicit casts didn't remove this warning and we're guaranteed to be within
-// bounds expected by sleep().
-#pragma warning( suppress : 4311 )
- sleep((unsigned int)seconds);
+ sleep(PtrToUlong(seconds));
AlarmHandler(0);
return 0;
}
void alarm(unsigned int seconds)
{
-// Explicit casts didn't remove this warning.
-#pragma warning( suppress : 4312 )
- CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AlarmThread, (void*)seconds, 0, NULL);
+ CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AlarmThread, ULongToPtr(seconds), 0, NULL);
}
#endif
return 0;
}
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower)
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower)
{
if (!uri)
{
{
OCResourceHandle handle;
bool state;
- int power;
+ int64_t power;
} LEDResource;
//-----------------------------------------------------------------------------
/* Function that creates a new LED resource by calling the
* OCCreateResource() method.
*/
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower);
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower);
/* This method converts the payload to JSON format */
char* constructJsonResponse (OCEntityHandlerRequest *ehRequest);
int64_t pow;
if(OCRepPayloadGetPropInt(input, "power", &pow))
{
- currLEDResource->power =pow;
+ currLEDResource->power = pow;
}
bool state;
{
// Create new LED instance
char newLedUri[15] = "/a/led/";
- int newLedUriLength = strlen(newLedUri);
- snprintf (newLedUri + newLedUriLength, sizeof(newLedUri)-newLedUriLength, "%d", gCurrLedInstance);
+ size_t newLedUriLength = strlen(newLedUri);
+ snprintf((newLedUri + newLedUriLength), (sizeof(newLedUri) - newLedUriLength), "%d", gCurrLedInstance);
respPLPost_led = OCRepPayloadCreate();
OCRepPayloadSetUri(respPLPost_led, gResourceUri);
return 0;
}
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower)
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower)
{
if (!uri)
{
typedef struct LEDRESOURCE{
OCResourceHandle handle;
bool state;
- int power;
+ int64_t power;
} LEDResource;
//-----------------------------------------------------------------------------
/* Function that creates a new LED resource by calling the
* OCCreateResource() method.
*/
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower);
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower);
/* This method converts the payload to JSON format */
OCRepPayload* constructResponse (OCEntityHandlerRequest *ehRequest);
}
else if (val->type == OCREP_PROP_INT)
{
+// Should be removed once IOT-1705 is fixed.
+#ifdef _MSC_VER
+#pragma warning( suppress : 4244 )
*value = val->i;
+
+#else
+ *value = val->i;
+
+#endif
return true;
}
}
{
OCRepPayloadValue* val = OCRepPayloadFindValue(payload, name);
- if (!val || val->type != OCREP_PROP_ARRAY ||
- (val->arr.type != OCREP_PROP_DOUBLE && val->arr.type != OCREP_PROP_INT)
- || !val->arr.dArray)
+ if (!val ||
+ (val->type != OCREP_PROP_ARRAY) ||
+ ((val->arr.type != OCREP_PROP_DOUBLE) &&
+ (val->arr.type != OCREP_PROP_INT)) ||
+ !val->arr.dArray)
{
return false;
}
size_t n = 0;
for ( ; n < dimTotal; ++n)
{
+// Should be removed once IOT-1705 is fixed.
+#ifdef _MSC_VER
+#pragma warning( suppress : 4244 )
(*array)[n] = val->arr.iArray[n];
+
+#else
+ (*array)[n] = val->arr.iArray[n];
+
+#endif
}
}
memcpy(dimensions, val->arr.dimensions, MAX_REP_ARRAY_DEPTH * sizeof(size_t));
#include "payload_logging.h"
#include "ocendpoint.h"
#include "ocstackinternal.h"
+#include "oickeepalive.h"
#ifdef ROUTING_GATEWAY
#include "routingmanager.h"
#define __STDC_LIMIT_MACROS
#endif
#include "iotivity_config.h"
+#include <stdlib.h>
#include <inttypes.h>
#include <string.h>
#include <ctype.h>
}
#if defined(RD_CLIENT) || defined(RD_SERVER)
-OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, uint8_t ins)
+OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, int64_t ins)
{
VERIFY_NON_NULL(handle, ERROR, OC_STACK_INVALID_PARAM);
query = strstr(query, OC_RSRVD_INS);
if (query)
{
- uint8_t queryIns = atoi(query + 4);
+ // Arduino's AVR-GCC doesn't support strtoll().
+ int64_t queryIns;
+ int matchedItems = sscanf(query + 4, "%lld", &queryIns);
+
+ if (0 == matchedItems)
+ {
+ OICFree(targetUri);
+ return OC_STACK_INVALID_QUERY;
+ }
+
for (uint8_t i = 0; i < numResources; i++)
{
OCResourceHandle resHandle = OCGetResourceHandle(i);
if (resHandle)
{
- uint8_t resIns = 0;
+ int64_t resIns = 0;
OCGetResourceIns(resHandle, &resIns);
if (queryIns && queryIns == resIns)
{
return OC_STACK_OK;
}
-OCStackResult OCGetResourceIns(OCResourceHandle handle, uint8_t *ins)
+OCStackResult OCGetResourceIns(OCResourceHandle handle, int64_t* ins)
{
OCResource *resource = NULL;
ocHdrOpt->protocolID = OC_COAP_ID;
ocHdrOpt->optionID = optionID;
ocHdrOpt->optionLength =
- optionDataLength < MAX_HEADER_OPTION_DATA_LENGTH ?
- optionDataLength : MAX_HEADER_OPTION_DATA_LENGTH;
+ (optionDataLength < MAX_HEADER_OPTION_DATA_LENGTH) ?
+ (uint16_t)optionDataLength : MAX_HEADER_OPTION_DATA_LENGTH;
memcpy(ocHdrOpt->optionData, (const void*) optionData, ocHdrOpt->optionLength);
*numOptions += 1;
goto exit;
}
- int id = sqlite3_column_int(stmt, ins_index);
+ sqlite3_int64 id = sqlite3_column_int64(stmt, ins_index);
const unsigned char *uri = sqlite3_column_text(stmt, uri_index);
- int bitmap = sqlite3_column_int(stmt, p_index);
- int deviceId = sqlite3_column_int(stmt, d_index);
- OIC_LOG_V(DEBUG, TAG, " %s %d", uri, deviceId);
+ sqlite3_int64 bitmap = sqlite3_column_int64(stmt, p_index);
+ sqlite3_int64 deviceId = sqlite3_column_int64(stmt, d_index);
+ OIC_LOG_V(DEBUG, TAG, " %s %" PRId64, uri, deviceId);
resourcePayload->uri = OICStrdup((char *)uri);
if (!resourcePayload->uri)
{
}
sqlite3_stmt *stmtRT = 0;
- const char *rt = "SELECT rt FROM RD_LINK_RT WHERE LINK_ID=@id";
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, rt, strlen(rt) + 1, &stmtRT, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmtRT, sqlite3_bind_parameter_index(stmtRT, "@id"), id));
+ const char rt[] = "SELECT rt FROM RD_LINK_RT WHERE LINK_ID=@id";
+ int rtSize = (int)sizeof(rt);
+
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, rt, rtSize, &stmtRT, NULL));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmtRT, sqlite3_bind_parameter_index(stmtRT, "@id"), id));
while (SQLITE_ROW == sqlite3_step(stmtRT))
{
const unsigned char *rt1 = sqlite3_column_text(stmtRT, rt_value_index);
VERIFY_SQLITE(sqlite3_finalize(stmtRT));
sqlite3_stmt *stmtIF = 0;
- const char *itf = "SELECT if FROM RD_LINK_IF WHERE LINK_ID=@id";
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, itf, strlen(itf) + 1, &stmtIF, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmtIF, sqlite3_bind_parameter_index(stmtIF, "@id"), id));
+ const char itf[] = "SELECT if FROM RD_LINK_IF WHERE LINK_ID=@id";
+ int itfSize = (int)sizeof(itf);
+
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, itf, itfSize, &stmtIF, NULL));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmtIF, sqlite3_bind_parameter_index(stmtIF, "@id"), id));
while (SQLITE_ROW == sqlite3_step(stmtIF))
{
const unsigned char *itf = sqlite3_column_text(stmtIF, if_value_index);
}
VERIFY_SQLITE(sqlite3_finalize(stmtIF));
- resourcePayload->bitmap = bitmap & (OC_OBSERVABLE | OC_DISCOVERABLE);
- resourcePayload->secure = (bitmap & OC_SECURE) != 0;
+ resourcePayload->bitmap = (uint8_t)(bitmap & (OC_OBSERVABLE | OC_DISCOVERABLE));
+ resourcePayload->secure = ((bitmap & OC_SECURE) != 0);
- const char *address = "SELECT di, address FROM RD_DEVICE_LIST "
+ const char address[] = "SELECT di, address FROM RD_DEVICE_LIST "
"INNER JOIN RD_DEVICE_LINK_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID = RD_DEVICE_LIST.ID "
"WHERE RD_DEVICE_LINK_LIST.DEVICE_ID=@deviceId";
+ int addressSize = (int)sizeof(address);
+
const uint8_t di_index = 0;
const uint8_t address_index = 1;
sqlite3_stmt *stmt1 = 0;
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, address, strlen(address) + 1, &stmt1, NULL));
- VERIFY_SQLITE(sqlite3_bind_int(stmt1, sqlite3_bind_parameter_index(stmt1, "@deviceId"), deviceId));
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, address, addressSize, &stmt1, NULL));
+ VERIFY_SQLITE(sqlite3_bind_int64(stmt1, sqlite3_bind_parameter_index(stmt1, "@deviceId"), deviceId));
res = sqlite3_step(stmt1);
if (SQLITE_ROW == res || SQLITE_DONE == res)
return OC_STACK_INTERNAL_SERVER_ERROR;
}
+ size_t sidLength = strlen(discPayload->sid);
+ size_t resourceTypeLength = strlen(resourceType);
+ size_t interfaceTypeLength = strlen(interfaceType);
+
+ if ((sidLength > INT_MAX) ||
+ (resourceTypeLength > INT_MAX) ||
+ (interfaceTypeLength > INT_MAX))
+ {
+ return OC_STACK_INVALID_QUERY;
+ }
+
OCStackResult result = OC_STACK_OK;
sqlite3_stmt *stmt = 0;
if (resourceType)
{
if (!interfaceType || 0 == strcmp(interfaceType, OC_RSRVD_INTERFACE_LL))
{
- const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+ const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
"INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
"INNER JOIN RD_LINK_RT ON RD_DEVICE_LINK_LIST.INS=RD_LINK_RT.LINK_ID "
"WHERE RD_DEVICE_LIST.di LIKE @di AND RD_LINK_RT.rt LIKE @resourceType";
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+ int inputSize = (int)sizeof(input);
+
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
- discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+ discPayload->sid, (int)sidLength, SQLITE_STATIC));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@resourceType"),
- resourceType, strlen(resourceType), SQLITE_STATIC));
+ resourceType, (int)resourceTypeLength, SQLITE_STATIC));
}
else
{
- const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+ const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
"INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
"INNER JOIN RD_LINK_RT ON RD_DEVICE_LINK_LIST.INS=RD_LINK_RT.LINK_ID "
"INNER JOIN RD_LINK_IF ON RD_DEVICE_LINK_LIST.INS=RD_LINK_IF.LINK_ID "
"WHERE RD_DEVICE_LIST.di LIKE @di "
"AND RD_LINK_RT.rt LIKE @resourceType "
"AND RD_LINK_IF.if LIKE @interfaceType";
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+ int inputSize = (int)sizeof(input);
+
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
- discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+ discPayload->sid, (int)sidLength, SQLITE_STATIC));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@resourceType"),
- resourceType, strlen(resourceType), SQLITE_STATIC));
+ resourceType, (int)resourceTypeLength, SQLITE_STATIC));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@interfaceType"),
- interfaceType, strlen(interfaceType), SQLITE_STATIC));
+ interfaceType, (int)interfaceTypeLength, SQLITE_STATIC));
}
result = ResourcePayloadCreate(stmt, discPayload);
}
{
if (0 == strcmp(interfaceType, OC_RSRVD_INTERFACE_LL))
{
- const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+ const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
"INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
"WHERE RD_DEVICE_LIST.di LIKE @di";
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+ int inputSize = (int)sizeof(input);
+
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
- discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+ discPayload->sid, (int)sidLength, SQLITE_STATIC));
}
else
{
- const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+ const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
"INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
"INNER JOIN RD_LINK_IF ON RD_DEVICE_LINK_LIST.INS=RD_LINK_IF.LINK_ID "
"WHERE RD_DEVICE_LIST.di LIKE @di AND RD_LINK_IF.if LIKE @interfaceType";
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+ int inputSize = (int)sizeof(input);
+
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
- discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+ discPayload->sid, (int)sidLength, SQLITE_STATIC));
VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@interfaceType"),
- interfaceType, strlen(interfaceType), SQLITE_STATIC));
+ interfaceType, (int)interfaceTypeLength, SQLITE_STATIC));
}
result = ResourcePayloadCreate(stmt, discPayload);
}
const char *serverID = OCGetServerInstanceIDString();
sqlite3_stmt *stmt = 0;
- const char *input = "SELECT di FROM RD_DEVICE_LIST";
+ const char input[] = "SELECT di FROM RD_DEVICE_LIST";
+ int inputSize = (int)sizeof(input);
const uint8_t di_index = 0;
- VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+ VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
while (SQLITE_ROW == sqlite3_step(stmt))
{
const unsigned char *di = sqlite3_column_text(stmt, di_index);
# Build flags
######################################################################
stacktest_env.PrependUnique(CPPPATH = [
- '../../security/include',
- '../../ocsocket/include',
- '../../logger/include',
- '../../../c_common/ocrandom/include',
- '../../include',
- '../../stack/include',
- '../../stack/include/internal',
- '../../connectivity/api',
- '../../connectivity/inc/pkix',
- '../../connectivity/external/inc',
- '../../../oc_logger/include',
- ])
+ '../../security/include',
+ '../../ocsocket/include',
+ '../../logger/include',
+ '../../../c_common/ocrandom/include',
+ '../../include',
+ '../../stack/include',
+ '../../stack/include/internal',
+ '../../connectivity/api',
+ '../../connectivity/inc/pkix',
+ '../../connectivity/external/inc',
+ '../../../oc_logger/include',
+ ])
stacktest_env.AppendUnique(LIBPATH = [stacktest_env.get('BUILD_DIR')])
stacktest_env.PrependUnique(LIBS = ['octbstack_test',
stacktest_env.PrependUnique(LIBS = ['oc_logger'])
if stacktest_env.get('SECURED') == '1':
- stacktest_env.AppendUnique(LIBS = ['mbedtls', 'mbedx509','mbedcrypto', 'tinydtls'])
+ stacktest_env.AppendUnique(LIBS = ['mbedtls', 'mbedx509','mbedcrypto', 'tinydtls'])
if stacktest_env.get('LOGGING'):
- stacktest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
+ stacktest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
-if target_os not in ['msys_nt', 'windows']:
- stacktest_env.PrependUnique(LIBS = ['m'])
+if target_os in ['msys_nt', 'windows']:
+ stacktest_env.PrependUnique(LIBS = ['sqlite3'])
+ stacktest_env.AppendUnique(CCFLAGS=['/W3', '/WX'])
else:
- stacktest_env.PrependUnique(LIBS = ['sqlite3'])
+ stacktest_env.PrependUnique(LIBS = ['m'])
if 'CLIENT' in rd_mode or 'SERVER' in rd_mode:
- stacktest_env.PrependUnique(LIBS = ['resource_directory'])
+ stacktest_env.PrependUnique(LIBS = ['resource_directory'])
stacktest_env.AppendUnique(LIBS = ['timer'])
######################################################################
stacktest_env.AppendTarget('test')
if stacktest_env.get('TEST') == '1':
- if target_os in ['linux', 'windows']:
+ if target_os in ['linux', 'windows']:
run_test(stacktest_env,
'resource_csdk_stack_test.memcheck',
'resource/csdk/stack/test/stacktests')
EXPECT_EQ(OC_STACK_OK, OCGetPropertyValue(PAYLOAD_TYPE_DEVICE, OC_RSRVD_DATA_MODEL_VERSION, &value));
ASSERT_TRUE(value != NULL);
- ASSERT_TRUE(((OCStringLL *)value)->value);
+ ASSERT_TRUE(((OCStringLL *)value)->value != NULL);
EXPECT_STREQ("Data Model Version", ((OCStringLL *)value)->value);
OCFreeOCStringLL((OCStringLL *) value);
value = NULL;