blob: f9ec7a191009f4dc525ac5e3da960ad82b76cdc0 [file] [log] [blame]
/* -*- linux-c -*-
*
* Copyright (c) 2004 by Intel Corp.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This
* file and program are licensed under a BSD style license. See
* the Copying file included with the OpenHPI distribution for
* full licensing terms.
*
* Authors:
* Racing Guo <racing.guo@intel.com>
* Changes:
* 11.30.2004 - Kouzmich: porting to HPI-B
*
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
#include "hpi_cmd.h"
int debug_flag = 0;
int main(int argc, char **argv)
{
int c, eflag = 0;
while ( (c = getopt( argc, argv,"c:ef:xn?")) != EOF )
switch(c) {
case 'c':
setenv("OPENHPI_CONF", optarg, 1);
break;
case 'e':
eflag = 1;
break;
case 'f':
open_file(optarg);
break;
case 'x':
debug_flag = 1;
break;
case 'n':
setenv("OPENHPI_DAEMON_HOST", optarg, 1);
break;
default:
printf("Usage: %s [-c <cfgfile>][-e][-f <file>][-n <hostname>]\n", argv[0]);
printf(" -c <cfgfile> - use passed file as configuration file\n");
printf(" -e - show short events, discover after subscribe\n");
printf(" -f <file> - execute command file\n");
printf(" -n <hostname> use passed hostname as OpenHPI daemon host\n");
return(1);
}
domainlist = (GSList *)NULL;
if (open_session(eflag) == -1)
return(1);
cmd_shell();
close_session();
return 0;
}
ret_code_t ask_rpt(SaHpiResourceIdT *ret)
{
term_def_t *term;
int i, res;
term = get_next_term();
if (term == NULL) {
if (read_file) return(HPI_SHELL_PARM_ERROR);
i = show_rpt_list(Domain, SHOW_ALL_RPT, 0, SHORT_LSRES, ui_print);
if (i == 0) {
printf("NO rpts!\n");
return(HPI_SHELL_CMD_ERROR);
};
i = get_int_param("RPT ID ==> ", &res);
if (i == 1) *ret = (SaHpiResourceIdT)res;
else return(HPI_SHELL_PARM_ERROR);
} else {
*ret = (SaHpiResourceIdT)atoi(term->term);
};
return(HPI_SHELL_OK);
}
ret_code_t ask_rdr(SaHpiResourceIdT rptid, SaHpiRdrTypeT type, SaHpiInstrumentIdT *ret)
{
term_def_t *term;
int i, res;
char buf[64];
strncpy(buf, oh_lookup_rdrtype(type), 64);
buf[strlen(buf)-4] = '\0';
strncat(buf, " NUM ==> ", 64-strlen(buf));
term = get_next_term();
if (term == NULL) {
if (read_file) return(HPI_SHELL_CMD_ERROR);
i = show_rdr_list(Domain, rptid, type, ui_print);
if (i == 0) {
printf("No rdrs for rpt: %d\n", rptid);
return(HPI_SHELL_CMD_ERROR);
};
i = get_int_param(buf, &res);
if (i != 1) return(HPI_SHELL_PARM_ERROR);
*ret = (SaHpiInstrumentIdT)res;
} else {
*ret = (SaHpiInstrumentIdT)atoi(term->term);
};
return(HPI_SHELL_OK);
}
ret_code_t open_file(char *path)
{
if (add_input_file(path) != 0) {
printf("Can not run file: %s\n", path);
return(HPI_SHELL_PARM_ERROR);
};
read_file = 1;
read_stdin = 0;
return(HPI_SHELL_OK);
}