cellular port
Dependencies: Beep C027_Support C12832 LM75B MMA7660 mbed-rtos mbed nsdl_lib
This is a port of the NSDL HelloWorld for cellular.
To run the example you need a C027 and the ARM mbed application shield. The example uses cellular instead of ethernet and takes the true position from the GPS instead of using a fixed position.
Diff: main.cpp
- Revision:
- 1:e35d7f10999a
- Parent:
- 0:2edbfea18d23
- Child:
- 2:7e489126fe7a
diff -r 2edbfea18d23 -r e35d7f10999a main.cpp --- a/main.cpp Wed Oct 09 09:31:17 2013 +0000 +++ b/main.cpp Tue Oct 15 09:17:29 2013 +0000 @@ -24,26 +24,16 @@ #define GW "10.45.0.1" /* Change this IP address to that of your NanoService Platform installation */ -const char* NSP_ADDRESS = "10.45.3.42"; /* internal NSP*/ +const char* NSP_ADDRESS = "217.140.101.40"; /* internal NSP*/ const int NSP_PORT = 5683; uint8_t nsp_addr[4]; /* The number of seconds between NSP registration messages */ #define RD_UPDATE_PERIOD 60 +static uint8_t res_gps_val[] = {"52.182382,0.178849"}; -/* Resource paths and registration parameters */ -static uint8_t res_mgf[] = {"dev/mfg"}; -static uint8_t res_mgf_val[] = {"Sensinode"}; -static uint8_t res_mdl[] = {"dev/mdl"}; -static uint8_t res_mdl_val[] = {"NSDL-C power node"}; -static uint8_t res_temp[] = {"sen/temp"}; -static uint8_t res_light[] = {"lt/0/dim"}; -static uint8_t res_gps[] = {"gps/loc"}; -static uint8_t res_gps_val[] = {"52.182382,0.178849"}; -static uint8_t res_rel[] = {"lt/0/on"}; - -static uint8_t ep_type[] = {"PowerNode"}; +static uint8_t ep_type[] = {"mbed_device"}; static uint8_t lifetime_ptr[] = {"1200"}; /* stored data for observable resource */ @@ -212,13 +202,13 @@ memset(resource_ptr->resource_parameters_ptr, 0, sizeof(sn_nsdl_resource_parameters_s)); /* Static resurces */ - CREATE_STATIC_RESOURCE(resource_ptr, sizeof(res_mgf)-1, (uint8_t*) res_mgf, 0, 0, (uint8_t*) res_mgf_val, sizeof(res_mgf_val)-1); - CREATE_STATIC_RESOURCE(resource_ptr, sizeof(res_mdl)-1, (uint8_t*) res_mdl, 0, 0, (uint8_t*) res_mdl_val, sizeof(res_mdl_val)-1); + CREATE_STATIC_RESOURCE(resource_ptr, sizeof("dev/mfg")-1, (uint8_t*) "dev/mfg", 0, 0, (uint8_t*) "Sensinode", sizeof("Sensinode")-1); + CREATE_STATIC_RESOURCE(resource_ptr, sizeof("dev/mdl")-1, (uint8_t*) "dev/mdl", 0, 0, (uint8_t*) "NSDL-C mbed device", sizeof("NSDL-C mbed device")-1); - CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof(res_temp)-1, (uint8_t*) res_temp, 0, 0, 1, &temp_resource_cb, SN_GRS_GET_ALLOWED); - CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof(res_light)-1, (uint8_t*) res_light, 0, 0, 0, &light_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); - CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof(res_gps)-1, (uint8_t*) res_gps, 0, 0, 0, &gps_resource_cb, SN_GRS_GET_ALLOWED); - CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof(res_rel)-1, (uint8_t*) res_rel, 0, 0, 0, &relay_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); + CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof("sen/temp")-1, (uint8_t*) "sen/temp", 0, 0, 1, &temp_resource_cb, SN_GRS_GET_ALLOWED); + CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof("lt/0/dim")-1, (uint8_t*) "lt/0/dim", 0, 0, 0, &light_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); + CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof("gps/loc")-1, (uint8_t*) "gps/loc", 0, 0, 0, &gps_resource_cb, SN_GRS_GET_ALLOWED); + CREATE_DYNAMIC_RESOURCE(resource_ptr, sizeof("beep/0/on")-1, (uint8_t*) "beep/0/on", 0, 0, 0, &relay_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); /* Register with NSP */ @@ -317,14 +307,8 @@ sn_nsdl_send_coap_message(address, coap_res_ptr); - /* sn_coap_release.... */ - if(coap_res_ptr->options_list_ptr) - free(coap_res_ptr->options_list_ptr); - if(coap_res_ptr->token_ptr) - { - own_free(coap_res_ptr->token_ptr); - } - own_free(coap_res_ptr); + coap_res_ptr->options_list_ptr->observe_ptr = 0; + sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); return 0; } @@ -347,8 +331,9 @@ coap_res_ptr->payload_len = strlen(led_dimm_temp); coap_res_ptr->payload_ptr = (uint8_t*)led_dimm_temp; + sn_nsdl_send_coap_message(address, coap_res_ptr); } - if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) + else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) { memcpy(led_dimm_temp, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len); @@ -363,16 +348,10 @@ //led4.write(led_dimm); coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); + sn_nsdl_send_coap_message(address, coap_res_ptr); } - sn_nsdl_send_coap_message(address, coap_res_ptr); - - /* sn_coap_release.... */ - if(coap_res_ptr->token_ptr) - { - own_free(coap_res_ptr->token_ptr); - } - own_free(coap_res_ptr); + sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); return 0; } @@ -396,12 +375,8 @@ sn_nsdl_send_coap_message(address, coap_res_ptr); - /* sn_coap_release.... */ - if(coap_res_ptr->token_ptr) - { - own_free(coap_res_ptr->token_ptr); - } - own_free(coap_res_ptr); + sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); + return 0; } @@ -419,8 +394,9 @@ coap_res_ptr->payload_len = 1; coap_res_ptr->payload_ptr = &relay_state; + sn_nsdl_send_coap_message(address, coap_res_ptr); } - if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) + else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) { if(received_coap_ptr->payload_len) { @@ -435,19 +411,12 @@ buzzer.nobeep(); relay_state = '0'; } - coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); - + sn_nsdl_send_coap_message(address, coap_res_ptr); } } - sn_nsdl_send_coap_message(address, coap_res_ptr); + sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); - /* sn_coap_release.... */ - if(coap_res_ptr->token_ptr) - { - own_free(coap_res_ptr->token_ptr); - } - own_free(coap_res_ptr); return 0; } \ No newline at end of file