From becbbac2cb57439f7b4390a0320b9fa79e9b6121 Mon Sep 17 00:00:00 2001 From: CamGenius Date: Wed, 30 Nov 2022 03:36:58 -0700 Subject: [PATCH] feat(lua): Add `getTrainerStatus` to Lua API (#2483) * Initial Commit * Finished Trainer Status * fix: Bump version number Co-authored-by: Peter Feerick --- radio/src/audio.cpp | 1 + radio/src/audio.h | 1 + radio/src/lua/api_general.cpp | 19 +++++++++++++++++++ radio/src/opentx.h | 1 + radio/src/trainer.cpp | 12 ++++++++++++ 5 files changed, 34 insertions(+) diff --git a/radio/src/audio.cpp b/radio/src/audio.cpp index 053f35e61..97ddaa179 100644 --- a/radio/src/audio.cpp +++ b/radio/src/audio.cpp @@ -191,6 +191,7 @@ const char * const audioFilenames[] = { "swr_red", "telemko", "telemok", + "trainco", "trainko", "trainok", "sensorko", diff --git a/radio/src/audio.h b/radio/src/audio.h index 52a597ffa..551c2ad88 100644 --- a/radio/src/audio.h +++ b/radio/src/audio.h @@ -589,6 +589,7 @@ void audioTimerCountdown(uint8_t timer, int value); #define AUDIO_RAS_RED() audioEvent(AU_RAS_RED) #define AUDIO_TELEMETRY_LOST() audioEvent(AU_TELEMETRY_LOST) #define AUDIO_TELEMETRY_BACK() audioEvent(AU_TELEMETRY_BACK) +#define AUDIO_TRAINER_CONNECTED() audioEvent(AU_TRAINER_CONNECTED) #define AUDIO_TRAINER_LOST() audioEvent(AU_TRAINER_LOST) #define AUDIO_TRAINER_BACK() audioEvent(AU_TRAINER_BACK) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index d2231f3b6..5c2afa2b6 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -2595,6 +2595,24 @@ static int luaGetOutputValue(lua_State * L) return 1; } +/*luadoc +@function getTrainerStatus() + +@retval value current output value (number). + 0 - Not Connected + 1 - Connected + 2 - Disconnected + 3 - Reconnected + +@status current Introduced in 2.9.0 +*/ +static int luaGetTrainerStatus(lua_State * L) +{ + extern uint8_t trainerStatus; + lua_pushinteger(L, trainerStatus); + return 1; +} + const luaL_Reg opentxLib[] = { { "getTime", luaGetTime }, { "getDateTime", luaGetDateTime }, @@ -2609,6 +2627,7 @@ const luaL_Reg opentxLib[] = { { "getValue", luaGetValue }, { "getOutputValue", luaGetOutputValue }, { "getSourceValue", luaGetSourceValue }, + { "getTrainerStatus", luaGetTrainerStatus }, { "getRAS", luaGetRAS }, { "getTxGPS", luaGetTxGPS }, { "getFieldInfo", luaGetFieldInfo }, diff --git a/radio/src/opentx.h b/radio/src/opentx.h index b86dfdad2..d1ccbf509 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -787,6 +787,7 @@ enum AUDIO_SOUNDS { AU_RAS_RED, AU_TELEMETRY_LOST, AU_TELEMETRY_BACK, + AU_TRAINER_CONNECTED, AU_TRAINER_LOST, AU_TRAINER_BACK, AU_SENSOR_LOST, diff --git a/radio/src/trainer.cpp b/radio/src/trainer.cpp index 632b1f183..0730dab8c 100644 --- a/radio/src/trainer.cpp +++ b/radio/src/trainer.cpp @@ -27,6 +27,14 @@ int16_t ppmInput[MAX_TRAINER_CHANNELS]; uint8_t ppmInputValidityTimer; uint8_t currentTrainerMode = 0xff; +enum { + TRAINER_NOT_CONNECTED = 0, + TRAINER_CONNECTED, + TRAINER_DISCONNECTED, + TRAINER_RECONNECTED +}; +uint8_t trainerStatus = TRAINER_NOT_CONNECTED; + void checkTrainerSignalWarning() { enum { @@ -39,13 +47,17 @@ void checkTrainerSignalWarning() if (ppmInputValidityTimer && (ppmInputValidState == PPM_IN_IS_NOT_USED)) { ppmInputValidState = PPM_IN_IS_VALID; + trainerStatus = TRAINER_CONNECTED; + AUDIO_TRAINER_CONNECTED(); } else if (!ppmInputValidityTimer && (ppmInputValidState == PPM_IN_IS_VALID)) { ppmInputValidState = PPM_IN_INVALID; + trainerStatus = TRAINER_DISCONNECTED; AUDIO_TRAINER_LOST(); } else if (ppmInputValidityTimer && (ppmInputValidState == PPM_IN_INVALID)) { ppmInputValidState = PPM_IN_IS_VALID; + trainerStatus = TRAINER_RECONNECTED; AUDIO_TRAINER_BACK(); } }