{
sprintf((char *)presenceResBuf, "%u:%u", resPtr->sequenceNum, maxAge);
}
- memset(&ehResponse, 0, sizeof(OCEntityHandlerResponse));
ehResponse.ehResult = OC_EH_OK;
ehResponse.payload = presenceResBuf;
ehResponse.payloadSize = strlen((const char *)presenceResBuf) + 1;
uint8_t numSentNotification = 0;
OCServerRequest * request = NULL;
OCStackResult result = OC_STACK_ERROR;
- OCEntityHandlerResponse ehResponse;
- memset(&ehResponse, 0, sizeof(OCEntityHandlerResponse));
+ OCEntityHandlerResponse ehResponse = {0};
OC_LOG(INFO, TAG, PCF("Entering SendListObserverNotification"));
while(numIds)
{
ResourceObserver *obsNode = NULL;
- obsNode = (ResourceObserver *) OCMalloc(sizeof(ResourceObserver));
+ obsNode = (ResourceObserver *) OCCalloc(1, sizeof(ResourceObserver));
if (obsNode)
{
- memset(obsNode, 0, sizeof(ResourceObserver));
obsNode->observeId = obsId;
obsNode->resUri = (unsigned char *)OCMalloc(strlen(resUri)+1);
}
serverObsList = NULL;
}
+
+#ifdef CA_INT
+OCStackResult
+CreateObserveHeaderOption (CAHeaderOption_t **caHdrOpt,
+ OCHeaderOption *ocHdrOpt,
+ uint8_t numOptions,
+ uint8_t observeFlag)
+{
+ CAHeaderOption_t *tmpHdrOpt = NULL;
+
+ tmpHdrOpt = (CAHeaderOption_t *) OCMalloc ((numOptions+1)*sizeof(CAHeaderOption_t));
+ if (NULL == tmpHdrOpt)
+ {
+ return OC_STACK_NO_MEMORY;
+ }
+ tmpHdrOpt[0].protocolID = CA_COAP_ID;
+ // TODO-CA: COAP_OPTION_OBSERVE is defined in CoAP header files which will be abstracted
+ // from resource model. We have to define a new macro for this in the stack layer.
+ tmpHdrOpt[0].optionID = COAP_OPTION_OBSERVE;
+ // Length is one byte
+ tmpHdrOpt[0].optionLength = 1;
+ tmpHdrOpt[0].optionData[0] = observeFlag;
+ for (uint8_t i = 0; i < numOptions; i++)
+ {
+ memcpy (&(tmpHdrOpt[i+1]), &(ocHdrOpt[i]), sizeof(CAHeaderOption_t));
+ }
+
+ *caHdrOpt = tmpHdrOpt;
+ return OC_STACK_OK;
+}
+#endif // CA_INT