PN532 Driver library This library provides an abstract API to drive the pn532 nfc chip, with I2C/HSU/SPI interface. Its based on the Seeed Studio's Arduino version.

Dependents:   PN532_ReadUid Nfctest2

Revision:
0:db8030e71f55
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Wire.h	Tue Sep 13 06:01:19 2016 +0000
@@ -0,0 +1,115 @@
+/*
+ * TwoWire.h 
+ * Copyright (c) 2011 Cristian Maglie <c.maglie@bug.st>.
+ * All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef TwoWire_h
+#define TwoWire_h
+
+// Include Atmel CMSIS driver
+//#include <include/twi.h>
+
+#include "Stream.h"
+#include "variant.h"
+
+#define BUFFER_LENGTH 32
+
+class TwoWire : public Stream {
+public:
+	TwoWire(I2C_TypeDef *twi);
+	void begin();
+	void begin(uint8_t);
+	void begin(int);
+	void beginTransmission(uint8_t);
+	void beginTransmission(int);
+	uint8_t endTransmission(void);
+    uint8_t endTransmission(uint8_t);
+	uint8_t requestFrom(uint8_t, uint8_t);
+    uint8_t requestFrom(uint8_t, uint8_t, uint8_t);
+	uint8_t requestFrom(int, int);
+    uint8_t requestFrom(int, int, int);
+	virtual size_t write(uint8_t);
+	virtual size_t write(const uint8_t *, size_t);
+	virtual int available(void);
+	virtual int read(void);
+	virtual int peek(void);
+	virtual void flush(void);
+	void onReceive(void(*)(int));
+	void onRequest(void(*)(void));
+
+    inline size_t write(unsigned long n) { return write((uint8_t)n); }
+    inline size_t write(long n) { return write((uint8_t)n); }
+    inline size_t write(unsigned int n) { return write((uint8_t)n); }
+    inline size_t write(int n) { return write((uint8_t)n); }
+    using Print::write;
+
+	void onService(void);
+
+private:
+	// RX Buffer
+	uint8_t rxBuffer[BUFFER_LENGTH];
+	uint8_t rxBufferIndex;
+	uint8_t rxBufferLength;
+
+	// TX Buffer
+	uint8_t txAddress;
+	uint8_t txBuffer[BUFFER_LENGTH];
+	uint8_t txBufferLength;
+
+	// Service buffer
+	uint8_t srvBuffer[BUFFER_LENGTH];
+	uint8_t srvBufferIndex;
+	uint8_t srvBufferLength;
+
+	// Callback user functions
+	void (*onRequestCallback)(void);
+	void (*onReceiveCallback)(int);
+
+	// Called before initialization
+	void (*onBeginCallback)(void);
+
+	// TWI instance
+	I2C_TypeDef *twi;
+	I2C_InitTypeDef I2C_InitStructure;
+
+	// TWI state
+	enum TwoWireStatus {
+		UNINITIALIZED,
+		MASTER_IDLE,
+		MASTER_SEND,
+		MASTER_RECV,
+		SLAVE_IDLE,
+		SLAVE_RECV,
+		SLAVE_SEND
+	};
+	TwoWireStatus status;
+
+	// TWI clock frequency
+	static const uint32_t TWI_CLOCK = 100000;
+
+	// Timeouts (
+	static const uint32_t RECV_TIMEOUT = 100000;
+	static const uint32_t XMIT_TIMEOUT = 100000;
+};
+
+extern TwoWire Wire;
+extern TwoWire Wire1;
+
+
+#endif
+