120 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			120 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | #! /usr/bin/bash | ||
|  | 
 | ||
|  | # Set up help text | ||
|  | command_name=$(basename $0) | ||
|  | help_text="${command_name}: GDP Win 3 TDP management script | ||
|  | 
 | ||
|  | This script checks and sets the TDP using intel_rapl | ||
|  | 
 | ||
|  | Usage: | ||
|  |   ${command_name} COMMAND [ARGUMENTS] | ||
|  | 
 | ||
|  | Command: | ||
|  |   check [ARG]      Checks current TDP and prints it in watts | ||
|  |   set WATT         Setts TDP to the requested number in watts | ||
|  |   help             Prints this help text | ||
|  |   COMMAND help     Prints help for specified command" | ||
|  | 
 | ||
|  | check_help_text="${command_name} check [ARG] | ||
|  | 
 | ||
|  | Example: | ||
|  |   ${command_name} check --detail | ||
|  | 
 | ||
|  | Arguments: | ||
|  |   --detail, -d     Prints PL2 as well as PL1 | ||
|  |   --help           Prints this help text" | ||
|  | 
 | ||
|  | set_help_text="${command_name} set WATT | ||
|  | 
 | ||
|  | Example: | ||
|  |   ${command_name} set 15 | ||
|  | 
 | ||
|  | Arguments: | ||
|  |   --help           Prints this help text" | ||
|  | 
 | ||
|  | print_help () { | ||
|  |   case $1 in | ||
|  |     "check") | ||
|  |       echo "$check_help_text" | ||
|  |       ;; | ||
|  |     "set") | ||
|  |       echo "$set_help_text" | ||
|  |       ;; | ||
|  |     *) | ||
|  |       echo "$help_text" | ||
|  |       ;; | ||
|  |   esac | ||
|  | } | ||
|  | 
 | ||
|  | print_unknown () { | ||
|  |   echo "Unknown command or incorrect arguments. | ||
|  |   Try \"${command_name} help\" or \"${command_name} COMMAND --help\"" | ||
|  | } | ||
|  | # End of help text | ||
|  | 
 | ||
|  | # Retrieves current TDP and prints it | ||
|  | check_tdp () { | ||
|  |   if [ "$1" == "--detail" ] || [ "$1" == "-d" ]; then | ||
|  |       echo "Placeholder" | ||
|  |       echo "Extra placeholder" | ||
|  | 
 | ||
|  |   elif [ -z "$1" ]; then | ||
|  |       echo "Placeholder" | ||
|  | 
 | ||
|  |   elif [ "$1" == "--help" ]; then | ||
|  |     print_help "check" | ||
|  | 
 | ||
|  |   else | ||
|  |     print_unknown | ||
|  |   fi | ||
|  | } | ||
|  | 
 | ||
|  | # Sets TDP to number provided as first argument | ||
|  | set_tdp () { | ||
|  |   if [ -z "$1" ]; then | ||
|  |     print_unknown | ||
|  |     exit | ||
|  |   elif [ "$1" == "--help" ]; then | ||
|  |     print_help "set" | ||
|  |     exit | ||
|  |   fi | ||
|  | 
 | ||
|  |   if ! [[ $1 =~ ^-?[0-9]+$ ]]; then | ||
|  |     echo "TDP must be a plain number!)" | ||
|  |   elif [[ ! "$@" == *"--force"* ]] || [ $1 -lt 8 ] || [ $1 -gt 28 ]; then | ||
|  |     echo "TDP too high or low, should be between 8W and 28W" | ||
|  |   else | ||
|  |     #PL1 | ||
|  |     local watts=$1 | ||
|  |     local uwatts=$(expr $watts '*' 1000000) | ||
|  | 
 | ||
|  |     #PL2 | ||
|  |     local watts2=$(expr $watts + 2) | ||
|  |     local uwatts2=$(expr $watts2 '*' 1000000) | ||
|  | 
 | ||
|  |     echo $uwatts | ||
|  |     echo "PL1 is now ${watts}W (Long-term)" | ||
|  |     echo "PL2 is now ${watts2}W (Short-term)" | ||
|  |   fi | ||
|  | } | ||
|  | 
 | ||
|  | # Command handler | ||
|  | case $1 in | ||
|  | 
 | ||
|  |   "check") | ||
|  |     check_tdp "${@:2}" | ||
|  |     ;; | ||
|  | 
 | ||
|  |   "set") | ||
|  |     set_tdp "${@:2}" | ||
|  |     ;; | ||
|  | 
 | ||
|  |   "help") | ||
|  |     print_help | ||
|  |     ;; | ||
|  | 
 | ||
|  |   *) | ||
|  |     print_unknown | ||
|  |     ;; | ||
|  | esac |