ok connect ethernet http://nanoservice-demo.mbed.org/ logout login name/password: demo demo see unique id on LCD click on that on that SAME id on web page interact with it: led on/off temp buzzer etc.

Dependencies:   Beep C12832_lcd EthernetInterface LM75B MMA7660 mbed-rtos mbed nsdl_lib

Fork of NSDL_HelloWorld by Sensinode

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers light.cpp Source File

light.cpp

00001 // Light resource implementation
00002 
00003 #include "mbed.h"
00004 #include "nsdl_support.h"
00005 #include "light.h"
00006 
00007 #define LIGHT_RES_ID    "lt/0/dim"
00008 
00009 extern Serial pc;
00010 //PwmOut led1(LED1);
00011 static PwmOut led2(LED2);
00012 static PwmOut led3(LED3);
00013 //PwmOut led4(LED4);
00014 
00015 /* Only GET and PUT method allowed */
00016 static uint8_t light_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
00017 {
00018     sn_coap_hdr_s *coap_res_ptr = 0;
00019     static float led_dimm = 0;
00020     int led_state = 0;
00021     char led_dimm_temp[4];
00022 
00023     pc.printf("light callback\r\n");
00024 
00025     if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
00026     {
00027         coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
00028 
00029         led_state = led_dimm * 100;
00030         sprintf(led_dimm_temp, "%d", led_state);
00031 
00032         coap_res_ptr->payload_len = strlen(led_dimm_temp);
00033         coap_res_ptr->payload_ptr = (uint8_t*)led_dimm_temp;
00034         sn_nsdl_send_coap_message(address, coap_res_ptr);
00035     }
00036     else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT)
00037     {
00038         memcpy(led_dimm_temp, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len);
00039 
00040         led_dimm_temp[received_coap_ptr->payload_len] = '\0';
00041 
00042         led_dimm = atof(led_dimm_temp);
00043         led_dimm = led_dimm/100;
00044 
00045         //led1.write(led_dimm);
00046         led2.write(led_dimm);
00047         led3.write(led_dimm);
00048         //led4.write(led_dimm);
00049 
00050         coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED);
00051         sn_nsdl_send_coap_message(address, coap_res_ptr);
00052     }
00053 
00054     sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
00055     return 0;
00056 }
00057 
00058 int create_light_resource(sn_nsdl_resource_info_s *resource_ptr)
00059 {
00060     nsdl_create_dynamic_resource(resource_ptr, sizeof(LIGHT_RES_ID)-1, (uint8_t*)LIGHT_RES_ID, 0, 0, 0, &light_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED));
00061     return 0;
00062 }