Dropped ugly 'blocks' kludge for a 16-bit length field.
[goodfet] / firmware / include / command.h
index 78f3302..fe3beb1 100644 (file)
@@ -1,8 +1,19 @@
-// Command handling functions.
+/*! \file command.h
+  \author Travis Goodspeed
+  \brief Command codes and buffers.
+*/
 
 //! Global data buffer.
-extern unsigned char cmddata[256];
+
+#ifndef CMDDATALEN
+#define CMDDATALEN 0x200
+#endif
+
+extern unsigned char cmddata[CMDDATALEN];
+extern unsigned char silent;
+
 #define cmddataword ((unsigned int*) cmddata)
+#define cmddatalong ((unsigned long*) cmddata)
 #define memorybyte ((unsigned char*) 0)
 #define memoryword ((unsigned int*) 0)
 
@@ -17,11 +28,24 @@ extern unsigned char cmddata[256];
 #define NOK   0x7E
 #define OK    0x7F
 
+#define DEBUGSTR 0xFF
+
 // Monitor Commands
 #define MONITOR_CHANGE_BAUD 0x80
 #define MONITOR_RAM_PATTERN 0x90
 #define MONITOR_RAM_DEPTH 0x91
 
+#define MONITOR_DIR 0xA0
+#define MONITOR_OUT 0xA1
+#define MONITOR_IN  0xA2
+
+#define MONITOR_SILENT 0xB0
+
+#define MONITOR_READBUF 0xC0
+#define MONITOR_WRITEBUF 0xC1
+#define MONITOR_SIZEBUF 0xC2
+
+
 //CHIPCON commands
 #define CC_CHIP_ERASE 0x80
 #define CC_WR_CONFIG 0x81
@@ -57,6 +81,7 @@ extern unsigned char cmddata[256];
 
 //OCT commands
 #define OCT_CMP 0x90
+#define OCT_RES 0x91
 
 //JTAG430 commands
 #define JTAG430_HALTCPU 0xA0
@@ -71,33 +96,51 @@ extern unsigned char cmddata[256];
 #define JTAG430_VERIFYMEM 0xE5
 #define JTAG430_BLOWFUSE 0xE6
 #define JTAG430_ISFUSEBLOWN 0xE7
+#define JTAG430_COREIP_ID 0xF0
+#define JTAG430_DEVICE_ID 0xF1
 
 //! Handle a command.  Defined in goodfet.c
 void handle(unsigned char app,
            unsigned char verb,
-           unsigned  char len);
-
+           unsigned long len);
+//! Transmit a header.
+void txhead(unsigned char app,
+           unsigned char verb,
+           unsigned long len);
 //! Transmit data.
 void txdata(unsigned char app,
            unsigned char verb,
-           unsigned char len);
+           unsigned long len);
 //! Transmit a string.
 void txstring(unsigned char app,
              unsigned char verb,
              const char *str);
 
-//! Delay
+//! Receive a long.
+unsigned long rxlong();
+//! Receive a word.
+unsigned int rxword();
+
+//! Transmit a long.
+void txlong(unsigned long l);
+//! Transmit a word.
+void txword(unsigned int l);
+
+//! Transmit a debug string.
+void debugstr(const char *str);
+
+//! Delay for a count.
 void delay(unsigned int count);
 //! MSDelay
 void msdelay(unsigned int ms);
 
 
-void monitorhandle(unsigned char, unsigned char, unsigned char);
-void spihandle(unsigned char, unsigned char, unsigned char);
-void i2chandle(unsigned char, unsigned char, unsigned char);
-void cchandle(unsigned char, unsigned char, unsigned char);
-void jtaghandle(unsigned char, unsigned char, unsigned char);
-void jtag430handle(unsigned char, unsigned char, unsigned char);
+void monitorhandle(unsigned char, unsigned char, unsigned long);
+void spihandle(unsigned char, unsigned char, unsigned long);
+void i2chandle(unsigned char, unsigned char, unsigned long);
+void cchandle(unsigned char, unsigned char, unsigned long);
+void jtaghandle(unsigned char, unsigned char, unsigned long);
+void jtag430handle(unsigned char, unsigned char, unsigned long);
 void jtag430x2handle(unsigned char app, unsigned char verb,
-                    unsigned char len);
+                    unsigned long len);