mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 20:39:01 +00:00
143 lines
5.5 KiB
C#
143 lines
5.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
using Cosmos.Hardware.SMBIOS.Table;
|
|
|
|
namespace Cosmos.Hardware.SMBIOS
|
|
{
|
|
public class TestProgram
|
|
{
|
|
public static void DumpBytes( uint from, uint count, uint column )
|
|
{
|
|
Cosmos.Kernel.MemoryAddressSpace Memory = new Cosmos.Kernel.MemoryAddressSpace( 0, 0 );
|
|
|
|
uint j = 0;
|
|
|
|
for( uint i = 0; i < count; i++ )
|
|
{
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( Memory.Read8Unchecked( from + i ), 2 ) );
|
|
Console.Write( " " );
|
|
j++;
|
|
if( j == column )
|
|
{
|
|
Console.WriteLine( "" );
|
|
j = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void Init()
|
|
{
|
|
// prevent interrupts from being enabled for now.
|
|
bool xTest = true;
|
|
if (xTest)
|
|
{
|
|
var xBoot = new Cosmos.Sys.Boot();
|
|
xBoot.Execute();
|
|
}
|
|
|
|
SMBIOS a = new SMBIOS();
|
|
|
|
if( a.CheckSMBIOS() )
|
|
{
|
|
a.GetSMBIOS_Data();
|
|
|
|
Console.Write( " SMBios found at: 0x" );
|
|
//Console.Write(Cosmos.Kernel.HexExtension.ToHex(a.SMBBIOSAddress, 8));
|
|
Console.Write( " Version: " );
|
|
Console.Write(a.SMBIOS_Data.SMBIOSMajorVersion);
|
|
Console.Write( "." );
|
|
Console.WriteLine(a.SMBIOS_Data.SMBIOSMinorVersion);
|
|
|
|
Console.Write( " Signature: " );
|
|
//Console.WriteLine( Cosmos.Kernel.HexExtension.ToHex( a.Signature ) );
|
|
|
|
Console.WriteLine( " SMBIOS dump: " );
|
|
|
|
DumpBytes( a.SMBBIOSAddress, 32, 16 );
|
|
Console.WriteLine( "" );
|
|
|
|
//Console.Write( " SMBIOS anchor: " );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.AnchorString[ 0 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.AnchorString[ 1 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.AnchorString[ 2 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.AnchorString[ 3 ] ) );
|
|
|
|
//Console.Write( " DMI anchor: " );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.IntermediateAnchorString[ 0 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.IntermediateAnchorString[ 1 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.IntermediateAnchorString[ 2 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.IntermediateAnchorString[ 3 ] ) );
|
|
//Console.Write( Cosmos.Kernel.HexExtension.ToHex( a.SMBIOS_Data.IntermediateAnchorString[ 4 ] ) );
|
|
|
|
Console.Write( " Number of tables:" );
|
|
Console.Write( a.SMBIOS_Data.NumberOfSMBIOSStructures );
|
|
|
|
Console.WriteLine( "" );
|
|
Console.Write( a.SMBIOS_Data.StructureTableLength );
|
|
Console.WriteLine( " bytes of data" );
|
|
|
|
Console.Write( " Reading " );
|
|
Console.Write(" tables... " );
|
|
int read = a.ReadTables();
|
|
Console.Write( read );
|
|
Console.WriteLine( " tables read." );
|
|
|
|
Console.WriteLine( " Found Hardware Types:" );
|
|
for( int i = 0; i < a.TableList.Count; i++ )
|
|
{
|
|
Console.Write( a.TableList[ i ].TableType );
|
|
Console.Write( " " );
|
|
}
|
|
Console.WriteLine( "" );
|
|
|
|
Console.Write( " Interpreting data... " );
|
|
a.InterpretData();
|
|
Console.WriteLine( " done." );
|
|
|
|
|
|
List<BaseInfo> lst = a.GetHardwareDescriptorByType( TableTypes.BIOSInformation );
|
|
BIOSTable biosinfo;
|
|
if( lst.Count > 0 )
|
|
{
|
|
BaseInfo ht = lst[ 0 ];
|
|
biosinfo = ( BIOSTable )ht;
|
|
Console.WriteLine( " BIOS Information: " );
|
|
Console.Write( " Vendor: " );
|
|
Console.WriteLine( biosinfo.Vendor );
|
|
}
|
|
|
|
|
|
ProcessorInformation CPUInfo;
|
|
lst = a.GetHardwareDescriptorByType( TableTypes.ProcessorInformation );
|
|
|
|
if( lst.Count > 0 )
|
|
{
|
|
CPUInfo = ( ProcessorInformation )lst[ 0 ];
|
|
if( CPUInfo == null )
|
|
Console.WriteLine( " No CPU Information." );
|
|
else
|
|
{
|
|
Console.WriteLine( " CPU Information: " );
|
|
Console.Write( " CurrentSpeed: " );
|
|
Console.Write( CPUInfo.CurrentSpeed );
|
|
Console.Write( " MHz Core Count: " );
|
|
Console.WriteLine( CPUInfo.CoreCount );
|
|
Console.WriteLine( CPUInfo.ProcessorManufacturer );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
Console.WriteLine( "Press a key to shutdown..." );
|
|
Console.Read();
|
|
|
|
|
|
Console.WriteLine("Done");
|
|
Cosmos.Sys.Deboot.ShutDown();
|
|
}
|
|
}
|
|
}
|