X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fi2c%2Fi2c.c;h=85677dfbdb29ec4f64cabb450087720c0b79cac1;hp=c10739778503737224a56b1419c25b51ab7edbaf;hb=5fb0341d348e101b30794945a6c91546e25e8e7b;hpb=1969a022e69bdac64a0d88de3d0ce88d79a27804 diff --git a/firmware/apps/i2c/i2c.c b/firmware/apps/i2c/i2c.c index c107397..85677df 100644 --- a/firmware/apps/i2c/i2c.c +++ b/firmware/apps/i2c/i2c.c @@ -11,6 +11,7 @@ #include "platform.h" #include "command.h" +#include "i2c.h" #include #include @@ -19,6 +20,29 @@ //Pins and I/O #include + +//! Handles an i2c command. +void i2c_handle_fn( uint8_t const app, + uint8_t const verb, + uint32_t const len); + +// define the i2c app's app_t +app_t const i2c_app = { + + /* app number */ + I2C, + + /* handle fn */ + i2c_handle_fn, + + /* name */ + "I2C", + + /* desc */ + "\tThe I2C app implements the i2c bus protocol thus\n" + "\tturning your GoodFET into a USB-to-i2c adapter.\n" +}; + #define SDA TDI #define SCL TDO @@ -156,44 +180,48 @@ unsigned char I2C_Read( unsigned char ack ) } -//! Handles a monitor command. -void i2chandle(unsigned char app, - unsigned char verb, - unsigned long len){ - unsigned char i; - switch(verb){ - - case PEEK: - break; - case POKE: - break; - - case READ: - if(len>0) //optional parameter of length - len=cmddata[0]; - if(!len) //default value of 1 - len=1; - for(i=0;i 0) //optional parameter of length + l=cmddata[0]; + if(!l) //default value of 1 + l=1; + for(i = 0; i < l; i++) + cmddata[i]=I2C_Read(1); //Always acknowledge + txdata(app,verb,l); + break; + case WRITE: + cmddata[0]=0; + for(i=0;i