NanoService Example for u-blox Cellular modems
Dependencies: Beep LM75B MMA7660 mbed nsdl_lib
Fork of NSDL_HelloWorld by
light.cpp
00001 // Light resource implementation 00002 00003 #include "mbed.h" 00004 #include "nsdl_support.h" 00005 #include "light.h" 00006 00007 #define LIGHT_RES_ID "lt/0/dim" 00008 00009 //PwmOut led1(LED1); 00010 static PwmOut led2(LED2); 00011 static PwmOut led3(LED3); 00012 //PwmOut led4(LED4); 00013 00014 /* Only GET and PUT method allowed */ 00015 static uint8_t light_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto) 00016 { 00017 sn_coap_hdr_s *coap_res_ptr = 0; 00018 static float led_dimm = 0; 00019 int led_state = 0; 00020 char led_dimm_temp[4]; 00021 00022 printf("light callback\r\n"); 00023 00024 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) 00025 { 00026 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT); 00027 00028 led_state = led_dimm * 100; 00029 sprintf(led_dimm_temp, "%d", led_state); 00030 00031 coap_res_ptr->payload_len = strlen(led_dimm_temp); 00032 coap_res_ptr->payload_ptr = (uint8_t*)led_dimm_temp; 00033 sn_nsdl_send_coap_message(address, coap_res_ptr); 00034 } 00035 else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) 00036 { 00037 memcpy(led_dimm_temp, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len); 00038 00039 led_dimm_temp[received_coap_ptr->payload_len] = '\0'; 00040 00041 led_dimm = atof(led_dimm_temp); 00042 led_dimm = led_dimm/100; 00043 00044 //led1.write(led_dimm); 00045 led2.write(led_dimm); 00046 led3.write(led_dimm); 00047 //led4.write(led_dimm); 00048 00049 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED); 00050 sn_nsdl_send_coap_message(address, coap_res_ptr); 00051 } 00052 00053 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr); 00054 return 0; 00055 } 00056 00057 int create_light_resource(sn_nsdl_resource_info_s *resource_ptr) 00058 { 00059 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)); 00060 return 0; 00061 }
Generated on Thu Jul 14 2022 08:47:03 by 1.7.2