| #include "bruno/basictypes.h" |
| #include "bruno/criticalsection.h" |
| #include "bruno/logging.h" |
| #include "bruno/flags.h" |
| #include "bruno/scoped_ptr.h" |
| #include "platform_peripheral_api.h" |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <unistd.h> |
| #include <iostream> |
| #include <fstream> |
| #include <string> |
| #include <sstream> |
| #include "mailbox.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| int main(int argc, char** argv) { |
| DEFINE_int(interval, 5, "Monitor interval in second"); |
| DEFINE_int(count, 10, "Repeat times"); |
| DEFINE_bool(debug, false, "Enable debug log"); |
| DEFINE_bool(help, false, "Prints this message"); |
| DEFINE_bool(fan_speed, false, "Get fan speed"); |
| DEFINE_bool(cpu_temperature, false, "Get cpu temperature"); |
| DEFINE_bool(cpu_voltage, false, "Get cpu voltage"); |
| DEFINE_int(fan_percent, 60, "fan PWM (0 - 100)"); |
| |
| // parse options |
| if (0 != FlagList::SetFlagsFromCommandLine(&argc, argv, true)) { |
| FlagList::Print(NULL, false); |
| return 0; |
| } |
| |
| if (FLAG_help) { |
| FlagList::Print(NULL, false); |
| return 0; |
| } |
| |
| if (FLAG_debug) { |
| bruno_base::LogMessage::LogToDebug(bruno_base::LS_VERBOSE); |
| } else { |
| bruno_base::LogMessage::LogToDebug(bruno_base::LS_INFO); |
| } |
| |
| LOG(LS_INFO) << "interval= " << FLAG_interval << std::endl; |
| |
| bruno_platform_peripheral::Mailbox mail_box; |
| float soc_temperature; |
| std::string str_value; |
| uint16_t fan_dutycycle = 0; |
| uint16_t fan_percent = static_cast<uint16_t>(FLAG_fan_percent); |
| uint16_t fan_speed; |
| bool rtn; |
| |
| for (int i=0; i<FLAG_count; ++i) { |
| LOG(LS_INFO) << "i=" << i ; |
| |
| if (FLAG_fan_speed == true) { |
| if (mail_box.ReadFanSpeed(&fan_speed) == true) { |
| LOG(LS_INFO) << " fan_speed=" << fan_speed; |
| } |
| } |
| |
| if (FLAG_cpu_temperature == true) { |
| rtn = mail_box.ReadSocTemperature(&soc_temperature); |
| if (rtn == true) { |
| LOG(LS_INFO) << " cpu_temperature= float-" << soc_temperature; |
| } |
| } |
| |
| if (FLAG_cpu_voltage == true) { |
| if (mail_box.ReadSocVoltage(&str_value) == true) { |
| LOG(LS_INFO) << " cpu_voltage=" << str_value; |
| } |
| } |
| |
| rtn = mail_box.WriteFanDutyCycle(fan_percent); |
| if (rtn == true) { |
| fan_dutycycle = 0; |
| mail_box.ReadFanDutyCycle(&fan_dutycycle); |
| LOG(LS_INFO) << " fan_percent=" << fan_dutycycle; |
| } |
| LOG(LS_INFO) << std::endl; |
| |
| sleep(FLAG_interval); |
| } |
| |
| return 0; |
| } |
| |
| |
| #ifdef __cplusplus |
| } // extern "C" { |
| #endif |