Skip to content

Draw the RAK4631's SSD1306 under Renode - #794

Open
A13xB0 wants to merge 2 commits into
mainfrom
feat-602-rak-oled
Open

A13xB0 wants to merge 2 commits into
mainfrom
feat-602-rak-oled

Conversation

@A13xB0

@A13xB0 A13xB0 commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Closes #602.

TWIM slave registry

  • NRF52840_TWIM is now an IPeripheralContainer<II2CPeripheral, NumberRegistrationPoint<int>>, so a device can be registered at an address (oled: ... @ twi0 0x3C).
  • A transfer to a registered address moves its bytes through EasyDMA (TXD/RXD PTR, MAXCNT, AMOUNT) and follows the shortcuts the driver sets.
  • An address nobody claims still gets the address NACK. That stays the default, so sensor probes still get an answer rather than hanging.

SSD1306 model (MeshBenchOled.cs)

  • Handles control bytes (0x00/0x40, Co bit), the column and page window, addressing mode, display on/off and page-mode addressing. Other commands are consumed with their arguments and ignored.
  • Sends the controller's memory as a 1-bit frame on the existing panel channel. That is the same page layout state.Screen.Lit reads, so nothing on the Go side changed except the wiring.
  • ScreenModelled now covers Renode I2C SSD1306 and SH1106 (via columnOffset).

Live: a RAK_4631 running the published v1.17.1 repeater draws MeshCore's own boot screen: the logo, meshcore.io, "v1.17.1 (14-Aug-2026)", "< Repeater >". It reads back through board.screen with 473 pixels lit.

Test change: the board-view test that used the RAK as its example of an undrawable panel now builds one, the RAK with an e-paper controller, since every Renode board in the catalogue now draws its panel.

The TWIM gains a slave registry and EasyDMA transfers, with the
shortcuts the driver uses; an unclaimed address still NACKs.
MeshBenchOled models an SSD1306 on it - control bytes, the column and
page window, display on and off, page-addressed data - and sends the
controller's memory as a 1-bit frame on the existing panel channel.

Closes #602.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Draw the RAK4631's SSD1306 under Renode, the last board whose panel is not modelled

1 participant