Report FPGA temperature
This commit is contained in:
		
							parent
							
								
									ddbeb20633
								
							
						
					
					
						commit
						3eecc2cd6c
					
				|  | @ -403,6 +403,40 @@ bool run_calibration_script() | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* ********  Temperature  ******** */ | ||||
| 
 | ||||
| /** Read FPGA temperature. */ | ||||
| bool read_fpga_temperature(double& temp) | ||||
| { | ||||
|     const std::string xadc_dir = | ||||
|         "/sys/devices/soc0/axi/f8007100.adc/iio:device0"; | ||||
| 
 | ||||
|     std::ifstream is(xadc_dir + "/in_temp0_raw"); | ||||
|     double temp_raw; | ||||
|     is >> temp_raw; | ||||
|     if (!is) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     is = std::ifstream(xadc_dir + "/in_temp0_offset"); | ||||
|     double temp_offset; | ||||
|     is >> temp_offset; | ||||
|     if (!is) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     is = std::ifstream(xadc_dir + "/in_temp0_scale"); | ||||
|     double temp_scale; | ||||
|     is >> temp_scale; | ||||
|     if (!is) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     temp = (temp_raw + temp_offset) * temp_scale / 1000.0; | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* ********  class CommandHandler  ******** */ | ||||
| 
 | ||||
| // Forward declaration.
 | ||||
|  | @ -902,6 +936,16 @@ private: | |||
|         return "ERROR Unconfigured"; | ||||
|     } | ||||
| 
 | ||||
|     /** Handle command TEMP:FPGA? */ | ||||
|     std::string qry_temp_fpga(CommandEnvironment env) | ||||
|     { | ||||
|         double temp; | ||||
|         if (! read_fpga_temperature(temp)) { | ||||
|             return "ERROR Reading temperature failed"; | ||||
|         } | ||||
|         return str_format("%.1f", temp); | ||||
|     } | ||||
| 
 | ||||
|     /** Handle command RESET */ | ||||
|     std::string cmd_reset(CommandEnvironment env) | ||||
|     { | ||||
|  | @ -1331,6 +1375,7 @@ private: | |||
|         { "tt:event:mask?",         &CommandHandler::qry_tt_event_mask }, | ||||
|         { "ipcfg?",                 &CommandHandler::qry_ipcfg }, | ||||
|         { "ipcfg:saved?",           &CommandHandler::qry_ipcfg }, | ||||
|         { "temp:fpga?",             &CommandHandler::qry_temp_fpga }, | ||||
|         { "reset",                  &CommandHandler::cmd_reset }, | ||||
|         { "halt",                   &CommandHandler::cmd_halt }, | ||||
|         { "reboot",                 &CommandHandler::cmd_reboot }, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue