Table of Contents

Class Mcp23xxx

Namespace
Iot.Device.Mcp23xxx
Assembly
Iot.Device.Mcp23xxx.dll

Base class for Mcp23xxx GPIO expanders

public abstract class Mcp23xxx : GpioDriver
Inheritance
GpioDriver
Mcp23xxx
Derived

Constructors

Mcp23xxx(BusAdapter, int, int, int, GpioController?, BankStyle, bool)

A general purpose parallel I/O expansion for I2C or SPI applications.

protected Mcp23xxx(Mcp23xxx.BusAdapter bus, int reset = -1, int interruptA = -1, int interruptB = -1, GpioController? gpioController = null, BankStyle bankStyle = BankStyle.Sequential, bool shouldDispose = true)

Parameters

bus Mcp23xxx.BusAdapter

The bus the device is connected to.

reset int

The output pin number that is connected to the hardware reset.

interruptA int

The input pin number that is connected to the interrupt for Port A (INTA).

interruptB int

The input pin number that is connected to the interrupt for Port B (INTB).

gpioController GpioController

The controller for the reset and interrupt pins. If not specified, the default controller will be used.

bankStyle BankStyle

The current bank style of the ports. This does not set the bank style- it tells us what the bank style is. It is highly recommended not to change the bank style from the default as there is no direct way to detect what style the chip is in and most apps will fail if the chip is not set to defaults. This setting has no impact on 8-bit expanders.

shouldDispose bool

True to dispose the Gpio Controller

Fields

_bus

Bus adapter (I2C/SPI) used to communicate with the device

protected Mcp23xxx.BusAdapter _bus

Field Value

Mcp23xxx.BusAdapter

Methods

AddCallbackForPinValueChangedEvent(int, PinEventTypes, PinChangeEventHandler)

Adds a handler for a pin value changed event.

protected override void AddCallbackForPinValueChangedEvent(int pinNumber, PinEventTypes eventTypes, PinChangeEventHandler callback)

Parameters

pinNumber int

The pin number in the driver's logical numbering scheme.

eventTypes PinEventTypes

The event types to wait for.

callback PinChangeEventHandler

Delegate that defines the structure for callbacks when a pin value changed event occurs.

ClosePin(int)

Closes an open pin.

protected override void ClosePin(int pinNumber)

Parameters

pinNumber int

The pin number in the driver's logical numbering scheme.

ConvertPinNumberToLogicalNumberingScheme(int)

Converts a board pin number to the driver's logical numbering scheme.

protected override int ConvertPinNumberToLogicalNumberingScheme(int pinNumber)

Parameters

pinNumber int

The board pin number to convert.

Returns

int

The pin number in the driver's logical numbering scheme.

Disable()

Disables the device by setting the reset pin low.

public void Disable()

Dispose(bool)

Disposes this instance

protected override void Dispose(bool disposing)

Parameters

disposing bool

True if explicitly disposing, false if in finalizer

Enable()

Enables the device by setting the reset pin high.

public void Enable()

GetPinMode(int)

Gets the mode of a pin.

protected override PinMode GetPinMode(int pinNumber)

Parameters

pinNumber int

The pin number in the driver's logical numbering scheme.

Returns

PinMode

The mode of the pin.

InternalRead(Register, SpanByte, Port)

Reads a number of bytes from registers.

protected void InternalRead(Register register, SpanByte buffer, Port port)

Parameters

register Register

The register to read from.

buffer SpanByte

The buffer to read bytes into.

port Port

The I/O port used with the register.

InternalReadByte(Register, Port)

Reads byte from the device register

protected byte InternalReadByte(Register register, Port port)

Parameters

register Register

Register to read the value from

port Port

Port related with the register

Returns

byte

Byte read from the device register

InternalReadInterrupt(Port)

Reads interrupt value

protected PinValue InternalReadInterrupt(Port port)

Parameters

port Port

Port to read interrupt on

Returns

PinValue

Value of intterupt pin

InternalReadUInt16(Register)

Read 16-bit unsigned integer from the device register

protected ushort InternalReadUInt16(Register register)

Parameters

register Register

Register to read the value from

Returns

ushort

16-bit unsigned integer read from the device

InternalWrite(Register, SpanByte, Port)

Writes a number of bytes to registers.

protected void InternalWrite(Register register, SpanByte data, Port port)

Parameters

register Register

The register address to write to.

data SpanByte

The data to write to the registers.

port Port

The I/O port used with the registers.

InternalWriteByte(Register, byte, Port)

Write byte to device register

protected void InternalWriteByte(Register register, byte value, Port port)

Parameters

register Register

Register to write the value to

value byte

Value to be written to the register

port Port

Port related with the register

InternalWriteUInt16(Register, ushort)

Writes 16-bit unsigned integer to the device register

protected void InternalWriteUInt16(Register register, ushort value)

Parameters

register Register

Register to write value to

value ushort

16-bit unsigned integer to write to the register

IsPinModeSupported(int, PinMode)

Checks if a pin supports a specific mode.

protected override bool IsPinModeSupported(int pinNumber, PinMode mode)

Parameters

pinNumber int

The pin number in the driver's logical numbering scheme.

mode PinMode

The mode to check.

Returns

bool

The status if the pin supports the mode.

OpenPin(int)

Opens a pin in order for it to be ready to use. The driver attempts to open the pin without changing its mode or value.

protected override void OpenPin(int pinNumber)

Parameters

pinNumber int

The pin number in the driver's logical numbering scheme.

Read(PinValuePair[])

Reads the value of a set of pins

protected void Read(PinValuePair[] pinValuePairs)

Parameters

pinValuePairs PinValuePair[]

Read(int)

Reads the value of a pin.

protected override PinValue Read(int pinNumber)

Parameters

pinNumber int

The pin number.

Returns

PinValue

High or low pin value.

ReadByte(Register)

Read a byte from the given register.

public byte ReadByte(Register register)

Parameters

register Register

Returns

byte

Remarks

Writes to the A port registers on 16 bit devices.

ReadInterrupt()

Returns the value of the interrupt pin if configured.

public PinValue ReadInterrupt()

Returns

PinValue

Returns the interrupt for port A on 16 bit devices.

RemoveCallbackForPinValueChangedEvent(int, PinChangeEventHandler)

Removes a handler for a pin value changed event.

protected override void RemoveCallbackForPinValueChangedEvent(int pinNumber, PinChangeEventHandler callback)

Parameters

pinNumber int

The pin number in the driver's logical numbering scheme.

callback PinChangeEventHandler

Delegate that defines the structure for callbacks when a pin value changed event occurs.

SetPinMode(int, PinMode)

Sets a mode to a pin.

protected override void SetPinMode(int pinNumber, PinMode mode)

Parameters

pinNumber int

The pin number.

mode PinMode

The mode to be set.

Write(PinValuePair[])

Writes values to a set of pins

protected void Write(PinValuePair[] pinValuePairs)

Parameters

pinValuePairs PinValuePair[]

Write(int, PinValue)

Writes a value to a pin.

protected override void Write(int pinNumber, PinValue value)

Parameters

pinNumber int

The pin number.

value PinValue

The value to be written.

WriteByte(Register, byte)

Write a byte to the given register.

public void WriteByte(Register register, byte value)

Parameters

register Register
value byte

Remarks

Writes to the A port registers on 16 bit devices.