FreeCalypso > hg > freecalypso-reveng
annotate fluid-mnf/target.c @ 313:9b5079989681
frbl/reconst/inc/command.h: tab fixes
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Wed, 04 Mar 2020 23:10:48 +0000 | 
| parents | 9cecc930d78f | 
| children | b595ff13547b | 
| rev | line source | 
|---|---|
| 311 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * FLUID (Flash Loader Utility Independent of Device) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 * Copyright Texas Instruments, 2001. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 * Mads Meisner-Jensen, mmj@ti.com. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 * | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 * Target Connection and Control | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 * | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 * $Id: target.c 1.20 Mon, 21 Oct 2002 18:39:13 +0200 mmj $ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 * | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 #include "serial.h" | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 #include "fluid.h" | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 #include "trace.h" | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 #include <stdio.h> | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 #if defined(MSC) || defined(BCC) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 #include "windows.h" | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 #endif | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 int target_trace(unsigned char ch); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 * Globals | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 HANDLE hEvent; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 #define RECVBUF_SIZE (65536) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 static unsigned char recvbuf[RECVBUF_SIZE]; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 static int recvbuf_size_target; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 static int recvbuf_put; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 static int recvbuf_get; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 #define recvbuf_size() (recvbuf_put - recvbuf_get + \ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 ((recvbuf_put - recvbuf_get) < 0 ? RECVBUF_SIZE : 0)) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 * Error Functions | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 void error_proto(char ch, char chx) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 char chd, chxd; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 chd = (' ' <= ch && ch < 127 ? ch : '.'); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 chxd = (' ' <= chx && chx < 127 ? chx : '.'); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 flowf(NORMAL, "(protocol error: got '%c' 0x%02X, expected '%c' 0x%02X)\n", | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 chd, ch, chxd, chx); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 main_fatal(E_PROTO_ERROR); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 * Target Dependencies | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 // <clk> is the target's clock frequency | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 int target_uart_baudrate_divider_get(int clk, int bps) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 int divider = clk / bps / 16; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 tr(TrTargetDrv, "target_uart_baudrate_divider_get(%d, %d) %d\n", | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 clk, bps, divider); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 return divider; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 * Target Init and Send | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 static int target_trace_timer; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 void target_recv_reset(void) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 tr(TrTargetDrv, "recv_reset()\n"); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 recvbuf_get = recvbuf_put = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 memset(recvbuf, 0x77, RECVBUF_SIZE); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 serial_recv_reset(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 int target_driver_init(int uart, int baudrate, char *flowcontrol) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 int error; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 target_recv_reset(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 hEvent = CreateEvent(NULL, // lpEventAttributes | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 FALSE, // bManualReset (OFF) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 FALSE, // bInitialstate (OFF) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 NULL); // lpName | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 if (hEvent == NULL) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 error = E_DRIVER_INIT + E_OS; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 else { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 error = serial_init(uart, baudrate, flowcontrol); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 return error; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 int target_driver_baudrate(int baudrate) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 return serial_baudrate_set(baudrate); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 int target_putchar(char ch) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 char trch; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 trch = (ch < ' ' || ch == 127 ? '.' : ch); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 tr(TrPutChar, "s '%c'/0x%02X\n", trch, ch & 0xFF); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 return serial_send(&ch, 1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 int target_send(char *buf, int size) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 tr(TrPutChar, "s (%d bytes)\n", size); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 return serial_send(buf, size); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 * Target Wait and Receive | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 void target_recv_signal(void) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 // Notify waiting thread when we have received the requested number of | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 // bytes. Note that we use auto-resetting events, so you have to be VERY | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 // careful to wait for the exact number of bytes you want. Otherwise you | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 // might trigger the event twice in quick succession and this will | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 // result in the next call of target_wait()'s to return immediately | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 // without waiting! | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 if (recvbuf_size() >= recvbuf_size_target && recvbuf_size_target > 0) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 // When we have triggered the event, disable further triggering | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 // until next call of target_wait() | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 recvbuf_size_target = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 tr(TrDriverGet, "!"); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 if (SetEvent(hEvent) == 0) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 fprintf(stderr, "FATAL: recv_push_tm(): SetEvent() failed with Win32 error %d\n", GetLastError()); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 void target_recv_push(char *buf, int size) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 if (size == 0) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 tr(TrDriverGet, " G?"); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 return; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 while (size--) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 recvbuf[recvbuf_put++] = *buf++; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 recvbuf_put &= (RECVBUF_SIZE - 1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 tr(TrDriverGet, " G%d", recvbuf_size()); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 target_recv_signal(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 // Wait maximum <timeout> milli-seconds for <size> bytes to arrive. If | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 // <size> is zero, we unconditionally wait for <time_ms> milli-seconds | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 // (quite simply a delay). The transfer time is automatically added to the | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 // total waiting time. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 int target_wait(int size, int timeout) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 int result = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 tr(TrTargetWait, "target_wait(%d, %d)\n", size, timeout); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 if (size > 0) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 timeout += serial_transfer_time(size); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 recvbuf_size_target = size; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 target_trace_timer = timeout; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 if (size == 0) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 Sleep(timeout); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 else { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 target_recv_signal(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 switch (WaitForSingleObject(hEvent, timeout)) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 case WAIT_OBJECT_0: result = recvbuf_size(); break; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 case WAIT_TIMEOUT: result = E_RECV_TIMEOUT; break; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 default: result = E_OS + E_DRIVER_WAIT; break; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 recvbuf_size_target = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 return result; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 int target_recv(void *outbuf, int size) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 int i, bufsize; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 char *buf = (char *) outbuf; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 bufsize = recvbuf_size(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 if (bufsize < size) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 size = bufsize; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 for (i = 0; i < size; i++) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 *buf++ = recvbuf[recvbuf_get++]; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 recvbuf_get &= (RECVBUF_SIZE - 1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 tr(TrGetChar, "r (%d bytes)\n", size); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 return size; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 int target_getchar(void) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 int trace_in_progress; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 char ch; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 do { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 ch = recvbuf[recvbuf_get++]; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 recvbuf_get &= (RECVBUF_SIZE - 1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 tr(TrGetChar, "r '%c' %02X\n", | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 (ch >= ' ' && ch <= 126 ? ch : '.'), ch & 0xFF); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 if ((trace_in_progress = target_trace((char) ch)) != 0) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 if (target_wait(1, target_trace_timer) < 1) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 main_fatal(E_RECV_TIMEOUT); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 } while (trace_in_progress); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 return (ch & 0xFF); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 int target_expect_char(char ch, int timeout) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 char mych; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 if (target_wait(1, timeout) < 1) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 flowf(NORMAL, "(Waited for '%c' 0x%02X)\n", ch, ch); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 main_fatal(E_RECV_TIMEOUT); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 if ((mych = target_getchar()) != ch) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 error_proto(mych, ch); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 return ch; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 * Target Buffer Put | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 int buf_put1(char *buf, unsigned char data) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 tr(TrPutChar, "buf_put1(0x%02X) '%c'\n", data, data); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 *buf = (data ) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 return 1; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 int buf_put2(char *buf, unsigned short data) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 tr(TrPutChar, "buf_put2(0x%04X)\n", data); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 *buf++ = (data ) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 *buf = (data >> 8) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 return 2; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 int buf_put4(char *buf, unsigned int data) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 tr(TrPutChar, "buf_put4(0x%08X)\n", data); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 *buf++ = (data ) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 *buf++ = (data >> 8) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 *buf++ = (data >> 16) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 *buf = (data >> 24) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 return 4; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 // Put 2-byte integer in network order | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 int buf_put2no(char *buf, unsigned short data) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 tr(TrPutChar, "buf_put2no(0x%04X)\n", data); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 *buf++ = (data >> 8) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 *buf = (data ) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 return 2; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 // Put 4-byte integer in network order | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 int buf_put4no(char *buf, unsigned int data) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 tr(TrPutChar, "buf_put4no(0x%08X)\n", data); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 *buf++ = (data >> 24) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 *buf++ = (data >> 16) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 *buf++ = (data >> 8) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 *buf = (data ) & 0xFF; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 return 4; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 * Special Target Control Functions | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 // Control target power. Works *only* with special cable! If <state> is | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 // non-zero, the power is on. Otherwise, it is off. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 void target_power(char state) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 if (arg_uart_level_convert) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 return; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 if (state) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 serial_rts(0); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 else { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 serial_rts(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 serial_dtr(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 serial_break(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 serial_break(0); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 // Control target reset line. Works *only* with special cable! If <state> | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 // is non-zero, the reset line is asserted. Otherwise, it is negated. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 void target_reset(char state) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 if (arg_uart_level_convert) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 return; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 if (state) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 serial_rts(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 serial_dtr(0); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 serial_rts(0); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 serial_break(0); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 else { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 serial_break(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 serial_rts(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 serial_dtr(1); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 serial_rts(0); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 /****************************************************************************** | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 * Target Trace/Debug Functions | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 ******************************************************************************/ | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 static int target_trace_enable_flag = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 int target_trace_enable(int flag) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 int old = target_trace_enable_flag; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 target_trace_enable_flag = flag; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 if (arg_target_trace_enable) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 flowf(DEBUG, "{%s}", (flag ? "enable" : "disable")); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 return old; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 // Interpret and display target trace message. Return zero if <ch> was not | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 // intercepted. Otherwise, if it was intercepted, return non-zero. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 int target_trace(unsigned char ch) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 int i; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 unsigned int number = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 char buf[80], *p; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 388 // If target is not supposed to transmit any tracing at this point in | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 389 // the state machine(s), the flag will be zero and thus we return. | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 390 if (target_trace_enable_flag && ch == '$') { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 391 if (target_wait(1, 100) < 0) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 392 main_fatal(E_RECV_TIMEOUT); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 393 ch = target_getchar(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 394 switch (ch) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 395 case 'S': | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 396 p = buf; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 397 while (ch != 0) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 398 if (target_wait(1, 100) < 0) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 399 main_fatal(E_RECV_TIMEOUT); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 400 ch = target_getchar(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 401 *p++ = ch; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 402 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 403 *p = 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 404 if (arg_target_trace_enable) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 405 printf("{'%s'} ", buf); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 406 break; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 407 case 'N': | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 408 for (i = 0; i < 4; i++) { | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 409 if (target_wait(1, 100) < 0) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 410 main_fatal(E_RECV_TIMEOUT); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 411 ch = target_getchar(); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 412 number = (number >> 8) + (ch << 24); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 413 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 414 if (arg_target_trace_enable) | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 415 printf("{0x%X/%dd} ", number, number); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 416 break; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 417 default: | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 418 fprintf(stderr, "WARNING: Bad TargetTrace char received! (0x%X)\n", | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 419 ch & 0xFF); | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 420 break; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 421 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 422 return 1; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 423 } | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 424 return 0; | 
| 
9cecc930d78f
fluid-mnf: original source from TI,
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 425 } | 
