From d8f18202c6e338741e8dfc8a023c183960353251 Mon Sep 17 00:00:00 2001 From: schlaepfer Date: Wed, 8 Mar 2006 11:34:16 +0000 Subject: [PATCH] - USB_Device_getMaxPacketSize added - changes for new Java-layout git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@103 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c --- blackbox/Usb/Mod/BDI.otd | 136 ++++++++++++---------- blackbox/Usb/Mod/BDIDll.otd | 211 ++++++++++++++++++----------------- blackbox/Usb/Rsrc/usbpdi.jar | Bin 41574 -> 45768 bytes 3 files changed, 181 insertions(+), 166 deletions(-) diff --git a/blackbox/Usb/Mod/BDI.otd b/blackbox/Usb/Mod/BDI.otd index 5943a54..f7dc8d0 100644 --- a/blackbox/Usb/Mod/BDI.otd +++ b/blackbox/Usb/Mod/BDI.otd @@ -2,31 +2,31 @@ MODULE UsbBDI; IMPORT SYS := SYSTEM, BDI := UsbBDIDll, Log := StdLog, ComTools, WinApi, Services, TextModels, Ports, Files, HostFiles; - CONST + CONST ttDefaultPeriod = 500; (*500 ms*) ttPipeHandDisconnected = -1; nul = 0X; - ascLf = 0AX; ascCr = 0DX; - CONST + ascLf = 0AX; ascCr = 0DX; + CONST FALSE_ = 0; - PATH_LENGTH* = 512; + PATH_LENGTH* = 512; - CONST + CONST JAVA_OUT_FILENAME = "JavaOut.txt"; JAVA_ERR_FILENAME = "JavaErr.txt"; INVALID_HANDLE_VALUE = -1; STD_OUT_COLOR = Ports.green; STD_ERR_COLOR = Ports.grey50; JAVA_OUT_COLOR = Ports.blue; - JAVA_ERR_COLOR = Ports.red; + JAVA_ERR_COLOR = Ports.red; - CONST - MAX_UART_DATA_LENGTH* = BDI.MAX_UART_DATA_LENGTH; + CONST + MAX_UART_DATA_LENGTH* = BDI.MAX_UART_DATA_LENGTH; - CONST + CONST PATH_SEPERATOR = "\"; - CLASSPATH = "Usb\Rsrc\usbpdi.jar"; + CLASSPATH = "Usb\Rsrc\usbpdi.jar"; - TYPE + TYPE StdReaderWriter = POINTER TO ABSTRACT RECORD (Services.Action) stdIoText: TextModels.Model; stdIoTextPos: INTEGER; time, endTime: LONGINT; period: INTEGER; @@ -36,25 +36,25 @@ MODULE UsbBDI; JvmReaderWriter = POINTER TO EXTENSIBLE RECORD (StdReaderWriter) errText: TextModels.Model; stdIoWriter, stdErrWriter: TextModels.Writer; hJavaOut, hJavaErr: WinApi.HANDLE; - END; + END; - VAR + VAR bool: BDI.BOOL; Done-, deviceOpen, jvmCreated: BOOLEAN; (** previous operation successfully completed *) - readerWriter: JvmReaderWriter; + readerWriter: JvmReaderWriter; (* ----------- Standard-IO / Java ReaderWriter --------------- *) - PROCEDURE (task: StdReaderWriter) Clear, NEW, EXTENSIBLE; + PROCEDURE (task: StdReaderWriter) Clear, NEW, EXTENSIBLE; BEGIN task.stdIoText := NIL; task.stdIoTextPos := 0; task.hStdOut := ttPipeHandDisconnected; task.hStdErr := ttPipeHandDisconnected; task.time := 0; task.endTime := 0; task.period := 0; task.connected := FALSE; task.running := FALSE; task.prevChar := nul; - END Clear; + END Clear; - PROCEDURE (task: StdReaderWriter) Stop, NEW, EXTENSIBLE; + PROCEDURE (task: StdReaderWriter) Stop, NEW, EXTENSIBLE; VAR done: WinApi.BOOL; BEGIN Services.RemoveAction(task); task.running := FALSE; @@ -63,70 +63,70 @@ MODULE UsbBDI; done := WinApi.CloseHandle(task.hStdErr); END; task.Clear - END Stop; + END Stop; - PROCEDURE (task: StdReaderWriter) SetTime (startFromNow, period, timeOut: INTEGER), NEW; + PROCEDURE (task: StdReaderWriter) SetTime (startFromNow, period, timeOut: INTEGER), NEW; BEGIN task.time := Services.Ticks() + startFromNow; IF timeOut <= 0 THEN timeOut := MAX(INTEGER) END; task.endTime := task.time + LONG(timeOut) * Services.resolution DIV 1000; task.period := period - END SetTime; + END SetTime; - PROCEDURE (task: StdReaderWriter) ConnectStdOutPipe (hStdOut: WinApi.HANDLE), NEW; + PROCEDURE (task: StdReaderWriter) ConnectStdOutPipe (hStdOut: WinApi.HANDLE), NEW; VAR done: WinApi.BOOL; BEGIN IF task.connected & (task.hStdOut # hStdOut) THEN done := WinApi.CloseHandle(task.hStdOut) END; task.hStdOut := hStdOut; task.connected := TRUE - END ConnectStdOutPipe; + END ConnectStdOutPipe; - PROCEDURE (task: StdReaderWriter) ConnectStdErrPipe (hStdErr: WinApi.HANDLE), NEW; + PROCEDURE (task: StdReaderWriter) ConnectStdErrPipe (hStdErr: WinApi.HANDLE), NEW; VAR done: WinApi.BOOL; BEGIN IF task.connected & (task.hStdErr # hStdErr) THEN done := WinApi.CloseHandle(task.hStdErr) END; task.hStdErr := hStdErr; task.connected := TRUE - END ConnectStdErrPipe; + END ConnectStdErrPipe; PROCEDURE (task: StdReaderWriter) Start, NEW, ABSTRACT; - PROCEDURE NewJvmReaderWriter ( ): JvmReaderWriter; + PROCEDURE NewJvmReaderWriter ( ): JvmReaderWriter; VAR rec: JvmReaderWriter; BEGIN NEW(rec); rec.Clear; RETURN rec - END NewJvmReaderWriter; + END NewJvmReaderWriter; - PROCEDURE (rec: JvmReaderWriter) Clear, EXTENSIBLE; + PROCEDURE (rec: JvmReaderWriter) Clear, EXTENSIBLE; VAR done: WinApi.BOOL; BEGIN rec.Clear^; rec.errText := NIL; rec.stdIoWriter := NIL; rec.stdErrWriter := NIL; rec.hJavaOut := ttPipeHandDisconnected; rec.hJavaErr := ttPipeHandDisconnected; - END Clear; + END Clear; - PROCEDURE (rec: JvmReaderWriter) Stop, EXTENSIBLE; + PROCEDURE (rec: JvmReaderWriter) Stop, EXTENSIBLE; VAR done: WinApi.BOOL; BEGIN IF rec.connected THEN rec.Stop^; done := WinApi.CloseHandle(rec.hJavaErr); done := WinApi.CloseHandle(rec.hJavaOut) END; rec.Clear - END Stop; + END Stop; - PROCEDURE (rec: JvmReaderWriter) ConnectJavaOutPipe (hJavaOut: WinApi.HANDLE), NEW; + PROCEDURE (rec: JvmReaderWriter) ConnectJavaOutPipe (hJavaOut: WinApi.HANDLE), NEW; VAR done: WinApi.BOOL; BEGIN IF rec.connected & (rec.hJavaOut # hJavaOut) THEN done := WinApi.CloseHandle(rec.hJavaOut) END; rec.hJavaOut := hJavaOut; rec.connected := TRUE - END ConnectJavaOutPipe; + END ConnectJavaOutPipe; - PROCEDURE (rec: JvmReaderWriter) ConnectJavaErrPipe (hJavaErr: WinApi.HANDLE), NEW; + PROCEDURE (rec: JvmReaderWriter) ConnectJavaErrPipe (hJavaErr: WinApi.HANDLE), NEW; VAR done: WinApi.BOOL; BEGIN IF rec.connected & (rec.hJavaErr # hJavaErr) THEN done := WinApi.CloseHandle(rec.hJavaErr) END; rec.hJavaErr := hJavaErr; rec.connected := TRUE - END ConnectJavaErrPipe; + END ConnectJavaErrPipe; - PROCEDURE (rec: JvmReaderWriter) Start; + PROCEDURE (rec: JvmReaderWriter) Start; VAR handle, stdOutHandle, stdErrHandle: WinApi.HANDLE; BEGIN IF rec.running THEN rec.Stop END; @@ -166,9 +166,9 @@ MODULE UsbBDI; END; rec.running := TRUE; Services.DoLater(rec, rec.time) - END Start; + END Start; - PROCEDURE (rec: JvmReaderWriter) Do; + PROCEDURE (rec: JvmReaderWriter) Do; VAR outModel: TextModels.Model; n, ioDone, errDone, nofBytesRead, ioBytesAvail, errBytesAvail, exitCode: INTEGER; @@ -259,11 +259,11 @@ MODULE UsbBDI; END; INC( rec.time, rec.period ); Services.DoLater(rec, rec.time ) END; - END Do; + END Do; (* ----------- JVM --------------- *) - PROCEDURE CreateJVM (classpath: ARRAY OF SHORTCHAR); + PROCEDURE CreateJVM (classpath: ARRAY OF SHORTCHAR); VAR string: WinApi.PtrSTR; BEGIN string := ComTools.NewSString(classpath); @@ -283,9 +283,9 @@ MODULE UsbBDI; readerWriter.Start(); END; ComTools.FreeSString(string); - END CreateJVM; + END CreateJVM; - PROCEDURE DestroyJVM ; + PROCEDURE DestroyJVM ; BEGIN bool := BDI.destroyJVM(); IF bool = FALSE_ THEN @@ -296,57 +296,68 @@ MODULE UsbBDI; Log.String("JVM destroyed"); Log.Ln; END; jvmCreated := FALSE; - END DestroyJVM; + END DestroyJVM; - PROCEDURE CheckForExceptions * (): BOOLEAN; + PROCEDURE CheckForExceptions * (): BOOLEAN; BEGIN RETURN (BDI.checkForExceptions() # FALSE_) - END CheckForExceptions; + END CheckForExceptions; (* ----------- USB --------------- *) - PROCEDURE USB_Device_open ; + PROCEDURE USB_Device_open ; BEGIN BDI.USB_Device_open; Done := ~CheckForExceptions(); IF Done THEN deviceOpen := TRUE; END - END USB_Device_open; + END USB_Device_open; - PROCEDURE USB_Device_close ; + PROCEDURE USB_Device_close ; BEGIN BDI.USB_Device_close; Done := ~CheckForExceptions(); deviceOpen := FALSE; - END USB_Device_close; + END USB_Device_close; - PROCEDURE USB_Device_reset * ; + PROCEDURE USB_Device_reset * ; BEGIN BDI.USB_Device_reset; Done := ~CheckForExceptions(); deviceOpen := FALSE; - END USB_Device_reset; + END USB_Device_reset; + PROCEDURE USB_Device_getMaxPacketSize * (): INTEGER; + VAR val: INTEGER; + BEGIN + IF deviceOpen THEN + Done := TRUE; + RETURN BDI.USB_Device_getMaxPacketSize(); + ELSE + Done := FALSE; + RETURN - 1 + END + END USB_Device_getMaxPacketSize; (* --------- UART0 ----------------- *) - PROCEDURE UART0_read * (VAR data: ARRAY OF SHORTCHAR; VAR length: INTEGER): BOOLEAN; + PROCEDURE UART0_read * (VAR data: ARRAY OF SHORTCHAR; VAR length: INTEGER): BOOLEAN; BEGIN length := BDI.UART0_read(data); RETURN length # FALSE_; - END UART0_read; + END UART0_read; - PROCEDURE UART0_write * (VAR data: ARRAY OF SHORTCHAR; length: INTEGER): BOOLEAN; + PROCEDURE UART0_write * (VAR data: ARRAY OF SHORTCHAR; length: INTEGER): BOOLEAN; VAR result: INTEGER; BEGIN RETURN BDI.UART0_write(SYS.ADR(data[0]), length) # FALSE_; - END UART0_write; + END UART0_write; (* -------------- Helper Functions ------------------*) - PROCEDURE GetUserStartUpPath (VAR startupPath: ARRAY OF SHORTCHAR); + PROCEDURE GetUserStartUpPath (VAR startupPath: ARRAY OF SHORTCHAR); VAR userStartUpLocator: Files.Locator; userStartUpHostLoc: HostFiles.Locator; startupPathChar: ARRAY PATH_LENGTH OF CHAR; @@ -357,10 +368,10 @@ MODULE UsbBDI; FOR i := 0 TO LEN(startupPathChar) - 1 DO startupPath[i] := SYS.VAL(SHORTCHAR, startupPathChar[i]); END - END GetUserStartUpPath; + END GetUserStartUpPath; - PROCEDURE ConnectDevice * ; + PROCEDURE ConnectDevice * ; VAR startupPath: ARRAY PATH_LENGTH OF SHORTCHAR; BEGIN @@ -377,16 +388,17 @@ MODULE UsbBDI; END; BDI.USB_Device_open; IF ~Done THEN HALT(78) END; + deviceOpen := TRUE; END - END ConnectDevice; + END ConnectDevice; - PROCEDURE DeviceOpen * (): BOOLEAN ; + PROCEDURE DeviceOpen * (): BOOLEAN ; BEGIN RETURN deviceOpen - END DeviceOpen; + END DeviceOpen; (* Close and reopen the device *) - PROCEDURE ReopenDevice * ; + PROCEDURE ReopenDevice * ; BEGIN USB_Device_close; USB_Device_open; @@ -395,7 +407,7 @@ MODULE UsbBDI; ELSE Log.String("Error while opening Device"); Log.Ln; END - END ReopenDevice; + END ReopenDevice; BEGIN deviceOpen := FALSE; diff --git a/blackbox/Usb/Mod/BDIDll.otd b/blackbox/Usb/Mod/BDIDll.otd index c635298..efbb8a4 100644 --- a/blackbox/Usb/Mod/BDIDll.otd +++ b/blackbox/Usb/Mod/BDIDll.otd @@ -1,175 +1,178 @@ MODULE UsbBDIDll ["BDI.dll"]; IMPORT SYSTEM; - CONST + CONST MAX_NOF_LONGS_FILL* = 84; - MAX_UART_DATA_LENGTH* = 256; + MAX_UART_DATA_LENGTH* = 256; - TYPE + TYPE PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR; - BOOL* = INTEGER; + BOOL* = INTEGER; (* -------JVM--------- *) - PROCEDURE getErrPipeHandle* (): INTEGER; - (*END getErrPipeHandle; *) + PROCEDURE getErrPipeHandle* (): INTEGER; + (*END getErrPipeHandle; *) - PROCEDURE getOutPipeHandle* (): INTEGER; - (*END getOutPipeHandle; *) + PROCEDURE getOutPipeHandle* (): INTEGER; + (*END getOutPipeHandle; *) - PROCEDURE createJVM* (classpath: PtrSTR): BOOL; - (*END createJVM; *) + PROCEDURE createJVM* (classpath: PtrSTR): BOOL; + (*END createJVM; *) - PROCEDURE destroyJVM* (): INTEGER; - (*END destroyJVM; *) + PROCEDURE destroyJVM* (): INTEGER; + (*END destroyJVM; *) - PROCEDURE checkForExceptions* (): BOOL; - (*END checkForExceptions; *) + PROCEDURE checkForExceptions* (): BOOL; + (*END checkForExceptions; *) (* -------USB--------- *) - PROCEDURE USB_Device_open*; - (*END USB_Device_open; *) + PROCEDURE USB_Device_open*; + (*END USB_Device_open; *) - PROCEDURE USB_Device_close*; - (*END USB_Device_close; *) + PROCEDURE USB_Device_close*; + (*END USB_Device_close; *) - PROCEDURE USB_Device_reset*; - (*END USB_Device_reset; *) + PROCEDURE USB_Device_reset*; + (*END USB_Device_reset; *) + + PROCEDURE USB_Device_getMaxPacketSize* (): INTEGER; + (*END USB_Device_reset; *) (* -------555--------- *) - PROCEDURE BDI555_go*; - (*END BDI555_go; *) + PROCEDURE BDI555_go*; + (*END BDI555_go; *) - PROCEDURE BDI555_break_*; - (*END BDI555_break_; *) + PROCEDURE BDI555_break_*; + (*END BDI555_break_; *) - PROCEDURE BDI555_reset_target*; - (*END BDI555_reset_target; *) + PROCEDURE BDI555_reset_target*; + (*END BDI555_reset_target; *) - PROCEDURE BDI555_isFreezeAsserted* (): BOOL; - (*END BDI555_isFreezeAsserted; *) + PROCEDURE BDI555_isFreezeAsserted* (): BOOL; + (*END BDI555_isFreezeAsserted; *) - PROCEDURE BDI555_startFastDownload* (adr: INTEGER); - (*END BDI555_startFastDownload; *) + PROCEDURE BDI555_startFastDownload* (adr: INTEGER); + (*END BDI555_startFastDownload; *) - PROCEDURE BDI555_fastDownload* (downloadData: (* ARRAY OF *) INTEGER; dataLength: INTEGER); - (*END BDI555_fastDownload; *) + PROCEDURE BDI555_fastDownload* (downloadData: (* ARRAY OF *) INTEGER; dataLength: INTEGER); + (*END BDI555_fastDownload; *) - PROCEDURE BDI555_stopFastDownload*; - (*END BDI555_stopFastDownload; *) + PROCEDURE BDI555_stopFastDownload*; + (*END BDI555_stopFastDownload; *) - PROCEDURE BDI555_writeMem* (addr, value, size: INTEGER); - (*END BDI555_writeMem; *) + PROCEDURE BDI555_writeMem* (addr, value, size: INTEGER); + (*END BDI555_writeMem; *) - PROCEDURE BDI555_readMem* (addr, size: INTEGER): INTEGER; - (*END BDI555_readMem; *) + PROCEDURE BDI555_readMem* (addr, size: INTEGER): INTEGER; + (*END BDI555_readMem; *) - PROCEDURE BDI555_writeMemSeq* (value, size: INTEGER); - (*END BDI555_writeMemSeq; *) + PROCEDURE BDI555_writeMemSeq* (value, size: INTEGER); + (*END BDI555_writeMemSeq; *) - PROCEDURE BDI555_readMemSeq* (size: INTEGER): INTEGER; - (*END BDI555_readMemSeq; *) + PROCEDURE BDI555_readMemSeq* (size: INTEGER): INTEGER; + (*END BDI555_readMemSeq; *) - PROCEDURE BDI555_readGPR* (gpr: INTEGER): INTEGER; - (*END BDI555_readGPR; *) + PROCEDURE BDI555_readGPR* (gpr: INTEGER): INTEGER; + (*END BDI555_readGPR; *) - PROCEDURE BDI555_writeGPR* (gpr, value: INTEGER); - (*END BDI555_writeGPR; *) + PROCEDURE BDI555_writeGPR* (gpr, value: INTEGER); + (*END BDI555_writeGPR; *) - PROCEDURE BDI555_readSPR* (spr: INTEGER): INTEGER; - (*END BDI555_readSPR; *) + PROCEDURE BDI555_readSPR* (spr: INTEGER): INTEGER; + (*END BDI555_readSPR; *) - PROCEDURE BDI555_writeSPR* (spr, value: INTEGER); - (*END BDI555_writeSPR; *) + PROCEDURE BDI555_writeSPR* (spr, value: INTEGER); + (*END BDI555_writeSPR; *) - PROCEDURE BDI555_readMSR* (): INTEGER; - (*END BDI555_readMSR; *) + PROCEDURE BDI555_readMSR* (): INTEGER; + (*END BDI555_readMSR; *) - PROCEDURE BDI555_writeMSR* (value: INTEGER); - (*END BDI555_writeMSR; *) + PROCEDURE BDI555_writeMSR* (value: INTEGER); + (*END BDI555_writeMSR; *) - PROCEDURE BDI555_readFPR* (fpr, tmpMemAddr: INTEGER): LONGINT; - (*END BDI555_readFPR; *) + PROCEDURE BDI555_readFPR* (fpr, tmpMemAddr: INTEGER): LONGINT; + (*END BDI555_readFPR; *) - PROCEDURE BDI555_writeFPR* (fpr, tmpMemAddr: INTEGER; value: LONGINT); - (*END BDI555_writeFPR; *) + PROCEDURE BDI555_writeFPR* (fpr, tmpMemAddr: INTEGER; value: LONGINT); + (*END BDI555_writeFPR; *) - PROCEDURE BDI555_readCR* (): INTEGER; - (*END BDI555_readCR; *) + PROCEDURE BDI555_readCR* (): INTEGER; + (*END BDI555_readCR; *) - PROCEDURE BDI555_writeCR* (value: INTEGER); - (*END BDI555_writeCR; *) + PROCEDURE BDI555_writeCR* (value: INTEGER); + (*END BDI555_writeCR; *) - PROCEDURE BDI555_readFPSCR* (): INTEGER; - (*END BDI555_readFPSCR; *) + PROCEDURE BDI555_readFPSCR* (): INTEGER; + (*END BDI555_readFPSCR; *) - PROCEDURE BDI555_writeFPSCR* (value: INTEGER); - (*END BDI555_writeFPSCR; *) + PROCEDURE BDI555_writeFPSCR* (value: INTEGER); + (*END BDI555_writeFPSCR; *) - PROCEDURE BDI555_isTargetInDebugMode* (): BOOL; - (*END BDI555_isTargetInDebugMode; *) + PROCEDURE BDI555_isTargetInDebugMode* (): BOOL; + (*END BDI555_isTargetInDebugMode; *) - PROCEDURE BDI555_setGpr31* (gpr31: INTEGER); - (*END BDI555_setGpr31; *) + PROCEDURE BDI555_setGpr31* (gpr31: INTEGER); + (*END BDI555_setGpr31; *) (* -------332--------- *) - PROCEDURE BDI332_nopsToLegalCmd*; - (*END BDI332_nopsToLegalCmd; *) + PROCEDURE BDI332_nopsToLegalCmd*; + (*END BDI332_nopsToLegalCmd; *) - PROCEDURE BDI332_go*; - (*END BDI332_go; *) + PROCEDURE BDI332_go*; + (*END BDI332_go; *) - PROCEDURE BDI332_break_*; - (*END BDI332_break_; *) + PROCEDURE BDI332_break_*; + (*END BDI332_break_; *) - PROCEDURE BDI332_reset_target*; - (*END BDI332_reset_target; *) + PROCEDURE BDI332_reset_target*; + (*END BDI332_reset_target; *) - PROCEDURE BDI332_reset_peripherals*; - (*END BDI332_reset_peripherals; *) + PROCEDURE BDI332_reset_peripherals*; + (*END BDI332_reset_peripherals; *) - PROCEDURE BDI332_isFreezeAsserted* (): BOOL; - (*END BDI332_isFreezeAsserted; *) + PROCEDURE BDI332_isFreezeAsserted* (): BOOL; + (*END BDI332_isFreezeAsserted; *) - PROCEDURE BDI332_fillMem* (downloadData: (* ARRAY OF *) INTEGER; dataLength: INTEGER); - (*END BDI332_fillMem; *) + PROCEDURE BDI332_fillMem* (downloadData: (* ARRAY OF *) INTEGER; dataLength: INTEGER); + (*END BDI332_fillMem; *) - PROCEDURE BDI332_dumpMem* (nofData: INTEGER; VAR result: ARRAY OF INTEGER): INTEGER; + PROCEDURE BDI332_dumpMem* (nofData: INTEGER; VAR result: ARRAY OF INTEGER): INTEGER; (* PROCEDURE BDI332_dumpMem* (nofData: INTEGER; VAR result: ARRAY [untagged] MAX_NOF_LONGS_FILL OF INTEGER): INTEGER; *) - (*END BDI332_dumpMem; *) + (*END BDI332_dumpMem; *) - PROCEDURE BDI332_writeMem* (addr, value, size: INTEGER); - (*END BDI332_writeMem; *) + PROCEDURE BDI332_writeMem* (addr, value, size: INTEGER); + (*END BDI332_writeMem; *) - PROCEDURE BDI332_readMem* (addr, size: INTEGER): INTEGER; - (*END BDI332_readMem; *) + PROCEDURE BDI332_readMem* (addr, size: INTEGER): INTEGER; + (*END BDI332_readMem; *) - PROCEDURE BDI332_readUserReg* (reg: INTEGER): INTEGER; - (*END BDI332_readUserReg; *) + PROCEDURE BDI332_readUserReg* (reg: INTEGER): INTEGER; + (*END BDI332_readUserReg; *) - PROCEDURE BDI332_writeUserReg* (reg, value: INTEGER); - (*END BDI332_writeUserReg; *) + PROCEDURE BDI332_writeUserReg* (reg, value: INTEGER); + (*END BDI332_writeUserReg; *) - PROCEDURE BDI332_readSysReg* (reg: INTEGER): INTEGER; - (*END BDI332_readSysReg; *) + PROCEDURE BDI332_readSysReg* (reg: INTEGER): INTEGER; + (*END BDI332_readSysReg; *) - PROCEDURE BDI332_writeSysReg* (reg, value: INTEGER); - (*END BDI332_writeSysReg; *) + PROCEDURE BDI332_writeSysReg* (reg, value: INTEGER); + (*END BDI332_writeSysReg; *) - PROCEDURE BDI332_isTargetInDebugMode* (): BOOL; - (*END BDI332_isTargetInDebugMode; *) + PROCEDURE BDI332_isTargetInDebugMode* (): BOOL; + (*END BDI332_isTargetInDebugMode; *) (* ------ UART0 ------ *) - PROCEDURE UART0_read* (VAR data: ARRAY [untagged] OF SHORTCHAR): INTEGER; - (*END UART0_read; *) + PROCEDURE UART0_read* (VAR data: ARRAY [untagged] OF SHORTCHAR): INTEGER; + (*END UART0_read; *) - PROCEDURE UART0_write* (data: (* ARRAY OF SHORTCHAR *) INTEGER; length: INTEGER): BOOL; - (*END UART0_write; *) + PROCEDURE UART0_write* (data: (* ARRAY OF SHORTCHAR *) INTEGER; length: INTEGER): BOOL; + (*END UART0_write; *) END UsbBDIDll. diff --git a/blackbox/Usb/Rsrc/usbpdi.jar b/blackbox/Usb/Rsrc/usbpdi.jar index 09df1485f72e218e20e7716e6bf39516e6fa6183..139200e082cced8271d8abce215de889687eb68b 100644 GIT binary patch delta 31350 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 G_t$}^$mH~b_ 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 c*)7I92U|;^6`w!p&dE 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 delta 27122 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 B`vCv|