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.
resources/relay.cpp
- Committer:
- sam_grove
- Date:
- 2014-08-12
- Revision:
- 15:11be37889a49
- Parent:
- 10:443e7f741c8e
File content as of revision 15:11be37889a49:
// GPS resource implementation #include "mbed.h" #include "nsdl_support.h" #include "relay.h" #include "Beep.h" #define RELAY_RES_ID "beep/0/on" static Beep buzzer(D6); /* Only GET and PUT method allowed */ static uint8_t relay_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) { sn_coap_hdr_s *coap_res_ptr = 0; static uint8_t relay_state = '0'; printf("relay callback\r\n"); if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) { coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); coap_res_ptr->payload_len = 1; coap_res_ptr->payload_ptr = &relay_state; sn_nsdl_send_coap_message(address, coap_res_ptr); } else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) { if(received_coap_ptr->payload_len) { if(*(received_coap_ptr->payload_ptr) == '1') { buzzer.beep(1000,0); relay_state = '1'; } else if(*(received_coap_ptr->payload_ptr) == '0') { 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_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); return 0; } int create_relay_resource(sn_nsdl_resource_info_s *resource_ptr) { nsdl_create_dynamic_resource(resource_ptr, sizeof(RELAY_RES_ID)-1, (uint8_t*)RELAY_RES_ID, 0, 0, 0, &relay_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); return 0; }