|
|
- /*
-
- LightFox module
-
- Copyright (C) 2019 by Andrey F. Kupreychik <foxle@quickfox.ru>
-
- */
-
- #ifdef FOXEL_LIGHTFOX_DUAL
-
- // -----------------------------------------------------------------------------
- // DEFINITIONS
- // -----------------------------------------------------------------------------
-
- #define LIGHTFOX_CODE_START 0xA0
- #define LIGHTFOX_CODE_LEARN 0xF1
- #define LIGHTFOX_CODE_CLEAR 0xF2
- #define LIGHTFOX_CODE_STOP 0xA1
-
- // -----------------------------------------------------------------------------
- // PUBLIC
- // -----------------------------------------------------------------------------
-
- void lightfoxLearn() {
- Serial.write(LIGHTFOX_CODE_START);
- Serial.write(LIGHTFOX_CODE_LEARN);
- Serial.write(0x00);
- Serial.write(LIGHTFOX_CODE_STOP);
- Serial.println();
- Serial.flush();
- DEBUG_MSG_P(PSTR("[LIGHTFOX] Learn comman sent\n"));
- }
-
- void lightfoxClear() {
- Serial.write(LIGHTFOX_CODE_START);
- Serial.write(LIGHTFOX_CODE_CLEAR);
- Serial.write(0x00);
- Serial.write(LIGHTFOX_CODE_STOP);
- Serial.println();
- Serial.flush();
- DEBUG_MSG_P(PSTR("[LIGHTFOX] Clear comman sent\n"));
- }
-
- // -----------------------------------------------------------------------------
- // WEB
- // -----------------------------------------------------------------------------
-
- #if WEB_SUPPORT
-
- void _lightfoxWebSocketOnConnected(JsonObject& root) {
- root["lightfoxVisible"] = 1;
- uint8_t buttonsCount = _buttons.size();
- root["lightfoxRelayCount"] = relayCount();
- JsonArray& rfb = root.createNestedArray("lightfoxButtons");
- for (byte id=0; id<buttonsCount; id++) {
- JsonObject& node = rfb.createNestedObject();
- node["id"] = id;
- node["relay"] = getSetting("btnRelay", id, "0");
- }
- }
-
- void _lightfoxWebSocketOnAction(uint32_t client_id, const char * action, JsonObject& data) {
- if (strcmp(action, "lightfoxLearn") == 0) lightfoxLearn();
- if (strcmp(action, "lightfoxClear") == 0) lightfoxClear();
- }
-
- #endif
-
- // -----------------------------------------------------------------------------
- // TERMINAL
- // -----------------------------------------------------------------------------
-
- #if TERMINAL_SUPPORT
-
- void _lightfoxInitCommands() {
-
- terminalRegisterCommand(F("LIGHTFOX.LEARN"), [](Embedis* e) {
- lightfoxLearn();
- DEBUG_MSG_P(PSTR("+OK\n"));
- });
-
- terminalRegisterCommand(F("LIGHTFOX.CLEAR"), [](Embedis* e) {
- lightfoxClear();
- DEBUG_MSG_P(PSTR("+OK\n"));
- });
- }
-
- #endif
-
- // -----------------------------------------------------------------------------
- // SETUP & LOOP
- // -----------------------------------------------------------------------------
-
- void lightfoxSetup() {
-
- #if WEB_SUPPORT
- wsRegister()
- .onConnected(_lightfoxWebSocketOnConnected)
- .onAction(_lightfoxWebSocketOnAction);
- #endif
-
- #if TERMINAL_SUPPORT
- _lightfoxInitCommands();
- #endif
-
- }
-
- #endif
|