Skip to content

Commit

Permalink
Radxa Zero 3 + Rock Pi S. Ensure I2CDevice.Builder is used.
Browse files Browse the repository at this point in the history
  • Loading branch information
mattjlewis committed Jul 30, 2024
1 parent 0b0e1fd commit e00ef71
Show file tree
Hide file tree
Showing 9 changed files with 649 additions and 535 deletions.
2 changes: 1 addition & 1 deletion diozero-archetype/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<description>diozero Quickstart Archetype</description>

<properties>
<maven-archetype-packaging-plugin.version>3.1.1</maven-archetype-packaging-plugin.version>
<maven-archetype-packaging-plugin.version>3.2.1</maven-archetype-packaging-plugin.version>
</properties>

<build>
Expand Down
20 changes: 10 additions & 10 deletions diozero-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,20 +64,20 @@
<!-- Maven plugins -->
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
<maven-assembly-plugin.version>3.7.1</maven-assembly-plugin.version>
<maven-javadoc-plugin.version>3.6.3</maven-javadoc-plugin.version>
<maven-jar-plugin.version>3.4.1</maven-jar-plugin.version>
<maven-shade-plugin.version>3.5.3</maven-shade-plugin.version>
<maven-javadoc-plugin.version>3.8.0</maven-javadoc-plugin.version>
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
<maven-shade-plugin.version>3.6.0</maven-shade-plugin.version>
<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
<maven-install-plugin.version>3.1.2</maven-install-plugin.version>
<maven-deploy-plugin.version>3.1.2</maven-deploy-plugin.version>
<maven-gpg-plugin.version>3.2.4</maven-gpg-plugin.version>
<maven-release-plugin.version>3.0.1</maven-release-plugin.version>
<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
<maven-release-plugin.version>3.1.1</maven-release-plugin.version>
<maven-surefire-plugin.version>3.3.1</maven-surefire-plugin.version>

<!-- Other plugins -->
<nexus-staging-maven-plugin.version>1.7.0</nexus-staging-maven-plugin.version>
<license-maven-plugin.version>2.4.0</license-maven-plugin.version>
<versions-maven-plugin.version>2.16.2</versions-maven-plugin.version>
<versions-maven-plugin.version>2.17.1</versions-maven-plugin.version>
<exec-maven-plugin.version>3.3.0</exec-maven-plugin.version>
<eclipse.m2e.lifecycle-mapping.version>1.0.0</eclipse.m2e.lifecycle-mapping.version>

Expand All @@ -86,10 +86,10 @@
<hipparchus.version>3.1</hipparchus.version>
<eclipse-paho-client-mqttv3.version>1.2.5</eclipse-paho-client-mqttv3.version>
<google-gson.version>2.11.0</google-gson.version>
<google-protobuf-java.version>4.27.0</google-protobuf-java.version>
<netty.version>4.1.110.Final</netty.version>
<grpc.version>1.64.0</grpc.version>
<junit.version>5.10.2</junit.version>
<google-protobuf-java.version>4.27.2</google-protobuf-java.version>
<netty.version>4.1.112.Final</netty.version>
<grpc.version>1.65.1</grpc.version>
<junit.version>5.10.3</junit.version>
<mockito.version>5.12.0</mockito.version>
</properties>

Expand Down
1 change: 1 addition & 0 deletions diozero-core/src/main/java/com/diozero/api/I2CDevice.java
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ public I2CDevice(I2CDeviceFactoryInterface deviceFactory, int controller, int ad
this.byteOrder = byteOrder;
}

@Override
public int getController() {
return controller;
}
Expand Down
62 changes: 62 additions & 0 deletions diozero-core/src/main/resources/boarddefs/radxa_rockpis.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# https://wiki.radxa.com/RockpiS/hardware/gpio

# GPIO Header info
# General, Header, Physical Pin, Name
General, Header_1, 1, 3v3
General, Header_1, 2, 5v
General, Header_1, 4, 5v
General, Header_1, 6, GND
General, Header_1, 9, GND
General, Header_1, 14, GND
General, Header_1, 17, 3v3
General, Header_1, 20, GND
General, Header_1, 25, GND

# GPIO, Header, GPIO#, Name, Physical, Chip, Line, Modes
GPIO, Header_1, 11, I2C1_SDA, 3, 0, 11, DIGITAL_INPUT | DIGITAL_OUTPUT # I2C1_SDA, GPIO0_B3
GPIO, Header_1, 12, I2C1_SCL, 5, 0, 12, DIGITAL_INPUT | DIGITAL_OUTPUT # I2C1_SCL, GPIO0_B4
GPIO, Header_1, 68, GPIO2_A4, 7, 2, 4, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A4
GPIO, Header_1, 65, GPIO2_A1, 8, 2, 1, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A1, UART0_TX, SPI0_MOSI
GPIO, Header_1, 64, GPIO2_A0, 10, 2, 0, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A0, UART0_RX, SPI0_MISO
PWM, Header_1, 15, PWM2, 11, 0, 15, 0, 2, DIGITAL_INPUT | DIGITAL_OUTPUT | PWM_OUTPUT # GPIO0_B7, PWM2, I2C3_SDA
GPIO, Header_1, 69, GPIO2_A5, 12, 2, 5, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A5
PWM, Header_1, 16, PWM3, 13, 0, 16, 0, 3, DIGITAL_INPUT | DIGITAL_OUTPUT | PWM_OUTPUT # GPIO0_C0, PWM3, I2C3_SCL
GPIO, Header_1, 17, GPIO0_C1, 15, 0, 17, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO0_C1, SPDIF_TX
GPIO, Header_1, 74, GPIO2_B2, 16, 2, 10, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B2
GPIO, Header_1, 73, GPIO2_B1, 18, 2, 9, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B1
GPIO, Header_1, 55, SPI2_MOSI, 19, 1, 23, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_C7, UART1_RTSN, UART2_TX, SPI2_MOSI
GPIO, Header_1, 54, SPI2_MISO, 21, 1, 22, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_C6, UART1_CTSN, UART2_RX, SPI2_MISO
GPIO, Header_1, 71, GPIO2_A7, 22, 2, 7, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A7
GPIO, Header_1, 56, SPI2_CLK, 23, 1, 24, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_D0, UART1_RX, I2C0_SDA, SPI2_CLK
GPIO, Header_1, 57, SPI2_CS0, 24, 1, 25, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_D1, UART1_TX, I2C0_SCL, SPI2_CS0

# ADC, Header, ADC #, Name, Physical pin, vRef
ADC, Header_1, 0, ADC_IN0, 26, 1.8

# Hardware V12
General, Header_2, 27, GND

# GPIO, Header, GPIO#, Name, Physical, Chip, Line, Modes
GPIO, Header_2, 77, GPIO2_B5, 28, 2, 13 DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B5
GPIO, Header_2, 78, GPIO2_B6, 30, 2, 14, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B6
GPIO, Header_2, 79, GPIO2_B7, 32, 2, 15, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B7
GPIO, Header_2, 80, GPIO2_C0, 34, 2, 16, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_C0
GPIO, Header_2, 76, GPIO2_B4, 43, 2, 12, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B4
GPIO, Header_2, 75, GPIO2_B3, 44, 2, 11, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B3
GPIO, Header_2, 72, GPIO2_B0, 45, 2, 8, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B0
GPIO, Header_2, 70, GPIO2_A6, 46, 2, 6, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A6

# Hardware V13
# GPIO, Header, GPIO#, Name, Physical, Chip, Line, Modes
#GPIO, Header_2, 77, GPIO2_B5, 28, 2, 13 DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B5
#GPIO, Header_2, 78, GPIO2_B6, 30, 2, 14, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B6
#GPIO, Header_2, 79, GPIO2_B7, 32, 2, 15, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B7
#GPIO, Header_2, 80, GPIO2_C0, 34, 2, 16, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_C0
#GPIO, Header_2, 109, GPIO3_B5, 39, 3, 13, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B5, SPI1_CS0, I2C3_SCL, UART3_TX
#GPIO, Header_2, 108, GPIO3_B4, 40, 3, 12, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B4, SPI1_MOSI, I2C3_SDA, UART3_RX
#GPIO, Header_2, 107, GPIO3_B3, 41, 3, 11, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B3, SPI1_CLK
#GPIO, Header_2, 106, GPIO3_B2, 42, 3, 10, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B2, SPI1_MISO
#GPIO, Header_2, 76, GPIO2_B4, 43, 2, 12, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B4
#GPIO, Header_2, 75, GPIO2_B3, 44, 2, 11, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B3
#GPIO, Header_2, 72, GPIO2_B0, 45, 2, 8, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_B0
#GPIO, Header_2, 70, GPIO2_A6, 46, 2, 6, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO2_A6
45 changes: 45 additions & 0 deletions diozero-core/src/main/resources/boarddefs/radxa_zero3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# https://docs.radxa.com/en/zero/zero3/hardware-design/hardware-interface

# GPIO Header info
# General, Header, Physical Pin, Name
General, Default, 1, 3v3
General, Default, 2, 5v
General, Default, 4, 5v
General, Default, 6, GND
General, Default, 9, GND
General, Default, 14, GND
General, Default, 17, 3v3
General, Default, 20, GND
General, Default, 25, GND
General, Default, 26, NC
General, Default, 34, GND
General, Default, 39, GND

# GPIO, Header, GPIO#, Name, Physical, Chip, Line, Modes
GPIO, Default, 32, I2C3_SDA, 3, 1, 0, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_A0, 2:UART3_RX, 3:I2C3_SDA
GPIO, Default, 33, I2C3_SCL, 5, 1, 1, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_A1, 2:UART3_TX, 3:I2C3_SCL
GPIO, Default, 116, GPIO3_C4, 7, 3, 20, DIGITAL_INPUT | DIGITAL_OUTPUT | PWM_OUTPUT # GPIO3_C4, 4:PWM14_M0
GPIO, Default, 25, UART2_TX, 8, 0, 25, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO0_D1, 2:UART2_TX
GPIO, Default, 24, UART2_RX, 10, 0, 24, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO0_D0, 2:UART2_RX
GPIO, Default, 97, GPIO3_A1, 11, 3, 1, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A1
GPIO, Default, 99, GPIO3_A3, 12, 3, 3, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A3, 5:I2S_SCLK
GPIO, Default, 98, GPIO3_A2, 13, 3, 2, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A2, 5:I2S_MSCL
GPIO, Default, 104, GPIO3_B0, 15, 3, 8, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B0
GPIO, Default, 105, GPIO3_B1, 16, 3, 9, DIGITAL_INPUT | DIGITAL_OUTPUT | PWM_OUTPUT # GPIO3_B1, 2:UART4_RX, 3: PWM8_M0
GPIO, Default, 106, GPIO3_B2, 18, 3, 10, DIGITAL_INPUT | DIGITAL_OUTPUT | PWM_OUTPUT # GPIO3_B2, 2:UART4_TX, 3: PWM9_M0
GPIO, Default, 147, SPI3_MOSI, 19, 4, 19, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO4_C3, 2:SPI3_MOSI, 3:I2S3_SCLK, 4:PWM15_IR
GPIO, Default, 149, SPI3_MISO, 21, 4, 21, DIGITAL_INPUT | DIGITAL_OUTPUT | PWM_OUTPUT # GPIO4_C5, 2:SPI3_MISO, 3:I2S3_SDO, 4:PWM12:_M1, 5:UART9_TX
GPIO, Default, 113, GPIO3_C1, 22, 3, 17, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_C1, 5:I2S3_SDO
GPIO, Default, 146, SPI3_CLK, 23, 4, 18, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO4_C2, 2:SPI3_CLK, 3:I2S3_MCLK, 4:PWM14_M1
GPIO, Default, 150, SPI3_CS0, 24, 4, 22, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO4_C6, 2:SPI3_CS0, 3:PWM13_M1, 4:UART9_RX, 5:I2D3_SDI
GPIO, Default, 138, I2C4_SDA, 27, 4, 10, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO4_B2, 3:I2S2_SDI, 4:I2C4_SDA
GPIO, Default, 139, I2C4_SCL, 28, 4, 11, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO4_B3, 4:I2C4_SCL, 5:I2S2_SDO
GPIO, Default, 107, GPIO3_B3, 29, 3, 11, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B3
GPIO, Default, 108, GPIO3_B4, 31, 3, 12, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_B4
GPIO, Default, 114, GPIO3_C2, 32, 3, 18, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_C2, 2:UART5_TX, 5:I2S1_SDO3
GPIO, Default, 115, GPIO3_C3, 33, 3, 19, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_C3, 3:I2S1_SCLK_RX, 5:UART5_RX
GPIO, Default, 100, GPIO3_A4, 35, 3, 4, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A4, 3:I2S3_LRCK
GPIO, Default, 103, GPIO3_A7, 36, 3, 7, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A7
GPIO, Default, 36, GPIO1_A4, 37, 1, 4, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO1_A4, 3:I2S1_SCLK_RX
GPIO, Default, 102, GPIO3_A6, 38, 3, 6, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A6, 5:I2S3_SDI
GPIO, Default, 101, GPIO3_A5, 40, 3, 5, DIGITAL_INPUT | DIGITAL_OUTPUT # GPIO3_A5, 5:I2S3_SDO
1 change: 1 addition & 0 deletions diozero-core/src/main/resources/soc_mapping.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ brcm,bcm2711 = com.diozero.internal.soc.broadcom.BroadcomMmapGpio
# Rockchip R3288/RK3399/RK3588
rockchip,rk3288 = com.diozero.internal.soc.rockchip.RK3288MmapGpio
rockchip,rk3399 = com.diozero.internal.soc.rockchip.RK3399MmapGpio
#rockchip,rk3566 = com.diozero.internal.soc.rockchip.RK3566MmapGpio
rockchip,rk3588 = com.diozero.internal.soc.rockchip.RK3588MmapGpio
62 changes: 33 additions & 29 deletions diozero-core/src/test/java/com/diozero/api/I2CDeviceTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
package com.diozero.api;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;

import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

/*-
* #%L
* Organisation: diozero
Expand Down Expand Up @@ -33,41 +45,33 @@

import com.diozero.internal.spi.I2CDeviceFactoryInterface;
import com.diozero.internal.spi.InternalI2CDeviceInterface;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

@SuppressWarnings("static-method")
class I2CDeviceTest {
@Test
void writeBytes() {
I2CConstants.AddressSize addressSize = I2CConstants.AddressSize.valueOf(0);
ByteOrder defaultByteOrder = I2CDevice.Builder.DEFAULT_BYTE_ORDER;
int controller = 0;
int address = 0;

@Test
void writeBytes() {
I2CConstants.AddressSize addressSize = I2CConstants.AddressSize.valueOf(0);
ByteOrder defaultByteOrder = I2CDevice.Builder.DEFAULT_BYTE_ORDER;
int controller = 0;
int address = 0;

ArgumentCaptor<byte[]> captor = ArgumentCaptor.forClass(byte[].class);
InternalI2CDeviceInterface delegate = mock(InternalI2CDeviceInterface.class);
I2CDeviceFactoryInterface factory = mock(I2CDeviceFactoryInterface.class);
ArgumentCaptor<byte[]> captor = ArgumentCaptor.forClass(byte[].class);
InternalI2CDeviceInterface delegate = mock(InternalI2CDeviceInterface.class);
I2CDeviceFactoryInterface factory = mock(I2CDeviceFactoryInterface.class);

when(factory.provisionI2CDevice(controller, address, addressSize)).thenReturn(delegate);
when(factory.provisionI2CDevice(controller, address, addressSize)).thenReturn(delegate);

byte[] bytes = new byte[2];
bytes[0] = 1;
bytes[1] = 2;
byte[] bytes = new byte[2];
bytes[0] = 1;
bytes[1] = 2;

I2CDevice device = new I2CDevice(factory, controller, address, addressSize, defaultByteOrder);
device.writeBytes(ByteBuffer.wrap(Arrays.copyOf(bytes, bytes.length)));
final I2CDeviceInterface device = I2CDevice.builder(address).setDeviceFactory(factory).setController(controller)
.setAddressSize(addressSize).setByteOrder(defaultByteOrder).build();
device.writeBytes(ByteBuffer.wrap(Arrays.copyOf(bytes, bytes.length)));

verify(delegate).writeBytes(captor.capture());
byte[] value = captor.getValue();
verify(delegate).writeBytes(captor.capture());
byte[] value = captor.getValue();

assertEquals(Arrays.toString(bytes), Arrays.toString(value));
}
assertEquals(Arrays.toString(bytes), Arrays.toString(value));
}
}
Loading

0 comments on commit e00ef71

Please sign in to comment.