X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=firmware%2Fapps%2Fi2c%2Fi2c.c;h=85677dfbdb29ec4f64cabb450087720c0b79cac1;hb=443bcd972725a80fd8d55014d4f1d84485ec53f0;hp=e183deba24be984f378e05308e15205639168f00;hpb=2b654b579b948558edecc63dd7ab3aa4543f050d;p=goodfet diff --git a/firmware/apps/i2c/i2c.c b/firmware/apps/i2c/i2c.c index e183deb..85677df 100644 --- a/firmware/apps/i2c/i2c.c +++ b/firmware/apps/i2c/i2c.c @@ -1,5 +1,8 @@ -//GoodFET I2C Master Application -//Handles basic I/O +/*! \file i2c.c + \author Travis Goodspeed + \brief I2C Master +*/ + //Higher level left to client application. @@ -8,6 +11,7 @@ #include "platform.h" #include "command.h" +#include "i2c.h" #include #include @@ -16,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 @@ -48,7 +75,7 @@ void I2C_Init() //(Pull-up or 0.) P5DIR|=(SDA|SCL); - P5REN|=SDA|SCL; + //P5REN|=SDA|SCL; I2C_CLOCK_HI(); @@ -153,44 +180,48 @@ unsigned char I2C_Read( unsigned char ack ) } -//! Handles a monitor command. -void i2chandle(unsigned char app, - unsigned char verb, - unsigned char 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