from LPC1768_LWM2M_Client

Dependencies:   F7_Ethernet mbed-rtos mbed nsdl_lib

Fork of rtos_basic by Mbed

Committer:
zef
Date:
Wed Dec 21 03:08:39 2016 +0000
Revision:
8:5bcb48a04554
from LPC1768_LWM2M_Client Project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zef 8:5bcb48a04554 1 // Light resource implementation
zef 8:5bcb48a04554 2
zef 8:5bcb48a04554 3 #include "mbed.h"
zef 8:5bcb48a04554 4 #include "nsdl_support.h"
zef 8:5bcb48a04554 5 #include "light.h"
zef 8:5bcb48a04554 6
zef 8:5bcb48a04554 7 #define LIGHT_RES_ID "lt/0/dim"
zef 8:5bcb48a04554 8
zef 8:5bcb48a04554 9 extern Serial pc;
zef 8:5bcb48a04554 10 //PwmOut led1(LED1);
zef 8:5bcb48a04554 11 //static PwmOut led2(LED2);
zef 8:5bcb48a04554 12 //static PwmOut led3(LED3);
zef 8:5bcb48a04554 13 //PwmOut led4(LED4);
zef 8:5bcb48a04554 14
zef 8:5bcb48a04554 15 /* Only GET and PUT method allowed */
zef 8:5bcb48a04554 16 static uint8_t light_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
zef 8:5bcb48a04554 17 {
zef 8:5bcb48a04554 18 sn_coap_hdr_s *coap_res_ptr = 0;
zef 8:5bcb48a04554 19 static float led_dimm = 0;
zef 8:5bcb48a04554 20 int led_state = 0;
zef 8:5bcb48a04554 21 char led_dimm_temp[4];
zef 8:5bcb48a04554 22
zef 8:5bcb48a04554 23 pc.printf("light callback\r\n");
zef 8:5bcb48a04554 24
zef 8:5bcb48a04554 25 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
zef 8:5bcb48a04554 26 {
zef 8:5bcb48a04554 27 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
zef 8:5bcb48a04554 28
zef 8:5bcb48a04554 29 //led_state = led_dimm * 100;
zef 8:5bcb48a04554 30 sprintf(led_dimm_temp, "%d", led_state);
zef 8:5bcb48a04554 31
zef 8:5bcb48a04554 32 coap_res_ptr->payload_len = strlen(led_dimm_temp);
zef 8:5bcb48a04554 33 coap_res_ptr->payload_ptr = (uint8_t*)led_dimm_temp;
zef 8:5bcb48a04554 34 sn_nsdl_send_coap_message(address, coap_res_ptr);
zef 8:5bcb48a04554 35 }
zef 8:5bcb48a04554 36 else if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT)
zef 8:5bcb48a04554 37 {
zef 8:5bcb48a04554 38 memcpy(led_dimm_temp, (char *)received_coap_ptr->payload_ptr, received_coap_ptr->payload_len);
zef 8:5bcb48a04554 39
zef 8:5bcb48a04554 40 //led_dimm_temp[received_coap_ptr->payload_len] = '\0';
zef 8:5bcb48a04554 41
zef 8:5bcb48a04554 42 //led_dimm = atof(led_dimm_temp);
zef 8:5bcb48a04554 43 //led_dimm = led_dimm/100;
zef 8:5bcb48a04554 44
zef 8:5bcb48a04554 45 //led1.write(led_dimm);
zef 8:5bcb48a04554 46 //led2.write(led_dimm);
zef 8:5bcb48a04554 47 //led3.write(led_dimm);
zef 8:5bcb48a04554 48 //led4.write(led_dimm);
zef 8:5bcb48a04554 49
zef 8:5bcb48a04554 50 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CHANGED);
zef 8:5bcb48a04554 51 sn_nsdl_send_coap_message(address, coap_res_ptr);
zef 8:5bcb48a04554 52 }
zef 8:5bcb48a04554 53
zef 8:5bcb48a04554 54 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
zef 8:5bcb48a04554 55 return 0;
zef 8:5bcb48a04554 56 }
zef 8:5bcb48a04554 57
zef 8:5bcb48a04554 58 int create_light_resource(sn_nsdl_resource_info_s *resource_ptr)
zef 8:5bcb48a04554 59 {
zef 8:5bcb48a04554 60 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));
zef 8:5bcb48a04554 61 return 0;
zef 8:5bcb48a04554 62 }