]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/i2c.h
Add Smartcard functions (RDV4.0) (#646)
[proxmark3-svn] / armsrc / i2c.h
diff --git a/armsrc/i2c.h b/armsrc/i2c.h
new file mode 100644 (file)
index 0000000..4c5c522
--- /dev/null
@@ -0,0 +1,58 @@
+//-----------------------------------------------------------------------------
+// Willok, June 2018
+// Edits by Iceman, July 2018
+//
+// This code is licensed to you under the terms of the GNU GPL, version 2 or,
+// at your option, any later version. See the LICENSE.txt file for the text of
+// the license.
+//-----------------------------------------------------------------------------
+// The main i2c code, for communications with smart card module
+//-----------------------------------------------------------------------------
+#ifndef __I2C_H
+#define __I2C_H
+
+#include <stddef.h>
+#include "proxmark3.h"
+#include "apps.h"
+#include "util.h"
+#include "BigBuf.h"
+#include "smartcard.h"
+
+#define I2C_DEVICE_ADDRESS_BOOT       0xB0
+#define I2C_DEVICE_ADDRESS_MAIN       0xC0
+
+#define I2C_DEVICE_CMD_GENERATE_ATR   0x01
+#define I2C_DEVICE_CMD_SEND           0x02
+#define I2C_DEVICE_CMD_READ           0x03
+#define I2C_DEVICE_CMD_SETBAUD        0x04
+#define I2C_DEVICE_CMD_SIM_CLC        0x05
+#define I2C_DEVICE_CMD_GETVERSION     0x06
+
+
+void I2C_init(void);
+void I2C_Reset(void);
+void I2C_SetResetStatus(uint8_t LineRST, uint8_t LineSCK, uint8_t LineSDA);
+
+void I2C_Reset_EnterMainProgram(void);
+void I2C_Reset_EnterBootloader(void);
+
+bool I2C_WriteCmd(uint8_t device_cmd, uint8_t device_address);
+
+bool I2C_WriteByte(uint8_t data, uint8_t device_cmd, uint8_t device_address);
+bool I2C_BufferWrite(uint8_t *data, uint8_t len, uint8_t device_cmd, uint8_t device_address);
+uint8_t I2C_BufferRead(uint8_t *data, uint8_t len, uint8_t device_cmd, uint8_t device_address);
+
+// for firmware
+uint8_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address);
+bool I2C_WriteFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address);
+
+bool GetATR(smart_card_atr_t *card_ptr);
+
+// generic functions
+void SmartCardAtr(void);
+void SmartCardRaw(uint64_t arg0, uint64_t arg1, uint8_t *data);
+void SmartCardUpgrade(uint64_t arg0);
+//void SmartCardSetBaud(uint64_t arg0);
+void SmartCardSetClock(uint64_t arg0);
+void I2C_print_status(void);
+#endif
Impressum, Datenschutz