|
@ -0,0 +1,99 @@ |
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
|
|
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 _lightfoxWebSocketOnSend(JsonObject& root) { |
|
|
|
|
|
root["lightfoxVisible"] = 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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() { |
|
|
|
|
|
|
|
|
|
|
|
settingsRegisterCommand(F("LIGHTFOX.LEARN"), [](Embedis* e) { |
|
|
|
|
|
lightfoxLearn(); |
|
|
|
|
|
DEBUG_MSG_P(PSTR("+OK\n")); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
settingsRegisterCommand(F("LIGHTFOX.CLEAR"), [](Embedis* e) { |
|
|
|
|
|
lightfoxClear(); |
|
|
|
|
|
DEBUG_MSG_P(PSTR("+OK\n")); |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
|
|
// SETUP & LOOP
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
void lightfoxSetup() { |
|
|
|
|
|
|
|
|
|
|
|
#if WEB_SUPPORT
|
|
|
|
|
|
wsOnSendRegister(_lightfoxWebSocketOnSend); |
|
|
|
|
|
wsOnActionRegister(_lightfoxWebSocketOnAction); |
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if TERMINAL_SUPPORT
|
|
|
|
|
|
_lightfoxInitCommands(); |
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#endif
|