Skip to content

Commit 5158e10

Browse files
author
Jesus Lopez Garcia
committed
Adding public channel selection - COMMIT FAILING
1 parent f295a42 commit 5158e10

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

jni/util/vtx_manager.c

+26-9
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,19 @@
22
#include <dlfcn.h>
33
#include "json/osd_config.h"
44
#include "util/debug.h"
5+
//#include "../rec/rec_shim.h"
56

67
#define VTX_MPS_CONFIG_KEY "vtx_msp"
8+
#define CHANNEL_PUBLIC 8
79

810
static void *tp1801_gui_lib = NULL;
911
static uint32_t (* setChannelPilotOriginal)(void *this,unsigned short param_1, bool param_2) = 0;
1012
static uint32_t (* userSettingsGetInstanceOriginal)() = 0;
1113
static uint32_t userSettingsInstance = 0;
14+
static __gs_gui_config *gs_gui_config = 0;
1215
static int8_t currentChannel = -1;
1316

14-
void changeChannel(int8_t channel) {
15-
if(!get_boolean_config_value(VTX_MPS_CONFIG_KEY)) {
16-
return;
17-
}
18-
17+
void setupManager() {
1918
//Load SetPilotChannel original
2019
setChannelPilotOriginal = dlsym (RTLD_NEXT, "_ZN17GlassUserSettings15setPilotChannelEtb");
2120
if (setChannelPilotOriginal == NULL) {
@@ -38,6 +37,21 @@ void changeChannel(int8_t channel) {
3837
return;
3938
}
4039

40+
userSettingsInstance = userSettingsGetInstanceOriginal();
41+
if(userSettingsInstance == NULL) {
42+
printf("dlsym: error loading user setting instance");
43+
return;
44+
}
45+
gs_gui_config = (__gs_gui_config *)*(uint32_t *)((int)userSettingsInstance + 0xe4);
46+
}
47+
48+
void changeChannel(int8_t channel) {
49+
if(!get_boolean_config_value(VTX_MPS_CONFIG_KEY)) {
50+
return;
51+
}
52+
53+
setupManager();
54+
4155
if (channel <= 0 || channel > 8) {
4256
printf("VTX_MANAGER Error:, invalid channel index: %d\n", channel);
4357
return;
@@ -48,9 +62,12 @@ void changeChannel(int8_t channel) {
4862
}
4963
currentChannel = channel;
5064

51-
// if 8, need to set to public
5265
DEBUG_PRINT("VTX_MANAGER: requesting to the goggles to set channel %d\n", channel);
53-
54-
int8_t channelIdx = channel - 1;
55-
setChannelPilotOriginal(userSettingsGetInstanceOriginal(), channelIdx, true);
66+
67+
if(channel == CHANNEL_PUBLIC){
68+
gs_gui_config->gs_modem_set_public_chnl(gs_gui_config->gs_info);
69+
} else {
70+
int8_t channelIdx = channel - 1;
71+
setChannelPilotOriginal(userSettingsGetInstanceOriginal(), channelIdx, true);
72+
}
5673
}

0 commit comments

Comments
 (0)