// WriteGlobalRegister sets the value of one of our network chip's internal registers void WriteGlobalRegister(AX88796CRegister registerAddress, UInt16 value) { lock (_spiLock) { // WriteBuffer byte 0 [Opcode]: WriteGlobalRegister _writeGlobalRegister_WriteBuffer[0] = (byte)AX88796COpcode.WriteGlobalRegister; // WriteBuffer byte 1 [Address]: register address _writeGlobalRegister_WriteBuffer[1] = (byte)registerAddress; // WriteBuffer bytes 2-3: data _writeGlobalRegister_WriteBuffer[2] = (byte)(value & 0xFF); _writeGlobalRegister_WriteBuffer[3] = (byte)((value >> 8) & 0xFF); _chipSelectPin.Write(_chipSelectActiveLevel); _spi.Write(_writeGlobalRegister_WriteBuffer); _chipSelectPin.Write(!_chipSelectActiveLevel); } }
// ReadGlobalRegister retrieves the value of one of our network chip's internal registers UInt16 ReadGlobalRegister(AX88796CRegister registerAddress) { lock (_spiLock) { // WriteBuffer byte 0 [Opcode]: ReadGlobalRegister // WriteBuffer byte 1 [Address]: register address _readGlobalRegister_WriteBuffer[0] = (byte)AX88796COpcode.ReadGlobalRegister; _readGlobalRegister_WriteBuffer[1] = (byte)registerAddress; // WriteBuffer bytes 2-3: dummy data // write our ReadGlobalRegister command and retrieve the register data _chipSelectPin.Write(_chipSelectActiveLevel); _spi.WriteRead(_readGlobalRegister_WriteBuffer, _readGlobalRegister_ReadBuffer, 4); _chipSelectPin.Write(!_chipSelectActiveLevel); // return the register data as a UInt16 return((UInt16)(_readGlobalRegister_ReadBuffer[0] + ((UInt16)_readGlobalRegister_ReadBuffer[1] << 8))); } }
// ReadGlobalRegister retrieves the value of one of our network chip's internal registers UInt16 ReadGlobalRegister(AX88796CRegister registerAddress) { lock (_spiLock) { // WriteBuffer byte 0 [Opcode]: ReadGlobalRegister // WriteBuffer byte 1 [Address]: register address _readGlobalRegister_WriteBuffer[0] = (byte)AX88796COpcode.ReadGlobalRegister; _readGlobalRegister_WriteBuffer[1] = (byte)registerAddress; // WriteBuffer bytes 2-3: dummy data // write our ReadGlobalRegister command and retrieve the register data _chipSelectPin.Write(_chipSelectActiveLevel); _spi.WriteRead(_readGlobalRegister_WriteBuffer, _readGlobalRegister_ReadBuffer, 4); _chipSelectPin.Write(!_chipSelectActiveLevel); // return the register data as a UInt16 return (UInt16)(_readGlobalRegister_ReadBuffer[0] + ((UInt16)_readGlobalRegister_ReadBuffer[1] << 8)); } }