Hi,
to call
void lwm2m_resource_value_changed(lwm2m_context_t * contextP,
lwm2m_uri_t * uriP)
you need a "lwm2m_context_t *", which is the result of the initial call of
lwm2m_context_t * lwm2m_init(lwm2m_connect_server_callback_t connectCallback,
lwm2m_buffer_send_callback_t bufferSendCallback,
void * userData)
This is usually called during initialization (see „lwm2mclient/main.c“) and may be shared
via a global variable or set by calling specific user defined function into the different
modules after the lwm2m_init call.
Mit freundlichen Grüßen / Best regards
Achim Kraus
Bosch Software Innovations GmbH
Communications (INST/ESY4)
Stuttgarter Straße 130
71332 Waiblingen
GERMANY
www.bosch-si.de
www.blog.bosch-si.com
achim.kraus@xxxxxxxxxxxx
Registered office: Berlin, Register court: Amtsgericht Charlottenburg, HRB 148411 B
Executives: Dr.-Ing. Rainer Kallenbach; Michael Hahn
Von: wakaama-dev-bounces@xxxxxxxxxxx [mailto:wakaama-dev-bounces@xxxxxxxxxxx]
Im Auftrag von Ugur Kirbac
Gesendet: Mittwoch, 22. Juli 2015 15:09
An: Wakaama developer discussions
Betreff: Re: [wakaama-dev] Observe Method Problem
Thanks for the quick reply,
Where should I use “lwm2m_resource_value_changed”? When I try to use it in object_temperature.c, I get a segmentation
fault. I’m not sure how to get the context pointer “lwm2mH” inside object_temperature.c.
From:
"Kraus Achim (INST/ESY4)"
Reply-To: Wakaama developer discussions
Date: Wednesday 22 July 2015 13:53
To: Wakaama developer discussions
Subject: Re: [wakaama-dev] Observe Method Problem
Hi,
only changing the „float temperature“ is not detected by the wakaama core.
If you change a resource, you must call „lwm2m_resource_value_changed“
with the associated uri.
e.g.
lwm2m_uri_t uri;
if (lwm2m_stringToUri("/3/0/9", 6, &uri))
{
lwm2m_resource_value_changed(lwm2mH, uri);
}
to inform the core about a battery level change (uri „/3/0/9“).
Mit freundlichen Grüßen / Best regards
Achim Kraus
Bosch Software Innovations GmbH
Communications (INST/ESY4)
Stuttgarter Straße 130
71332 Waiblingen
GERMANY
www.bosch-si.de
www.blog.bosch-si.com
achim.kraus@xxxxxxxxxxxx
Registered office: Berlin, Register court: Amtsgericht Charlottenburg, HRB 148411 B
Executives: Dr.-Ing. Rainer Kallenbach; Michael Hahn
I’m currently experimenting a Leshan server and Wakaama client. I have been trying to get Observe method working for Wakaama client however I couldn’t manage
it so far. First, I tried to observe the device object and I haven’t seen any notification from Wakaama client to Leshan server. After that, I created two IPSO Objects and update the values using a timer because right now I don’t have any real sensor connected
to the client so I’m kinda faking the resources.
The code I used for updating is the below.
temperature = rand() % 10 + 20;
//fake accelerometer data producer starts//
#define INTERVAL 5000 /* number of milliseconds to go off */
struct itimerval it_val; /* for setting itimer */
/* Upon SIGALRM, call DoStuff().
* Set interval timer. We want frequency in ms,
* but the setitimer call needs seconds and useconds. */
if (signal(SIGALRM, (void (*)(int)) randomTemp) == SIG_ERR) {
perror("Unable to catch SIGALRM");
it_val.it_value.tv_sec = INTERVAL/1000;
it_val.it_value.tv_usec = (INTERVAL*1000) % 1000000;
it_val.it_interval = it_val.it_value;
if (setitimer(ITIMER_REAL, &it_val, NULL) == -1) {
perror("error calling setitimer()");
Is there any problem with Observe method in Wakaama client? Any suggestion?
I have also attached an image showing the CoAP Messages logs for Leshan server on the browser.