43 lines
1.7 KiB
C++
43 lines
1.7 KiB
C++
#include <iostream>
|
|
#include <memory>
|
|
#include <sstream>
|
|
#include <iomanip>
|
|
#include "device/PCIEDevice.h"
|
|
#include "fm10k/FM10K.h"
|
|
#include "fm10k/registers/Register.h"
|
|
|
|
template <typename T> std::string tohex(T v){
|
|
std::stringstream o;
|
|
o << std::hex << std::setw(sizeof(v) * 2) << std::setfill('0') << v;
|
|
|
|
return o.str();
|
|
}
|
|
|
|
int main() {
|
|
auto entries = PCIEDevice::DeviceEntry::find();
|
|
|
|
std::cout << "Found " << entries.size() << " FM10K management device(s)." << std::endl;
|
|
|
|
for(auto& entry : entries){
|
|
auto dev = std::make_unique<PCIEDevice>(entry);
|
|
|
|
std::cout << "dev.path: " << dev->getDeviceEntry().getPath() << std::endl;
|
|
std::cout << "dev.vendor: " << tohex(dev->getDeviceEntry().getVendor()) << std::endl;
|
|
std::cout << "dev.class: " << tohex(dev->getDeviceEntry().getClass()) << std::endl;
|
|
|
|
FM10K::FM10K fm10k(std::move(dev));
|
|
|
|
auto fuseData_0 = FM10K_MAP_REGISTER(fm10k, FM10K::registers::MGMT::FUSE_DATA_0);
|
|
std::cout << "FUSE_DATA_0: " << tohex(fuseData_0->value) << std::endl;
|
|
std::cout << "FUSE_DATA_0.SKU: " << std::to_string(fuseData_0->fields.SKU) << std::endl;
|
|
std::cout << "FUSE_DATA_0.VDDF_VRM: " << std::to_string(fuseData_0->fields.VDDS_VRM) << std::endl;
|
|
std::cout << "FUSE_DATA_0.VDDF_VRM: " << std::to_string(fuseData_0->fields.VDDF_VRM) << std::endl;
|
|
|
|
auto deviceCfg = FM10K_MAP_REGISTER(fm10k, FM10K::registers::MGMT::DEVICE_CFG);
|
|
std::cout << "DEVICE_CFG: " << tohex(deviceCfg->value) << std::endl;
|
|
auto vpd = FM10K_MAP_REGISTER(fm10k, FM10K::registers::MGMT::VITAL_PRODUCT_DATA);
|
|
std::cout << "VITAL_PRODUCT_DATA.PartNumber: " << tohex(vpd->fields.PartNumber) << std::endl;
|
|
}
|
|
return 0;
|
|
}
|