X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Finclude%2Fcommand.h;h=ca2f6a8748b7257dabe0311953db45674ed62b74;hp=1fe9e42f19bf1d141ca9ba3d3d02af5be1d6f837;hb=41777a0dda559dc2b2738720a39f3b5d57b5cee0;hpb=d4a4c6dfcfbe972cfed51bb0f549e7c6dccae232 diff --git a/firmware/include/command.h b/firmware/include/command.h index 1fe9e42..ca2f6a8 100644 --- a/firmware/include/command.h +++ b/firmware/include/command.h @@ -4,6 +4,11 @@ */ +#ifndef COMMAND_H +#define COMMAND_H + +#include + //Types #define u8 unsigned char #define u16 unsigned int @@ -30,8 +35,8 @@ extern unsigned char silent; #define cmddataword ((unsigned int*) cmddata) #define cmddatalong ((unsigned long*) cmddata) -#define memorybyte ((unsigned char*) 0) -#define memoryword ((unsigned int*) 0) +#define memorybyte ((char*) 0) +//#define memoryword ((unsigned int*) 0)) // Global Commands #define READ 0x00 @@ -43,50 +48,36 @@ extern unsigned char silent; #define STOP 0x21 #define CALL 0x30 #define EXEC 0x31 +#define LIMIT 0x7B /* limit reached */ +#define EXIST 0x7C /* already or doesnt exist */ +#define NMEM 0x7D /* OOM */ #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 - - //SPI commands #define SPI_JEDEC 0x80 #define SPI_ERASE 0x81 +#define SPI_RW_EM260 0x82 //OCT commands #define OCT_CMP 0x90 #define OCT_RES 0x91 +#ifdef GCC #define WEAKDEF __attribute__ ((weak)) - -//! Handle a plugin, weak-linked to error. -extern int pluginhandle(unsigned char app, - unsigned char verb, - unsigned int len) - WEAKDEF; - +#else +//Compiler doesn't support weak linking. :( +#define WEAKDEF +#endif //! Handle a command. Defined in goodfet.c -void handle(unsigned char app, - unsigned char verb, - unsigned long len); +void handle(uint8_t const app, + uint8_t const verb, + uint32_t const len); //! Transmit a header. void txhead(unsigned char app, unsigned char verb, @@ -110,10 +101,14 @@ void txlong(unsigned long l); //! Transmit a word. void txword(unsigned int l); +//! Transmit a debug sequence of bytes +void debugbytes(const char *bytes, unsigned int len); //! Transmit a debug string. void debugstr(const char *str); //! brief Debug a hex word string. void debughex(u16 v); +//! brief Debug a hex long string. +void debughex32(u32 v); //! Delay for a count. void delay(unsigned int count); @@ -121,17 +116,16 @@ void delay(unsigned int count); void msdelay(unsigned int ms); -void monitorhandle(unsigned char, unsigned char, unsigned long); -void spihandle(unsigned char, unsigned char, unsigned long); -void i2chandle(unsigned char, unsigned char, unsigned long) WEAKDEF; -void cchandle(unsigned char, unsigned char, unsigned long) WEAKDEF; -void jtaghandle(unsigned char, unsigned char, unsigned long); -void jtag430handle(unsigned char, unsigned char, unsigned long); -void ejtaghandle(unsigned char, unsigned char, unsigned long); +//! Prepare Timer B; call before using delay_ms or delay_us. +void prep_timer(); + +//! Delay for specified number of milliseconds (given 16 MHz clock) +void delay_ms( unsigned int ms ); + +//! Delay for specified number of microseconds (given 16 MHz clock) +void delay_us( unsigned int us ); -void jtag430x2handle(unsigned char app, unsigned char verb, - unsigned long len); +//! Delay for specified number of clock ticks (16 MHz clock implies 62.5 ns per tick). +void delay_ticks( unsigned int num_ticks ); -void avrhandle(unsigned char app, - unsigned char verb, - unsigned long len); +#endif // COMMAND_H