More advanced NanoService Demo for LPC1768 App Board using OMA Lightweight Objects

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

Fork of LWM2M_NanoService_Ethernet by MBED_DEMOS

Committer:
sstark
Date:
Tue Apr 08 01:02:06 2014 +0000
Revision:
20:84ee332ba360
Parent:
14:5acd59fec679
Properly use the RGB_LED define to exclude the creation of the RGB resource, and encapsulate the RGB PwmOut object in an RBG class to avoid having the pins activated when they were initialized statically.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 2:7e489126fe7a 1 // Light resource implementation
bogdanm 2:7e489126fe7a 2
bogdanm 2:7e489126fe7a 3 #include "mbed.h"
bogdanm 2:7e489126fe7a 4 #include "nsdl_support.h"
bogdanm 2:7e489126fe7a 5 #include "light.h"
bogdanm 2:7e489126fe7a 6
zdshelby 8:f0ecb62bda47 7 #define LIGHT_RES_ID "311/0/5851"
bogdanm 2:7e489126fe7a 8
bogdanm 2:7e489126fe7a 9 extern Serial pc;
bogdanm 2:7e489126fe7a 10 static PwmOut led2(LED2);
bogdanm 2:7e489126fe7a 11 static PwmOut led3(LED3);
zdshelby 14:5acd59fec679 12
bogdanm 2:7e489126fe7a 13
bogdanm 2:7e489126fe7a 14 /* Only GET and PUT method allowed */
bogdanm 2:7e489126fe7a 15 static uint8_t light_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
bogdanm 2:7e489126fe7a 16 {
bogdanm 2:7e489126fe7a 17 sn_coap_hdr_s *coap_res_ptr = 0;
bogdanm 2:7e489126fe7a 18 static float led_dimm = 0;
bogdanm 2:7e489126fe7a 19 int led_state = 0;
bogdanm 2:7e489126fe7a 20 char led_dimm_temp[4];
bogdanm 2:7e489126fe7a 21
bogdanm 2:7e489126fe7a 22 pc.printf("light callback\r\n");
bogdanm 2:7e489126fe7a 23
bogdanm 2:7e489126fe7a 24 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
bogdanm 2:7e489126fe7a 25 {
bogdanm 2:7e489126fe7a 26 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
bogdanm 2:7e489126fe7a 27
bogdanm 2:7e489126fe7a 28 led_state = led_dimm * 100;
bogdanm 2:7e489126fe7a 29 sprintf(led_dimm_temp, "%d", led_state);
bogdanm 2:7e489126fe7a 30
bogdanm 2:7e489126fe7a 31 coap_res_ptr->payload_len = strlen(led_dimm_temp);
bogdanm 2:7e489126fe7a 32 coap_res_ptr->payload_ptr = (uint8_t*)led_dimm_temp;
bogdanm 2:7e489126fe7a 33 sn_nsdl_send_coap_message(address, coap_res_ptr);
bogdanm 2:7e489126fe7a 34 }
bogdanm 2:7e489126fe7a 35 else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT)
bogdanm 2:7e489126fe7a 36 {
bogdanm 2:7e489126fe7a 37 memcpy(led_dimm_temp, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len);
bogdanm 2:7e489126fe7a 38
bogdanm 2:7e489126fe7a 39 led_dimm_temp[received_coap_ptr->payload_len] = '\0';
bogdanm 2:7e489126fe7a 40
bogdanm 2:7e489126fe7a 41 led_dimm = atof(led_dimm_temp);
bogdanm 2:7e489126fe7a 42 led_dimm = led_dimm/100;
bogdanm 2:7e489126fe7a 43
bogdanm 2:7e489126fe7a 44 led2.write(led_dimm);
bogdanm 2:7e489126fe7a 45 led3.write(led_dimm);
bogdanm 2:7e489126fe7a 46
bogdanm 2:7e489126fe7a 47 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED);
bogdanm 2:7e489126fe7a 48 sn_nsdl_send_coap_message(address, coap_res_ptr);
bogdanm 2:7e489126fe7a 49 }
bogdanm 2:7e489126fe7a 50
bogdanm 2:7e489126fe7a 51 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
bogdanm 2:7e489126fe7a 52 return 0;
bogdanm 2:7e489126fe7a 53 }
bogdanm 2:7e489126fe7a 54
bogdanm 2:7e489126fe7a 55 int create_light_resource(sn_nsdl_resource_info_s *resource_ptr)
bogdanm 2:7e489126fe7a 56 {
bogdanm 2:7e489126fe7a 57 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));
bogdanm 2:7e489126fe7a 58 return 0;
bogdanm 2:7e489126fe7a 59 }