Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface PololuLedStripx mbed-rtos mbed nanoservice_client_1_12_X
Fork of LPC1768_LWM2M_Client by
Diff: nsdl_support.cpp
- Revision:
- 1:09a525977925
- Parent:
- 0:9101343a70cd
- Child:
- 7:59c7b96ace5b
diff -r 9101343a70cd -r 09a525977925 nsdl_support.cpp
--- a/nsdl_support.cpp Tue Jul 22 23:58:23 2014 +0000
+++ b/nsdl_support.cpp Sat Sep 27 21:53:28 2014 +0000
@@ -5,26 +5,47 @@
#include "mbed.h"
#include "rtos.h"
#include "EthernetInterface.h"
+#include "UDPSocket.h"
+#include "Endpoint.h"
+
+/* __heapvalid((__heapprt)fprintf,stdout, 1);\*/
+#define MEM_VALID(x) \
+ int s##x=0;\
+ int *h##x = new int [1];\
+ std::printf("[stack]0x%08x\t[heap]0x%08x\t[memory avail]%d bytes \tLine: %d %s\r\n", &s##x, h##x, &s##x-h##x, __LINE__, __FILE__);\
+ if (h##x > &s##x)\
+ printf("collision\n");\
+ else\
+ delete [] h##x;\
+ __nop()
extern Serial pc;
-extern EthernetInterface eth;
extern Endpoint nsp;
extern UDPSocket server;
-extern char endpoint_name[16];
+extern char endpoint_name[24];
extern uint8_t ep_type[];
extern uint8_t lifetime_ptr[];
+char null_ep_name[] = "";
+uint8_t null_ep_type[] = "";
+uint8_t null_lifetime_ptr[] = "";
+bool nsdl_reg_update_needed = false;
/* The number of seconds between NSP registration messages */
-#define RD_UPDATE_PERIOD 60
+#define RD_UPDATE_PERIOD 30
void *nsdl_alloc(uint16_t size)
{
- return malloc(size);
+ void *buf = malloc(size);
+// printf("alloc\r\n");
+// MEM_VALID(0);
+ return buf;
}
void nsdl_free(void* ptr_to_free)
{
free(ptr_to_free);
+// printf("de-alloc\r\n");
+// MEM_VALID(0);
}
/*
@@ -73,7 +94,7 @@
endpoint_structure->type_ptr = typename_ptr;
endpoint_structure->type_len = strlen((char*)typename_ptr);
endpoint_structure->lifetime_ptr = lifetime_ptr;
- endpoint_structure->lifetime_len = strlen((char*)lifetime_ptr);
+ endpoint_structure->lifetime_len = strlen((char*)lifetime_ptr);
}
return endpoint_structure;
}
@@ -100,6 +121,21 @@
static uint8_t rx_cb(sn_coap_hdr_s *coap_packet_ptr, sn_nsdl_addr_s *address_ptr)
{
pc.printf("RX callback!\r\n");
+ pc.printf("msg_code: %d \r\n", coap_packet_ptr->msg_code);
+ pc.printf("Payload length: %d bytes\r\n", coap_packet_ptr->payload_len);
+ int i;
+ pc.printf("Payload:'");
+ for (i=0; i < coap_packet_ptr->payload_len; i++)
+ pc.printf("%c", *(coap_packet_ptr->payload_ptr + i));
+ pc.printf("' \r\n");
+ if (coap_packet_ptr->options_list_ptr && coap_packet_ptr->options_list_ptr->location_path_ptr)
+ {
+ pc.printf("Location: /");
+ int i;
+ for (i=0; i < coap_packet_ptr->options_list_ptr->location_path_len; i++) pc.printf("%c", (char)(coap_packet_ptr->options_list_ptr->location_path_ptr[i]));
+ pc.printf(" \r\n");
+ }
+ //sn_coap_packet_debug(coap_packet_ptr);
return 0;
}
@@ -110,8 +146,10 @@
while(true)
{
wait(RD_UPDATE_PERIOD);
- endpoint_ptr = nsdl_init_register_endpoint(endpoint_ptr, (uint8_t*)endpoint_name, ep_type, lifetime_ptr);
- if(sn_nsdl_register_endpoint(endpoint_ptr) != 0)
+ //endpoint_ptr = nsdl_init_register_endpoint(endpoint_ptr, (uint8_t*)endpoint_name, ep_type, lifetime_ptr);
+ //if(sn_nsdl_register_endpoint(endpoint_ptr) != 0)
+ endpoint_ptr = nsdl_init_register_endpoint(endpoint_ptr, (uint8_t*)null_ep_name, null_ep_type, null_lifetime_ptr);
+ if(sn_nsdl_update_registration(endpoint_ptr) != 0)
pc.printf("NSP re-registering failed\r\n");
else
pc.printf("NSP re-registering OK\r\n");
@@ -134,7 +172,7 @@
/* Set nsp address for library */
set_NSP_address(nsp_addr, 5683, SN_NSDL_ADDRESS_TYPE_IPV4);
-}
+}
void nsdl_event_loop()
{
