123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- /**
- * \file model_state_handler_pl.c
- *
- *
- */
- /*
- * Copyright (C) 2013. Mindtree Limited.
- * All rights reserved.
- */
- /* --------------------------------------------- Header File Inclusion */
- #include "model_state_handler_pl.h"
- #include "led_light.h"
- /* --------------------------------------------- External Global Variables */
- /* --------------------------------------------- Exported Global Variables */
- /* --------------------------------------------- Static Global Variables */
- /* --------------------------------------------- Functions */
- void mesh_model_platform_init_pl(void)
- {
- /* Map Platform related initializations of GPIOs/LEDs etc here */
- }
- void mesh_model_device_bootup_ind_pl(void)
- {
- /* LED ON/OFF for BOOT UP Indication to be mapped here */
- }
- void mesh_model_device_provisioned_ind_pl(void)
- {
- /* LED ON/OFF for Provisioning Indication to be mapped here */
- }
- void generic_onoff_set_pl (UINT8 state)
- {
- /* LED ON/OFF for GENERIC ONOFF to be mapped here */
- if (state)
- {
- light_ctrl(LIGHT_RED , LIGHT_TOP_VALUE-1);
- light_ctrl(LIGHT_GREEN , LIGHT_TOP_VALUE-1);
- light_ctrl(LIGHT_BLUE , LIGHT_TOP_VALUE-1);
- }
- else
- {
- light_ctrl(LIGHT_RED , 0);
- light_ctrl(LIGHT_GREEN , 0);
- light_ctrl(LIGHT_BLUE , 0);
- }
- }
- void vendor_mode_mainlight_onoff_set_pl (UINT8 state)
- {
- /* LED ON/OFF for vendor model mainlight ONOFF to be mapped here */
- if (state)
- {
- light_ctrl(LIGHT_GREEN , LIGHT_TOP_VALUE-1);
- }
- else
- {
- light_ctrl(LIGHT_GREEN , 0);
- }
- }
- void vendor_mode_backlight_onoff_set_pl (UINT8 state)
- {
- /* LED ON/OFF for vendor model backlight ONOFF to be mapped here */
- if (state)
- {
- light_ctrl(LIGHT_RED , LIGHT_TOP_VALUE-1);
- }
- else
- {
- light_ctrl(LIGHT_RED , 0);
- }
- }
- void light_lightness_set_pl (uint16_t ligtnessValue)
- {
- light_ctrl(LIGHT_RED , ligtnessValue>>10);
- light_ctrl(LIGHT_GREEN , ligtnessValue>>10);
- light_ctrl(LIGHT_BLUE , ligtnessValue>>10);
- }
- void light_ctl_set_pl (uint16_t ctlValue,uint16_t dltUV)
- {
- if(ctlValue<6600)
- {
- light_ctrl(LIGHT_RED , 255);
- }
- else
- {
- light_ctrl(LIGHT_RED , 255-(ctlValue-6600)*(255-160)/(20000-6600));
- }
- if(ctlValue<6600)
- {
- light_ctrl(LIGHT_GREEN , 50+200*(6600-ctlValue)/6600);
- }
- else
- {
- light_ctrl(LIGHT_GREEN , 255-(ctlValue-6600)*(255-190)/(20000-6600));
- }
- if(ctlValue<2000)
- {
- light_ctrl(LIGHT_BLUE , 0);
- }
- else if(ctlValue<6500)
- {
- light_ctrl(LIGHT_BLUE , 255*(6600-ctlValue)/(6500-2000));
- }
- else
- {
- light_ctrl(LIGHT_BLUE , 255);
- }
-
- }
- static float Hue_2_RGB( float v1, float v2, float vH ) //Function Hue_2_RGB
- {
- if ( vH < 0 ) vH += 1;
- if ( vH > 1 ) vH -= 1;
- if (( 6 * vH ) < 1 ) return ( v1 + ( v2 - v1 ) * 6 * vH );
- if (( 2 * vH ) < 1 ) return ( v2 );
- if (( 3 * vH ) < 2 ) return ( v1 + ( v2 - v1 ) * ( ( 2/3.0 ) - vH ) * 6 );
- return ( v1 );
- }
- void light_hsl_set_pl (uint16_t H_int,uint16_t S_int,uint16_t L_int)
- {
- float H = (float)H_int / 65535.0;
- float S = (float)S_int / 65535.0;
- float L = (float)L_int / 65535.0;
- float R,G,B,var_1,var_2;
- if ( S == 0 )
- {
- R = L;
- G = L;
- B = L;
- }
- else
- {
- if ( L < 0.5 )
- var_2 = L * ( 1 + S );
- else
- var_2 = ( L + S ) - ( S * L );
- var_1 = 2 * L - var_2;
- R = Hue_2_RGB( var_1, var_2, H + ( 1/3.0 ));
- G = Hue_2_RGB( var_1, var_2, H );
- B = Hue_2_RGB( var_1, var_2, H - ( 1/3.0 ));
- }
- uint16_t R_int = (uint16_t)(R*LIGHT_TURN_ON);
- uint16_t G_int = (uint16_t)(G*LIGHT_TURN_ON);
- uint16_t B_int = (uint16_t)(B*LIGHT_TURN_ON);
- // printf("[HSL_f] %f %f %f\n",R,G,B);
- // printf("[HSL_I] %02x %02x %02x\n",R_int,G_int,B_int);
- light_ctrl(LIGHT_RED, R_int);
- light_ctrl(LIGHT_GREEN, G_int);
- light_ctrl(LIGHT_BLUE, B_int);
- }
- // light_hsl_set_pl(0x5555,0xffff,0x8000); // 0x00 0xFF 0x00 Green
- // light_hsl_set_pl(0xaaaa,0xffff,0x8000); // 0x00 0x00 0xFF Blue
- // light_hsl_set_pl(0x0000,0xffff,0x8000);// 0xFF 0x00 0x00 Red
- //
|