/* * Copyright (C) 2017-2020 The Project X-Ray Authors. * * Use of this source code is governed by a ISC-style * license that can be found in the LICENSE file or at * https://opensource.org/licenses/ISC * * SPDX-License-Identifier: ISC */ #include #include #include #include namespace xc7series = prjxray::xilinx::xc7series; void frame_address_decode(std::istream* input_stream) { for (uint32_t frame_address_raw; (*input_stream) >> std::setbase(0) >> frame_address_raw;) { xc7series::FrameAddress frame_address(frame_address_raw); std::cout << "[" << std::hex << std::showbase << std::setw(10) << frame_address_raw << "] " << (frame_address.is_bottom_half_rows() ? "BOTTOM" : "TOP") << " Row=" << std::setw(2) << std::dec << static_cast(frame_address.row()) << " Column=" << std::setw(2) << std::dec << frame_address.column() << " Minor=" << std::setw(2) << std::dec << static_cast(frame_address.minor()) << " Type=" << frame_address.block_type() << std::endl; } } int main(int argc, char* argv[]) { if (argc > 1) { std::ifstream file_stream(argv[1]); if (file_stream) { frame_address_decode(&file_stream); return 0; } } frame_address_decode(&std::cin); return 0; }