Red Hat Summit 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@32:7f3f1ef700e3, 2014-04-29 (annotated)
- Committer:
- sam_grove
- Date:
- Tue Apr 29 00:41:05 2014 +0000
- Revision:
- 32:7f3f1ef700e3
- Parent:
- 31:7ce5bef2d369
mbed emt node
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 | |
sam_grove | 31:7ce5bef2d369 | 7 | //#define LIGHT_RES_ID "311/0/5851" |
sam_grove | 29:7512729587cf | 8 | #define LIGHT_FLASH_ID "311/0/5850" |
bogdanm | 2:7e489126fe7a | 9 | |
bogdanm | 2:7e489126fe7a | 10 | extern Serial pc; |
bogdanm | 2:7e489126fe7a | 11 | static PwmOut led2(LED2); |
bogdanm | 2:7e489126fe7a | 12 | static PwmOut led3(LED3); |
zdshelby | 14:5acd59fec679 | 13 | |
sam_grove | 31:7ce5bef2d369 | 14 | static DigitalOut out1(p22); |
sam_grove | 29:7512729587cf | 15 | static Ticker flash; |
sam_grove | 31:7ce5bef2d369 | 16 | static Timeout reset; |
sam_grove | 31:7ce5bef2d369 | 17 | |
sam_grove | 31:7ce5bef2d369 | 18 | #include "Beep.h" |
sam_grove | 31:7ce5bef2d369 | 19 | static Beep buzzer(p26); |
sam_grove | 31:7ce5bef2d369 | 20 | Ticker beep_tick; |
sam_grove | 31:7ce5bef2d369 | 21 | static void beepHanlder(void); |
sam_grove | 31:7ce5bef2d369 | 22 | |
sam_grove | 31:7ce5bef2d369 | 23 | static void beepHandler(void) |
sam_grove | 31:7ce5bef2d369 | 24 | { |
sam_grove | 31:7ce5bef2d369 | 25 | buzzer.beep(1000, 0.3f); |
sam_grove | 31:7ce5bef2d369 | 26 | } |
sam_grove | 31:7ce5bef2d369 | 27 | |
sam_grove | 29:7512729587cf | 28 | |
sam_grove | 29:7512729587cf | 29 | static void flashHandler(void) |
sam_grove | 29:7512729587cf | 30 | { |
sam_grove | 31:7ce5bef2d369 | 31 | out1 = 0; |
sam_grove | 31:7ce5bef2d369 | 32 | wait(0.1f); |
sam_grove | 31:7ce5bef2d369 | 33 | out1 = 1; |
sam_grove | 29:7512729587cf | 34 | } |
bogdanm | 2:7e489126fe7a | 35 | |
sam_grove | 31:7ce5bef2d369 | 36 | ///* Only GET and PUT method allowed */ |
sam_grove | 31:7ce5bef2d369 | 37 | //static uint8_t light_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) |
sam_grove | 31:7ce5bef2d369 | 38 | //{ |
sam_grove | 31:7ce5bef2d369 | 39 | // sn_coap_hdr_s *coap_res_ptr = 0; |
sam_grove | 31:7ce5bef2d369 | 40 | // static float led_dimm = 0; |
sam_grove | 31:7ce5bef2d369 | 41 | // int led_state = 0; |
sam_grove | 31:7ce5bef2d369 | 42 | // char led_dimm_temp[4]; |
sam_grove | 31:7ce5bef2d369 | 43 | // |
sam_grove | 31:7ce5bef2d369 | 44 | // pc.printf("light dimmer callback\r\n"); |
sam_grove | 31:7ce5bef2d369 | 45 | // |
sam_grove | 31:7ce5bef2d369 | 46 | // if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) { |
sam_grove | 31:7ce5bef2d369 | 47 | // coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); |
sam_grove | 31:7ce5bef2d369 | 48 | // |
sam_grove | 31:7ce5bef2d369 | 49 | // led_state = led_dimm * 100; |
sam_grove | 31:7ce5bef2d369 | 50 | // sprintf(led_dimm_temp, "%d", led_state); |
sam_grove | 31:7ce5bef2d369 | 51 | // |
sam_grove | 31:7ce5bef2d369 | 52 | // coap_res_ptr->payload_len = strlen(led_dimm_temp); |
sam_grove | 31:7ce5bef2d369 | 53 | // coap_res_ptr->payload_ptr = (uint8_t*)led_dimm_temp; |
sam_grove | 31:7ce5bef2d369 | 54 | // sn_nsdl_send_coap_message(address, coap_res_ptr); |
sam_grove | 31:7ce5bef2d369 | 55 | // } else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) { |
sam_grove | 31:7ce5bef2d369 | 56 | // memcpy(led_dimm_temp, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len); |
sam_grove | 31:7ce5bef2d369 | 57 | // |
sam_grove | 31:7ce5bef2d369 | 58 | // led_dimm_temp[received_coap_ptr->payload_len] = '\0'; |
sam_grove | 31:7ce5bef2d369 | 59 | // |
sam_grove | 31:7ce5bef2d369 | 60 | // led_dimm = atof(led_dimm_temp); |
sam_grove | 31:7ce5bef2d369 | 61 | // led_dimm = led_dimm/100; |
sam_grove | 31:7ce5bef2d369 | 62 | // |
sam_grove | 31:7ce5bef2d369 | 63 | // led2.write(led_dimm); |
sam_grove | 31:7ce5bef2d369 | 64 | // led3.write(led_dimm); |
sam_grove | 31:7ce5bef2d369 | 65 | // |
sam_grove | 31:7ce5bef2d369 | 66 | // coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); |
sam_grove | 31:7ce5bef2d369 | 67 | // sn_nsdl_send_coap_message(address, coap_res_ptr); |
sam_grove | 31:7ce5bef2d369 | 68 | // } |
sam_grove | 31:7ce5bef2d369 | 69 | // |
sam_grove | 31:7ce5bef2d369 | 70 | // sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); |
sam_grove | 31:7ce5bef2d369 | 71 | // return 0; |
sam_grove | 31:7ce5bef2d369 | 72 | //} |
bogdanm | 2:7e489126fe7a | 73 | |
sam_grove | 29:7512729587cf | 74 | |
sam_grove | 29:7512729587cf | 75 | /* Only GET and PUT method allowed */ |
sam_grove | 29:7512729587cf | 76 | static uint8_t light_flash_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) |
sam_grove | 29:7512729587cf | 77 | { |
sam_grove | 29:7512729587cf | 78 | sn_coap_hdr_s *coap_res_ptr = 0; |
sam_grove | 29:7512729587cf | 79 | static uint8_t flash_state = '0'; |
sam_grove | 29:7512729587cf | 80 | |
sam_grove | 29:7512729587cf | 81 | pc.printf("flash callback\r\n"); |
sam_grove | 29:7512729587cf | 82 | |
sam_grove | 29:7512729587cf | 83 | if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) |
sam_grove | 29:7512729587cf | 84 | { |
sam_grove | 29:7512729587cf | 85 | coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); |
sam_grove | 29:7512729587cf | 86 | |
sam_grove | 29:7512729587cf | 87 | coap_res_ptr->payload_len = 1; |
sam_grove | 29:7512729587cf | 88 | coap_res_ptr->payload_ptr = &flash_state; |
sam_grove | 29:7512729587cf | 89 | sn_nsdl_send_coap_message(address, coap_res_ptr); |
sam_grove | 29:7512729587cf | 90 | } |
sam_grove | 29:7512729587cf | 91 | else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) |
sam_grove | 29:7512729587cf | 92 | { |
sam_grove | 29:7512729587cf | 93 | if(received_coap_ptr->payload_len) |
sam_grove | 29:7512729587cf | 94 | { |
sam_grove | 29:7512729587cf | 95 | if(*(received_coap_ptr->payload_ptr) == '1') |
sam_grove | 29:7512729587cf | 96 | { |
sam_grove | 31:7ce5bef2d369 | 97 | flash.attach(&flashHandler, 10.0f); |
sam_grove | 31:7ce5bef2d369 | 98 | beep_tick.attach(&beepHandler, 0.6f); |
sam_grove | 29:7512729587cf | 99 | flash_state = '1'; |
sam_grove | 31:7ce5bef2d369 | 100 | out1 = 1; |
sam_grove | 29:7512729587cf | 101 | } |
sam_grove | 29:7512729587cf | 102 | else if(*(received_coap_ptr->payload_ptr) == '0') |
sam_grove | 29:7512729587cf | 103 | { |
sam_grove | 29:7512729587cf | 104 | out1 = 0; |
sam_grove | 31:7ce5bef2d369 | 105 | buzzer.nobeep(); |
sam_grove | 29:7512729587cf | 106 | flash.detach(); |
sam_grove | 31:7ce5bef2d369 | 107 | reset.detach(); |
sam_grove | 31:7ce5bef2d369 | 108 | beep_tick.detach(); |
sam_grove | 29:7512729587cf | 109 | flash_state = '0'; |
sam_grove | 29:7512729587cf | 110 | } |
sam_grove | 29:7512729587cf | 111 | coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); |
sam_grove | 29:7512729587cf | 112 | sn_nsdl_send_coap_message(address, coap_res_ptr); |
sam_grove | 29:7512729587cf | 113 | } |
sam_grove | 29:7512729587cf | 114 | } |
sam_grove | 29:7512729587cf | 115 | |
sam_grove | 29:7512729587cf | 116 | sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); |
sam_grove | 29:7512729587cf | 117 | |
sam_grove | 29:7512729587cf | 118 | return 0; |
sam_grove | 29:7512729587cf | 119 | } |
sam_grove | 29:7512729587cf | 120 | |
bogdanm | 2:7e489126fe7a | 121 | int create_light_resource(sn_nsdl_resource_info_s *resource_ptr) |
bogdanm | 2:7e489126fe7a | 122 | { |
sam_grove | 31:7ce5bef2d369 | 123 | //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)); |
sam_grove | 29:7512729587cf | 124 | nsdl_create_dynamic_resource(resource_ptr, sizeof(LIGHT_FLASH_ID)-1, (uint8_t*)LIGHT_FLASH_ID, 0, 0, 0, &light_flash_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); |
bogdanm | 2:7e489126fe7a | 125 | return 0; |
bogdanm | 2:7e489126fe7a | 126 | } |