|
Packit |
db01ca |
/* -*- linux-c -*-
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* (C) Copyright IBM Corp. 2004-2008
|
|
Packit |
db01ca |
* (C) Copyright Pigeon Point Systems. 2010
|
|
Packit |
db01ca |
* (C) Copyright Nokia Siemens Networks 2010
|
|
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 |
* W. David Ashley <dashley@us.ibm.com>
|
|
Packit |
db01ca |
* Renier Morales <renier@openhpi.org>
|
|
Packit |
db01ca |
* Anton Pak <anton.pak@pigeonpoint.com>
|
|
Packit |
db01ca |
* Ulrich Kleber <ulikleber@users.sourceforge.net>
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include <stddef.h>
|
|
Packit |
db01ca |
#include <string.h>
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include <glib.h>
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include <SaHpi.h>
|
|
Packit |
db01ca |
#include <oHpi.h>
|
|
Packit |
db01ca |
#include <config.h>
|
|
Packit |
db01ca |
#include <marshal_hpi.h>
|
|
Packit |
db01ca |
#include <oh_rpc_params.h>
|
|
Packit |
db01ca |
#include <oh_utils.h>
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include "conf.h"
|
|
Packit |
db01ca |
#include "init.h"
|
|
Packit |
db01ca |
#include "session.h"
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* Utility functions */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
static void __dehash_config(gpointer key, gpointer value, gpointer data)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
oHpiHandlerConfigT *hc = (oHpiHandlerConfigT *)data;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
strncpy((char *)hc->Params[hc->NumberOfParams].Name,
|
|
Packit |
db01ca |
(const char *)key,
|
|
Packit |
db01ca |
SAHPI_MAX_TEXT_BUFFER_LENGTH);
|
|
Packit |
db01ca |
strncpy((char *)hc->Params[hc->NumberOfParams].Value,
|
|
Packit |
db01ca |
(const char *)value,
|
|
Packit |
db01ca |
SAHPI_MAX_TEXT_BUFFER_LENGTH);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
++hc->NumberOfParams;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiVersionGet */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaHpiUint64T SAHPI_API oHpiVersionGet(void)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaHpiUint64T v = 0;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
OHPI_VERSION_GET(v, VERSION);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return v;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiHandlerCreate */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiHandlerCreate (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN GHashTable *config,
|
|
Packit |
db01ca |
SAHPI_OUT oHpiHandlerIdT *id)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
oHpiHandlerConfigT handler_config;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (!config || !id) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (g_hash_table_size(config) == 0) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
handler_config.Params = g_new0(oHpiHandlerConfigParamT, g_hash_table_size(config));
|
|
Packit |
db01ca |
handler_config.NumberOfParams = 0;
|
|
Packit |
db01ca |
// add each hash table entry to the marshable handler_config
|
|
Packit |
db01ca |
g_hash_table_foreach(config, __dehash_config, &handler_config);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
// now create the handler
|
|
Packit |
db01ca |
ClientRpcParams iparams(&handler_config);
|
|
Packit |
db01ca |
ClientRpcParams oparams(id);
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiHandlerCreate, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiHandlerDestroy */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiHandlerDestroy (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN oHpiHandlerIdT id)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (id == 0) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(&id;;
|
|
Packit |
db01ca |
ClientRpcParams oparams;
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiHandlerDestroy, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiHandlerInfo */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiHandlerInfo (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN oHpiHandlerIdT id,
|
|
Packit |
db01ca |
SAHPI_OUT oHpiHandlerInfoT *info,
|
|
Packit |
db01ca |
SAHPI_INOUT GHashTable *conf_params)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
oHpiHandlerConfigT config;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (id == 0 || !info || !conf_params) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (g_hash_table_size(conf_params) != 0) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(&id;;
|
|
Packit |
db01ca |
ClientRpcParams oparams(info, &config);
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiHandlerInfo, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
for (unsigned int n = 0; n < config.NumberOfParams; n++) {
|
|
Packit |
db01ca |
g_hash_table_insert(conf_params,
|
|
Packit |
db01ca |
g_strdup((const gchar *)config.Params[n].Name),
|
|
Packit |
db01ca |
g_strdup((const gchar *)config.Params[n].Value));
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
g_free(config.Params);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiHandlerGetNext */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiHandlerGetNext (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN oHpiHandlerIdT id,
|
|
Packit |
db01ca |
SAHPI_OUT oHpiHandlerIdT *next_id)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (!next_id) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(&id;;
|
|
Packit |
db01ca |
ClientRpcParams oparams(next_id);
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiHandlerGetNext, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiHandlerFind */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiHandlerFind (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN SaHpiResourceIdT rid,
|
|
Packit |
db01ca |
SAHPI_OUT oHpiHandlerIdT *id)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (!id || !rid) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
*id = 0; //Initialize output var
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(&sid, &rid;;
|
|
Packit |
db01ca |
ClientRpcParams oparams(id);
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiHandlerFind, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiHandlerRetry */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiHandlerRetry (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN oHpiHandlerIdT id)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (id == 0) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(&id;;
|
|
Packit |
db01ca |
ClientRpcParams oparams;
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiHandlerRetry, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiGlobalParamGet */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiGlobalParamGet (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_INOUT oHpiGlobalParamT *param)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (!param) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(param);
|
|
Packit |
db01ca |
ClientRpcParams oparams(param);
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiGlobalParamGet, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiGlobalParamSet */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiGlobalParamSet (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN oHpiGlobalParamT *param)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (!param) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(param);
|
|
Packit |
db01ca |
ClientRpcParams oparams;
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiGlobalParamSet, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiInjectEvent */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiInjectEvent (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiSessionIdT sid,
|
|
Packit |
db01ca |
SAHPI_IN oHpiHandlerIdT id,
|
|
Packit |
db01ca |
SAHPI_IN SaHpiEventT *event,
|
|
Packit |
db01ca |
SAHPI_IN SaHpiRptEntryT *rpte,
|
|
Packit |
db01ca |
SAHPI_IN SaHpiRdrT *rdr)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
SaErrorT rv;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
if (id == 0 || !event || !rpte || !rdr) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
ClientRpcParams iparams(&id, event, rpte, rdr);
|
|
Packit |
db01ca |
ClientRpcParams oparams;
|
|
Packit |
db01ca |
rv = ohc_sess_rpc(eFoHpiInjectEvent, sid, iparams, oparams);
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return rv;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiDomainAdd */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiDomainAdd (
|
|
Packit |
db01ca |
SAHPI_IN const SaHpiTextBufferT *host,
|
|
Packit |
db01ca |
SAHPI_IN SaHpiUint16T port,
|
|
Packit |
db01ca |
SAHPI_IN const SaHpiEntityPathT *entity_root,
|
|
Packit |
db01ca |
SAHPI_OUT SaHpiDomainIdT *domain_id)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
if (!host) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (!domain_id) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (!entity_root) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if ((host->DataType != SAHPI_TL_TYPE_BCDPLUS) &&
|
|
Packit |
db01ca |
(host->DataType != SAHPI_TL_TYPE_ASCII6) &&
|
|
Packit |
db01ca |
(host->DataType != SAHPI_TL_TYPE_TEXT))
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_DATA;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
// Function may be called before first session was opened,
|
|
Packit |
db01ca |
// so we may need to initialize
|
|
Packit |
db01ca |
ohc_init();
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
char buf[SAHPI_MAX_TEXT_BUFFER_LENGTH+1];
|
|
Packit |
db01ca |
memcpy(&buf[0], &host->Data[0], host->DataLength);
|
|
Packit |
db01ca |
buf[host->DataLength] = '\0';
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return ohc_add_domain_conf(buf, port, entity_root, domain_id);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiDomainAddById */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiDomainAddById (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiDomainIdT domain_id,
|
|
Packit |
db01ca |
SAHPI_IN const SaHpiTextBufferT *host,
|
|
Packit |
db01ca |
SAHPI_IN SaHpiUint16T port,
|
|
Packit |
db01ca |
SAHPI_IN const SaHpiEntityPathT *entity_root)
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
if (!host) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (!entity_root) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if ((host->DataType != SAHPI_TL_TYPE_BCDPLUS) &&
|
|
Packit |
db01ca |
(host->DataType != SAHPI_TL_TYPE_ASCII6) &&
|
|
Packit |
db01ca |
(host->DataType != SAHPI_TL_TYPE_TEXT))
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_DATA;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
// Function may be called before first session was opened,
|
|
Packit |
db01ca |
// so we may need to initialize
|
|
Packit |
db01ca |
ohc_init();
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
char buf[SAHPI_MAX_TEXT_BUFFER_LENGTH+1];
|
|
Packit |
db01ca |
memcpy(&buf[0], &host->Data[0], host->DataLength);
|
|
Packit |
db01ca |
buf[host->DataLength] = '\0';
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return ohc_add_domain_conf_by_id(domain_id, buf, port, entity_root);
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiDomainEntryGet */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiDomainEntryGet (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiEntryIdT EntryId,
|
|
Packit |
db01ca |
SAHPI_OUT SaHpiEntryIdT *NextEntryId,
|
|
Packit |
db01ca |
SAHPI_OUT oHpiDomainEntryT *DomainEntry)
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
if (!NextEntryId || !DomainEntry) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
// Function may be called before first session was opened,
|
|
Packit |
db01ca |
// so we may need to initialize
|
|
Packit |
db01ca |
ohc_init();
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
const ohc_domain_conf *dc = ohc_get_next_domain_conf(EntryId, NextEntryId);
|
|
Packit |
db01ca |
if (dc == 0) { // no config for did found
|
|
Packit |
db01ca |
return SA_ERR_HPI_NOT_PRESENT;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
DomainEntry->id = (SaHpiDomainIdT) EntryId;
|
|
Packit |
db01ca |
if (oh_init_textbuffer(&DomainEntry->host) != SA_OK) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (oh_append_textbuffer(&DomainEntry->host, dc->host)!= SA_OK) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
DomainEntry->port = dc->port;
|
|
Packit |
db01ca |
memcpy(&DomainEntry->entity_root, &dc->entity_root, sizeof(SaHpiEntityPathT));
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return SA_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
/* oHpiDomainEntryGetByDomainId */
|
|
Packit |
db01ca |
/*----------------------------------------------------------------------------*/
|
|
Packit |
db01ca |
SaErrorT SAHPI_API oHpiDomainEntryGetByDomainId (
|
|
Packit |
db01ca |
SAHPI_IN SaHpiDomainIdT DomainId,
|
|
Packit |
db01ca |
SAHPI_OUT oHpiDomainEntryT *DomainEntry)
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
if (!DomainEntry) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
// Function may be called before first session was opened,
|
|
Packit |
db01ca |
// so we may need to initialize
|
|
Packit |
db01ca |
ohc_init();
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
const ohc_domain_conf *entry = ohc_get_domain_conf(DomainId);
|
|
Packit |
db01ca |
if (entry == 0) { // no config for did found
|
|
Packit |
db01ca |
return SA_ERR_HPI_NOT_PRESENT;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
DomainEntry->id = DomainId;
|
|
Packit |
db01ca |
if (oh_init_textbuffer(&DomainEntry->host) != SA_OK) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
if (oh_append_textbuffer(&DomainEntry->host, entry->host)!= SA_OK) {
|
|
Packit |
db01ca |
return SA_ERR_HPI_INVALID_PARAMS;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
DomainEntry->port = entry->port;
|
|
Packit |
db01ca |
memcpy(&DomainEntry->entity_root, &entry->entity_root, sizeof(SaHpiEntityPathT));
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
return SA_OK;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|