コード例 #1
0
ファイル: Ohpi.cs プロジェクト: openhpi2/openhpi_bug_test
            public static long oHpiDomainAdd(
                SaHpiTextBufferT Host,
                int Port,
                SaHpiEntityPathT EntityRoot,
                out long DomainId
                )
            {
                DomainId = 0;

                String s = HpiUtil.FromSaHpiTextBufferT(Host);

                if (s == null)
                {
                    return(HpiConst.SA_ERR_HPI_INVALID_PARAMS);
                }

                HpiDomain d = HpiCore.CreateDomain(s, Port, EntityRoot);

                if (d == null)
                {
                    return(HpiConst.SA_ERR_HPI_INTERNAL_ERROR);
                }

                DomainId = d.GetLocalDid();

                return(HpiConst.SA_OK);
            }
コード例 #2
0
            private static void CreateDefaultDomain()
            {
                if (domains.ContainsKey(HpiConst.SAHPI_UNSPECIFIED_DOMAIN_ID))
                {
                    return;
                }
                string host = Environment.GetEnvironmentVariable("OPENHPI_DAEMON_HOST");

                if (host == null)
                {
                    host = "localhost";
                }
                int    port;
                string portstr = Environment.GetEnvironmentVariable("OPENHPI_DAEMON_PORT");

                if (portstr != null)
                {
                    try {
                        port = Convert.ToInt32(portstr);
                    } catch (FormatException) {
                        port = OhpiConst.DEFAULT_PORT;
                    }
                }
                else
                {
                    port = OhpiConst.DEFAULT_PORT;
                }
                HpiDomain d = new HpiDomain(HpiConst.SAHPI_UNSPECIFIED_DOMAIN_ID,
                                            host,
                                            port,
                                            HpiUtil.MakeRootSaHpiEntityPathT());

                domains[d.GetLocalDid()] = d;
            }
コード例 #3
0
 private static void Dump()
 {
     if (my_ep != null)
     {
         Console.WriteLine("My Entity: {0}", HpiUtil.FromSaHpiEntityPathT(my_ep));
     }
     Console.WriteLine("Defined Domains:");
     foreach (KeyValuePair <long, HpiDomain> kv in domains)
     {
         Console.WriteLine("  id {0} => id {1}, host {2}, port {3}, root {4}",
                           kv.Value.GetLocalDid(),
                           kv.Value.GetRemoteDid(),
                           kv.Value.GetRemoteHost(),
                           kv.Value.GetRemotePort(),
                           HpiUtil.FromSaHpiEntityPathT(kv.Value.GetEntityRoot()));
     }
 }
コード例 #4
0
 /***********************************************************
  * Helper functions
  * TODO - move to HpiUtils?
  **********************************************************/
 private static SaHpiConditionT NewCondition()
 {
     return(new SaHpiConditionT
     {
         Type = HpiConst.SAHPI_STATUS_COND_TYPE_USER,
         Entity = HpiUtil.MakeUnspecifiedSaHpiEntityPathT(),
         DomainId = HpiConst.SAHPI_UNSPECIFIED_DOMAIN_ID,
         ResourceId = HpiConst.SAHPI_UNSPECIFIED_RESOURCE_ID,
         SensorNum = HpiConst.SAHPI_ENTRY_UNSPECIFIED,
         EventState = HpiConst.SAHPI_ES_UNSPECIFIED,
         Name = new SaHpiNameT
         {
             Length = 0,
             Value = new byte[HpiConst.SA_HPI_MAX_NAME_LENGTH],
         },
         Mid = HpiConst.SAHPI_MANUFACTURER_ID_UNSPECIFIED,
         Data = HpiUtil.ToSaHpiTextBufferT(""),
     });
 }
コード例 #5
0
            public static long saHpiDimiTestStart(
                long SessionId,
                long ResourceId,
                long DimiNum,
                long TestNum,
                long NumberOfParams,
                SaHpiDimiTestVariableParamsT[] ParamsList
                )
            {
                long rv;
                bool rc;

                if (NumberOfParams != 0)
                {
                    if (ParamsList == null)
                    {
                        return(HpiConst.SA_ERR_HPI_INVALID_PARAMS);
                    }
                    if (NumberOfParams > ParamsList.Length)
                    {
                        return(HpiConst.SA_ERR_HPI_INVALID_PARAMS);
                    }
                    for (int i = 0; i < NumberOfParams; ++i)
                    {
                        rc = HpiUtil.Check(ParamsList[i]);
                        if (!rc)
                        {
                            return(HpiConst.SA_ERR_HPI_INVALID_PARAMS);
                        }
                    }
                }
                HpiSession s = HpiCore.GetSession(SessionId);

                if (s == null)
                {
                    return(HpiConst.SA_ERR_HPI_INVALID_SESSION);
                }
                OhpiMarshal m = s.GetMarshal();

                if (m == null)
                {
                    return(HpiConst.SA_ERR_HPI_NO_RESPONSE);
                }

                m.MarshalSaHpiSessionIdT(s.GetRemoteSid());
                m.MarshalSaHpiResourceIdT(ResourceId);
                m.MarshalSaHpiDimiNumT(DimiNum);
                m.MarshalSaHpiDimiTestNumT(TestNum);
                m.MarshalSaHpiUint8T(NumberOfParams);
                for (int i = 0; i < NumberOfParams; ++i)
                {
                    m.MarshalSaHpiDimiTestVariableParamsT(ParamsList[i]);
                }
                rc = m.Interchange(OhpiConst.RPC_SAHPI_DIMI_TEST_START);
                if (!rc)
                {
                    m.Close();
                    return(HpiConst.SA_ERR_HPI_NO_RESPONSE);
                }
                rv = m.DemarshalSaErrorT();
                if (rv == HpiConst.SA_OK)
                {
                    // No output arguments
                }
                s.PutMarshal(m);

                return(rv);
            }
コード例 #6
0
    public static void Main()
    {
        long version = Api.oHpiVersionGet();

        Console.WriteLine("OpenHPI baselib package version: 0x{0:X16}", version);

        long rv;
        long did;
        long sid;

        rv = Api.oHpiDomainAdd(HpiUtil.ToSaHpiTextBufferT("localhost"),
                               OhpiConst.DEFAULT_PORT,
                               HpiUtil.MakeRootSaHpiEntityPathT(),
                               out did);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: oHpiDomainAdd: {0}", rv);
            return;
        }

        Console.WriteLine("DID = {0}", did);

        rv = Api.saHpiSessionOpen(did, out sid, null);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionOpen: {0}", rv);
            return;
        }

        Console.WriteLine("SID = {0}", sid);

        SaHpiEntityPathT my_ep;

        rv = Api.saHpiMyEntityPathGet(sid, out my_ep);
        if (rv == HpiConst.SA_OK)
        {
            Console.WriteLine("My entity: {0}", HpiUtil.FromSaHpiEntityPathT(my_ep));
        }

        Console.WriteLine("Resource List:");

        long           eid = HpiConst.SAHPI_FIRST_ENTRY;
        long           next_eid;
        SaHpiRptEntryT rpte;

        do
        {
            rv = Api.saHpiRptEntryGet(sid, eid, out next_eid, out rpte);
            if ((eid == HpiConst.SAHPI_FIRST_ENTRY) && (rv == HpiConst.SA_ERR_HPI_NOT_PRESENT))
            {
                break;
            }
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: saHpiRptEntryGet: {0}", rv);
                return;
            }
            Console.WriteLine("  HPI Resource {0}: {1}: {2}",
                              rpte.ResourceId,
                              HpiUtil.FromSaHpiTextBufferT(rpte.ResourceTag),
                              HpiUtil.FromSaHpiEntityPathT(rpte.ResourceEntity));
            eid = next_eid;
        } while (eid != HpiConst.SAHPI_LAST_ENTRY);

        rv = Api.saHpiSessionClose(sid);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionClose: {0}", rv);
            return;
        }

        Console.WriteLine("End");
    }
コード例 #7
0
 public static void SetMyEntity(SaHpiEntityPathT ep)
 {
     my_ep = HpiUtil.CloneSaHpiEntityPathT(ep);
 }
コード例 #8
0
 public static SaHpiEntityPathT GetMyEntity()
 {
     return(HpiUtil.CloneSaHpiEntityPathT(my_ep));
 }
コード例 #9
0
    public static void Main()
    {
        long rv;
        long did;
        long sid;

        rv = Api.oHpiDomainAdd(HpiUtil.ToSaHpiTextBufferT("localhost"),
                               OhpiConst.DEFAULT_PORT,
                               HpiUtil.MakeRootSaHpiEntityPathT(),
                               out did);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: oHpiDomainAdd: {0}", rv);
            return;
        }

        rv = Api.saHpiSessionOpen(did, out sid, null);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionOpen: {0}", rv);
            return;
        }

        // DRT
        Console.WriteLine("");
        Console.WriteLine("DRT:");
        foreach (var drte in HpiIterators.Drt(sid))
        {
            Console.WriteLine("  HPI Domain {0}: Is Peer {1}",
                              drte.DomainId,
                              drte.IsPeer);
        }

        // DAT
        Console.WriteLine("");
        Console.WriteLine("DAT:");
        foreach (var a in HpiIterators.Dat(sid))
        {
            Console.WriteLine("  Alarm {0}: {1}: {2}",
                              a.AlarmId,
                              HpiUtil.FromSaHpiSeverityT(a.Severity),
                              HpiUtil.FromSaHpiStatusCondTypeT(a.AlarmCond.Type));
        }

        // DEL: Read backward
        Console.WriteLine("");
        Console.WriteLine("DEL: Newest entries first");
        foreach (var ex in HpiIterators.EventLogEntries(sid, HpiConst.SAHPI_UNSPECIFIED_RESOURCE_ID, false))
        {
            Console.WriteLine("  Entry {0}: {1}",
                              ex.EventLogEntry.EntryId,
                              HpiUtil.FromSaHpiEventTypeT(ex.EventLogEntry.Event.EventType));
        }

        // Iterate over top-level entities
        Console.WriteLine("");
        Console.WriteLine("Top-level Entities:");
        SaHpiEntityPathT root = HpiUtil.MakeRootSaHpiEntityPathT();

        foreach (var child in HpiIterators.ChildEntities(sid, root))
        {
            Console.WriteLine("  {0}", HpiUtil.FromSaHpiEntityPathT(child));
            // Resources for the entity
            Console.WriteLine("    Resources:");
            foreach (var rid in HpiIterators.EntityResourceIds(sid, child))
            {
                Console.WriteLine("      Resource {0}", rid);
            }
            // Sensors for the entity
            Console.WriteLine("    Sensors:");
            foreach (var ri in HpiIterators.EntityInstrumentIds(sid, child, HpiConst.SAHPI_SENSOR_RDR))
            {
                Console.WriteLine("      Resource {0} Sensor {1}", ri.ResourceId, ri.InstrumentId);
            }
        }

        // RPT
        Console.WriteLine("");
        Console.WriteLine("RPT:");
        foreach (var rpte in HpiIterators.Rpt(sid))
        {
            Console.WriteLine("  Resource {0}: {1}: {2}",
                              rpte.ResourceId,
                              HpiUtil.FromSaHpiTextBufferT(rpte.ResourceTag),
                              HpiUtil.FromSaHpiEntityPathT(rpte.ResourceEntity));
        }

        // RDRs
        Console.WriteLine("");
        Console.WriteLine("RDRs:");
        foreach (var rpte in HpiIterators.Rpt(sid))
        {
            Console.WriteLine("  Resource {0}:", rpte.ResourceId);
            foreach (var rdr in HpiIterators.Rdrs(sid, rpte.ResourceId))
            {
                Console.WriteLine("    {0}: {1}",
                                  HpiUtil.FromSaHpiRdrTypeT(rdr.RdrType),
                                  HpiUtil.FromSaHpiTextBufferT(rdr.IdString));
            }
        }

        // IDR Areas (LINQ is used to select IDRs as an example)
        Console.WriteLine("");
        Console.WriteLine("IDRs:");
        var idrs = from rpte in HpiIterators.Rpt(sid)
                   from rdr in HpiIterators.Rdrs(sid, rpte.ResourceId)
                   where rdr.RdrType == HpiConst.SAHPI_INVENTORY_RDR
                   select new { rid = rpte.ResourceId, idrid = rdr.RdrTypeUnion.InventoryRec.IdrId };

        foreach (var ri in idrs)
        {
            Console.WriteLine("  Resource {0}: IDR {1}:", ri.rid, ri.idrid);
            // IDR Areas
            foreach (var ahdr in HpiIterators.IdrAreaHeaders(sid, ri.rid, ri.idrid))
            {
                Console.WriteLine("    Area {0}: {1}",
                                  ahdr.AreaId,
                                  HpiUtil.FromSaHpiIdrAreaTypeT(ahdr.Type));
                // IDR Fields
                foreach (var f in HpiIterators.IdrAreaFields(sid, ri.rid, ri.idrid, ahdr.AreaId))
                {
                    Console.WriteLine("      Field {0}: {1}",
                                      f.FieldId,
                                      HpiUtil.FromSaHpiIdrFieldTypeT(f.Type));
                }
            }
        }

        // Announcements in Annunciators (LINQ is used to select annunciators as an example)
        Console.WriteLine("");
        Console.WriteLine("Annunciators:");
        var anns = from rpte in HpiIterators.Rpt(sid)
                   from rdr in HpiIterators.Rdrs(sid, rpte.ResourceId)
                   where rdr.RdrType == HpiConst.SAHPI_ANNUNCIATOR_RDR
                   select new { rid = rpte.ResourceId, annnum = rdr.RdrTypeUnion.AnnunciatorRec.AnnunciatorNum };

        foreach (var ri in anns)
        {
            Console.WriteLine("  Resource {0}: Annunciator {1}:", ri.rid, ri.annnum);
            // Announcements
            foreach (var a in HpiIterators.Announcements(sid, ri.rid, ri.annnum))
            {
                Console.WriteLine("    Announcement {0}: {1}: {2}",
                                  a.EntryId,
                                  HpiUtil.FromSaHpiSeverityT(a.Severity),
                                  HpiUtil.FromSaHpiStatusCondTypeT(a.StatusCond.Type));
            }
        }

        // FUMI (LINQ is used to select FUMIs with Logical Bank only as an example)
        Console.WriteLine("");
        Console.WriteLine("FUMIs:");
        var fumis = from rpte in HpiIterators.Rpt(sid)
                    from rdr in HpiIterators.Rdrs(sid, rpte.ResourceId)
                    where rdr.RdrType == HpiConst.SAHPI_FUMI_RDR
                    where rdr.RdrTypeUnion.FumiRec.NumBanks == 0
                    select new { rid = rpte.ResourceId, fuminum = rdr.RdrTypeUnion.FumiRec.Num };

        foreach (var ri in fumis)
        {
            Console.WriteLine("  Resource {0}: FUMI {1}:", ri.rid, ri.fuminum);
            // Source components
            Console.WriteLine("    Source Components:");
            foreach (var info in HpiIterators.FumiSourceComponents(sid, ri.rid, ri.fuminum, 0))
            {
                Console.WriteLine("      Component {0}: {1}: FW {2}.{3}.{4}",
                                  info.ComponentId,
                                  HpiUtil.FromSaHpiTextBufferT(info.MainFwInstance.Description),
                                  info.MainFwInstance.MajorVersion,
                                  info.MainFwInstance.MinorVersion,
                                  info.MainFwInstance.AuxVersion);
            }
            // Target components
            Console.WriteLine("    Target Components:");
            foreach (var info in HpiIterators.FumiTargetComponents(sid, ri.rid, ri.fuminum, 0))
            {
                Console.WriteLine("      Component {0}: {1}: FW {2}.{3}.{4}",
                                  info.ComponentId,
                                  HpiUtil.FromSaHpiTextBufferT(info.MainFwInstance.Description),
                                  info.MainFwInstance.MajorVersion,
                                  info.MainFwInstance.MinorVersion,
                                  info.MainFwInstance.AuxVersion);
            }
            // Logical Target components
            Console.WriteLine("    Logical Target Components:");
            foreach (var info in HpiIterators.FumiLogicalTargetComponents(sid, ri.rid, ri.fuminum))
            {
                Console.WriteLine("      Component {0}:", info.ComponentId);
                if (info.PendingFwInstance.InstancePresent != HpiConst.SAHPI_FALSE)
                {
                    Console.WriteLine("        Pending FW {0}.{1}.{2}:",
                                      info.PendingFwInstance.MajorVersion,
                                      info.PendingFwInstance.MinorVersion,
                                      info.PendingFwInstance.AuxVersion);
                }
                if (info.RollbackFwInstance.InstancePresent != HpiConst.SAHPI_FALSE)
                {
                    Console.WriteLine("        Rollback FW {0}.{1}.{2}:",
                                      info.RollbackFwInstance.MajorVersion,
                                      info.RollbackFwInstance.MinorVersion,
                                      info.RollbackFwInstance.AuxVersion);
                }
            }
        }

        rv = Api.saHpiSessionClose(sid);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionClose: {0}", rv);
            return;
        }
    }
コード例 #10
0
    public static void Main()
    {
        long rv;
        long sid;

        rv = Api.saHpiSessionOpen(HpiConst.SAHPI_UNSPECIFIED_DOMAIN_ID, out sid, null);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionOpen: {0}", rv);
            return;
        }

        long last_hid = HpiConst.SAHPI_LAST_ENTRY;

        // List all handlers
        ASCIIEncoding ascii = new ASCIIEncoding();

        foreach (long hid in OhpiIterators.HandlerIds(sid))
        {
            last_hid = hid;
            Console.WriteLine("Handler {0}", hid);
            oHpiHandlerInfoT   hinfo;
            oHpiHandlerConfigT hconf;
            rv = Api.oHpiHandlerInfo(sid, hid, out hinfo, out hconf);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerInfo: {0}", rv);
                continue;
            }
            Console.WriteLine(" Info");
            Console.WriteLine("  id {0}", hinfo.id);
            Console.WriteLine("  name {0}", ascii.GetString(hinfo.plugin_name));
            Console.WriteLine("  entity_root {0}", HpiUtil.FromSaHpiEntityPathT(hinfo.entity_root));
            Console.WriteLine("  load_failed {0}", hinfo.load_failed);
            Console.WriteLine(" Config");
            foreach (var kv in OhpiUtil.FromoHpiHandlerConfigT(hconf))
            {
                Console.WriteLine("  {0} = {1}", kv.Key, kv.Value);
            }
        }

        // Retry last handler
        if (last_hid != HpiConst.SAHPI_LAST_ENTRY)
        {
            Console.WriteLine("Re-trying last handler: {0}", last_hid);
            rv = Api.oHpiHandlerRetry(sid, last_hid);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerRetry: {0}", rv);
            }
        }

        // Destroy last handler
        if (last_hid != HpiConst.SAHPI_LAST_ENTRY)
        {
            Console.WriteLine("Destroying last handler: {0}", last_hid);
            rv = Api.oHpiHandlerDestroy(sid, last_hid);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerDestroy: {0}", rv);
            }
        }

        // Look for handler providing specified resource
        {
            long hid = HpiConst.SAHPI_LAST_ENTRY;
            long rid = 5;
            rv = Api.oHpiHandlerFind(sid, rid, out hid);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerFind: {0}", rv);
            }
            if (hid != HpiConst.SAHPI_LAST_ENTRY)
            {
                Console.WriteLine("Resource {0} is provided by handler {1}", rid, hid);
            }
        }

        // Create new instance of test_agent plugin
        {
            Console.WriteLine("Creating new handler");
            var d = new Dictionary <String, String>
            {
                { "plugin", "libtest_agent" },
                { "port", "9999" }
            };
            var  hconf = OhpiUtil.TooHpiHandlerConfigT(d);
            long hid;
            rv = Api.oHpiHandlerCreate(sid, hconf, out hid);
            if (rv == HpiConst.SA_OK)
            {
                Console.WriteLine("Created handler {0}", hid);
            }
            else
            {
                Console.WriteLine("Error: oHpiHandlerCreate: {0}", rv);
            }
        }

        rv = Api.saHpiSessionClose(sid);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionClose: {0}", rv);
            return;
        }
    }