inline void PN532::send(byte d) { // Serial.print('_'); // Serial.print(d, HEX); // Serial.print(' '); wirewrite(d); chksum += d; }
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(); }
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(); }
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; }