tool/cmd_debug.cpp
author Florian Pose <fp@igh-essen.com>
Tue, 22 Jul 2008 15:25:08 +0000
changeset 1131 74e5ab4e19de
parent 1130 bb1c11adb2db
child 1136 a0982873d655
permissions -rw-r--r--
TODO.
/*****************************************************************************
 *
 * $Id$
 *
 ****************************************************************************/

#include <sstream>
#include <iomanip>
using namespace std;

#include "globals.h"

/*****************************************************************************/

const char *help_debug =
    "<LEVEL>\n"
    "\n"
    "Set the master debug level.\n"
    "\n"
    "Debug messages are printed to syslog.\n"
    "\n"
    "Arguments:\n"
    "  LEVEL must be an unsigned integer, specified\n"
    "        either in decimal (no prefix), octal (prefix '0')\n"
    "        or hexadecimal (prefix '0x').\n"
    "        0 stands for no debugging output,\n"
    "        1 means some debug messages, and\n"
    "        2 outputs all frame data (use with caution!).\n";

/****************************************************************************/

void command_debug(void)
{
    stringstream str;
    int debugLevel;
    
    if (commandArgs.size() != 1) {
        stringstream err;
        err << "'debug' takes exactly one argument!";
        throw MasterDeviceException(err.str());
    }

    str << commandArgs[0];
    str >> resetiosflags(ios::basefield) // guess base from prefix
        >> debugLevel;

    if (str.fail()) {
        stringstream err;
        err << "Invalid debug level '" << commandArgs[0] << "'!";
        throw MasterDeviceException(err.str());
    }

    masterDev.open(MasterDevice::ReadWrite);
    masterDev.setDebug(debugLevel);
}

/*****************************************************************************/