NanoService device game controller for NSPong.
Dependencies: Beep C12832_lcd EthernetInterface MMA7660 mbed-rtos mbed nsdl_lib
led.cpp
00001 // Led resource implementation 00002 00003 #include "mbed.h" 00004 #include "nsdl_support.h" 00005 #include "led.h" 00006 00007 #define LED_RES_ID "led" 00008 00009 extern Serial pc; 00010 DigitalOut led1(LED1); 00011 DigitalOut led2(LED2); 00012 DigitalOut led3(LED3); 00013 DigitalOut led4(LED4); 00014 00015 PwmOut rled(p23); 00016 PwmOut gled(p24); 00017 PwmOut bled(p25); 00018 00019 // Data from PUT request 00020 static char received_cmd[20]; 00021 static char cmd[10]; 00022 00023 /* Only PUT method allowed */ 00024 static uint8_t led_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) 00025 { 00026 sn_coap_hdr_s *coap_res_ptr = 0; 00027 00028 memcpy(received_cmd, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len); 00029 received_cmd[received_coap_ptr->payload_len] = '\0'; 00030 sprintf(cmd, "%s", received_cmd); 00031 00032 if (!strcmp(cmd, "reset")) { 00033 led1 = 0; 00034 led2 = 0; 00035 led3 = 0; 00036 led4 = 0; 00037 } 00038 00039 else if (!strcmp(cmd, "score")) { 00040 00041 if(led4){ 00042 led1 = 0; 00043 led2 = 0; 00044 led3 = 0; 00045 led4 = 0; 00046 } 00047 else if(led3){ 00048 led4 = 1; 00049 } 00050 else if(led2){ 00051 led3 = 1; 00052 } 00053 else if(led1){ 00054 led2 = 1; 00055 } 00056 else{ 00057 led1 = 1; 00058 } 00059 00060 rled.period(0.001); 00061 for(float i = 0.0; i < 1.0 ; i += 0.01) { 00062 float p = 3 * i; 00063 rled = 1.0 - ((p < 1.0) ? 1.0 - p : (p > 2.0) ? p - 2.0 : 0.0); 00064 gled = 1.0 - ((p < 1.0) ? p : (p > 2.0) ? 0.0 : 2.0 - p); 00065 bled = 1.0 - ((p < 1.0) ? 0.0 : (p > 2.0) ? 3.0 - p : p - 1.0); ; 00066 wait(0.005); 00067 } 00068 } 00069 00070 else if (!strcmp(cmd, "paddle")) { 00071 rled = 0; 00072 gled = 0; 00073 bled = 0; 00074 wait(0.1); 00075 } 00076 00077 else if (!strcmp(cmd, "win")) { 00078 led1 = 0; 00079 led2 = 0; 00080 led3 = 0; 00081 led4 = 0; 00082 wait(0.25); 00083 led1 = 1; 00084 led2 = 1; 00085 led3 = 1; 00086 led4 = 1; 00087 wait(0.25); 00088 led1 = 0; 00089 led2 = 0; 00090 led3 = 0; 00091 led4 = 0; 00092 wait(0.25); 00093 led1 = 1; 00094 led2 = 1; 00095 led3 = 1; 00096 led4 = 1; 00097 wait(0.25); 00098 led1 = 0; 00099 led2 = 0; 00100 led3 = 0; 00101 led4 = 0; 00102 } 00103 00104 rled = 1; 00105 gled = 1; 00106 bled = 1; 00107 00108 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); 00109 sn_nsdl_send_coap_message(address, coap_res_ptr); 00110 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); 00111 memset(cmd, 0, 10); 00112 return 0; 00113 } 00114 00115 int create_led_resource(sn_nsdl_resource_info_s *resource_ptr) 00116 { 00117 rled = 1; 00118 gled = 1; 00119 bled = 1; 00120 nsdl_create_dynamic_resource(resource_ptr, sizeof(LED_RES_ID)-1, (uint8_t*)LED_RES_ID, 0, 0, 0, &led_resource_cb, SN_GRS_PUT_ALLOWED); 00121 return 0; 00122 }
Generated on Wed Jul 13 2022 01:21:07 by 1.7.2