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
resources/light.cpp@20:84ee332ba360, 2014-04-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |