#include #include "mcp9808.hpp" int main() { using namespace std; //! [Interesting] int command; upm::MCP9808 temp(6); do { cout << endl; cout << "1 - read temp \t"; cout << "2 - upm_delay mode \t"; cout << "3 - wake up" << endl; cout << "4 - set mode to " << (temp.isCelsius() == true ? "Fahrenheit" : "Celsius") << endl; cout << "5 - show status bits" << endl; cout << "6 - Set Tcrit \t"; cout << "7 - Set Tupper \t"; cout << "8 - Set Tlower " << endl; cout << "9 - Display monitor temps " << endl; cout << "10 - Enable alert default\t"; cout << "11 - Enable alert interrupt" << endl; cout << "12 - Clear interrupt \t"; cout << "13 - Clear alert mode" << endl; cout << "14 - Get Hysteresis\t"; cout << "15 - Set Hysteresis" << endl; cout << "16 - Get Resolution\t"; cout << "17 - Set Resolution" << endl; cout << "18 - Get Manufacturer ID" << endl; cout << "19 - Get Device ID" << endl; cout << "-1 - exit" << endl; cout << "Enter a command: "; cin >> command; switch (command) { float t; case 1: std::cout << "Temp: " << temp.getTemp() << "* " << (temp.isCelsius() ? "Celsius" : "Fahrenheit") << std::endl; break; case 2: cout << "shutdown sensor (upm_delay mode)" << endl; temp.shutDown(); break; case 3: cout << "wake up sensor" << endl; temp.shutDown(false); break; case 4: cout << "set mode to " << (temp.isCelsius() ? "Fahrenheit" : "Celsius") << endl; temp.setMode(!temp.isCelsius()); break; case 5: cout << "Tcrit = " << temp.isTcrit(); cout << " Tupper = " << temp.isTupper(); cout << " Tlower = " << temp.isTlower(); break; case 6: cout << "enter a value"; cin >> t; temp.setMonitorReg(temp.CRIT_TEMP, t); break; case 7: cout << "enter a value"; cin >> t; temp.setMonitorReg(temp.UPPER_TEMP, t); break; case 8: cout << "enter a value"; cin >> t; temp.setMonitorReg(temp.LOWER_TEMP, t); break; case 9: cout << "tcrit = " << temp.getMonitorReg(temp.CRIT_TEMP) << endl; cout << "tupper = " << temp.getMonitorReg(temp.UPPER_TEMP) << endl; cout << "tlower = " << temp.getMonitorReg(temp.LOWER_TEMP) << endl; break; case 10: cout << "set alert mode default"; temp.setAlertMode(temp.ALERTCTRL); break; case 11: cout << "set alert mode interrupt"; temp.setAlertMode(temp.ALERTMODE | temp.ALERTCTRL); break; case 12: temp.clearInterrupt(); break; case 13: cout << "Clear alerts" << endl; temp.clearAlertMode(); break; case 14: cout << "Hysteresis: " << temp.getHysteresis() << endl; break; case 15: int u; cout << "enter 1 to 4"; cin >> u; switch (u) { case 1: temp.setHysteresis(temp.HYST_0); break; case 2: temp.setHysteresis(temp.HYST_1_5); break; case 3: temp.setHysteresis(temp.HYST_3_0); break; case 4: default: temp.setHysteresis(temp.HYST_6_0); break; } break; case 16: cout << "Resolution: " << temp.getResolution() << endl; break; case 17: int v; cout << "enter 1 to 4"; cin >> v; switch (v) { case 1: temp.setResolution(temp.RES_LOW); break; case 2: temp.setResolution(temp.RES_MEDIUM); break; case 3: temp.setResolution(temp.RES_HIGH); break; case 4: default: temp.setResolution(temp.RES_PRECISION); break; } break; case 18: cout << "Manufacturer ID: " << std::hex << temp.getManufacturer() << endl; break; case 19: cout << "Get device ID: " << std::hex << temp.getDevicedId() << endl; break; case -1: break; default: cout << endl << "That option is not available. Try again" << endl; break; } } while (command != -1); //! [Interesting] return 0; }