|
Packit |
db01ca |
/* -*- linux-c -*-
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* Copyright (c) 2004 by Intel Corp.
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
db01ca |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
db01ca |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This
|
|
Packit |
db01ca |
* file and program are licensed under a BSD style license. See
|
|
Packit |
db01ca |
* the Copying file included with the OpenHPI distribution for
|
|
Packit |
db01ca |
* full licensing terms.
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* Author(s):
|
|
Packit |
db01ca |
* Kouzmich < Mikhail.V.Kouzmich@intel.com >
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include <stdio.h>
|
|
Packit |
db01ca |
#include <stdlib.h>
|
|
Packit |
db01ca |
#include <string.h>
|
|
Packit |
db01ca |
#include <time.h>
|
|
Packit |
db01ca |
#include <ctype.h>
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include "hpi_ui.h"
|
|
Packit |
db01ca |
#include "hpi_cmd.h"
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
typedef struct {
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid;
|
|
Packit |
db01ca |
SaHpiInstrumentIdT rdrnum;
|
|
Packit |
db01ca |
} inv_block_env_t;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static inv_block_env_t inv_block_env;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
typedef struct {
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid;
|
|
Packit |
db01ca |
SaHpiInstrumentIdT rdrnum;
|
|
Packit |
db01ca |
} ctrl_block_env_t;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ctrl_block_env_t ctrl_block_env;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
typedef struct {
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid;
|
|
Packit |
db01ca |
SaHpiInstrumentIdT rdrnum;
|
|
Packit |
db01ca |
SaHpiRdrT rdr_entry;
|
|
Packit |
db01ca |
} ann_block_env_t;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ann_block_env_t ann_block_env;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
typedef struct {
|
|
Packit |
db01ca |
char *name;
|
|
Packit |
db01ca |
SaHpiIdrAreaTypeT val;
|
|
Packit |
db01ca |
} Area_type_t;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static Area_type_t Area_types[] = {
|
|
Packit |
db01ca |
{ "inter", SAHPI_IDR_AREATYPE_INTERNAL_USE },
|
|
Packit |
db01ca |
{ "chass", SAHPI_IDR_AREATYPE_CHASSIS_INFO },
|
|
Packit |
db01ca |
{ "board", SAHPI_IDR_AREATYPE_BOARD_INFO },
|
|
Packit |
db01ca |
{ "prod", SAHPI_IDR_AREATYPE_PRODUCT_INFO },
|
|
Packit |
db01ca |
{ "oem", SAHPI_IDR_AREATYPE_OEM },
|
|
Packit |
db01ca |
{ NULL, SAHPI_IDR_AREATYPE_UNSPECIFIED } };
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
typedef struct {
|
|
Packit |
db01ca |
char *name;
|
|
Packit |
db01ca |
SaHpiIdrFieldTypeT val;
|
|
Packit |
db01ca |
} Field_type_t;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static Field_type_t Field_types[] = {
|
|
Packit |
db01ca |
{ "chass", SAHPI_IDR_FIELDTYPE_CHASSIS_TYPE },
|
|
Packit |
db01ca |
{ "time", SAHPI_IDR_FIELDTYPE_MFG_DATETIME },
|
|
Packit |
db01ca |
{ "manuf", SAHPI_IDR_FIELDTYPE_MANUFACTURER },
|
|
Packit |
db01ca |
{ "prodname", SAHPI_IDR_FIELDTYPE_PRODUCT_NAME },
|
|
Packit |
db01ca |
{ "prodver", SAHPI_IDR_FIELDTYPE_PRODUCT_VERSION },
|
|
Packit |
db01ca |
{ "snum", SAHPI_IDR_FIELDTYPE_SERIAL_NUMBER },
|
|
Packit |
db01ca |
{ "pnum", SAHPI_IDR_FIELDTYPE_PART_NUMBER },
|
|
Packit |
db01ca |
{ "file", SAHPI_IDR_FIELDTYPE_FILE_ID },
|
|
Packit |
db01ca |
{ "tag", SAHPI_IDR_FIELDTYPE_ASSET_TAG },
|
|
Packit |
db01ca |
{ "custom", SAHPI_IDR_FIELDTYPE_CUSTOM },
|
|
Packit |
db01ca |
{ NULL, SAHPI_IDR_FIELDTYPE_UNSPECIFIED } };
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t add_inventory_area(SaHpiSessionIdT sessionId,
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaHpiEntryIdT entry;
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char buf[10];
|
|
Packit |
db01ca |
int i;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("Area type (inter,chass,board,prod,oem): ", buf, 9);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
for (i = 0; Area_types[i].name != (char *)NULL; i++)
|
|
Packit |
db01ca |
if (strcmp(Area_types[i].name, buf) == 0) break;
|
|
Packit |
db01ca |
if (Area_types[i].name == (char *)NULL) {
|
|
Packit |
db01ca |
printf("Error!!! Unknown Area type: %s\n", buf);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
rv = saHpiIdrAreaAdd(sessionId, rptid, rdrnum, Area_types[i].val, &entry);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("ERROR!!! saHpiIdrAreaAdd: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t add_inventory_field(SaHpiSessionIdT sessionId,
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiIdrFieldT field;
|
|
Packit |
db01ca |
char buf[256];
|
|
Packit |
db01ca |
int res, i;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("Area Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Area Id\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
field.AreaId = res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("Field type(chass,time,manuf,prodname,prodver,"
|
|
Packit |
db01ca |
"snum,pnum,file,tag,custom): ", buf, 9);
|
|
Packit |
db01ca |
if (i != 0) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Field type: %s\n", buf);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
for (i = 0; Field_types[i].name != (char *)NULL; i++)
|
|
Packit |
db01ca |
if (strcmp(Field_types[i].name, buf) == 0) break;
|
|
Packit |
db01ca |
if (Field_types[i].name == (char *)NULL) {
|
|
Packit |
db01ca |
printf("Error!!! Unknown Field type: %s\n", buf);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
field.Type = Field_types[i].val;
|
|
Packit |
db01ca |
field.ReadOnly = SAHPI_FALSE;
|
|
Packit |
db01ca |
i = set_text_buffer(&(field.Field));
|
|
Packit |
db01ca |
if (i != 0) {
|
|
Packit |
db01ca |
printf("Invalid text\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
rv = saHpiIdrFieldAdd(sessionId, rptid, rdrnum, &field);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("ERROR!!! saHpiIdrFieldAdd: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t set_inventory_field(SaHpiSessionIdT sessionId,
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiIdrFieldT field, read_field;
|
|
Packit |
db01ca |
SaHpiEntryIdT next;
|
|
Packit |
db01ca |
int res, i;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
memset(&field, 0, sizeof(SaHpiIdrFieldT));
|
|
Packit |
db01ca |
i = get_int_param("Area Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Area Id\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
field.AreaId = res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("Field Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Field Id\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
field.FieldId = res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiIdrFieldGet(sessionId, rptid, rdrnum, field.AreaId,
|
|
Packit |
db01ca |
SAHPI_IDR_FIELDTYPE_UNSPECIFIED, field.FieldId, &next, &read_field);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("ERROR!!! saHpiIdrFieldGet: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
field.Type = read_field.Type;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = set_text_buffer(&(field.Field));
|
|
Packit |
db01ca |
if (i != 0) {
|
|
Packit |
db01ca |
printf("Invalid text\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
rv = saHpiIdrFieldSet(sessionId, rptid, rdrnum, &field);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("ERROR!!! saHpiIdrFieldSet: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t del_inventory_field(SaHpiSessionIdT sessionId,
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiEntryIdT areaId, fieldId;
|
|
Packit |
db01ca |
int res, i;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("Area Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Area Id\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
areaId = res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("Field Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Field Id\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
fieldId = res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiIdrFieldDelete(sessionId, rptid, rdrnum, areaId, fieldId);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("ERROR!!! saHpiIdrFieldDelete: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t delete_inventory_area(SaHpiSessionIdT sessionId,
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
int res, i;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("Area Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Error!!! Invalid Area Id\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
rv = saHpiIdrAreaDelete(sessionId, rptid, rdrnum, res);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("ERROR!!! saHpiIdrAreaDelete: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t sa_show_inv(SaHpiResourceIdT resourceid)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv = SA_OK, rva, rvf;
|
|
Packit |
db01ca |
SaHpiEntryIdT rdrentryid;
|
|
Packit |
db01ca |
SaHpiEntryIdT nextrdrentryid;
|
|
Packit |
db01ca |
SaHpiRdrT rdr;
|
|
Packit |
db01ca |
SaHpiIdrIdT idrid;
|
|
Packit |
db01ca |
SaHpiIdrInfoT idrInfo;
|
|
Packit |
db01ca |
SaHpiEntryIdT areaId;
|
|
Packit |
db01ca |
SaHpiEntryIdT nextareaId;
|
|
Packit |
db01ca |
SaHpiIdrAreaTypeT areaType;
|
|
Packit |
db01ca |
SaHpiEntryIdT fieldId;
|
|
Packit |
db01ca |
SaHpiEntryIdT nextFieldId;
|
|
Packit |
db01ca |
SaHpiIdrFieldTypeT fieldType;
|
|
Packit |
db01ca |
SaHpiIdrFieldT thisField;
|
|
Packit |
db01ca |
SaHpiIdrAreaHeaderT areaHeader;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rdrentryid = SAHPI_FIRST_ENTRY;
|
|
Packit |
db01ca |
while (rdrentryid != SAHPI_LAST_ENTRY) {
|
|
Packit |
db01ca |
rv = saHpiRdrGet(Domain->sessionId, resourceid, rdrentryid,
|
|
Packit |
db01ca |
&nextrdrentryid, &rdr;;
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiRdrGet error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return HPI_SHELL_CMD_ERROR;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (rdr.RdrType != SAHPI_INVENTORY_RDR) {
|
|
Packit |
db01ca |
rdrentryid = nextrdrentryid;
|
|
Packit |
db01ca |
continue;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
idrid = rdr.RdrTypeUnion.InventoryRec.IdrId;
|
|
Packit |
db01ca |
rv = saHpiIdrInfoGet(Domain->sessionId, resourceid, idrid, &idrInfo);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiIdrInfoGet error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return HPI_SHELL_CMD_ERROR;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
areaType = SAHPI_IDR_AREATYPE_UNSPECIFIED;
|
|
Packit |
db01ca |
areaId = SAHPI_FIRST_ENTRY;
|
|
Packit |
db01ca |
while (areaId != SAHPI_LAST_ENTRY) {
|
|
Packit |
db01ca |
rva = saHpiIdrAreaHeaderGet(Domain->sessionId, resourceid,
|
|
Packit |
db01ca |
idrInfo.IdrId, areaType, areaId, &nextareaId,
|
|
Packit |
db01ca |
&areaHeader);
|
|
Packit |
db01ca |
if (rva != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiIdrAreaHeaderGet error %s\n",
|
|
Packit |
db01ca |
oh_lookup_error(rva));
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
show_inv_area_header(&areaHeader, 2, ui_print);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
fieldType = SAHPI_IDR_FIELDTYPE_UNSPECIFIED;
|
|
Packit |
db01ca |
fieldId = SAHPI_FIRST_ENTRY;
|
|
Packit |
db01ca |
while (fieldId != SAHPI_LAST_ENTRY) {
|
|
Packit |
db01ca |
rvf = saHpiIdrFieldGet(Domain->sessionId, resourceid,
|
|
Packit |
db01ca |
idrInfo.IdrId, areaHeader.AreaId,
|
|
Packit |
db01ca |
fieldType, fieldId, &nextFieldId,
|
|
Packit |
db01ca |
&thisField);
|
|
Packit |
db01ca |
if (rvf != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiIdrFieldGet error %s\n",
|
|
Packit |
db01ca |
oh_lookup_error(rvf));
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
show_inv_field(&thisField, 4, ui_print);
|
|
Packit |
db01ca |
fieldId = nextFieldId;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
areaId = nextareaId;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
rdrentryid = nextrdrentryid;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block_show(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
term_def_t *term;
|
|
Packit |
db01ca |
SaHpiEntryIdT areaid;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
term = get_next_term();
|
|
Packit |
db01ca |
if (term != NULL) {
|
|
Packit |
db01ca |
areaid = strtol( term->term, NULL, 10 );
|
|
Packit |
db01ca |
} else {
|
|
Packit |
db01ca |
areaid = SAHPI_LAST_ENTRY;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return(show_inventory(Domain->sessionId, inv_block_env.rptid,
|
|
Packit |
db01ca |
inv_block_env.rdrnum, areaid, ui_print));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block_addarea(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(add_inventory_area(Domain->sessionId, inv_block_env.rptid,
|
|
Packit |
db01ca |
inv_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block_delarea(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(delete_inventory_area(Domain->sessionId, inv_block_env.rptid,
|
|
Packit |
db01ca |
inv_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block_addfield(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(add_inventory_field(Domain->sessionId, inv_block_env.rptid,
|
|
Packit |
db01ca |
inv_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block_setfield(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(set_inventory_field(Domain->sessionId, inv_block_env.rptid,
|
|
Packit |
db01ca |
inv_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block_delfield(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(del_inventory_field(Domain->sessionId, inv_block_env.rptid,
|
|
Packit |
db01ca |
inv_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t inv_block(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaHpiRdrT rdr_entry;
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid;
|
|
Packit |
db01ca |
SaHpiInstrumentIdT rdrnum;
|
|
Packit |
db01ca |
SaHpiRdrTypeT type;
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char buf[256];
|
|
Packit |
db01ca |
ret_code_t ret;
|
|
Packit |
db01ca |
term_def_t *term;
|
|
Packit |
db01ca |
int res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret = ask_rpt(&rptid);
|
|
Packit |
db01ca |
if (ret != HPI_SHELL_OK) return(ret);
|
|
Packit |
db01ca |
type = SAHPI_INVENTORY_RDR;
|
|
Packit |
db01ca |
ret = ask_rdr(rptid, type, &rdrnum);
|
|
Packit |
db01ca |
if (ret != HPI_SHELL_OK) return(ret);
|
|
Packit |
db01ca |
inv_block_env.rptid = rptid;
|
|
Packit |
db01ca |
inv_block_env.rdrnum = rdrnum;
|
|
Packit |
db01ca |
rv = saHpiRdrGetByInstrumentId(Domain->sessionId, rptid, type, rdrnum,
|
|
Packit |
db01ca |
&rdr_entry);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiRdrGetByInstrumentId error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
printf("ERROR!!! Can not get rdr: ResourceId=%d RdrType=%d RdrNum=%d\n",
|
|
Packit |
db01ca |
rptid, type, rdrnum);
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
show_inventory(Domain->sessionId, rptid, rdrnum, SAHPI_LAST_ENTRY, ui_print);
|
|
Packit |
db01ca |
for (;;) {
|
|
Packit |
db01ca |
block_type = INV_COM;
|
|
Packit |
db01ca |
res = get_new_command("inventory block ==> ");
|
|
Packit |
db01ca |
if (res == 2) {
|
|
Packit |
db01ca |
unget_term();
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
term = get_next_term();
|
|
Packit |
db01ca |
if (term == NULL) continue;
|
|
Packit |
db01ca |
snprintf(buf, 256, "%s", term->term);
|
|
Packit |
db01ca |
if ((strcmp(buf, "q") == 0) || (strcmp(buf, "quit") == 0)) break;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
block_type = MAIN_COM;
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t show_inv(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaHpiResourceIdT resid = 0;
|
|
Packit |
db01ca |
int i, res;
|
|
Packit |
db01ca |
term_def_t *term;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
term = get_next_term();
|
|
Packit |
db01ca |
if (term == NULL) {
|
|
Packit |
db01ca |
i = show_rpt_list(Domain, SHOW_ALL_RPT, resid,
|
|
Packit |
db01ca |
SHORT_LSRES, ui_print);
|
|
Packit |
db01ca |
if (i == 0) {
|
|
Packit |
db01ca |
printf("NO rpt!\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
i = get_int_param("RPT ID ==> ", &res;;
|
|
Packit |
db01ca |
if (i == 1) resid = (SaHpiResourceIdT)res;
|
|
Packit |
db01ca |
else return HPI_SHELL_OK;
|
|
Packit |
db01ca |
} else {
|
|
Packit |
db01ca |
resid = (SaHpiResourceIdT)atoi(term->term);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return sa_show_inv(resid);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t set_control_state(SaHpiSessionIdT sessionid,
|
|
Packit |
db01ca |
SaHpiResourceIdT resourceid, SaHpiCtrlNumT num)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiRdrT rdr;
|
|
Packit |
db01ca |
SaHpiCtrlRecT *ctrl;
|
|
Packit |
db01ca |
SaHpiCtrlTypeT type;
|
|
Packit |
db01ca |
SaHpiCtrlStateDigitalT state_val = 0;
|
|
Packit |
db01ca |
SaHpiCtrlModeT mode;
|
|
Packit |
db01ca |
SaHpiCtrlStateT state;
|
|
Packit |
db01ca |
char buf[SAHPI_MAX_TEXT_BUFFER_LENGTH];
|
|
Packit |
db01ca |
char *str;
|
|
Packit |
db01ca |
int i, res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiRdrGetByInstrumentId(sessionid, resourceid, SAHPI_CTRL_RDR,
|
|
Packit |
db01ca |
num, &rdr;;
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiRdrGetByInstrumentId: error: %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
memset(&state, 0, sizeof(SaHpiCtrlStateT));
|
|
Packit |
db01ca |
i = get_string_param("Mode(auto|manual): ", buf, 7);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
if (strcmp(buf, "auto") == 0) mode = SAHPI_CTRL_MODE_AUTO;
|
|
Packit |
db01ca |
else if (strcmp(buf, "manual") == 0) mode = SAHPI_CTRL_MODE_MANUAL;
|
|
Packit |
db01ca |
else return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
if (mode == SAHPI_CTRL_MODE_AUTO) {
|
|
Packit |
db01ca |
rv = saHpiControlSet(sessionid, resourceid, num,
|
|
Packit |
db01ca |
mode, (SaHpiCtrlStateT *)NULL);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiControlSet: error: %s\n",
|
|
Packit |
db01ca |
oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
ctrl = &(rdr.RdrTypeUnion.CtrlRec);
|
|
Packit |
db01ca |
type = ctrl->Type;
|
|
Packit |
db01ca |
state.Type = type;
|
|
Packit |
db01ca |
switch (type) {
|
|
Packit |
db01ca |
case SAHPI_CTRL_TYPE_DIGITAL:
|
|
Packit |
db01ca |
i = get_string_param(
|
|
Packit |
db01ca |
"New state(on|off|pulseon|pulseoff): ", buf, 9);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
if (strcmp(buf, "on") == 0) state_val = SAHPI_CTRL_STATE_ON;
|
|
Packit |
db01ca |
if (strcmp(buf, "off") == 0) state_val = SAHPI_CTRL_STATE_OFF;
|
|
Packit |
db01ca |
if (strcmp(buf, "pulseon") == 0)
|
|
Packit |
db01ca |
state_val = SAHPI_CTRL_STATE_PULSE_ON;
|
|
Packit |
db01ca |
if (strcmp(buf, "pulseoff") == 0)
|
|
Packit |
db01ca |
state_val = SAHPI_CTRL_STATE_PULSE_OFF;
|
|
Packit |
db01ca |
state.StateUnion.Digital = state_val;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_CTRL_TYPE_DISCRETE:
|
|
Packit |
db01ca |
i = get_int_param("Value ==> ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Invalid value\n");
|
|
Packit |
db01ca |
return HPI_SHELL_CMD_ERROR;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
state.StateUnion.Discrete = res;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_CTRL_TYPE_ANALOG:
|
|
Packit |
db01ca |
i = get_int_param("Value ==> ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Invalid value\n");
|
|
Packit |
db01ca |
return HPI_SHELL_CMD_ERROR;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
state.StateUnion.Analog = res;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_CTRL_TYPE_STREAM:
|
|
Packit |
db01ca |
i = get_string_param("Repeat(yes|no): ", buf, 4);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
str = buf;
|
|
Packit |
db01ca |
while (*str == ' ') str++;
|
|
Packit |
db01ca |
if (strncmp(str, "yes", 3) == 0)
|
|
Packit |
db01ca |
state.StateUnion.Stream.Repeat = 1;
|
|
Packit |
db01ca |
i = get_string_param("Stream: ", buf, 4);
|
|
Packit |
db01ca |
i = strlen(buf);
|
|
Packit |
db01ca |
if (i > 4) i = 4;
|
|
Packit |
db01ca |
state.StateUnion.Stream.StreamLength = i;
|
|
Packit |
db01ca |
strncpy((char *)(state.StateUnion.Stream.Stream), buf, i);
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_CTRL_TYPE_TEXT:
|
|
Packit |
db01ca |
i = get_int_param("Line #: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Invalid value\n");
|
|
Packit |
db01ca |
return HPI_SHELL_CMD_ERROR;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
state.StateUnion.Text.Line = res;
|
|
Packit |
db01ca |
printf("Text: ");
|
|
Packit |
db01ca |
i = set_text_buffer(&(state.StateUnion.Text.Text));
|
|
Packit |
db01ca |
if (i != 0) {
|
|
Packit |
db01ca |
printf("Invalid text\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_CTRL_TYPE_OEM:
|
|
Packit |
db01ca |
i = get_int_param("Manufacturer Id: ", &res;;
|
|
Packit |
db01ca |
if (i != 1) {
|
|
Packit |
db01ca |
printf("Invalid value\n");
|
|
Packit |
db01ca |
return HPI_SHELL_CMD_ERROR;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
state.StateUnion.Oem.MId = res;
|
|
Packit |
db01ca |
memset(state.StateUnion.Oem.Body, 0,
|
|
Packit |
db01ca |
SAHPI_CTRL_MAX_OEM_BODY_LENGTH);
|
|
Packit |
db01ca |
i = get_hex_string_param("Oem body: ",
|
|
Packit |
db01ca |
(char *)(state.StateUnion.Oem.Body),
|
|
Packit |
db01ca |
SAHPI_CTRL_MAX_OEM_BODY_LENGTH);
|
|
Packit |
db01ca |
state.StateUnion.Oem.BodyLength = i;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
default:
|
|
Packit |
db01ca |
strcpy(buf, "Unknown control type\n");
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
rv = saHpiControlSet(sessionid, resourceid, num,
|
|
Packit |
db01ca |
SAHPI_CTRL_MODE_MANUAL, &state);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiControlSet: error: %s\n",
|
|
Packit |
db01ca |
oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ctrl_block_state(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
show_control_state(Domain->sessionId, ctrl_block_env.rptid,
|
|
Packit |
db01ca |
ctrl_block_env.rdrnum, ui_print, get_int_param);
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ctrl_block_setst(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(set_control_state(Domain->sessionId, ctrl_block_env.rptid,
|
|
Packit |
db01ca |
ctrl_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ctrl_block_show(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
show_control(Domain->sessionId, ctrl_block_env.rptid,
|
|
Packit |
db01ca |
ctrl_block_env.rdrnum, ui_print);
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ctrl_block(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaHpiRdrT rdr_entry;
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid;
|
|
Packit |
db01ca |
SaHpiInstrumentIdT rdrnum;
|
|
Packit |
db01ca |
SaHpiRdrTypeT type;
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char buf[256];
|
|
Packit |
db01ca |
ret_code_t ret;
|
|
Packit |
db01ca |
term_def_t *term;
|
|
Packit |
db01ca |
int res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret = ask_rpt(&rptid);
|
|
Packit |
db01ca |
if (ret != HPI_SHELL_OK) return(ret);
|
|
Packit |
db01ca |
type = SAHPI_CTRL_RDR;
|
|
Packit |
db01ca |
ret = ask_rdr(rptid, type, &rdrnum);
|
|
Packit |
db01ca |
if (ret != HPI_SHELL_OK) return(ret);
|
|
Packit |
db01ca |
ctrl_block_env.rptid = rptid;
|
|
Packit |
db01ca |
ctrl_block_env.rdrnum = rdrnum;
|
|
Packit |
db01ca |
rv = saHpiRdrGetByInstrumentId(Domain->sessionId, rptid, type, rdrnum,
|
|
Packit |
db01ca |
&rdr_entry);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiRdrGetByInstrumentId error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
printf("ERROR!!! Can not get rdr: ResourceId=%d RdrType=%d RdrNum=%d\n",
|
|
Packit |
db01ca |
rptid, type, rdrnum);
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
show_control(Domain->sessionId, rptid, rdrnum, ui_print);
|
|
Packit |
db01ca |
for (;;) {
|
|
Packit |
db01ca |
block_type = CTRL_COM;
|
|
Packit |
db01ca |
res = get_new_command("control block ==> ");
|
|
Packit |
db01ca |
if (res == 2) {
|
|
Packit |
db01ca |
unget_term();
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
term = get_next_term();
|
|
Packit |
db01ca |
if (term == NULL) continue;
|
|
Packit |
db01ca |
snprintf(buf, 256, "%s", term->term);
|
|
Packit |
db01ca |
if ((strcmp(buf, "q") == 0) || (strcmp(buf, "quit") == 0)) break;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
block_type = MAIN_COM;
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
int set_text_buffer(SaHpiTextBufferT *buf)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
int i, j, ind;
|
|
Packit |
db01ca |
char str[SAHPI_MAX_TEXT_BUFFER_LENGTH], *str1;
|
|
Packit |
db01ca |
SaHpiTextTypeT type = SAHPI_TL_TYPE_TEXT;
|
|
Packit |
db01ca |
SaHpiLanguageT lang = SAHPI_LANG_ENGLISH;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("DataType(text|bcd|ascii6|bin|unicode): ", str, 10);
|
|
Packit |
db01ca |
if (i != 0) return(-1);
|
|
Packit |
db01ca |
if (strcmp(str, "text") == 0) type = SAHPI_TL_TYPE_TEXT;
|
|
Packit |
db01ca |
else if (strcmp(str, "bcd") == 0) type = SAHPI_TL_TYPE_BCDPLUS;
|
|
Packit |
db01ca |
else if (strcmp(str, "ascii6") == 0) type = SAHPI_TL_TYPE_ASCII6;
|
|
Packit |
db01ca |
else if (strcmp(str, "bin") == 0) type = SAHPI_TL_TYPE_BINARY;
|
|
Packit |
db01ca |
else if (strcmp(str, "unicode") == 0) type = SAHPI_TL_TYPE_UNICODE;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*
|
|
Packit |
db01ca |
* ask a language for unicode and text: Fix me
|
|
Packit |
db01ca |
*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("Text: ", str, SAHPI_MAX_TEXT_BUFFER_LENGTH);
|
|
Packit |
db01ca |
if (i != 0) return(-1);
|
|
Packit |
db01ca |
buf->DataType = type;
|
|
Packit |
db01ca |
switch (type) {
|
|
Packit |
db01ca |
case SAHPI_TL_TYPE_UNICODE:
|
|
Packit |
db01ca |
printf("UNICODE: not implemented");
|
|
Packit |
db01ca |
return(-1);
|
|
Packit |
db01ca |
case SAHPI_TL_TYPE_BCDPLUS:
|
|
Packit |
db01ca |
for (i = 0; i < strlen(str); i++) {
|
|
Packit |
db01ca |
switch ( str[i] ) {
|
|
Packit |
db01ca |
case '0':
|
|
Packit |
db01ca |
case '1':
|
|
Packit |
db01ca |
case '2':
|
|
Packit |
db01ca |
case '3':
|
|
Packit |
db01ca |
case '4':
|
|
Packit |
db01ca |
case '5':
|
|
Packit |
db01ca |
case '6':
|
|
Packit |
db01ca |
case '7':
|
|
Packit |
db01ca |
case '8':
|
|
Packit |
db01ca |
case '9':
|
|
Packit |
db01ca |
case ' ':
|
|
Packit |
db01ca |
case '-':
|
|
Packit |
db01ca |
case '.':
|
|
Packit |
db01ca |
case ':':
|
|
Packit |
db01ca |
case ',':
|
|
Packit |
db01ca |
case '_':
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
default:
|
|
Packit |
db01ca |
printf( "BCD+: Illegal symbol \'%c\'(0x%x)\n", str[i], str[i] );
|
|
Packit |
db01ca |
return -1;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
snprintf((char *)&(buf->Data), SAHPI_MAX_TEXT_BUFFER_LENGTH, "%s", str);
|
|
Packit |
db01ca |
buf->DataLength = strlen(str);
|
|
Packit |
db01ca |
buf->Language = lang;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_TL_TYPE_ASCII6:
|
|
Packit |
db01ca |
for (i = 0; i < strlen(str); i++) {
|
|
Packit |
db01ca |
if ( ( str[i] < 0x20 ) || ( str[i] > 0x5F ) ) {
|
|
Packit |
db01ca |
printf( "ASCII6: Illegal symbol \'%c\'(0x%x)\n", str[i], str[i] );
|
|
Packit |
db01ca |
return -1;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
snprintf((char *)&(buf->Data), SAHPI_MAX_TEXT_BUFFER_LENGTH, "%s", str);
|
|
Packit |
db01ca |
buf->DataLength = strlen(str);
|
|
Packit |
db01ca |
buf->Language = lang;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_TL_TYPE_TEXT:
|
|
Packit |
db01ca |
snprintf((char *)&(buf->Data), SAHPI_MAX_TEXT_BUFFER_LENGTH, "%s", str);
|
|
Packit |
db01ca |
buf->DataLength = strlen(str);
|
|
Packit |
db01ca |
buf->Language = lang;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
case SAHPI_TL_TYPE_BINARY:
|
|
Packit |
db01ca |
str1 = (char *)&(buf->Data);
|
|
Packit |
db01ca |
ind = 0;
|
|
Packit |
db01ca |
for (i = 0; i < strlen(str); i++) {
|
|
Packit |
db01ca |
for (j = 0; j < 16; j++)
|
|
Packit |
db01ca |
if (hex_codes[j] == toupper(str[i])) break;
|
|
Packit |
db01ca |
if (j >= 16) return(-1);
|
|
Packit |
db01ca |
if (i % 2) str1[ind++] += j;
|
|
Packit |
db01ca |
else str1[ind] = j << 4;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
buf->DataLength = (i + 1)/ 2;
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(0);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static void show_rdr_attrs(SaHpiRdrT *rdr_entry)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
Rdr_t tmp_rdr;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
make_attrs_rdr(&tmp_rdr, rdr_entry);
|
|
Packit |
db01ca |
show_Rdr(&tmp_rdr, ui_print);
|
|
Packit |
db01ca |
free_attrs(&(tmp_rdr.Attrutes));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t list_cond(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiAnnouncementT annon;
|
|
Packit |
db01ca |
SaHpiTextBufferT buffer;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
annon.EntryId = SAHPI_FIRST_ENTRY;
|
|
Packit |
db01ca |
for (;;) {
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorGetNext(Domain->sessionId, rptid, rdrnum,
|
|
Packit |
db01ca |
SAHPI_ALL_SEVERITIES, SAHPI_FALSE, &annon);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
if (rv == SA_ERR_HPI_NOT_PRESENT)
|
|
Packit |
db01ca |
break;
|
|
Packit |
db01ca |
printf("saHpiAnnunciatorGetNext error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
oh_decode_time(annon.Timestamp, &buffer);
|
|
Packit |
db01ca |
printf(" ID: %d AddedByUser: %d Acknowledged: %d Time: %s Sever: %d\n",
|
|
Packit |
db01ca |
annon.EntryId, annon.AddedByUser, annon.Acknowledged,
|
|
Packit |
db01ca |
buffer.Data, annon.Severity);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t set_acknowledge(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char str[32];
|
|
Packit |
db01ca |
int i, all = 0;
|
|
Packit |
db01ca |
SaHpiSeverityT sev = SAHPI_OK;
|
|
Packit |
db01ca |
SaHpiEntryIdT entryId = 0;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("EntryId(<Id> | all): ", str, 32);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
if (strcmp(str, "all") == 0) all = 1;
|
|
Packit |
db01ca |
else entryId = atoi(str);
|
|
Packit |
db01ca |
if (all) {
|
|
Packit |
db01ca |
i = get_string_param("Severity(crit|maj|min|info|ok): ",
|
|
Packit |
db01ca |
str, 10);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
if (strcmp(str, "crit") == 0) sev = SAHPI_CRITICAL;
|
|
Packit |
db01ca |
else if (strcmp(str, "maj") == 0) sev = SAHPI_MAJOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "min") == 0) sev = SAHPI_MINOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "info") == 0) sev = SAHPI_INFORMATIONAL;
|
|
Packit |
db01ca |
else if (strcmp(str, "ok") == 0) sev = SAHPI_OK;
|
|
Packit |
db01ca |
else {
|
|
Packit |
db01ca |
printf("Invalid severity %s\n", str);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
entryId = SAHPI_ENTRY_UNSPECIFIED;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorAcknowledge(Domain->sessionId, rptid, rdrnum,
|
|
Packit |
db01ca |
entryId, sev);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiAnnunciatorAcknowledge error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t delete_announ(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char str[32];
|
|
Packit |
db01ca |
int i, any = 0;
|
|
Packit |
db01ca |
SaHpiSeverityT sev = SAHPI_OK;
|
|
Packit |
db01ca |
SaHpiEntryIdT entryId = 0;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("EntryId(<Id> | any): ", str, 32);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
if (strcmp(str, "any") == 0) any = 1;
|
|
Packit |
db01ca |
else entryId = atoi(str);
|
|
Packit |
db01ca |
if (any) {
|
|
Packit |
db01ca |
i = get_string_param("Severity(crit|maj|min|info|ok|all): ",
|
|
Packit |
db01ca |
str, 10);
|
|
Packit |
db01ca |
if (i != 0) return(-1);
|
|
Packit |
db01ca |
if (strcmp(str, "crit") == 0) sev = SAHPI_CRITICAL;
|
|
Packit |
db01ca |
else if (strcmp(str, "maj") == 0) sev = SAHPI_MAJOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "min") == 0) sev = SAHPI_MINOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "info") == 0) sev = SAHPI_INFORMATIONAL;
|
|
Packit |
db01ca |
else if (strcmp(str, "ok") == 0) sev = SAHPI_OK;
|
|
Packit |
db01ca |
else if (strcmp(str, "all") == 0) sev = SAHPI_ALL_SEVERITIES;
|
|
Packit |
db01ca |
else {
|
|
Packit |
db01ca |
printf("Invalid severity %s\n", str);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
entryId = SAHPI_ENTRY_UNSPECIFIED;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorDelete(Domain->sessionId, rptid, rdrnum,
|
|
Packit |
db01ca |
entryId, sev);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiAnnunciatorDelete error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static ret_code_t add_announ(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char str[32];
|
|
Packit |
db01ca |
int i;
|
|
Packit |
db01ca |
SaHpiSeverityT sev = SAHPI_OK;
|
|
Packit |
db01ca |
SaHpiAnnouncementT announ;
|
|
Packit |
db01ca |
SaHpiStatusCondTypeT type = SAHPI_STATUS_COND_TYPE_SENSOR;
|
|
Packit |
db01ca |
SaHpiDomainIdT did;
|
|
Packit |
db01ca |
SaHpiResourceIdT resId;
|
|
Packit |
db01ca |
SaHpiSensorNumT sennum = 0;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
memset(&announ, 0, sizeof(SaHpiAnnouncementT));
|
|
Packit |
db01ca |
i = get_string_param("Severity(crit|maj|min|info|ok): ",
|
|
Packit |
db01ca |
str, 10);
|
|
Packit |
db01ca |
if (i != 0) return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
if (strcmp(str, "crit") == 0) sev = SAHPI_CRITICAL;
|
|
Packit |
db01ca |
else if (strcmp(str, "maj") == 0) sev = SAHPI_MAJOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "min") == 0) sev = SAHPI_MINOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "info") == 0) sev = SAHPI_INFORMATIONAL;
|
|
Packit |
db01ca |
else if (strcmp(str, "ok") == 0) sev = SAHPI_OK;
|
|
Packit |
db01ca |
else {
|
|
Packit |
db01ca |
printf("Invalid severity %s\n", str);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
announ.Severity = sev;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_string_param("Condition Type(sensor|res|oem|user): ",
|
|
Packit |
db01ca |
str, 10);
|
|
Packit |
db01ca |
if (i != 0) return(-1);
|
|
Packit |
db01ca |
if (strcmp(str, "sensor") == 0) type = SAHPI_STATUS_COND_TYPE_SENSOR;
|
|
Packit |
db01ca |
else if (strcmp(str, "res") == 0) type = SAHPI_STATUS_COND_TYPE_RESOURCE;
|
|
Packit |
db01ca |
else if (strcmp(str, "oem") == 0) type = SAHPI_STATUS_COND_TYPE_OEM;
|
|
Packit |
db01ca |
else if (strcmp(str, "user") == 0) type = SAHPI_STATUS_COND_TYPE_USER;
|
|
Packit |
db01ca |
else {
|
|
Packit |
db01ca |
printf("Invalid Condition Type %s\n", str);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
announ.StatusCond.Type = type;
|
|
Packit |
db01ca |
// EntityPath: is needed ???
|
|
Packit |
db01ca |
// oh_encode_entitypath(char *str, SaHpiEntityPathT *ep); convert string into ep.
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("DomainId: ", (int *)&did;;
|
|
Packit |
db01ca |
if (i != 1) did = SAHPI_UNSPECIFIED_DOMAIN_ID;
|
|
Packit |
db01ca |
announ.StatusCond.DomainId = did;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("ResourceId: ", (int *)&resId);
|
|
Packit |
db01ca |
if (i != 1) resId = SAHPI_UNSPECIFIED_RESOURCE_ID;
|
|
Packit |
db01ca |
announ.StatusCond.ResourceId = resId;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
i = get_int_param("Sensor number: ", (int *)&sennum);
|
|
Packit |
db01ca |
announ.StatusCond.SensorNum = sennum;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorAdd(Domain->sessionId, rptid, rdrnum, &announ);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiAnnunciatorAdd error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static void show_cond(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum, int num)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiAnnouncementT announ;
|
|
Packit |
db01ca |
SaHpiTextBufferT buffer;
|
|
Packit |
db01ca |
SaHpiConditionT *cond;
|
|
Packit |
db01ca |
char *str;
|
|
Packit |
db01ca |
oh_big_textbuffer tmpbuf;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorGet(Domain->sessionId, rptid, rdrnum, num, &announ);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("Can not find Announcement: %d\n", num);
|
|
Packit |
db01ca |
return;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
oh_decode_time(announ.Timestamp, &buffer);
|
|
Packit |
db01ca |
printf(" ID: %d AddedByUser: %d Acknowledged: %d Time: %s Sever: %d\n",
|
|
Packit |
db01ca |
announ.EntryId, announ.AddedByUser, announ.Acknowledged,
|
|
Packit |
db01ca |
buffer.Data, announ.Severity);
|
|
Packit |
db01ca |
cond = &(announ.StatusCond);
|
|
Packit |
db01ca |
switch (cond->Type) {
|
|
Packit |
db01ca |
case SAHPI_STATUS_COND_TYPE_SENSOR: str = "SENSOR"; break;
|
|
Packit |
db01ca |
case SAHPI_STATUS_COND_TYPE_RESOURCE: str = "RESOURCE"; break;
|
|
Packit |
db01ca |
case SAHPI_STATUS_COND_TYPE_OEM: str = "OEM"; break;
|
|
Packit |
db01ca |
case SAHPI_STATUS_COND_TYPE_USER: str = "USER"; break;
|
|
Packit |
db01ca |
default: str = "UNKNOWN"; break;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
printf(" Condition: Type = %s DomainId = %d ResId %d SensorNum = %d\n",
|
|
Packit |
db01ca |
str, cond->DomainId, cond->ResourceId, cond->SensorNum);
|
|
Packit |
db01ca |
oh_decode_entitypath(&(cond->Entity), &tmpbuf);
|
|
Packit |
db01ca |
printf(" EPath = %s\n", tmpbuf.Data);
|
|
Packit |
db01ca |
printf(" Mid = %d EventState = %x\n", cond->Mid, cond->EventState);
|
|
Packit |
db01ca |
printf(" Name = %s Data = %s\n", cond->Name.Value, cond->Data.Data);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_acknow(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(set_acknowledge(ann_block_env.rptid, ann_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_list(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(list_cond(ann_block_env.rptid, ann_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_add(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(add_announ(ann_block_env.rptid, ann_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_delete(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return(delete_announ(ann_block_env.rptid, ann_block_env.rdrnum));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_modeget(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiAnnunciatorModeT mode;
|
|
Packit |
db01ca |
char *str;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorModeGet(Domain->sessionId, ann_block_env.rptid,
|
|
Packit |
db01ca |
ann_block_env.rdrnum, &mode);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiAnnunciatorModeGet error %s\n",
|
|
Packit |
db01ca |
oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
switch (mode) {
|
|
Packit |
db01ca |
case SAHPI_ANNUNCIATOR_MODE_AUTO:
|
|
Packit |
db01ca |
str = "AUTO"; break;
|
|
Packit |
db01ca |
case SAHPI_ANNUNCIATOR_MODE_USER:
|
|
Packit |
db01ca |
str = "USER"; break;
|
|
Packit |
db01ca |
case SAHPI_ANNUNCIATOR_MODE_SHARED:
|
|
Packit |
db01ca |
str = "SHARED"; break;
|
|
Packit |
db01ca |
default: str = "Unknown"; break;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
printf("Annunciator Mode: %s\n", str);
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_modeset(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
SaHpiAnnunciatorModeT mode;
|
|
Packit |
db01ca |
char buf[256];
|
|
Packit |
db01ca |
int res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
res = get_string_param("Mode(auto|user|shared): ", buf, 10);
|
|
Packit |
db01ca |
if (res != 0) {
|
|
Packit |
db01ca |
printf("Invalid mode: %s\n", buf);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
if (strcmp(buf, "auto") == 0)
|
|
Packit |
db01ca |
mode = SAHPI_ANNUNCIATOR_MODE_AUTO;
|
|
Packit |
db01ca |
else if (strcmp(buf, "user") == 0)
|
|
Packit |
db01ca |
mode = SAHPI_ANNUNCIATOR_MODE_USER;
|
|
Packit |
db01ca |
else if (strcmp(buf, "shared") == 0)
|
|
Packit |
db01ca |
mode = SAHPI_ANNUNCIATOR_MODE_SHARED;
|
|
Packit |
db01ca |
else {
|
|
Packit |
db01ca |
printf("Invalid mode: %s\n", buf);
|
|
Packit |
db01ca |
return(HPI_SHELL_PARM_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
rv = saHpiAnnunciatorModeSet(Domain->sessionId, ann_block_env.rptid,
|
|
Packit |
db01ca |
ann_block_env.rdrnum, mode);
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiAnnunciatorModeSet error %s\n",
|
|
Packit |
db01ca |
oh_lookup_error(rv));
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block_show(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
term_def_t *term;
|
|
Packit |
db01ca |
int res, val;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
term = get_next_term();
|
|
Packit |
db01ca |
if (term == NULL) {
|
|
Packit |
db01ca |
show_rdr_attrs(&(ann_block_env.rdr_entry));
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
unget_term();
|
|
Packit |
db01ca |
res = get_int_param(" ", &val;;
|
|
Packit |
db01ca |
if (res != 1) unget_term();
|
|
Packit |
db01ca |
else show_cond(ann_block_env.rptid, ann_block_env.rdrnum, val);
|
|
Packit |
db01ca |
return(HPI_SHELL_OK);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret_code_t ann_block(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaHpiResourceIdT rptid;
|
|
Packit |
db01ca |
SaHpiInstrumentIdT rdrnum;
|
|
Packit |
db01ca |
SaHpiRdrTypeT type;
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
char buf[256];
|
|
Packit |
db01ca |
ret_code_t ret;
|
|
Packit |
db01ca |
term_def_t *term;
|
|
Packit |
db01ca |
int res;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ret = ask_rpt(&rptid);
|
|
Packit |
db01ca |
if (ret != HPI_SHELL_OK) return(ret);
|
|
Packit |
db01ca |
type = SAHPI_ANNUNCIATOR_RDR;
|
|
Packit |
db01ca |
ret = ask_rdr(rptid, type, &rdrnum);
|
|
Packit |
db01ca |
if (ret != HPI_SHELL_OK) return(ret);
|
|
Packit |
db01ca |
rv = saHpiRdrGetByInstrumentId(Domain->sessionId, rptid, type, rdrnum,
|
|
Packit |
db01ca |
&(ann_block_env.rdr_entry));
|
|
Packit |
db01ca |
if (rv != SA_OK) {
|
|
Packit |
db01ca |
printf("saHpiRdrGetByInstrumentId error %s\n", oh_lookup_error(rv));
|
|
Packit |
db01ca |
printf("ERROR!!! Can not get rdr: ResourceId=%d RdrType=%d RdrNum=%d\n",
|
|
Packit |
db01ca |
rptid, type, rdrnum);
|
|
Packit |
db01ca |
return(HPI_SHELL_CMD_ERROR);
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
ann_block_env.rptid = rptid;
|
|
Packit |
db01ca |
ann_block_env.rdrnum = rdrnum;
|
|
Packit |
db01ca |
show_rdr_attrs(&(ann_block_env.rdr_entry));
|
|
Packit |
db01ca |
for (;;) {
|
|
Packit |
db01ca |
block_type = ANN_COM;
|
|
Packit |
db01ca |
res = get_new_command("annunciator block ==> ");
|
|
Packit |
db01ca |
if (res == 2) {
|
|
Packit |
db01ca |
unget_term();
|
|
Packit |
db01ca |
block_type = MAIN_COM;
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
term = get_next_term();
|
|
Packit |
db01ca |
if (term == NULL) continue;
|
|
Packit |
db01ca |
snprintf(buf, 256, "%s", term->term);
|
|
Packit |
db01ca |
if ((strcmp(buf, "q") == 0) || (strcmp(buf, "quit") == 0)) break;
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
block_type = MAIN_COM;
|
|
Packit |
db01ca |
return HPI_SHELL_OK;
|
|
Packit |
db01ca |
}
|