MBED NanoService Lighting Endpoint for NXP Ublox (cellular enabled)
Dependencies: C027_Support C12832 StatusReporter LM75B c027_radios endpoint_core endpoint_nsp nsp_resources mbed mbed-rtos
Revision 105:d431fd03db64, committed 2014-03-15
- Comitter:
- ansond
- Date:
- Sat Mar 15 05:29:29 2014 +0000
- Parent:
- 104:cb01a05da40f
- Child:
- 106:4f7323a01fb8
- Commit message:
- updates
Changed in this revision
--- a/Definitions.h Fri Mar 14 21:50:40 2014 +0000 +++ b/Definitions.h Sat Mar 15 05:29:29 2014 +0000 @@ -26,8 +26,8 @@ #include "CommonDefinitions.h" // NSP Configuration -#define NSP_ADDRESS "192.168.1.150" // Target NSP Service - work -//#define NSP_ADDRESS "192.168.1.220" // Target NSP Service - home vm +//#define NSP_ADDRESS "192.168.1.150" // Target NSP Service - work +#define NSP_ADDRESS "192.168.1.220" // Target NSP Service - home vm //#define NSP_ADDRESS "10.1.0.81" // Target NSP Service - home #define NSP_PORT 5683 // Target NSP Service Port Number
--- a/NSPResource.cpp Fri Mar 14 21:50:40 2014 +0000 +++ b/NSPResource.cpp Sat Mar 15 05:29:29 2014 +0000 @@ -22,9 +22,15 @@ #include "nsdl_support.h" // default constructor - NSPResource::NSPResource(ErrorHandler *error_handler,char *ep_name,char *name,char *value,void *cb,void *resource_ptr,sn_grs_resource_acl_e acl) : Resource(error_handler,ep_name,name,value,cb) { + NSPResource::NSPResource(ErrorHandler *error_handler,char *ep_name,char *name,char *value,void *cb,void *resource_ptr,sn_grs_resource_acl_e acl,char *interface, char *resource) : Resource(error_handler,ep_name,name,value,cb) { this->m_resource_ptr = resource_ptr; this->m_acl = acl; + this->m_interface = interface; + this->m_interface_len = 0; + if (interface != NULL) this->m_interface_len = strlen(interface); + this->m_resource = resource; + this->m_resource_len = 0; + if (resource != NULL) this->m_resource_len = strlen(resource); memset(this->m_nsp_name,0,RESOURCE_NAME_LEN+1); strcpy(this->m_nsp_name,(char *)(name+1)); // omit the leading "/" this->plumb(ep_name,this->m_nsp_name); @@ -43,11 +49,11 @@ if (this->m_resource_ptr != NULL) { if (this->getCallbackPointer() == NULL) { // create a static resource - nsdl_create_static_resource((sn_nsdl_resource_info_s *)this->m_resource_ptr,strlen(name),(uint8_t*)name,0,0,(uint8_t*)this->getValuePointer(),strlen(this->getValuePointer())); + nsdl_create_static_resource((sn_nsdl_resource_info_s *)this->m_resource_ptr,strlen(name),(uint8_t*)name, this->m_resource_len,(uint8_t *)this->m_resource,this->m_interface_len,(uint8_t *)this->m_interface,1,(uint8_t*)this->getValuePointer(),strlen(this->getValuePointer())); } else { // create a dynamic resource - nsdl_create_dynamic_resource((sn_nsdl_resource_info_s *)this->m_resource_ptr,strlen(name),(uint8_t*)name,0,0,1,(sn_grs_dyn_res_callback_t)this->getCallbackPointer(),this->m_acl); + nsdl_create_dynamic_resource((sn_nsdl_resource_info_s *)this->m_resource_ptr,strlen(name),(uint8_t*)name,this->m_resource_len,(uint8_t *)this->m_resource,this->m_interface_len,(uint8_t *)this->m_interface,1,(sn_grs_dyn_res_callback_t)this->getCallbackPointer(),this->m_acl); } } else {
--- a/NSPResource.h Fri Mar 14 21:50:40 2014 +0000 +++ b/NSPResource.h Sat Mar 15 05:29:29 2014 +0000 @@ -29,10 +29,14 @@ private: void *m_resource_ptr; char m_nsp_name[RESOURCE_NAME_LEN+1]; + char *m_interface; + int m_interface_len; + char *m_resource; + int m_resource_len; sn_grs_resource_acl_e m_acl; public: - NSPResource(ErrorHandler *error_handler,char *ep_name,char *name,char *value,void *cb,void *cb_ptr,sn_grs_resource_acl_e acl); + NSPResource(ErrorHandler *error_handler,char *ep_name,char *name,char *value,void *cb,void *cb_ptr,sn_grs_resource_acl_e acl,char *interface, char *resource); virtual ~NSPResource(); virtual void plumb(char *endpoint_name,char *name);
--- a/NSPResourceFactory.cpp Fri Mar 14 21:50:40 2014 +0000 +++ b/NSPResourceFactory.cpp Sat Mar 15 05:29:29 2014 +0000 @@ -84,28 +84,29 @@ this->initResourceStructures(); // create all of the resources we expect for this endpoint - this->createResource(ep_name,"/dev/addldata","id:0",(void *)&addldata_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_addldata); - this->createResource("/dev/location",ENDPOINT_LOCATION); - this->createResource("/fw/devtype",NSP_NODE_TYPE); - this->createResource(ep_name,"/dev/bat","5.0V",(void *)&battery_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_battery); - this->createResource(ep_name,"/sen/I","0.1A",(void *)¤t_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_current); - this->createResource(ep_name,"/dev/I","0.1A",(void *)¤t_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_current); - this->createResource("/nw/ipaddr",ethernet.getIPAddress()); - this->createResource(ep_name,"/lt/0/dim","25",(void *)&dimmer_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_dimmer); // Action: dim/brighten light - this->createResource("/nw/eripaddr","N/A"); - this->createResource(ep_name,"/lt/0/on","1",(void *)&switch_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_switch); // Action: light on/off - this->createResource(ep_name,"/lt/0/ctr","1",(void *)&switch_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_switch); // Action: light on/off - this->createResource("/dev/mdl","Sensinode MBED Light"); - this->createResource("/gps/int","0"); - this->createResource("/gps/fix","1"); - this->createResource("/nw/pipaddr","N/A"); - this->createResource("/nw/prssi","-75"); - this->createResource("/dev/W","0.1W"); - this->createResource(ep_name,"/sen/temp","10.0C",(void *)&temp_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_temp); - this->createResource(ep_name,"/dev/t","10.0C",(void *)&temp_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_temp); - this->createResource(ep_name,"/sen/V","5.0V",(void *)&voltage_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_voltage); - this->createResource(ep_name,"/dev/V","5.0V",(void *)&voltage_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_voltage); - this->createResource(ep_name,"/gps/loc",ENDPOINT_GPS_COORDS,(void *)&gps_location_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_gps); + this->createResource(ep_name,"/dev/addldata","id:0",(void *)&addldata_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_addldata,"core#s",(char *)NULL); + this->createResource("/dev/location",ENDPOINT_LOCATION,"core#s","ns:location"); + this->createResource("/fw/devtype",NSP_NODE_TYPE,"core#s","ns:devtype"); + this->createResource(ep_name,"/dev/bat","5.0V",(void *)&battery_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_battery,(char *)NULL,"ipso:dev-bat"); + this->createResource(ep_name,"/sen/I","0.1A",(void *)¤t_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_current,(char *)NULL,"ucum:A"); + this->createResource(ep_name,"/dev/I","0.1A",(void *)¤t_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_current,(char *)NULL,"ucum:A"); + this->createResource("/nw/ipaddr",ethernet.getIPAddress(),"core#s","ns:v4addr"); + this->createResource(ep_name,"/lt/0/dim","25",(void *)&dimmer_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_dimmer,(char *)NULL,"ipso:lt-dim"); // Action: dim/brighten light + this->createResource("/nw/eripaddr","N/A","core#s","ns:v4addr"); + this->createResource(ep_name,"/lt/0/on","1",(void *)&switch_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_switch,(char *)NULL,"ipso:lt-on"); // Action: light on/off + this->createResource(ep_name,"/lt/0/ctr","1",(void *)&switch_cb,(sn_grs_resource_acl_e)(SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED),(void *)&init_switch,(char *)NULL,"ns:boolean"); // Action: light on/off + this->createResource("/dev/mdl","Sensinode MBED Light",(char *)NULL,"ipso:dev-mdl"); + this->createResource("/dev/mfg","NXP MBED",(char *)NULL,"ipso:dev-mdl"); + this->createResource("/gps/int","0","core#s","ns:counter"); + this->createResource("/gps/fix","1","core#s","ns:boolean"); + this->createResource("/nw/pipaddr","N/A","core#s","ns:v4addr"); + this->createResource("/nw/prssi","-75","core#s","ns:rssi"); + this->createResource("/dev/W","0.1W",(char *)NULL,"ucum:W"); + this->createResource(ep_name,"/sen/temp","10.0C",(void *)&temp_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_temp,(char *)NULL,"ucum:Cel"); + this->createResource(ep_name,"/dev/t","10.0C",(void *)&temp_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_temp,(char *)NULL,"ucum:Cel"); + this->createResource(ep_name,"/sen/V","5.0V",(void *)&voltage_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_voltage,(char *)NULL,"ucum:V"); + this->createResource(ep_name,"/dev/V","5.0V",(void *)&voltage_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_voltage,(char *)NULL,"ucum:V"); + this->createResource(ep_name,"/gps/loc",ENDPOINT_GPS_COORDS,(void *)&gps_location_cb,(sn_grs_resource_acl_e)SN_GRS_GET_ALLOWED,(void *)&init_gps,"core#s","ns:gpsloc"); //this->createResource("/res/int","1"); //this->createResource("/res/systime","1010101"); @@ -113,20 +114,20 @@ //this->createResource("/fw/new/NanoLightingApplication/ver","1.0"); //this->createResource("/fw/upload","false"); //this->createResource("/fw/download","none"); - this->createResource("/ns/nspaddr",NSP_ADDRESS); + this->createResource("/ns/nspaddr",NSP_ADDRESS,"core#s","ns:v4addr"); //this->createResource("/lt/0/ontime","0"); //this->createResource("/lt/0/pfact","1.0"); //this->createResource("/lt/0/sched","none"); //this->createResource("/lt/0/sched_elem","0"); //this->createResource("/lt/0/totKwh","6.23"); //this->createResource("/nw/utlz","0.01"); - this->createResource("/dev/panic","0"); + this->createResource("/dev/panic","0","core#s","ns:panic"); #ifdef MAC_ADDRESS extern char fmt_mac[RESOURCE_VALUE_LEN+1]; - this->createResource("/nw/macaddr",fmt_mac); + this->createResource("/nw/macaddr",fmt_mac,"core#s","ns:euid64"); #else - this->createResource("/nw/macaddr","00:00:00:00:00"); + this->createResource("/nw/macaddr","00:00:00:00:00","core#s","ns:euid64"); #endif // finalize the registration @@ -134,18 +135,26 @@ } // create an NSP resource - void NSPResourceFactory::createResource(char *name,char *value) { - this->createResource(this->getEndpointName(),name,value,NULL,SN_GRS_GET_ALLOWED,NULL); + void NSPResourceFactory::createResource(char *name,char *value) { this->createResource(name,value,(char *)NULL,(char *)NULL); } + void NSPResourceFactory::createResource(char *name,char *value,char *interface,char *resource) { + this->createResource(this->getEndpointName(),name,value,NULL,SN_GRS_GET_ALLOWED,NULL,interface,resource); } - void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb) { - this->createResource(ep_name,name,value,cb,SN_GRS_GET_ALLOWED,NULL); + void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb) { this->createResource(ep_name,name,value,cb,(char *)NULL,(char *)NULL); } + void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb,char *interface, char *resource) { + this->createResource(ep_name,name,value,cb,SN_GRS_GET_ALLOWED,NULL,interface,resource); } void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl) { - this->createResource(ep_name,name,value,cb,acl,NULL); + this->createResource(ep_name,name,value,cb,acl,(char *)NULL,(char *)NULL); + } + void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl,char *interface, char *resource) { + this->createResource(ep_name,name,value,cb,acl,NULL,interface,resource); } - void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl,void *io) { + void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl,void *io) { + this->createResource(ep_name,name,value,cb,acl,io,(char *)NULL,(char *)NULL); + } + void NSPResourceFactory::createResource(char *ep_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl,void *io,char *interface, char *resource) { // initialize the resource - this->m_list[this->m_count] = new NSPResource(this->logger(),ep_name,name,value,cb,this->m_resource_ptr,acl); + this->m_list[this->m_count] = new NSPResource(this->logger(),ep_name,name,value,cb,this->m_resource_ptr,acl,interface,resource); // call the resource initializer if needed if (io != NULL && this->m_list[this->m_count] != NULL) {
--- a/NSPResourceFactory.h Fri Mar 14 21:50:40 2014 +0000 +++ b/NSPResourceFactory.h Sat Mar 15 05:29:29 2014 +0000 @@ -44,9 +44,13 @@ protected: virtual void createResource(char *name,char *value); + virtual void createResource(char *name,char *value, char *interface, char *resource); virtual void createResource(char *endpoint_name,char *name,char *value,void *cb); + virtual void createResource(char *endpoint_name,char *name,char *value,void *cb, char *interface, char *resource); void createResource(char *endpoint_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl); + void createResource(char *endpoint_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl, char *interface, char *resource); void createResource(char *endpoint_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl,void *io); + void createResource(char *endpoint_name,char *name,char *value,void *cb,sn_grs_resource_acl_e acl,void *io, char *interface, char *resource); private: void setEndpointName(char *endpoint_name);
--- a/endpoint_core.lib Fri Mar 14 21:50:40 2014 +0000 +++ b/endpoint_core.lib Sat Mar 15 05:29:29 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/ansond/code/endpoint_core/#8747b6612e32 +http://mbed.org/users/ansond/code/endpoint_core/#432e7450a8fc
--- a/nsp_resources/nsdl_support.cpp Fri Mar 14 21:50:40 2014 +0000 +++ b/nsp_resources/nsdl_support.cpp Sat Mar 15 05:29:29 2014 +0000 @@ -1,16 +1,18 @@ // NSDL library support functions #include "mbed.h" -#include "nsdl_support.h" -#include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" +#include "nsdl_support.h" + #include "Definitions.h" #include "ErrorHandler.h" extern ErrorHandler *error_handler; +Mutex *nsp_mutex = NULL; + Endpoint nsp; UDPSocket server; char _endpoint_name[LIGHT_NAME_LEN+1]; @@ -26,7 +28,7 @@ if (ptr_to_free != NULL) free(ptr_to_free); } -void nsdl_create_static_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint8_t *rsc, uint16_t rsc_len) { +void nsdl_create_static_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint16_t if_len, uint8_t *if_ptr, uint8_t is_observable, uint8_t *rsc, uint16_t rsc_len) { if (resource_structure != NULL) { resource_structure->access = SN_GRS_GET_ALLOWED; resource_structure->mode = SN_GRS_STATIC; @@ -34,13 +36,16 @@ resource_structure->path = pt; resource_structure->resource_parameters_ptr->resource_type_len = rpp_len; resource_structure->resource_parameters_ptr->resource_type_ptr = rpp_ptr; + resource_structure->resource_parameters_ptr->interface_description_ptr = if_ptr; + resource_structure->resource_parameters_ptr->interface_description_len = if_len; + resource_structure->resource_parameters_ptr->observable = is_observable; resource_structure->resource = rsc; resource_structure->resourcelen = rsc_len; sn_nsdl_create_resource(resource_structure); } } -void nsdl_create_dynamic_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint8_t is_observable, sn_grs_dyn_res_callback_t callback_ptr, int access_right) { +void nsdl_create_dynamic_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint16_t if_len, uint8_t *if_ptr, uint8_t is_observable, sn_grs_dyn_res_callback_t callback_ptr, int access_right) { if (resource_structure != NULL) { resource_structure->access = (sn_grs_resource_acl_e)access_right; resource_structure->resource = 0; @@ -51,6 +56,8 @@ resource_structure->path = pt; resource_structure->resource_parameters_ptr->resource_type_len = rpp_len; resource_structure->resource_parameters_ptr->resource_type_ptr = rpp_ptr; + resource_structure->resource_parameters_ptr->interface_description_ptr = if_ptr; + resource_structure->resource_parameters_ptr->interface_description_len = if_len; resource_structure->resource_parameters_ptr->observable = is_observable; sn_nsdl_create_resource(resource_structure); } @@ -111,9 +118,11 @@ ++count; if (count%val == 0) { count = 0; + //nsp_mutex->lock(); endpoint_ptr = nsdl_init_register_endpoint(endpoint_ptr, (uint8_t*)_endpoint_name, _ep_type, _lifetime_ptr); sn_nsdl_register_endpoint(endpoint_ptr); nsdl_clean_register_endpoint(&endpoint_ptr); + //nsp_mutex->unlock(); endpoint_ptr = NULL; if (error_handler != NULL) error_handler->blinkTransportTxLED(); } @@ -143,6 +152,9 @@ void nsdl_event_loop() { + if (nsp_mutex == NULL) nsp_mutex = new Mutex(); + nsp_mutex->unlock(); + // start the registration update thread Thread registration_thread(registration_update_thread); @@ -158,8 +170,10 @@ while(true) { //if (error_handler != NULL) error_handler->log("Reading from socket..."); + //nsp_mutex->lock(); int n = server.receiveFrom(from,nsp_buffer,sizeof(nsp_buffer)); if (n > 0) sn_nsdl_process_coap((uint8_t*)nsp_buffer, n, &received_packet_address); + //nsp_mutex->unlock(); if (error_handler != NULL) error_handler->blinkTransportRxLED(); //if (error_handler != NULL) error_handler->log("DONE Reading from socket..."); }
--- a/nsp_resources/nsdl_support.h Fri Mar 14 21:50:40 2014 +0000 +++ b/nsp_resources/nsdl_support.h Sat Mar 15 05:29:29 2014 +0000 @@ -17,8 +17,8 @@ extern "C" void *nsdl_alloc(uint16_t size); extern "C" void nsdl_free(void* ptr_to_free); -void nsdl_create_static_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint8_t *rsc, uint16_t rsc_len); -void nsdl_create_dynamic_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint8_t is_observable, sn_grs_dyn_res_callback_t callback_ptr, int access_right); +void nsdl_create_static_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint16_t if_len, uint8_t *if_ptr, uint8_t is_observable, uint8_t *rsc, uint16_t rsc_len); +void nsdl_create_dynamic_resource(sn_nsdl_resource_info_s *resource_structure, uint16_t pt_len, uint8_t *pt, uint16_t rpp_len, uint8_t *rpp_ptr, uint16_t if_len, uint8_t *if_ptr, uint8_t is_observable, sn_grs_dyn_res_callback_t callback_ptr, int access_right); sn_nsdl_ep_parameters_s* nsdl_init_register_endpoint(sn_nsdl_ep_parameters_s *endpoint_structure, uint8_t* name, uint8_t* ypename_ptr, uint8_t *lifetime_ptr); void nsdl_clean_register_endpoint(sn_nsdl_ep_parameters_s **endpoint_structure); void nsdl_init();
--- a/nsp_resources/nsp_get.cpp Fri Mar 14 21:50:40 2014 +0000 +++ b/nsp_resources/nsp_get.cpp Sat Mar 15 05:29:29 2014 +0000 @@ -10,6 +10,7 @@ sn_coap_hdr_s *coap_res_ptr = NULL; coap_res_ptr = sn_coap_build_response(received_coap_ptr,COAP_MSG_CODE_RESPONSE_CONTENT); if (coap_res_ptr != NULL && io != NULL && io->stringValue() != NULL) { + coap_res_ptr->msg_type = COAP_MSG_TYPE_CONFIRMABLE; coap_res_ptr->payload_len = strlen(io->stringValue()); coap_res_ptr->payload_ptr = (uint8_t*)io->stringValue(); sn_nsdl_send_coap_message(address, coap_res_ptr);
--- a/nsp_resources/nsp_getput.cpp Fri Mar 14 21:50:40 2014 +0000 +++ b/nsp_resources/nsp_getput.cpp Sat Mar 15 05:29:29 2014 +0000 @@ -14,6 +14,7 @@ { coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); if (coap_res_ptr != NULL && io != NULL && io->stringValue() != NULL) { + coap_res_ptr->msg_type = COAP_MSG_TYPE_CONFIRMABLE; coap_res_ptr->payload_len = strlen(io->stringValue()); coap_res_ptr->payload_ptr = (uint8_t*)io->stringValue(); sn_nsdl_send_coap_message(address, coap_res_ptr);