Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NVIC_set_all_priorities cc3000_hostdriver_mbedsocket mbed nsdl_lib TEMT6200 TSI Wi-Go_eCompass_Lib_V3 WiGo_BattCharger
rgbled.cpp
00001 // RGB LED resource implementation 00002 00003 #include "mbed.h" 00004 #include "nsdl_support.h" 00005 #include "defLED.h" 00006 #include "rgbled.h" 00007 00008 #define RED_LED_RES_ID "3311/0/5850/0" 00009 #define GRN_LED_RES_ID "3311/0/5850/1" 00010 #define BLU_LED_RES_ID "3311/0/5850/2" 00011 00012 extern Serial pc; 00013 extern DigitalOut ledr; 00014 extern DigitalOut ledg; 00015 extern DigitalOut ledb; 00016 00017 static uint8_t red_led_state = '0'; 00018 static uint8_t grn_led_state = '0'; 00019 static uint8_t blu_led_state = '0'; 00020 00021 /* Only GET and PUT method allowed */ 00022 static uint8_t red_led_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) 00023 { 00024 sn_coap_hdr_s *coap_res_ptr = 0; 00025 00026 pc.printf("red_led callback\r\n"); 00027 00028 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) 00029 { 00030 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); 00031 00032 coap_res_ptr->payload_len = 1; 00033 coap_res_ptr->payload_ptr = &red_led_state; 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 if(received_coap_ptr->payload_len) 00039 { 00040 if(*(received_coap_ptr->payload_ptr) == '1') 00041 { 00042 RED_ON; 00043 red_led_state = '1'; 00044 00045 } 00046 else if(*(received_coap_ptr->payload_ptr) == '0') 00047 { 00048 RED_OFF; 00049 red_led_state = '0'; 00050 } 00051 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); 00052 sn_nsdl_send_coap_message(address, coap_res_ptr); 00053 } 00054 } 00055 00056 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); 00057 00058 return 0; 00059 } 00060 00061 00062 static uint8_t grn_led_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) 00063 { 00064 sn_coap_hdr_s *coap_res_ptr = 0; 00065 00066 pc.printf("green_led callback\r\n"); 00067 00068 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) 00069 { 00070 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); 00071 00072 coap_res_ptr->payload_len = 1; 00073 coap_res_ptr->payload_ptr = &grn_led_state; 00074 sn_nsdl_send_coap_message(address, coap_res_ptr); 00075 } 00076 else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) 00077 { 00078 if(received_coap_ptr->payload_len) 00079 { 00080 if(*(received_coap_ptr->payload_ptr) == '1') 00081 { 00082 GREEN_ON; 00083 grn_led_state = '1'; 00084 00085 } 00086 else if(*(received_coap_ptr->payload_ptr) == '0') 00087 { 00088 GREEN_OFF; 00089 grn_led_state = '0'; 00090 } 00091 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); 00092 sn_nsdl_send_coap_message(address, coap_res_ptr); 00093 } 00094 } 00095 00096 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); 00097 00098 return 0; 00099 } 00100 00101 static uint8_t blu_led_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) 00102 { 00103 sn_coap_hdr_s *coap_res_ptr = 0; 00104 00105 pc.printf("blue_led callback\r\n"); 00106 00107 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) 00108 { 00109 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); 00110 00111 coap_res_ptr->payload_len = 1; 00112 coap_res_ptr->payload_ptr = &blu_led_state; 00113 sn_nsdl_send_coap_message(address, coap_res_ptr); 00114 } 00115 else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) 00116 { 00117 if(received_coap_ptr->payload_len) 00118 { 00119 if(*(received_coap_ptr->payload_ptr) == '1') 00120 { 00121 BLUE_ON; 00122 blu_led_state = '1'; 00123 00124 } 00125 else if(*(received_coap_ptr->payload_ptr) == '0') 00126 { 00127 BLUE_OFF; 00128 blu_led_state = '0'; 00129 } 00130 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); 00131 sn_nsdl_send_coap_message(address, coap_res_ptr); 00132 } 00133 } 00134 00135 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); 00136 00137 return 0; 00138 } 00139 00140 int create_rgbled_resource(sn_nsdl_resource_info_s *resource_ptr) 00141 { 00142 nsdl_create_dynamic_resource(resource_ptr, sizeof(RED_LED_RES_ID)-1, (uint8_t*)RED_LED_RES_ID, 0, 0, 0, &red_led_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); 00143 nsdl_create_dynamic_resource(resource_ptr, sizeof(GRN_LED_RES_ID)-1, (uint8_t*)GRN_LED_RES_ID, 0, 0, 0, &grn_led_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); 00144 nsdl_create_dynamic_resource(resource_ptr, sizeof(BLU_LED_RES_ID)-1, (uint8_t*)BLU_LED_RES_ID, 0, 0, 0, &blu_led_resource_cb, (SN_GRS_GET_ALLOWED | SN_GRS_PUT_ALLOWED)); 00145 //initialize state here 00146 red_led_state = '0'; 00147 grn_led_state = '0'; 00148 blu_led_state = '0'; 00149 RED_OFF; 00150 GREEN_OFF; 00151 BLUE_OFF; 00152 00153 return 0; 00154 }
Generated on Tue Jul 12 2022 20:05:00 by
1.7.2