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
810static void * tp1801_gui_lib = NULL ;
911static uint32_t (* setChannelPilotOriginal )(void * this ,unsigned short param_1 , bool param_2 ) = 0 ;
1012static uint32_t (* userSettingsGetInstanceOriginal )() = 0 ;
1113static uint32_t userSettingsInstance = 0 ;
14+ static __gs_gui_config * gs_gui_config = 0 ;
1215static 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