35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
|
|
|
|
namespace ln.ethercat
|
|
{
|
|
public class SDOAddr
|
|
{
|
|
public int Slave { get; private set; }
|
|
public int Index { get; private set; }
|
|
public int SubIndex { get; private set; }
|
|
|
|
public long Linear { get; private set; }
|
|
public int Compact { get; private set; }
|
|
|
|
public SDOAddr(int slave, int index) : this(slave, index, 0) { }
|
|
public SDOAddr(int slave, int index, int subindex)
|
|
{
|
|
Slave = slave;
|
|
Index = index;
|
|
SubIndex = subindex;
|
|
|
|
Linear = ((long)(ulong)Slave << 32) | ((long)Index << 16) | (long)SubIndex;
|
|
Compact = ((Slave << 24) | (Index << 8) | SubIndex) ^ ((Slave & 0xFF00) << 24);
|
|
}
|
|
|
|
public override bool Equals(object obj) => (obj is SDOAddr other) && (Linear == other.Linear);
|
|
public override int GetHashCode() => Compact;
|
|
|
|
public override string ToString()
|
|
{
|
|
return string.Format("[SDOAddr Slave={0} Index={1:X4}.{2} ]", Slave, Index, SubIndex);
|
|
}
|
|
|
|
|
|
}
|
|
} |