示例#1
0
inline void PN532::send(byte d) {
//	Serial.print('_');
//	Serial.print(d, HEX);
//	Serial.print(' ');
	wirewrite(d);
	chksum += d;
}
示例#2
0
void PN532::sendpacket(byte len) {
	byte * p = packet;
	chksum = 0;
	wire.beginTransmission(i2c_addr);
	// clk is streched by PN532 to make a pause to resume from power-down
	send(PREAMBLE);
	send(STARTCODE_1);
	send(STARTCODE_2);
	send(len + 1);
	send(~(len + 1) + 1); // LCS, 1-Packet Length Check Sum
	send(HOSTTOPN532); // D4
	for (; len > 0; len--) {
		send(*p++);
	}
	wirewrite(~chksum);
	wirewrite(POSTAMBLE);
	wire.endTransmission();
}
示例#3
0
void PN532::send_nack() {
	wire.beginTransmission(i2c_addr);
	// clk is streched by PN532 to make a pause to resume from power-down
	send(PREAMBLE);
	send(STARTCODE_1);
	send(STARTCODE_2);
	send(0xff);
	send(0);
	wirewrite(POSTAMBLE);
	wire.endTransmission();
}
示例#4
0
PN532::PN532(byte addr, byte irq, byte rst) :
		i2c_addr(addr), pin_irq(irq), pin_rst(rst) {
#elif defined (ARMCMX)
PN532::PN532(I2CBus & wire, byte addr, byte irq, byte rst) :
		wire(wire), i2c_addr(addr), pin_irq(irq), pin_rst(rst) {
#endif
	if (pin_irq != PIN_NOT_DEFINED) {
		pinMode(pin_irq, INPUT);
		digitalWrite(pin_irq, HIGH); // pull-up
	}
	if (pin_rst != PIN_NOT_DEFINED) {
		pinMode(pin_rst, OUTPUT);
		digitalWrite(pin_rst, HIGH);
	}
	chksum = 0;
	comm_status = IDLE;
	last_command = IDLE;
	target.IDLength = 0;
}

void PN532::init() {
	// Reset the PN532
	if (pin_rst != PIN_NOT_DEFINED) {
		digitalWrite(pin_rst, LOW);
		delay(50);
		digitalWrite(pin_rst, HIGH);
		delay(150);
	}
	chksum = 0;
	comm_status = IDLE;
	last_command = IDLE;
	target.IDLength = 0;
}

inline void PN532::send(byte d) {
//	Serial.print('_');
//	Serial.print(d, HEX);
//	Serial.print(' ');
	wirewrite(d);
	chksum += d;
}