introduce new api-call for dimmer-devices

This commit is contained in:
Joel Stein 2018-12-17 17:34:55 +01:00
parent a76ae557f0
commit b2005fba40
5 changed files with 36 additions and 19 deletions

View File

@ -245,7 +245,7 @@ enum XsnsFunctions {FUNC_SETTINGS_OVERRIDE, FUNC_MODULE_INIT, FUNC_PRE_INIT, FUN
FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA,
FUNC_SET_POWER, FUNC_SET_DEVICE_POWER, FUNC_SHOW_SENSOR, FUNC_SET_POWER, FUNC_SET_DEVICE_POWER, FUNC_SHOW_SENSOR,
FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED, FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED,
FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON, FUNC_WEB_ADD_HANDLER}; FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON, FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS};
enum CommandSource { SRC_IGNORE, SRC_MQTT, SRC_RESTART, SRC_BUTTON, SRC_SWITCH, SRC_BACKLOG, SRC_SERIAL, SRC_WEBGUI, SRC_WEBCOMMAND, SRC_WEBCONSOLE, SRC_PULSETIMER, enum CommandSource { SRC_IGNORE, SRC_MQTT, SRC_RESTART, SRC_BUTTON, SRC_SWITCH, SRC_BACKLOG, SRC_SERIAL, SRC_WEBGUI, SRC_WEBCOMMAND, SRC_WEBCONSOLE, SRC_PULSETIMER,
SRC_TIMER, SRC_RULE, SRC_MAXPOWER, SRC_MAXENERGY, SRC_LIGHT, SRC_KNX, SRC_DISPLAY, SRC_WEMO, SRC_HUE, SRC_RETRY, SRC_MAX }; SRC_TIMER, SRC_RULE, SRC_MAXPOWER, SRC_MAXENERGY, SRC_LIGHT, SRC_KNX, SRC_DISPLAY, SRC_WEMO, SRC_HUE, SRC_RETRY, SRC_MAX };

View File

@ -828,30 +828,20 @@ void LightAnimate(void)
} }
} }
} }
XdrvMailbox.index = light_device;
XdrvMailbox.data = (char*)cur_col;
XdrvMailbox.data_len = sizeof(cur_col);
if (XdrvCall(FUNC_SET_CHANNELS)) {
// Serviced
}
#ifdef USE_WS2812 // ************************************************************************ #ifdef USE_WS2812 // ************************************************************************
if (LT_WS2812 == light_type) { else if (LT_WS2812 == light_type) {
Ws2812SetColor(0, cur_col[0], cur_col[1], cur_col[2], cur_col[3]); Ws2812SetColor(0, cur_col[0], cur_col[1], cur_col[2], cur_col[3]);
} }
#endif // USE_ES2812 ************************************************************************ #endif // USE_ES2812 ************************************************************************
if (light_type > LT_WS2812) { else if (light_type > LT_WS2812) {
LightMy92x1Duty(cur_col[0], cur_col[1], cur_col[2], cur_col[3], cur_col[4]); LightMy92x1Duty(cur_col[0], cur_col[1], cur_col[2], cur_col[3], cur_col[4]);
} }
#ifdef USE_TUYA_DIMMER
if (light_type == LT_SERIAL1 && Settings.module == TUYA_DIMMER ) {
LightSerialDuty(cur_col[0]);
}
#endif // USE_TUYA_DIMMER
#ifdef USE_ARMTRONIX_DIMMERS
if (light_type == LT_SERIAL2) {
LightSerial2Duty(cur_col[0],cur_col[1]);
}
#endif // USE_ARMTRONIX_DIMMERS
#ifdef USE_PS_16_DZ
if (light_type == LT_SERIAL1 && Settings.module == PS_16_DZ) {
PS16DZSerialDuty(cur_col[0]);
}
#endif // USE_PS_16_DZ
} }
} }
} }

View File

@ -133,6 +133,12 @@ boolean TuyaSetPower(void)
return status; return status;
} }
boolean TuyaSetChannels(void)
{
LightSerialDuty(((uint8_t*)XdrvMailbox.data)[0]);
return true;
}
void LightSerialDuty(uint8_t duty) void LightSerialDuty(uint8_t duty)
{ {
if (duty > 0 && !tuya_ignore_dim && TuyaSerial) { if (duty > 0 && !tuya_ignore_dim && TuyaSerial) {
@ -416,6 +422,9 @@ boolean Xdrv16(byte function)
case FUNC_EVERY_SECOND: case FUNC_EVERY_SECOND:
if(TuyaSerial && tuya_wifi_state!=WifiState()) { TuyaSetWifiLed(); } if(TuyaSerial && tuya_wifi_state!=WifiState()) { TuyaSetWifiLed(); }
break; break;
case FUNC_SET_CHANNELS:
result = TuyaSetChannels();
break;
} }
} }
return result; return result;

View File

@ -40,6 +40,12 @@ int8_t armtronix_knobState[2]; // Dimmer state values.
* Internal Functions * Internal Functions
\*********************************************************************************************/ \*********************************************************************************************/
boolean ArmtronixSetChannels(void)
{
LightSerial2Duty(((uint8_t*)XdrvMailbox.data)[0], ((uint8_t*)XdrvMailbox.data)[1]);
return true;
}
void LightSerial2Duty(uint8_t duty1, uint8_t duty2) void LightSerial2Duty(uint8_t duty1, uint8_t duty2)
{ {
if (ArmtronixSerial && !armtronix_ignore_dim) { if (ArmtronixSerial && !armtronix_ignore_dim) {
@ -186,6 +192,9 @@ boolean Xdrv18(byte function)
} }
} }
break; break;
case FUNC_SET_CHANNELS:
result = ArmtronixSetChannels();
break;
} }
} }
return result; return result;

View File

@ -91,6 +91,12 @@ boolean PS16DZSetPower(void)
return status; return status;
} }
boolean PS16DZSetChannels(void)
{
PS16DZSerialDuty(((uint8_t*)XdrvMailbox.data)[0]);
return true;
}
void PS16DZSerialDuty(uint8_t duty) void PS16DZSerialDuty(uint8_t duty)
{ {
if (duty > 0 && !ps16dz_ignore_dim && PS16DZSerial) { if (duty > 0 && !ps16dz_ignore_dim && PS16DZSerial) {
@ -236,6 +242,9 @@ boolean Xdrv19(byte function)
case FUNC_SET_DEVICE_POWER: case FUNC_SET_DEVICE_POWER:
result = PS16DZSetPower(); result = PS16DZSetPower();
break; break;
case FUNC_SET_CHANNELS:
result = PS16DZSetChannels();
break;
} }
} }
return result; return result;