fsm/src/fsmd.cpp
2021-10-24 21:32:49 +02:00

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;
}