- blackbox files added
git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@96 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
110
blackbox/Usb/Mod/TargLog.otd
Normal file
110
blackbox/Usb/Mod/TargLog.otd
Normal file
@@ -0,0 +1,110 @@
|
||||
|
||||
MODULE UsbTargLog;
|
||||
(** <20> NTB/AS 12.01.2006 *)
|
||||
(**
|
||||
Changes:
|
||||
*)
|
||||
IMPORT
|
||||
USB := UsbBDI, Log := StdLog, Services, TextModels, XUT := XdeUtilities;
|
||||
|
||||
CONST
|
||||
logTitle = "USB Target Log";
|
||||
PERIOD = 200;
|
||||
|
||||
TYPE
|
||||
Receiver = POINTER TO RECORD (Services.Action)
|
||||
time: LONGINT; period: INTEGER
|
||||
END;
|
||||
|
||||
VAR
|
||||
receiver: Receiver;
|
||||
logTextModel: TextModels.Model; logWriter: TextModels.Writer;
|
||||
|
||||
PROCEDURE (receiver: Receiver) Do;
|
||||
VAR
|
||||
length, i: INTEGER; done: BOOLEAN;
|
||||
data: ARRAY USB.MAX_UART_DATA_LENGTH OF SHORTCHAR;
|
||||
BEGIN
|
||||
done := USB.UART0_read(data, length);
|
||||
IF done THEN
|
||||
FOR i := 0 TO length - 1 DO
|
||||
logWriter.WriteChar(data[i])
|
||||
END
|
||||
END;
|
||||
INC( receiver.time, receiver.period ); Services.DoLater(receiver, receiver.time )
|
||||
END Do;
|
||||
|
||||
PROCEDURE Stop * ;
|
||||
BEGIN
|
||||
IF receiver # NIL THEN Services.RemoveAction(receiver ); receiver := NIL END;
|
||||
logWriter := NIL; logTextModel := NIL
|
||||
END Stop;
|
||||
|
||||
PROCEDURE StartReceiver;
|
||||
BEGIN
|
||||
IF receiver # NIL THEN Services.RemoveAction(receiver ); receiver := NIL END;
|
||||
NEW(receiver);
|
||||
receiver.time := Services.Ticks(); receiver.period := PERIOD;
|
||||
Services.DoLater(receiver, receiver.time)
|
||||
END StartReceiver;
|
||||
|
||||
PROCEDURE Start * ;
|
||||
VAR beg, end: INTEGER;
|
||||
BEGIN
|
||||
IF ~USB.DeviceOpen() THEN
|
||||
USB.ConnectDevice;
|
||||
END;
|
||||
Stop;
|
||||
Log.String("opening USB target log"); Log.Ln;
|
||||
XUT.GetTextModel("", logTextModel, beg, end); logWriter := logTextModel.NewWriter(NIL);
|
||||
XUT.ShowTextView(logTextModel, logTitle);
|
||||
StartReceiver;
|
||||
END Start;
|
||||
|
||||
PROCEDURE SendSelToTarget * ;
|
||||
(** send all visible char of the current selection to the target
|
||||
*)
|
||||
VAR
|
||||
reader: TextModels.Reader; textModel: TextModels.Model; beg, end, currentLen: INTEGER; ch: CHAR;
|
||||
data: ARRAY USB.MAX_UART_DATA_LENGTH OF SHORTCHAR; done, error: BOOLEAN;
|
||||
BEGIN
|
||||
XUT.GetTextModel("@", textModel, beg, end);
|
||||
IF textModel # NIL THEN
|
||||
reader := textModel.NewReader(NIL); reader.SetPos(beg);
|
||||
currentLen := 0; error := FALSE;
|
||||
WHILE reader.Pos() < end DO
|
||||
reader.ReadChar(ch);
|
||||
data[currentLen] := SHORT(ch);
|
||||
INC(currentLen);
|
||||
IF currentLen >= USB.MAX_UART_DATA_LENGTH THEN
|
||||
done := USB.UART0_write(data, currentLen);
|
||||
IF ~done THEN
|
||||
error := TRUE;
|
||||
Log.String("Sending data failed"); Log.Ln;
|
||||
END;
|
||||
currentLen := 0;
|
||||
END
|
||||
END;
|
||||
IF currentLen > 0 THEN
|
||||
done := USB.UART0_write(data, currentLen);
|
||||
IF ~done THEN
|
||||
error := TRUE;
|
||||
Log.String("Sending data failed"); Log.Ln;
|
||||
END
|
||||
END;
|
||||
IF ~error THEN
|
||||
Log.String("Data sent successfully"); Log.Ln;
|
||||
END
|
||||
END
|
||||
END SendSelToTarget;
|
||||
|
||||
PROCEDURE ClearText * ;
|
||||
BEGIN
|
||||
IF logTextModel # NIL THEN
|
||||
logTextModel.Delete(0, logTextModel.Length()); logWriter.SetPos(0)
|
||||
END
|
||||
END ClearText;
|
||||
|
||||
CLOSE
|
||||
Stop
|
||||
END UsbTargLog .
|
||||
Reference in New Issue
Block a user