Skip to content
This repository was archived by the owner on Feb 20, 2026. It is now read-only.

Commit ad30f6c

Browse files
committed
Fix bug with index in ffm api
1 parent 835bf0f commit ad30f6c

File tree

11 files changed

+82
-82
lines changed

11 files changed

+82
-82
lines changed

src/main/java/org/digitalsmile/gpio/core/poll/PollingData.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@ public MemoryLayout getMemoryLayout() {
3434
@Override
3535
public PollingData fromBytes(MemorySegment buffer) throws Throwable {
3636
return new PollingData(
37-
(int) FD_FLAGS.get(buffer),
38-
(short) EVENTS_FLAGS.get(buffer),
39-
(short) REVENTS_FLAGS.get(buffer)
37+
(int) FD_FLAGS.get(buffer, 0L),
38+
(short) EVENTS_FLAGS.get(buffer, 0L),
39+
(short) REVENTS_FLAGS.get(buffer, 0L)
4040
);
4141
}
4242

4343
@Override
4444
public void toBytes(MemorySegment buffer) throws Throwable {
45-
FD_FLAGS.set(buffer, fd);
46-
EVENTS_FLAGS.set(buffer, events);
47-
REVENTS_FLAGS.set(buffer, revents);
45+
FD_FLAGS.set(buffer, 0L, fd);
46+
EVENTS_FLAGS.set(buffer, 0L, events);
47+
REVENTS_FLAGS.set(buffer, 0L, revents);
4848
}
4949

5050
@Override

src/main/java/org/digitalsmile/gpio/i2c/structs/SMBusData.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,15 @@ public MemoryLayout getMemoryLayout() {
7676
public SMBusData fromBytes(MemorySegment buffer) throws Throwable {
7777
var _byte = (byte) VH_BYTE.get(buffer);
7878
var word = (byte) VH_WORD.get(buffer);
79-
var block = ((MemorySegment) MH_BLOCK.invokeExact(buffer)).toArray(ValueLayout.JAVA_BYTE);
79+
var block = ((MemorySegment) MH_BLOCK.invokeExact(buffer, 0L)).toArray(ValueLayout.JAVA_BYTE);
8080
return new SMBusData(_byte, word, block);
8181
}
8282

8383
@Override
8484
public void toBytes(MemorySegment buffer) throws Throwable {
85-
VH_BYTE.set(buffer, _byte);
86-
VH_WORD.set(buffer, word);
87-
var tmp = ((MemorySegment) MH_BLOCK.invokeExact(buffer));
85+
VH_BYTE.set(buffer, 0L, _byte);
86+
VH_WORD.set(buffer, 0L, word);
87+
var tmp = ((MemorySegment) MH_BLOCK.invokeExact(buffer, 0L));
8888
for (int i = 0; i < block.length; i++) {
8989
tmp.setAtIndex(ValueLayout.JAVA_BYTE, i, block[i]);
9090
}

src/main/java/org/digitalsmile/gpio/i2c/structs/SMBusIoctlData.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,22 @@ public MemoryLayout getMemoryLayout() {
3939
@SuppressWarnings("unchecked")
4040
@Override
4141
public SMBusIoctlData fromBytes(MemorySegment buffer) throws Throwable {
42-
var readWrite = (byte) VH_READ_WRITE.get(buffer);
43-
var command = (byte) VH_COMMAND.get(buffer);
44-
var size = (int) VH_SIZE.get(buffer);
45-
var tmp = (MemorySegment) MH_DATA.get(buffer);
42+
var readWrite = (byte) VH_READ_WRITE.get(buffer, 0L);
43+
var command = (byte) VH_COMMAND.get(buffer, 0L);
44+
var size = (int) VH_SIZE.get(buffer, 0L);
45+
var tmp = (MemorySegment) MH_DATA.get(buffer, 0L);
4646
var data0 = data.fromBytes(tmp);
4747
return new SMBusIoctlData(readWrite, command, size, data0);
4848
}
4949

5050
@Override
5151
public void toBytes(MemorySegment buffer) throws Throwable {
52-
VH_READ_WRITE.set(buffer, readWrite);
53-
VH_COMMAND.set(buffer, command);
54-
VH_SIZE.set(buffer, size);
52+
VH_READ_WRITE.set(buffer, 0L, readWrite);
53+
VH_COMMAND.set(buffer, 0L, command);
54+
VH_SIZE.set(buffer, 0L, size);
5555
var smbusOffHeap = offHeap.allocate(SMBusData.LAYOUT);
5656
data.toBytes(smbusOffHeap);
57-
MH_DATA.set(buffer, smbusOffHeap);
57+
MH_DATA.set(buffer, 0L, smbusOffHeap);
5858
}
5959

6060
@Override

src/main/java/org/digitalsmile/gpio/pin/structs/ChipInfo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public ChipInfo fromBytes(MemorySegment buffer) throws Throwable {
4747
return new ChipInfo(
4848
invokeExact(MH_NAME, buffer).toArray(ValueLayout.JAVA_BYTE),
4949
invokeExact(MH_LABEL, buffer).toArray(ValueLayout.JAVA_BYTE),
50-
(int) VH_LINES.get(buffer)
50+
(int) VH_LINES.get(buffer, 0L)
5151
);
5252
}
5353

@@ -61,11 +61,11 @@ public void toBytes(MemorySegment buffer) throws Throwable {
6161
for (int i = 0; i < label.length; i++) {
6262
tmp.setAtIndex(ValueLayout.JAVA_INT, i, label[i]);
6363
}
64-
VH_LINES.set(buffer, lines);
64+
VH_LINES.set(buffer, 0L, lines);
6565
}
6666

6767
private static MemorySegment invokeExact(MethodHandle handle, MemorySegment buffer) throws Throwable {
68-
return ((MemorySegment) handle.invokeExact(buffer));
68+
return ((MemorySegment) handle.invokeExact(buffer, 0L));
6969
}
7070

7171
@Override

src/main/java/org/digitalsmile/gpio/pin/structs/LineAttribute.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ public MemoryLayout getMemoryLayout() {
6868
@SuppressWarnings("unchecked")
6969
@Override
7070
public LineAttribute fromBytes(MemorySegment buffer) throws Throwable {
71-
var id = (int) VH_ID.get(buffer);
71+
var id = (int) VH_ID.get(buffer, 0L);
7272
long flags = 0, values = 0;
7373
int debouncePeriodUs = 0;
7474
var unionSize = LAYOUT.select(MemoryLayout.PathElement.groupElement("union")).byteSize();
7575
var unionBuffer = buffer.asSlice(LAYOUT.byteSize() - unionSize, unionSize);
7676
switch (AttributeId.getByValue(id)) {
77-
case FLAGS -> flags = (long) VH_FLAGS.get(unionBuffer);
78-
case OUTPUT_VALUES -> values = (long) VH_VALUES.get(unionBuffer);
79-
case ID_DEBOUNCE -> debouncePeriodUs = (int) VH_DEBOUNCE_PERIOD_US.get(unionBuffer);
77+
case FLAGS -> flags = (long) VH_FLAGS.get(unionBuffer, 0L);
78+
case OUTPUT_VALUES -> values = (long) VH_VALUES.get(unionBuffer, 0L);
79+
case ID_DEBOUNCE -> debouncePeriodUs = (int) VH_DEBOUNCE_PERIOD_US.get(unionBuffer, 0L);
8080
case null, default ->
8181
throw new NativeMemoryException("id value is not one of " + Arrays.toString(AttributeId.values()));
8282
}
@@ -91,15 +91,15 @@ public LineAttribute fromBytes(MemorySegment buffer) throws Throwable {
9191

9292
@Override
9393
public void toBytes(MemorySegment buffer) throws Throwable {
94-
VH_ID.set(buffer, id);
95-
VH_PADDING.set(buffer, 0);
94+
VH_ID.set(buffer, 0L, id);
95+
VH_PADDING.set(buffer, 0L, 0);
9696

9797
var unionSize = LAYOUT.select(MemoryLayout.PathElement.groupElement("union")).byteSize();
9898
var unionBuffer = buffer.asSlice(LAYOUT.byteSize() - unionSize, unionSize);
9999
switch (AttributeId.getByValue(id)) {
100-
case FLAGS -> VH_FLAGS.set(unionBuffer, flags);
101-
case OUTPUT_VALUES -> VH_VALUES.set(unionBuffer, values);
102-
case ID_DEBOUNCE -> VH_DEBOUNCE_PERIOD_US.set(unionBuffer, debouncePeriodUs);
100+
case FLAGS -> VH_FLAGS.set(unionBuffer, 0L, flags);
101+
case OUTPUT_VALUES -> VH_VALUES.set(unionBuffer, 0L, values);
102+
case ID_DEBOUNCE -> VH_DEBOUNCE_PERIOD_US.set(unionBuffer, 0L, debouncePeriodUs);
103103
case null, default ->
104104
throw new NativeMemoryException("id value is not one of " + Arrays.toString(AttributeId.values()));
105105
}

src/main/java/org/digitalsmile/gpio/pin/structs/LineConfig.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,29 @@ public MemoryLayout getMemoryLayout() {
4545
@SuppressWarnings("unchecked")
4646
@Override
4747
public LineConfig fromBytes(MemorySegment buffer) throws Throwable {
48-
var numAttrs = (int) VH_NUM_ATTRS.get(buffer);
49-
var attrsMemorySegment = (MemorySegment) MH_ATTRS.invokeExact(buffer);
48+
var numAttrs = (int) VH_NUM_ATTRS.get(buffer, 0L);
49+
var attrsMemorySegment = (MemorySegment) MH_ATTRS.invokeExact(buffer, 0L);
5050
var attrs = new LineConfigAttribute[numAttrs];
5151
for (int i = 0; i < numAttrs; i++) {
5252
var attr = LineConfigAttribute.createEmpty();
5353
attrs[i] = attr.fromBytes(attrsMemorySegment.asSlice(LineConfigAttribute.LAYOUT.byteSize() * i, LineConfigAttribute.LAYOUT.byteSize()));
5454
}
5555
return new LineConfig(
56-
(long) VH_FLAGS.get(buffer),
56+
(long) VH_FLAGS.get(buffer, 0L),
5757
numAttrs,
5858
attrs
5959
);
6060
}
6161

6262
@Override
6363
public void toBytes(MemorySegment buffer) throws Throwable {
64-
VH_FLAGS.set(buffer, flags);
65-
VH_NUM_ATTRS.set(buffer, numAttrs);
66-
var tmp = (MemorySegment) MH_PADDING.invokeExact(buffer);
64+
VH_FLAGS.set(buffer, 0L, flags);
65+
VH_NUM_ATTRS.set(buffer, 0L, numAttrs);
66+
var tmp = (MemorySegment) MH_PADDING.invokeExact(buffer, 0L);
6767
for (int i = 0; i < 5; i++) {
6868
tmp.setAtIndex(ValueLayout.JAVA_INT, i, 0);
6969
}
70-
tmp = (MemorySegment) MH_ATTRS.invokeExact(buffer);
70+
tmp = (MemorySegment) MH_ATTRS.invokeExact(buffer, 0L);
7171
for (int i = 0; i < numAttrs; i++) {
7272
attrs[i].toBytes(tmp.asSlice(LineConfigAttribute.LAYOUT.byteSize() * i, LineConfigAttribute.LAYOUT.byteSize()));
7373
}

src/main/java/org/digitalsmile/gpio/pin/structs/LineConfigAttribute.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,20 @@ public MemoryLayout getMemoryLayout() {
3939
@SuppressWarnings("unchecked")
4040
@Override
4141
public LineConfigAttribute fromBytes(MemorySegment buffer) throws Throwable {
42-
var attrMemorySegment = (MemorySegment) MH_ATTR.invokeExact(buffer);
42+
var attrMemorySegment = (MemorySegment) MH_ATTR.invokeExact(buffer, 0L);
4343
var attr = LineAttribute.createEmpty().fromBytes(attrMemorySegment);
4444
return new LineConfigAttribute(
4545
attr,
46-
(long) VH_MASK.get(buffer)
46+
(long) VH_MASK.get(buffer, 0L)
4747

4848
);
4949
}
5050

5151
@Override
5252
public void toBytes(MemorySegment buffer) throws Throwable {
53-
var attrMemorySegment = (MemorySegment) MH_ATTR.invokeExact(buffer);
53+
var attrMemorySegment = (MemorySegment) MH_ATTR.invokeExact(buffer, 0L);
5454
attr.toBytes(attrMemorySegment);
55-
VH_MASK.set(buffer, mask);
55+
VH_MASK.set(buffer, 0L, mask);
5656
}
5757

5858
@Override

src/main/java/org/digitalsmile/gpio/pin/structs/LineEvent.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,23 @@ public MemoryLayout getMemoryLayout() {
5454
@Override
5555
public LineEvent fromBytes(MemorySegment buffer) throws Throwable {
5656
return new LineEvent(
57-
(long) VH_TIMESTAMP_NS.get(buffer),
58-
(int) VH_ID.get(buffer),
59-
(int) VH_OFFSET.get(buffer),
60-
(int) VH_SEQ_NO.get(buffer),
61-
(int) VH_LINE_SEQ_NO.get(buffer)
57+
(long) VH_TIMESTAMP_NS.get(buffer, 0L),
58+
(int) VH_ID.get(buffer, 0L),
59+
(int) VH_OFFSET.get(buffer, 0L),
60+
(int) VH_SEQ_NO.get(buffer, 0L),
61+
(int) VH_LINE_SEQ_NO.get(buffer, 0L)
6262
);
6363
}
6464

6565
@Override
6666
public void toBytes(MemorySegment buffer) throws Throwable {
67-
VH_TIMESTAMP_NS.set(buffer, timestampNs);
68-
VH_ID.set(buffer, id);
69-
VH_OFFSET.set(buffer, offset);
70-
VH_SEQ_NO.set(buffer, seqNo);
71-
VH_LINE_SEQ_NO.set(buffer, lineSeqNo);
67+
VH_TIMESTAMP_NS.set(buffer, 0L, timestampNs);
68+
VH_ID.set(buffer, 0L, id);
69+
VH_OFFSET.set(buffer, 0L, offset);
70+
VH_SEQ_NO.set(buffer, 0L, seqNo);
71+
VH_LINE_SEQ_NO.set(buffer, 0L, lineSeqNo);
7272

73-
var tmp = (MemorySegment) MH_PADDING.invokeExact(buffer);
73+
var tmp = (MemorySegment) MH_PADDING.invokeExact(buffer, 0L);
7474
for (int i = 0; i < 5; i++) {
7575
tmp.setAtIndex(ValueLayout.JAVA_INT, i, 0);
7676
}

src/main/java/org/digitalsmile/gpio/pin/structs/LineInfo.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,42 +56,42 @@ public MemoryLayout getMemoryLayout() {
5656
@SuppressWarnings("unchecked")
5757
@Override
5858
public LineInfo fromBytes(MemorySegment buffer) throws Throwable {
59-
var numAttrs = (int) VH_NUM_ATTRS.get(buffer);
60-
var attrsMemorySegment = (MemorySegment) MH_ATTRS.invokeExact(buffer);
59+
var numAttrs = (int) VH_NUM_ATTRS.get(buffer, 0L);
60+
var attrsMemorySegment = (MemorySegment) MH_ATTRS.invokeExact(buffer, 0L);
6161
var attrs = new LineAttribute[numAttrs];
6262
for (int i = 0; i < numAttrs; i++) {
6363
var attr = LineAttribute.createEmpty();
6464
attrs[i] = attr.fromBytes(attrsMemorySegment.asSlice(LineAttribute.LAYOUT.byteSize() * i, LineAttribute.LAYOUT.byteSize()));
6565
}
6666
return new LineInfo(
67-
((MemorySegment) MH_NAME.invokeExact(buffer)).toArray(ValueLayout.JAVA_BYTE),
68-
((MemorySegment) MH_CONSUMER.invokeExact(buffer)).toArray(ValueLayout.JAVA_BYTE),
69-
(int) VH_OFFSET.get(buffer),
67+
((MemorySegment) MH_NAME.invokeExact(buffer, 0L)).toArray(ValueLayout.JAVA_BYTE),
68+
((MemorySegment) MH_CONSUMER.invokeExact(buffer, 0L)).toArray(ValueLayout.JAVA_BYTE),
69+
(int) VH_OFFSET.get(buffer, 0L),
7070
numAttrs,
71-
(long) VH_FLAGS.get(buffer),
71+
(long) VH_FLAGS.get(buffer, 0L),
7272
attrs
7373
);
7474
}
7575

7676
@Override
7777
public void toBytes(MemorySegment buffer) throws Throwable {
78-
var tmp = (MemorySegment) MH_NAME.invokeExact(buffer);
78+
var tmp = (MemorySegment) MH_NAME.invokeExact(buffer, 0L);
7979
for (int i = 0; i < name.length; i++) {
8080
tmp.setAtIndex(ValueLayout.JAVA_BYTE, i, name[i]);
8181
}
82-
tmp = (MemorySegment) MH_CONSUMER.invokeExact(buffer);
82+
tmp = (MemorySegment) MH_CONSUMER.invokeExact(buffer, 0L);
8383
for (int i = 0; i < consumer.length; i++) {
8484
tmp.setAtIndex(ValueLayout.JAVA_BYTE, i, consumer[i]);
8585
}
86-
VH_OFFSET.set(buffer, offset);
87-
VH_NUM_ATTRS.set(buffer, numAttrs);
88-
VH_FLAGS.set(buffer, flags);
86+
VH_OFFSET.set(buffer, 0L, offset);
87+
VH_NUM_ATTRS.set(buffer, 0L,numAttrs);
88+
VH_FLAGS.set(buffer, 0L, flags);
8989

90-
tmp = (MemorySegment) MH_ATTRS.invokeExact(buffer);
90+
tmp = (MemorySegment) MH_ATTRS.invokeExact(buffer, 0L);
9191
for (int i = 0; i < numAttrs; i++) {
9292
attrs[i].toBytes(tmp.asSlice(LineAttribute.LAYOUT.byteSize() * i, LineAttribute.LAYOUT.byteSize()));
9393
}
94-
tmp = (MemorySegment) MH_PADDING.invokeExact(buffer);
94+
tmp = (MemorySegment) MH_PADDING.invokeExact(buffer, 0L);
9595
for (int i = 0; i < 4; i++) {
9696
tmp.setAtIndex(ValueLayout.JAVA_INT, i, 0);
9797
}

src/main/java/org/digitalsmile/gpio/pin/structs/LineRequest.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,37 +59,37 @@ public MemoryLayout getMemoryLayout() {
5959
@SuppressWarnings("unchecked")
6060
@Override
6161
public LineRequest fromBytes(MemorySegment buffer) throws Throwable {
62-
var lineConfigMemoryBuffer = (MemorySegment) MH_CONFIG.invokeExact(buffer);
62+
var lineConfigMemoryBuffer = (MemorySegment) MH_CONFIG.invokeExact(buffer, 0L);
6363
var lineConfig = LineConfig.createEmpty().fromBytes(lineConfigMemoryBuffer);
6464
return new LineRequest(
65-
((MemorySegment) MH_OFFSETS.invokeExact(buffer)).toArray(ValueLayout.JAVA_INT),
66-
((MemorySegment) MH_CONSUMER.invokeExact(buffer)).toArray(ValueLayout.JAVA_BYTE),
65+
((MemorySegment) MH_OFFSETS.invokeExact(buffer, 0L)).toArray(ValueLayout.JAVA_INT),
66+
((MemorySegment) MH_CONSUMER.invokeExact(buffer, 0L)).toArray(ValueLayout.JAVA_BYTE),
6767
lineConfig,
68-
(int) VH_NUM_LINES.get(buffer),
69-
(int) VH_EVENT_BUFFER_SIZE.get(buffer),
70-
(int) VH_FD.get(buffer)
68+
(int) VH_NUM_LINES.get(buffer, 0L),
69+
(int) VH_EVENT_BUFFER_SIZE.get(buffer, 0L),
70+
(int) VH_FD.get(buffer, 0L)
7171
);
7272
}
7373

7474
@Override
7575
public void toBytes(MemorySegment buffer) throws Throwable {
76-
var tmp = (MemorySegment) MH_OFFSETS.invokeExact(buffer);
76+
var tmp = (MemorySegment) MH_OFFSETS.invokeExact(buffer, 0L);
7777
for (int i = 0; i < offsets.length; i++) {
7878
tmp.setAtIndex(ValueLayout.JAVA_INT, i, offsets[i]);
7979
}
80-
tmp = (MemorySegment) MH_CONSUMER.invokeExact(buffer);
80+
tmp = (MemorySegment) MH_CONSUMER.invokeExact(buffer, 0L);
8181
for (int i = 0; i < consumer.length; i++) {
8282
tmp.setAtIndex(ValueLayout.JAVA_BYTE, i, consumer[i]);
8383
}
84-
tmp = (MemorySegment) MH_CONFIG.invokeExact(buffer);
84+
tmp = (MemorySegment) MH_CONFIG.invokeExact(buffer, 0L);
8585
config.toBytes(tmp);
86-
VH_NUM_LINES.set(buffer, numLines);
87-
VH_EVENT_BUFFER_SIZE.set(buffer, eventBufferSize);
88-
tmp = (MemorySegment) MH_PADDING.invokeExact(buffer);
86+
VH_NUM_LINES.set(buffer, 0L, numLines);
87+
VH_EVENT_BUFFER_SIZE.set(buffer, 0L, eventBufferSize);
88+
tmp = (MemorySegment) MH_PADDING.invokeExact(buffer, 0L);
8989
for (int i = 0; i < 5; i++) {
9090
tmp.setAtIndex(ValueLayout.JAVA_INT, i, 0);
9191
}
92-
VH_FD.set(buffer, fd);
92+
VH_FD.set(buffer, 0L, fd);
9393
}
9494

9595
@Override

0 commit comments

Comments
 (0)