#ifndef _BULBLD_DEF_H_ #define _BULBLD_DEF_H_ #include "stdint.h" #define V2_PACKET_LEN 9 #define V2_PROTOCOL_ID_INDEX 1 #define V2_ID_HI_INDEX 2 #define V2_ID_LOW_INDEX 3 #define V2_COMMAND_INDEX 4 #define V2_ARGUMENT_INDEX 5 #define V2_GRP_INDEX 7 #define FUT089_COLOR_OFFSET 0 enum MiLightFUT089Command { FUT089_ON = 0x01, FUT089_OFF = 0x01, FUT089_COLOR = 0x02, FUT089_BRIGHTNESS = 0x05, FUT089_MODE = 0x06, FUT089_KELVIN = 0x07, // Controls Kelvin when in White mode FUT089_SATURATION = 0x07 // Controls Saturation when in Color mode }; enum MiLightFUT089Arguments { FUT089_MODE_SPEED_UP = 0x12, FUT089_MODE_SPEED_DOWN = 0x13, FUT089_WHITE_MODE = 0x14 }; enum MiLightRemoteType { REMOTE_TYPE_UNKNOWN = 255, REMOTE_TYPE_RGBW = 0, REMOTE_TYPE_CCT = 1, REMOTE_TYPE_RGB_CCT = 2, REMOTE_TYPE_RGB = 3, REMOTE_TYPE_FUT089 = 4, REMOTE_TYPE_FUT091 = 5, REMOTE_TYPE_FUT020 = 6 }; // MiLight CCT bulbs range from 2700K-6500K, or ~370.3-153.8 mireds. #define COLOR_TEMP_MAX_MIREDS 370 #define COLOR_TEMP_MIN_MIREDS 153 enum BulbMode { BULB_MODE_WHITE, BULB_MODE_COLOR, BULB_MODE_SCENE, BULB_MODE_NIGHT }; enum IncDIR{ INCREASE = 1, DECREASE = -1U }; enum eCommands { UNPAIR , PAIR , SET_WHITE , NIGHT_MODE , LEVEL_UP , LEVEL_DOWN , TEMPERATURE_UP , TEMPERATURE_DOWN, NEXT_MODE , PREVIOUS_MODE , MODE_SPEED_DOWN , MODE_SPEED_UP , TOGGLE , TRANSITION }; enum LEDState { OFF = 0, ON }; struct Result { uint8_t button_id ; uint8_t argument ; uint8_t STATE ; uint8_t STATUS ; uint8_t BRIGHTNESS ; uint8_t LEVEL ; uint8_t HUE ; uint8_t SATURATION ; uint8_t COLOR ; uint8_t MODE ; uint8_t KELVIN ; uint8_t TEMPERATURE ; uint8_t COLOR_TEMP ; uint8_t BULB_MODE ; uint8_t COMPUTED_COLOR ; uint8_t EFFECT ; uint8_t DEVICE_ID ; uint8_t GROUP_ID ; uint8_t DEVICE_TYPE ; uint8_t OH_COLOR ; uint8_t HEX_COLOR ; uint8_t COMMAND ; uint8_t COMMANDS ; uint8_t COLOR_MODE ; }; struct BulbId { enum MiLightRemoteType deviceType; uint8_t groupId; uint16_t deviceId; uint16_t PWM_Value[5]; uint8_t bENPWM :1; uint8_t bInit :1; uint8_t repeatCnt; struct Result result; }; #endif