Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc8ad34c authored by Alessio Balsini's avatar Alessio Balsini Committed by android-build-merger
Browse files

Merge "dmctl: return detailed device information" am: 1be681cf am: eb87d0ad am: 0c814bac

am: 720494a1

Change-Id: I4a1fc37f61772b98de9a294ac6d3cf5b2f01ddce
parents a538530c 720494a1
Loading
Loading
Loading
Loading
+37 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ static int Usage(void) {
    std::cerr << "  delete <dm-name>" << std::endl;
    std::cerr << "  delete <dm-name>" << std::endl;
    std::cerr << "  list <devices | targets> [-v]" << std::endl;
    std::cerr << "  list <devices | targets> [-v]" << std::endl;
    std::cerr << "  getpath <dm-name>" << std::endl;
    std::cerr << "  getpath <dm-name>" << std::endl;
    std::cerr << "  info <dm-name>" << std::endl;
    std::cerr << "  status <dm-name>" << std::endl;
    std::cerr << "  status <dm-name>" << std::endl;
    std::cerr << "  resume <dm-name>" << std::endl;
    std::cerr << "  resume <dm-name>" << std::endl;
    std::cerr << "  suspend <dm-name>" << std::endl;
    std::cerr << "  suspend <dm-name>" << std::endl;
@@ -359,6 +360,41 @@ static int GetPathCmdHandler(int argc, char** argv) {
    return 0;
    return 0;
}
}


static int InfoCmdHandler(int argc, char** argv) {
    if (argc != 1) {
        std::cerr << "Invalid arguments, see \'dmctl help\'" << std::endl;
        return -EINVAL;
    }

    DeviceMapper& dm = DeviceMapper::Instance();
    auto info = dm.GetDetailedInfo(argv[0]);
    if (!info) {
        std::cerr << "Invalid device \"" << argv[0] << "\"." << std::endl;
        return -EINVAL;
    }

    constexpr int spacing = 14;
    std::cout << std::left << std::setw(spacing) << "device"
              << ": " << argv[0] << std::endl;
    std::cout << std::left << std::setw(spacing) << "active"
              << ": " << std::boolalpha << !info->IsSuspended() << std::endl;
    std::cout << std::left << std::setw(spacing) << "access"
              << ": ";
    if (info->IsReadOnly()) {
        std::cout << "ro ";
    } else {
        std::cout << "rw ";
    }
    std::cout << std::endl;
    std::cout << std::left << std::setw(spacing) << "activeTable"
              << ": " << std::boolalpha << info->IsActiveTablePresent() << std::endl;
    std::cout << std::left << std::setw(spacing) << "inactiveTable"
              << ": " << std::boolalpha << info->IsInactiveTablePresent() << std::endl;
    std::cout << std::left << std::setw(spacing) << "bufferFull"
              << ": " << std::boolalpha << info->IsBufferFull() << std::endl;
    return 0;
}

static int DumpTable(const std::string& mode, int argc, char** argv) {
static int DumpTable(const std::string& mode, int argc, char** argv) {
    if (argc != 1) {
    if (argc != 1) {
        std::cerr << "Invalid arguments, see \'dmctl help\'" << std::endl;
        std::cerr << "Invalid arguments, see \'dmctl help\'" << std::endl;
@@ -436,6 +472,7 @@ static std::map<std::string, std::function<int(int, char**)>> cmdmap = {
        {"list", DmListCmdHandler},
        {"list", DmListCmdHandler},
        {"help", HelpCmdHandler},
        {"help", HelpCmdHandler},
        {"getpath", GetPathCmdHandler},
        {"getpath", GetPathCmdHandler},
        {"info", InfoCmdHandler},
        {"table", TableCmdHandler},
        {"table", TableCmdHandler},
        {"status", StatusCmdHandler},
        {"status", StatusCmdHandler},
        {"resume", ResumeCmdHandler},
        {"resume", ResumeCmdHandler},