the readme is a ramble and there's no functionality (yet). couldn't ask
for a better start.
This commit is contained in:
2024-06-28 21:24:46 -07:00
commit eace0bf8db
63 changed files with 45346 additions and 0 deletions

336
src/ljacklm.zig Normal file
View File

@@ -0,0 +1,336 @@
pub extern fn EAnalogIn(
idnum: *c_long,
demo: c_long,
channel: c_long,
gain: c_long,
overVoltage: *c_long,
voltage: *f32,
) c_long;
pub extern fn EAnalogOut(
idnum: *c_long,
demo: c_long,
analogOut0: f32,
analogOut1: f32,
) c_long;
pub extern fn ECount(
idnum: *c_long,
demo: c_long,
resetCounter: c_long,
count: *f64,
ms: *f64,
) c_long;
pub extern fn EDigitalIn(
idnum: *c_long,
demo: c_long,
channel: c_long,
readD: c_long,
state: [*c]c_long,
) c_long;
pub extern fn EDigitalOut(
idnum: *c_long,
demo: c_long,
channel: c_long,
writeD: c_long,
state: c_long,
) c_long;
pub extern fn AsynchConfig(
idnum: *c_long,
demo: c_long,
timeoutMult: c_long,
configA: c_long,
configB: c_long,
configTE: c_long,
fullA: c_long,
fullB: c_long,
fullC: c_long,
halfA: c_long,
halfB: c_long,
halfC: c_long,
) c_long;
pub extern fn Asynch(
idnum: *c_long,
demo: c_long,
portB: c_long,
enableTE: c_long,
enableTO: c_long,
enableDel: c_long,
baudrate: c_long,
numWrite: c_long,
numRead: c_long,
data: [*c]c_long,
) c_long;
pub extern fn AISample(
idnum: *c_long,
demo: c_long,
stateIO: [*c]c_long,
updateIO: c_long,
ledOn: c_long,
numChannels: c_long,
channels: [*c]c_long,
gains: [*c]c_long,
disableCal: c_long,
overVoltage: [*c]c_long,
voltages: [*c]f32,
) c_long;
pub extern fn AIBurst(
idnum: *c_long,
demo: c_long,
stateIOin: c_long,
updateIO: c_long,
ledOn: c_long,
numChannels: c_long,
channels: [*c]c_long,
gains: [*c]c_long,
scanRate: [*c]f32,
disableCal: c_long,
triggerIO: c_long,
triggerState: c_long,
numScans: c_long,
timeout: c_long,
voltages: [*c][4]f32,
stateIOout: [*c]c_long,
overVoltage: [*c]c_long,
transferMode: c_long,
) c_long;
pub extern fn AIStreamStart(
idnum: *c_long,
demo: c_long,
stateIOin: c_long,
updateIO: c_long,
ledOn: c_long,
numChannels: c_long,
channels: [*c]c_long,
gains: [*c]c_long,
scanRate: [*c]f32,
disableCal: c_long,
reserved1: c_long,
readCount: c_long,
) c_long;
pub extern fn AIStreamRead(
localID: c_long,
numScans: c_long,
timeout: c_long,
voltages: [*c][4]f32,
stateIOout: [*c]c_long,
reserved: [*c]c_long,
ljScanBacklog: [*c]c_long,
overVoltage: [*c]c_long,
) c_long;
pub extern fn AIStreamClear(
localID: c_long,
) c_long;
pub extern fn AOUpdate(
idnum: *c_long,
demo: c_long,
trisD: c_long,
trisIO: c_long,
stateD: [*c]c_long,
stateIO: [*c]c_long,
updateDigital: c_long,
resetCounter: c_long,
count: [*c]c_ulong,
analogOut0: f32,
analogOut1: f32,
) c_long;
pub extern fn BitsToVolts(
chnum: c_long,
chgain: c_long,
bits: c_long,
volts: [*c]f32,
) c_long;
pub extern fn VoltsToBits(
chnum: c_long,
chgain: c_long,
volts: f32,
bits: [*c]c_long,
) c_long;
pub extern fn Counter(
idnum: *c_long,
demo: c_long,
stateD: [*c]c_long,
stateIO: [*c]c_long,
resetCounter: c_long,
enableSTB: c_long,
count: [*c]c_ulong,
) c_long;
pub extern fn DigitalIO(
idnum: *c_long,
demo: c_long,
trisD: [*c]c_long,
trisIO: c_long,
stateD: [*c]c_long,
stateIO: [*c]c_long,
updateDigital: c_long,
outputD: [*c]c_long,
) c_long;
pub extern fn GetDriverVersion() f32;
pub extern fn GetErrorString(
errorcode: c_long,
errorString: *[50]u8,
) void;
pub extern fn GetFirmwareVersion(idnum: *c_long) f32;
pub extern fn ListAll(
productIDList: *[127]c_long,
serialnumList: *[127]c_long,
localIDList: *[127]c_long,
powerList: *[127]c_long,
calMatrix: *[127][20]c_long,
numberFound: *c_long,
fcddMaxSize: *c_long,
hvcMaxSize: *c_long,
) c_long;
pub extern fn LocalID(
idnum: *c_long,
localID: c_long,
) c_long;
pub extern fn PulseOut(
idnum: *c_long,
demo: c_long,
lowFirst: c_long,
bitSelect: c_long,
numPulses: c_long,
timeB1: c_long,
timeC1: c_long,
timeB2: c_long,
timeC2: c_long,
) c_long;
pub extern fn PulseOutStart(
idnum: *c_long,
demo: c_long,
lowFirst: c_long,
bitSelect: c_long,
numPulses: c_long,
timeB1: c_long,
timeC1: c_long,
timeB2: c_long,
timeC2: c_long,
) c_long;
pub extern fn PulseOutFinish(
idnum: *c_long,
demo: c_long,
timeoutMS: c_long,
) c_long;
pub extern fn PulseOutCalc(
frequency: [*c]f32,
timeB: [*c]c_long,
timeC: [*c]c_long,
) c_long;
pub extern fn ReEnum(
idnum: *c_long,
) c_long;
pub extern fn Reset(
idnum: *c_long,
) c_long;
pub extern fn ResetLJ(
idnum: *c_long,
) c_long;
pub extern fn SHT1X(
idnum: *c_long,
demo: c_long,
softComm: c_long,
mode: c_long,
statusReg: c_long,
tempC: [*c]f32,
tempF: [*c]f32,
rh: [*c]f32,
) c_long;
pub extern fn SHTComm(
idnum: *c_long,
softComm: c_long,
waitMeas: c_long,
serialReset: c_long,
dataRate: c_long,
numWrite: c_long,
numRead: c_long,
datatx: [*c]u8,
datarx: [*c]u8,
) c_long;
pub extern fn SHTCRC(
statusReg: c_long,
numWrite: c_long,
numRead: c_long,
datatx: [*c]u8,
datarx: [*c]u8,
) c_long;
pub extern fn Synch(
idnum: *c_long,
demo: c_long,
mode: c_long,
msDelay: c_long,
husDelay: c_long,
controlCS: c_long,
csLine: c_long,
csState: c_long,
configD: c_long,
numWriteRead: c_long,
data: [*c]c_long,
) c_long;
pub extern fn Watchdog(
idnum: *c_long,
demo: c_long,
active: c_long,
timeout: c_long,
reset: c_long,
activeD0: c_long,
activeD1: c_long,
activeD8: c_long,
stateD0: c_long,
stateD1: c_long,
stateD8: c_long,
) c_long;
pub extern fn ReadMem(
idnum: *c_long,
address: c_long,
data3: [*c]c_long,
data2: [*c]c_long,
data1: [*c]c_long,
data0: [*c]c_long,
) c_long;
pub extern fn WriteMem(
idnum: *c_long,
unlocked: c_long,
address: c_long,
data3: c_long,
data2: c_long,
data1: c_long,
data0: c_long,
) c_long;
pub extern fn CloseLabJack(
localID: c_long,
) c_long;

8
src/main.zig Normal file
View File

@@ -0,0 +1,8 @@
const std = @import("std");
const ljack = @import("./ljacklm.zig");
pub fn main() !void {
const ver = ljack.GetDriverVersion();
std.debug.print("Driver version: {d}\n", .{ver});
}