bool check_clock_lock(uhd::usrp::multi_usrp::sptr usrp) { std::cout << std::endl << "Checking USRP devices for lock." << std::endl; bool all_locked = true; for(size_t ch = 0; ch < usrp->get_num_mboards(); ch++){ std::string ref_locked = usrp->get_mboard_sensor("ref_locked",ch).value; if(ref_locked != "true") all_locked = false; } if(not all_locked) std::cout << std::endl << "ERROR: USRP not locked to clock." << std::endl; return all_locked; }
// Check function for GPS LOCKED sensor from the Ettus GPSDO bool check_gps_locked(uhd::usrp::multi_usrp::sptr usrp) { try { uhd::sensor_value_t sensor_value( usrp->get_mboard_sensor("gps_locked", 0)); if (not sensor_value.to_bool()) { etiLog.level(warn) << "OutputUHD: gps_locked " << sensor_value.to_pp_string(); return false; } return true; } catch (uhd::lookup_error &e) { etiLog.level(warn) << "OutputUHD: no gps_locked sensor"; return false; } }
// Check function for GPS TIMELOCK sensor from the ODR LEA-M8F board GPSDO bool check_gps_timelock(uhd::usrp::multi_usrp::sptr usrp) { try { std::string sensor_value( usrp->get_mboard_sensor("gps_timelock", 0).to_pp_string()); if (sensor_value.find("TIME LOCKED") == std::string::npos) { etiLog.level(warn) << "OutputUHD: gps_timelock " << sensor_value; return false; } return true; } catch (uhd::lookup_error &e) { etiLog.level(warn) << "OutputUHD: no gps_timelock sensor"; return false; } }