ホーム › Devices.Display › MIPI_DSI_TRANSMISSION
MIPI_DSI_TRANSMISSION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| TotalBufferSize | DWORD | 4 | +0 | +0 | 送信バッファ全体のサイズをバイト単位で示すDWORD。 |
| PacketCount | BYTE | 1 | +4 | +4 | 送信するパケット数を示す1バイト値。 |
| FailedPacket | BYTE | 1 | +5 | +5 | 失敗したパケットのインデックスを示す1バイト値。 |
| Anonymous | _Anonymous_e__Struct | 2 | +6 | +6 | ステータスやエラー関連の情報を保持する無名構造体。 |
| ReadWordCount | WORD | 2 | +8 | +8 | 読み取り応答のワードカウントを示すWORD。 |
| FinalCommandExtraPayload | WORD | 2 | +10 | +10 | 最終コマンドの追加ペイロードバイト数を示すWORD。 |
| MipiErrors | WORD | 2 | +12 | +12 | MIPI層で発生したエラーフラグを示すWORD。 |
| HostErrors | WORD | 2 | +14 | +14 | ホスト側で発生したエラーフラグを示すWORD。 |
| Packets | MIPI_DSI_PACKET | 32/20 | +16 | +16 | 送受信するMIPI_DSI_PACKETの配列。 |
構造体: _Anonymous_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
各言語での定義
#include <windows.h>
// MIPI_DSI_PACKET (x64 32 / x86 20 バイト)
typedef struct MIPI_DSI_PACKET {
_Anonymous1_e__Union Anonymous1;
_Anonymous2_e__Union Anonymous2;
BYTE EccFiller;
BYTE Payload[8];
} MIPI_DSI_PACKET;
// MIPI_DSI_TRANSMISSION (x64 48 / x86 36 バイト)
typedef struct MIPI_DSI_TRANSMISSION {
DWORD TotalBufferSize;
BYTE PacketCount;
BYTE FailedPacket;
_Anonymous_e__Struct Anonymous;
WORD ReadWordCount;
WORD FinalCommandExtraPayload;
WORD MipiErrors;
WORD HostErrors;
MIPI_DSI_PACKET Packets[1];
} MIPI_DSI_TRANSMISSION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MIPI_DSI_PACKET
{
public _Anonymous1_e__Union Anonymous1;
public _Anonymous2_e__Union Anonymous2;
public byte EccFiller;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] Payload;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MIPI_DSI_TRANSMISSION
{
public uint TotalBufferSize;
public byte PacketCount;
public byte FailedPacket;
public _Anonymous_e__Struct Anonymous;
public ushort ReadWordCount;
public ushort FinalCommandExtraPayload;
public ushort MipiErrors;
public ushort HostErrors;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] public MIPI_DSI_PACKET[] Packets;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MIPI_DSI_PACKET
Public Anonymous1 As _Anonymous1_e__Union
Public Anonymous2 As _Anonymous2_e__Union
Public EccFiller As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public Payload() As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MIPI_DSI_TRANSMISSION
Public TotalBufferSize As UInteger
Public PacketCount As Byte
Public FailedPacket As Byte
Public Anonymous As _Anonymous_e__Struct
Public ReadWordCount As UShort
Public FinalCommandExtraPayload As UShort
Public MipiErrors As UShort
Public HostErrors As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=1)> Public Packets() As MIPI_DSI_PACKET
End Structureimport ctypes
from ctypes import wintypes
class MIPI_DSI_PACKET(ctypes.Structure):
_fields_ = [
("Anonymous1", _Anonymous1_e__Union),
("Anonymous2", _Anonymous2_e__Union),
("EccFiller", ctypes.c_ubyte),
("Payload", ctypes.c_ubyte * 8),
]
class MIPI_DSI_TRANSMISSION(ctypes.Structure):
_fields_ = [
("TotalBufferSize", wintypes.DWORD),
("PacketCount", ctypes.c_ubyte),
("FailedPacket", ctypes.c_ubyte),
("Anonymous", _Anonymous_e__Struct),
("ReadWordCount", ctypes.c_ushort),
("FinalCommandExtraPayload", ctypes.c_ushort),
("MipiErrors", ctypes.c_ushort),
("HostErrors", ctypes.c_ushort),
("Packets", MIPI_DSI_PACKET * 1),
]#[repr(C)]
pub struct MIPI_DSI_PACKET {
pub Anonymous1: _Anonymous1_e__Union,
pub Anonymous2: _Anonymous2_e__Union,
pub EccFiller: u8,
pub Payload: [u8; 8],
}
#[repr(C)]
pub struct MIPI_DSI_TRANSMISSION {
pub TotalBufferSize: u32,
pub PacketCount: u8,
pub FailedPacket: u8,
pub Anonymous: _Anonymous_e__Struct,
pub ReadWordCount: u16,
pub FinalCommandExtraPayload: u16,
pub MipiErrors: u16,
pub HostErrors: u16,
pub Packets: [MIPI_DSI_PACKET; 1],
}import "golang.org/x/sys/windows"
type MIPI_DSI_PACKET struct {
Anonymous1 _Anonymous1_e__Union
Anonymous2 _Anonymous2_e__Union
EccFiller byte
Payload [8]byte
}
type MIPI_DSI_TRANSMISSION struct {
TotalBufferSize uint32
PacketCount byte
FailedPacket byte
Anonymous _Anonymous_e__Struct
ReadWordCount uint16
FinalCommandExtraPayload uint16
MipiErrors uint16
HostErrors uint16
Packets [1]MIPI_DSI_PACKET
}type
MIPI_DSI_PACKET = record
Anonymous1: _Anonymous1_e__Union;
Anonymous2: _Anonymous2_e__Union;
EccFiller: Byte;
Payload: array[0..7] of Byte;
end;
MIPI_DSI_TRANSMISSION = record
TotalBufferSize: DWORD;
PacketCount: Byte;
FailedPacket: Byte;
Anonymous: _Anonymous_e__Struct;
ReadWordCount: Word;
FinalCommandExtraPayload: Word;
MipiErrors: Word;
HostErrors: Word;
Packets: array[0..0] of MIPI_DSI_PACKET;
end;const MIPI_DSI_PACKET = extern struct {
Anonymous1: _Anonymous1_e__Union,
Anonymous2: _Anonymous2_e__Union,
EccFiller: u8,
Payload: [8]u8,
};
const MIPI_DSI_TRANSMISSION = extern struct {
TotalBufferSize: u32,
PacketCount: u8,
FailedPacket: u8,
Anonymous: _Anonymous_e__Struct,
ReadWordCount: u16,
FinalCommandExtraPayload: u16,
MipiErrors: u16,
HostErrors: u16,
Packets: [1]MIPI_DSI_PACKET,
};type
MIPI_DSI_PACKET {.bycopy.} = object
Anonymous1: _Anonymous1_e__Union
Anonymous2: _Anonymous2_e__Union
EccFiller: uint8
Payload: array[8, uint8]
MIPI_DSI_TRANSMISSION {.bycopy.} = object
TotalBufferSize: uint32
PacketCount: uint8
FailedPacket: uint8
Anonymous: _Anonymous_e__Struct
ReadWordCount: uint16
FinalCommandExtraPayload: uint16
MipiErrors: uint16
HostErrors: uint16
Packets: array[1, MIPI_DSI_PACKET]struct MIPI_DSI_PACKET
{
_Anonymous1_e__Union Anonymous1;
_Anonymous2_e__Union Anonymous2;
ubyte EccFiller;
ubyte[8] Payload;
}
struct MIPI_DSI_TRANSMISSION
{
uint TotalBufferSize;
ubyte PacketCount;
ubyte FailedPacket;
_Anonymous_e__Struct Anonymous;
ushort ReadWordCount;
ushort FinalCommandExtraPayload;
ushort MipiErrors;
ushort HostErrors;
MIPI_DSI_PACKET[1] Packets;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MIPI_DSI_TRANSMISSION サイズ: 36 バイト(x86)
dim st, 9 ; 4byte整数×9(構造体サイズ 36 / 4 切り上げ)
; TotalBufferSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PacketCount : BYTE (+4, 1byte) poke st,4,値 / 値 = peek(st,4)
; FailedPacket : BYTE (+5, 1byte) poke st,5,値 / 値 = peek(st,5)
; Anonymous : _Anonymous_e__Struct (+6, 2byte) varptr(st)+6 を基点に操作(2byte:入れ子/配列)
; ReadWordCount : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; FinalCommandExtraPayload : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; MipiErrors : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; HostErrors : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; Packets : MIPI_DSI_PACKET (+16, 20byte) varptr(st)+16 を基点に操作(20byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MIPI_DSI_TRANSMISSION サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; TotalBufferSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PacketCount : BYTE (+4, 1byte) poke st,4,値 / 値 = peek(st,4)
; FailedPacket : BYTE (+5, 1byte) poke st,5,値 / 値 = peek(st,5)
; Anonymous : _Anonymous_e__Struct (+6, 2byte) varptr(st)+6 を基点に操作(2byte:入れ子/配列)
; ReadWordCount : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; FinalCommandExtraPayload : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; MipiErrors : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; HostErrors : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; Packets : MIPI_DSI_PACKET (+16, 32byte) varptr(st)+16 を基点に操作(32byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global MIPI_DSI_PACKET
#field byte Anonymous1 8
#field byte Anonymous2 8
#field byte EccFiller
#field byte Payload 8
#endstruct
#defstruct global MIPI_DSI_TRANSMISSION
#field int TotalBufferSize
#field byte PacketCount
#field byte FailedPacket
#field _Anonymous_e__Struct Anonymous
#field short ReadWordCount
#field short FinalCommandExtraPayload
#field short MipiErrors
#field short HostErrors
#field MIPI_DSI_PACKET Packets 1
#endstruct
stdim st, MIPI_DSI_TRANSMISSION ; NSTRUCT 変数を確保
st->TotalBufferSize = 100
mes "TotalBufferSize=" + st->TotalBufferSize