# pragma once
# include <cstdlib>
# include <fstream>
# include <gui/ISurfaceComposer.h>
# include <gui/SurfaceComposerClient.h>
# include <hardware/hwcomposer_defs.h>
# include "selfdrive/common/util.h"
# include "selfdrive/hardware/base.h"
class HardwareEon : public HardwareNone {
public :
static constexpr float MAX_VOLUME = 1.0 ;
static constexpr float MIN_VOLUME = 0.5 ;
static bool EON ( ) { return true ; }
static std : : string get_os_version ( ) {
return " NEOS " + util : : read_file ( " /VERSION " ) ;
} ;
static void reboot ( ) { std : : system ( " reboot " ) ; } ;
static void poweroff ( ) { std : : system ( " LD_LIBRARY_PATH= svc power shutdown " ) ; } ;
static void set_brightness ( int percent ) {
std : : ofstream brightness_control ( " /sys/class/leds/lcd-backlight/brightness " ) ;
if ( brightness_control . is_open ( ) ) {
brightness_control < < ( int ) ( percent * ( 255 / 100. ) ) < < " \n " ;
brightness_control . close ( ) ;
}
} ;
static void set_display_power ( bool on ) {
auto dtoken = android : : SurfaceComposerClient : : getBuiltInDisplay ( android : : ISurfaceComposer : : eDisplayIdMain ) ;
android : : SurfaceComposerClient : : setDisplayPowerMode ( dtoken , on ? HWC_POWER_MODE_NORMAL : HWC_POWER_MODE_OFF ) ;
} ;
static bool get_ssh_enabled ( ) {
return std : : system ( " getprop persist.neos.ssh | grep -qF '1' " ) = = 0 ;
} ;
static void set_ssh_enabled ( bool enabled ) {
std : : string cmd = util : : string_format ( " setprop persist.neos.ssh %d " , enabled ? 1 : 0 ) ;
std : : system ( cmd . c_str ( ) ) ;
} ;
// android only
inline static bool launched_activity = false ;
static void check_activity ( ) {
int ret = std : : system ( " dumpsys SurfaceFlinger --list | grep -Fq 'com.android.settings' " ) ;
launched_activity = ret = = 0 ;
}
static void close_activities ( ) {
if ( launched_activity ) {
std : : system ( " pm disable com.android.settings && pm enable com.android.settings " ) ;
}
}
static void launch_activity ( std : : string activity , std : : string opts = " " ) {
if ( ! launched_activity ) {
std : : string cmd = " am start -n " + activity + " " + opts +
" --ez extra_prefs_show_button_bar true \
- - es extra_prefs_set_next_text ' ' " ;
std : : system ( cmd . c_str ( ) ) ;
}
launched_activity = true ;
}
static void launch_wifi ( ) {
launch_activity ( " com.android.settings/.wifi.WifiPickerActivity " , " -a android.net.wifi.PICK_WIFI_NETWORK " ) ;
}
static void launch_tethering ( ) {
launch_activity ( " com.android.settings/.TetherSettings " ) ;
}
} ;