├── .gitignore ├── QtCreator ├── arduino-ntag.creator ├── arduino-ntag.config ├── arduino-ntag.includes ├── build.options.NucleoF103RB.json ├── arduino-ntag.files └── arduino-ntag.creator.user ├── Hardware └── NFC_NXP │ ├── BRD151104.pcbdoc │ ├── NFC_NXP.SchDoc │ ├── Dtron.OutJob │ └── NFC_NXP.PrjPcb ├── .gitmodules ├── examples ├── ReadTag │ └── ReadTag.ino ├── WriteTag │ └── WriteTag.ino ├── WriteTagMultipleRecords │ └── WriteTagMultipleRecords.ino ├── CleanTag │ └── CleanTag.ino ├── EraseTag │ └── EraseTag.ino ├── ReadTagExtended │ └── ReadTagExtended.ino └── ntagTest │ └── ntagTest.ino ├── ntagsramadapter.h ├── ntageepromadapter.h ├── ntagadapter.h ├── README.md ├── ntagsramadapter.cpp ├── ntagadapter.cpp ├── ntag.h ├── ntageepromadapter.cpp ├── ntag.cpp └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | Hardware/NFC_NXP/Outputs/* 2 | -------------------------------------------------------------------------------- /QtCreator/arduino-ntag.creator: -------------------------------------------------------------------------------- 1 | [General] 2 | -------------------------------------------------------------------------------- /Hardware/NFC_NXP/BRD151104.pcbdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LieBtrau/arduino-ntag/HEAD/Hardware/NFC_NXP/BRD151104.pcbdoc -------------------------------------------------------------------------------- /Hardware/NFC_NXP/NFC_NXP.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LieBtrau/arduino-ntag/HEAD/Hardware/NFC_NXP/NFC_NXP.SchDoc -------------------------------------------------------------------------------- /QtCreator/arduino-ntag.config: -------------------------------------------------------------------------------- 1 | // Add predefined macros for your project here. For example: 2 | // #define THE_ANSWER 42 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "NDEF"] 2 | path = NDEF 3 | url = https://github.com/LieBtrau/NDEF 4 | [submodule "Bounce2"] 5 | path = Bounce2 6 | url = git@github.com:thomasfredericks/Bounce2.git 7 | -------------------------------------------------------------------------------- /examples/ReadTag/ReadTag.ino: -------------------------------------------------------------------------------- 1 | #include "ntageepromadapter.h" 2 | #define HARDI2C 3 | 4 | Ntag ntag(Ntag::NTAG_I2C_1K,2,5); 5 | NtagEepromAdapter ntagAdapter(&ntag); 6 | 7 | void setup(void) { 8 | Serial.begin(115200); 9 | Serial.println("NDEF Reader"); 10 | ntagAdapter.begin(); 11 | NfcTag tag = ntagAdapter.read(); 12 | tag.print(); 13 | } 14 | 15 | void loop(void) {} 16 | -------------------------------------------------------------------------------- /ntagsramadapter.h: -------------------------------------------------------------------------------- 1 | #ifndef NTAGSRAMADAPTER_H 2 | #define NTAGSRAMADAPTER_H 3 | 4 | #include "ntagadapter.h" 5 | 6 | class NtagSramAdapter : public NtagAdapter 7 | { 8 | public: 9 | NtagSramAdapter(Ntag* ntag); 10 | bool begin(); 11 | bool write(NdefMessage& message, unsigned int uiTimeout=0); 12 | NfcTag read(unsigned int uiTimeOut); 13 | private: 14 | static const byte SRAM_SIZE=64; 15 | }; 16 | 17 | #endif // NTAGSRAMADAPTER_H 18 | -------------------------------------------------------------------------------- /examples/WriteTag/WriteTag.ino: -------------------------------------------------------------------------------- 1 | #include "ntageepromadapter.h" 2 | #define HARDI2C 3 | 4 | Ntag ntag(Ntag::NTAG_I2C_1K,2,5); 5 | NtagEepromAdapter ntagAdapter(&ntag); 6 | 7 | void setup() 8 | { 9 | Serial.begin(115200); 10 | Serial.println("NDEF Writer"); 11 | ntagAdapter.begin(); 12 | NdefMessage message = NdefMessage(); 13 | message.addUriRecord("http://arduino.cc"); 14 | 15 | if (ntagAdapter.write(message)) { 16 | Serial.println("Success. Try reading this tag with your phone."); 17 | } else { 18 | Serial.println("Write failed."); 19 | } 20 | } 21 | 22 | void loop() {} 23 | -------------------------------------------------------------------------------- /examples/WriteTagMultipleRecords/WriteTagMultipleRecords.ino: -------------------------------------------------------------------------------- 1 | #include "ntageepromadapter.h" 2 | #define HARDI2C 3 | 4 | Ntag ntag(Ntag::NTAG_I2C_1K,2,5); 5 | NtagEepromAdapter ntagAdapter(&ntag); 6 | 7 | void setup() 8 | { 9 | Serial.begin(115200); 10 | Serial.println("NDEF Writer"); 11 | ntagAdapter.begin(); 12 | NdefMessage message = NdefMessage(); 13 | message.addTextRecord("Hello, Arduino!"); 14 | message.addUriRecord("http://arduino.cc"); 15 | message.addTextRecord("Goodbye, Arduino!"); 16 | if (ntagAdapter.write(message)) 17 | { 18 | Serial.println("Success. Try reading this tag with your phone."); 19 | } else 20 | { 21 | Serial.println("Write failed"); 22 | } 23 | } 24 | 25 | void loop() {} 26 | -------------------------------------------------------------------------------- /QtCreator/arduino-ntag.includes: -------------------------------------------------------------------------------- 1 | ../ 2 | ../examples/ntagTest 3 | ../examples/WriteTag 4 | ../examples/ReadTag 5 | ../examples/ReadTagExtended 6 | ../examples/WriteTagMultipleRecords 7 | ../examples/FormatTag 8 | ../examples/EraseTag 9 | ../examples/CleanTag 10 | ../../NDEF/examples/CleanTag 11 | ../../NDEF/examples/FormatTag 12 | ../../NDEF/examples/ReadTag 13 | ../../NDEF/examples/ReadTagExtended 14 | ../../NDEF/examples/P2P_Receive_LCD 15 | ../../NDEF/examples/P2P_Send 16 | ../../NDEF/tests/NdefMessageTest 17 | ../../NDEF/tests/NdefUnitTest 18 | ../../NDEF/examples/EraseTag 19 | ../../NDEF/examples/WriteTagMultipleRecords 20 | ../../NDEF/tests/NdefMemoryTest 21 | ../../NDEF/examples/P2P_Receive 22 | ../../NDEF/tests/NfcTagTest 23 | ../../NDEF 24 | ../../NDEF/examples/WriteTag 25 | -------------------------------------------------------------------------------- /examples/CleanTag/CleanTag.ino: -------------------------------------------------------------------------------- 1 | // Clean resets a tag back to factory-like state 2 | // For Mifare Classic, tag is zero'd and reformatted as Mifare Classic 3 | // For Mifare Ultralight, tags is zero'd and left empty 4 | 5 | #include "ntageepromadapter.h" 6 | #define HARDI2C 7 | 8 | Ntag ntag(Ntag::NTAG_I2C_1K,2,5); 9 | NtagEepromAdapter ntagAdapter(&ntag); 10 | 11 | 12 | void setup(void) 13 | { 14 | Serial.begin(115200); 15 | Serial.println("NFC Tag Cleaner"); 16 | ntagAdapter.begin(); 17 | bool success = ntagAdapter.clean(); 18 | if (success) 19 | { 20 | Serial.println("\nSuccess, tag restored to factory state."); 21 | } else 22 | { 23 | Serial.println("\nError, unable to clean tag."); 24 | } 25 | } 26 | 27 | void loop(){} 28 | -------------------------------------------------------------------------------- /ntageepromadapter.h: -------------------------------------------------------------------------------- 1 | //[BSD License](https://github.com/don/Ndef/blob/master/LICENSE.txt) (c) 2013-2014, Don Coleman 2 | #ifndef NTAGEEPROMADAPTER_H 3 | #define NTAGEEPROMADAPTER_H 4 | #include "ntagadapter.h" 5 | 6 | 7 | class NtagEepromAdapter : public NtagAdapter 8 | { 9 | public: 10 | NtagEepromAdapter(Ntag* ntag); 11 | bool begin(); 12 | bool write(NdefMessage& message, unsigned int uiTimeout=0); 13 | NfcTag read(unsigned int uiTimeOut=0); 14 | bool clean(); 15 | bool erase(); 16 | private: 17 | const char* NFC_FORUM_TAG_TYPE_2="NFC Forum Type 2"; 18 | unsigned int tagCapacity; 19 | unsigned int messageLength; 20 | unsigned int bufferSize; 21 | unsigned int ndefStartIndex; 22 | bool isUnformatted(); 23 | bool readCapabilityContainer(); 24 | void findNdefMessage(); 25 | void calculateBufferSize(); 26 | }; 27 | 28 | #endif // NTAGEEPROMADAPTER_H 29 | -------------------------------------------------------------------------------- /QtCreator/build.options.NucleoF103RB.json: -------------------------------------------------------------------------------- 1 | { 2 | "builtInLibrariesFolders": "/home/ctack/Programs/arduino-1.8.5/libraries", 3 | "customBuildProperties": "build.warn_data_percentage=75,runtime.tools.arm-none-eabi-gcc.path=/home/ctack/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/6-2017-q2-update,runtime.tools.STM32Tools.path=/home/ctack/.arduino15/packages/STM32/tools/STM32Tools/1.1.0,runtime.tools.CMSIS.path=/home/ctack/.arduino15/packages/STM32/tools/CMSIS/5.3.0", 4 | "fqbn": "STM32:stm32:Nucleo_64:pnum=NUCLEO_F103RB,upload_method=MassStorage,xserial=generic,usb=none,opt=ogstd", 5 | "hardwareFolders": "/home/ctack/Programs/arduino-1.8.5/hardware,/home/ctack/.arduino15/packages", 6 | "otherLibrariesFolders": "/home/ctack/Arduino/libraries", 7 | "runtime.ide.version": "10805", 8 | "sketchLocation": "/home/ctack/git/arduino-ntag/examples/CleanTag/CleanTag.ino", 9 | "toolsFolders": "/home/ctack/Programs/arduino-1.8.5/tools-builder,/home/ctack/Programs/arduino-1.8.5/hardware/tools/avr,/home/ctack/.arduino15/packages" 10 | } -------------------------------------------------------------------------------- /examples/EraseTag/EraseTag.ino: -------------------------------------------------------------------------------- 1 | // Erases a NFC tag by writing an empty NDEF message 2 | // The NDEF-messages is wrapped in a TLV-block. 3 | // T: 03 : TLV Block Type = NDEF-message 4 | // L: 03 : Length of value field = 3 bytes 5 | // V: D0 00 00 : Value field 6 | // NDEF-message 7 | // Record header : D0 = 1101000b 8 | // bits 2-0 : TNF = type name field = 0 : empty record 9 | // Type length : 00 10 | // Payload length : 00 11 | // TLV2: 0xFE = terminator TLV 12 | 13 | #include "ntageepromadapter.h" 14 | #define HARDI2C 15 | 16 | Ntag ntag(Ntag::NTAG_I2C_1K,2,5); 17 | NtagEepromAdapter ntagAdapter(&ntag); 18 | 19 | void setup(void) 20 | { 21 | Serial.begin(115200); 22 | Serial.println("NFC Tag Eraser"); 23 | ntagAdapter.begin(); 24 | if (ntagAdapter.erase()) 25 | { 26 | Serial.println("\nSuccess, tag contains an empty record."); 27 | } else 28 | { 29 | Serial.println("\nUnable to erase tag."); 30 | } 31 | } 32 | 33 | void loop(){} 34 | -------------------------------------------------------------------------------- /ntagadapter.h: -------------------------------------------------------------------------------- 1 | #ifndef NTAGADAPTER_H 2 | #define NTAGADAPTER_H 3 | 4 | #include "ntag.h" 5 | #include "NfcTag.h" 6 | 7 | 8 | class NtagAdapter 9 | { 10 | public: 11 | virtual bool begin(); 12 | virtual bool write(NdefMessage& message, unsigned int uiTimeout=0)=0; 13 | virtual NfcTag read(unsigned int uiTimeOut=0)=0; 14 | boolean readerPresent(unsigned long timeout=0); 15 | bool rfBusy(); 16 | // erase tag by writing an empty NDEF record 17 | boolean erase(); 18 | // format a tag as NDEF 19 | boolean format(); 20 | // reset tag back to factory state 21 | boolean clean(); 22 | bool getUid(byte *uidin, unsigned int uidLength); 23 | byte getUidLength(); 24 | protected: 25 | static const byte NTAG_PAGE_SIZE=4; 26 | static const byte NTAG_BLOCK_SIZE=16; 27 | static const byte NTAG_DATA_START_BLOCK=1; 28 | static const byte MESSAGE_TYPE_NDEF=3;//TLV Block type 29 | Ntag* _ntag; 30 | bool waitUntilRfDone(unsigned int uiTimeOut); 31 | static const byte UID_LENGTH=7; 32 | bool decodeTlv(byte *data, int &messageLength, int &messageStartIndex); 33 | int getNdefStartIndex(byte *data); 34 | byte uid[UID_LENGTH]; // Buffer to store the returned UID 35 | }; 36 | 37 | #endif // NTAGADAPTER_H 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # arduino-ntag 2 | Arduino library to interface through I²C with the NXP NTAG (NT3H1101 and NT3H1201). These are fully ISO/IEC 14443 A and NFC Forum Type 2 Tag compliant. 3 | 4 | # Hardware 5 | 6 | ## Compatibility 7 | 8 | Attention: The herein used NDEF-library (which I didn't write) currently eats up too much stack space for arduinos with 8bit AVR MCU and is therefore not usable. 9 | 10 | ## Tag 11 | Altium Designer has been used to create a tag PCB with a [Class 6 type antenna](https://nxp.box.com/s/5wycjhfaglzkf77ggwtl). 12 | * [Schematic](https://drive.google.com/open?id=0B5_mAlpV8IjvOGVYaGR1VGNLQXM) 13 | * [BoM](https://drive.google.com/open?id=0B5_mAlpV8IjvU2RXcXJ2NXU2TlU) 14 | 15 | The [NXP-website](https://nxp-rfid.com/products/ntag/ntag-i2c-design-resources-full-access/) has a lot of useful resources for the NTAG-family of NFC-tags. 16 | For new designs, the [NT3H2111](http://www.nxp.com/products/identification-and-security/nfc-and-reader-ics/connected-tag-solutions/ntag-ic-plus-nfc-forum-type-2-tag-with-ic-interface-optimized-for-entry-level-nfc-applications:NT3H2111_2211) might be a better option. It's cheaper, offers more functionality and should be compatible with the NT3H1101. 17 | 18 | # Reader 19 | Either use an NFC-enabled phone or use an RFID-reader module with a PN532. Code for the PN532 reader module can be found [here](https://github.com/LieBtrau/NDEF). 20 | -------------------------------------------------------------------------------- /QtCreator/arduino-ntag.files: -------------------------------------------------------------------------------- 1 | ../../NDEF/Due.h 2 | ../../NDEF/LICENSE.txt 3 | ../../NDEF/MifareClassic.cpp 4 | ../../NDEF/MifareClassic.h 5 | ../../NDEF/MifareUltralight.cpp 6 | ../../NDEF/MifareUltralight.h 7 | ../../NDEF/Ndef.cpp 8 | ../../NDEF/Ndef.h 9 | ../../NDEF/Ndef.h.orig 10 | ../../NDEF/NdefMessage.cpp 11 | ../../NDEF/NdefMessage.h 12 | ../../NDEF/NdefRecord.cpp 13 | ../../NDEF/NdefRecord.h 14 | ../../NDEF/NfcAdapter.cpp 15 | ../../NDEF/NfcAdapter.h 16 | ../../NDEF/NfcDriver.h 17 | ../../NDEF/NfcTag.cpp 18 | ../../NDEF/NfcTag.h 19 | ../../NDEF/README.md 20 | ../../NDEF/examples/CleanTag/CleanTag.ino 21 | ../../NDEF/examples/EraseTag/EraseTag.ino 22 | ../../NDEF/examples/FormatTag/FormatTag.ino 23 | ../../NDEF/examples/P2P_Receive/P2P_Receive.ino 24 | ../../NDEF/examples/P2P_Receive_LCD/P2P_Receive_LCD.ino 25 | ../../NDEF/examples/P2P_Send/P2P_Send.ino 26 | ../../NDEF/examples/ReadTag/ReadTag.ino 27 | ../../NDEF/examples/ReadTagExtended/ReadTagExtended.ino 28 | ../../NDEF/examples/WriteTag/WriteTag.ino 29 | ../../NDEF/examples/WriteTagMultipleRecords/WriteTagMultipleRecords.ino 30 | ../../NDEF/keywords.txt 31 | ../../NDEF/new.cpp 32 | ../../NDEF/new.h 33 | ../../NDEF/tests/NdefMemoryTest/NdefMemoryTest.ino 34 | ../../NDEF/tests/NdefMessageTest/NdefMessageTest.ino 35 | ../../NDEF/tests/NdefUnitTest/NdefUnitTest.ino 36 | ../../NDEF/tests/NfcTagTest/NfcTagTest.ino 37 | ../ntagsramadapter.cpp 38 | ../ntag.cpp 39 | ../ntag.h 40 | ../ntagsramadapter.h 41 | ../ntagadapter.h 42 | ../ntagadapter.cpp 43 | ../ntageepromadapter.h 44 | ../ntageepromadapter.cpp 45 | ../examples/ntagTest/ntagTest.ino 46 | ../examples/WriteTag/WriteTag.ino 47 | ../examples/ReadTag/ReadTag.ino 48 | ../examples/ReadTagExtended/ReadTagExtended.ino 49 | ../examples/WriteTagMultipleRecords/WriteTagMultipleRecords.ino 50 | ../examples/EraseTag/EraseTag.ino 51 | ../examples/CleanTag/CleanTag.ino 52 | -------------------------------------------------------------------------------- /ntagsramadapter.cpp: -------------------------------------------------------------------------------- 1 | #include "ntagsramadapter.h" 2 | #include "Ndef.h" 3 | 4 | NtagSramAdapter::NtagSramAdapter(Ntag* ntag) 5 | { 6 | _ntag=ntag; 7 | } 8 | 9 | bool NtagSramAdapter::begin(){ 10 | NtagAdapter::begin(); 11 | //Mirror SRAM to bottom of USERMEM 12 | // the PN532 reader will read SRAM instead of EEPROM 13 | // the advantage is that the same driver code for the PN532 reader can be used as for reading RFID-cards. 14 | // the disadvantage is that the tag has to poll to over I²C to check if the memory is still locked to the RF-side. 15 | //Set FD_pin to function as handshake signal 16 | if((!_ntag->setSramMirrorRf(true, 0x01)) || (!_ntag->setFd_ReaderHandshake())){ 17 | Serial.println("Can't initialize tag"); 18 | return false; 19 | } 20 | return true; 21 | } 22 | 23 | bool NtagSramAdapter::write(NdefMessage& message, unsigned int uiTimeout){ 24 | if(!waitUntilRfDone(uiTimeout)) 25 | { 26 | return false; 27 | } 28 | byte encoded[message.getEncodedSize()]; 29 | message.encode(encoded); 30 | if(3 + sizeof(encoded) > SRAM_SIZE){ 31 | return false; 32 | } 33 | byte buffer[3 + sizeof(encoded)]; 34 | memset(buffer, 0, sizeof(buffer)); 35 | buffer[0] = MESSAGE_TYPE_NDEF; 36 | buffer[1] = sizeof(encoded); 37 | memcpy(&buffer[2], encoded, sizeof(encoded)); 38 | buffer[2+sizeof(encoded)] = 0xFE; // terminator 39 | _ntag->writeSram(0,buffer,3 + sizeof(encoded)); 40 | _ntag->setLastNdefBlock(); 41 | _ntag->releaseI2c(); 42 | // for(int i=0;ireadSram(0,buffer,SRAM_SIZE)){ 57 | return NfcTag(uid,UID_LENGTH,"ERROR"); 58 | } 59 | _ntag->releaseI2c(); 60 | // for(int i=0;ibegin(); 6 | _ntag->getUid(uid, sizeof(uid)); 7 | } 8 | 9 | bool NtagAdapter::readerPresent(unsigned long timeout) 10 | { 11 | unsigned long startTime=millis(); 12 | do 13 | { 14 | if(_ntag->isReaderPresent()) 15 | { 16 | return true; 17 | } 18 | }while(millis()0) 26 | { 27 | unsigned long ulStartTime=millis(); 28 | while(millis() < ulStartTime+uiTimeOut) 29 | { 30 | if(!(_ntag->isRfBusy())) 31 | { 32 | return true; 33 | } 34 | } 35 | } 36 | return !(_ntag->isRfBusy()); 37 | } 38 | 39 | bool NtagAdapter::rfBusy(){ 40 | return _ntag->isRfBusy(); 41 | } 42 | 43 | // Decode the NDEF data length from the Mifare TLV 44 | // Leading null TLVs (0x0) are skipped 45 | // Assuming T & L of TLV will be in the first block 46 | // messageLength and messageStartIndex written to the parameters 47 | // success or failure status is returned 48 | // 49 | // { 0x3, LENGTH } 50 | bool NtagAdapter::decodeTlv(byte *data, int &messageLength, int &messageStartIndex) 51 | { 52 | int i = getNdefStartIndex(data); 53 | 54 | if (i < 0 || data[i] != 0x3) 55 | { 56 | Serial.println(F("Error. Can't decode message length.")); 57 | return false; 58 | } 59 | else 60 | { 61 | messageLength = data[i+1]; 62 | messageStartIndex = i + 2; 63 | } 64 | 65 | return true; 66 | } 67 | 68 | // skip null tlvs (0x0) before the real message 69 | // technically unlimited null tlvs, but we assume 70 | // T & L of TLV in the first block we read 71 | int NtagAdapter::getNdefStartIndex(byte *data) 72 | { 73 | 74 | for (int i = 0; i < 16; i++) 75 | { 76 | if (data[i] == 0x0) 77 | { 78 | // do nothing, skip 79 | } 80 | else if (data[i] == MESSAGE_TYPE_NDEF) 81 | { 82 | return i; 83 | } 84 | else 85 | { 86 | Serial.print("Unknown TLV ");Serial.println(data[i], HEX); 87 | return -2; 88 | } 89 | } 90 | 91 | return -1; 92 | } 93 | 94 | byte NtagAdapter::getUidLength() 95 | { 96 | return UID_LENGTH; 97 | } 98 | 99 | bool NtagAdapter::getUid(byte *uidin, unsigned int uidLength) 100 | { 101 | memcpy(uidin, uid, UID_LENGTH < uidLength ? UID_LENGTH : uidLength); 102 | return true; 103 | } 104 | 105 | -------------------------------------------------------------------------------- /examples/ReadTagExtended/ReadTagExtended.ino: -------------------------------------------------------------------------------- 1 | #include "ntageepromadapter.h" 2 | #define HARDI2C 3 | 4 | Ntag ntag(Ntag::NTAG_I2C_1K,2,5); 5 | NtagEepromAdapter ntagAdapter(&ntag); 6 | 7 | void setup(void) { 8 | Serial.begin(115200); 9 | Serial.println("NDEF Reader"); 10 | ntagAdapter.begin(); 11 | NfcTag tag = ntagAdapter.read(); 12 | Serial.println(tag.getTagType()); 13 | Serial.print("UID: ");Serial.println(tag.getUidString()); 14 | 15 | if (tag.hasNdefMessage()) // every tag won't have a message 16 | { 17 | 18 | NdefMessage message = tag.getNdefMessage(); 19 | Serial.print("\nThis NFC Tag contains an NDEF Message with "); 20 | Serial.print(message.getRecordCount()); 21 | Serial.print(" NDEF Record"); 22 | if (message.getRecordCount() != 1) 23 | { 24 | Serial.print("s"); 25 | } 26 | Serial.println("."); 27 | 28 | // cycle through the records, printing some info from each 29 | int recordCount = message.getRecordCount(); 30 | for (int i = 0; i < recordCount; i++) 31 | { 32 | Serial.print("\nNDEF Record ");Serial.println(i+1); 33 | NdefRecord record = message.getRecord(i); 34 | // NdefRecord record = message[i]; // alternate syntax 35 | 36 | Serial.print(" TNF: ");Serial.println(record.getTnf()); 37 | Serial.print(" Type: ");Serial.println(record.getType()); // will be "" for TNF_EMPTY 38 | 39 | // The TNF and Type should be used to determine how your application processes the payload 40 | // There's no generic processing for the payload, it's returned as a byte[] 41 | int payloadLength = record.getPayloadLength(); 42 | byte payload[payloadLength]; 43 | record.getPayload(payload); 44 | 45 | // Print the Hex and Printable Characters 46 | Serial.print(" Payload (HEX): "); 47 | PrintHexChar(payload, payloadLength); 48 | 49 | // Force the data into a String (might work depending on the content) 50 | // Real code should use smarter processing 51 | String payloadAsString = ""; 52 | for (int c = 0; c < payloadLength; c++) 53 | { 54 | payloadAsString += (char)payload[c]; 55 | } 56 | Serial.print(" Payload (as String): "); 57 | Serial.println(payloadAsString); 58 | 59 | // id is probably blank and will return "" 60 | String uid = record.getId(); 61 | if (uid != "") 62 | { 63 | Serial.print(" ID: ");Serial.println(uid); 64 | } 65 | } 66 | } 67 | } 68 | 69 | void loop(void) {} 70 | -------------------------------------------------------------------------------- /ntag.h: -------------------------------------------------------------------------------- 1 | #ifndef NTAG_H 2 | #define NTAG_H 3 | 4 | #include "Arduino.h" 5 | #include 6 | 7 | class Ntag 8 | { 9 | public: 10 | typedef enum{ 11 | NTAG_I2C_1K, 12 | NTAG_I2C_2K 13 | }DEVICE_TYPE; 14 | typedef enum{ 15 | NC_REG, 16 | LAST_NDEF_BLOCK, 17 | SRAM_MIRROR_BLOCK, 18 | WDT_LS, 19 | WDT_MS, 20 | I2C_CLOCK_STR, 21 | NS_REG 22 | }REGISTER_NR; 23 | Ntag(DEVICE_TYPE dt, byte fd_pin, byte vout_pin, byte i2c_address = DEFAULT_I2C_ADDRESS); 24 | void detectI2cDevices();//Comes in handy when you accidentally changed the I²C address of the NTAG. 25 | bool begin(); 26 | bool getUid(byte *uid, unsigned int uidLength); 27 | bool getCapabilityContainer(byte* container); 28 | byte getUidLength(); 29 | bool isRfBusy(); 30 | bool isReaderPresent(); 31 | bool setSramMirrorRf(bool bEnable, byte mirrorBaseBlockNr); 32 | bool setFd_ReaderHandshake(); 33 | //Address=address of the byte, not address of the 16byte block 34 | bool readEeprom(word address, byte* pdata, byte length);//starts at address 0 35 | //Address=address of the byte, not address of the 16byte block 36 | bool writeEeprom(word address, byte* pdata, byte length);//starts at address 0 37 | bool readSram(word address, byte* pdata, byte length);//starts at address 0 38 | bool writeSram(word address, byte* pdata, byte length);//starts at address 0 39 | bool readRegister(REGISTER_NR regAddr, byte &value); 40 | bool writeRegister(REGISTER_NR regAddr, byte mask, byte regdat); 41 | bool setLastNdefBlock(); 42 | void releaseI2c(); 43 | private: 44 | typedef enum{ 45 | CONFIG=0x1,//BLOCK0 (putting this in a separate block type, because errors here can "brick" the device.) 46 | USERMEM=0x2,//EEPROM 47 | REGISTER=0x4,//Settings registers 48 | SRAM=0x8 49 | }BLOCK_TYPE; 50 | static const byte UID_LENGTH=7; 51 | static const byte DEFAULT_I2C_ADDRESS=0x55; 52 | static const byte NTAG_BLOCK_SIZE=16; 53 | static const word EEPROM_BASE_ADDR=(0x1<<4); 54 | static const word SRAM_BASE_ADDR=(0xF8<<4); 55 | //Address=address of the byte, not address of the 16byte block 56 | bool write(BLOCK_TYPE bt, word byteAddress, byte* pdata, byte length); 57 | //Address=address of the byte, not address of the 16byte block 58 | bool read(BLOCK_TYPE bt, word byteAddress, byte* pdata, byte length); 59 | bool readBlock(BLOCK_TYPE bt, byte memBlockAddress, byte *p_data, byte data_size); 60 | bool writeBlock(BLOCK_TYPE bt, byte memBlockAddress, byte *p_data); 61 | bool writeBlockAddress(BLOCK_TYPE dt, byte addr); 62 | bool end_transmission(void); 63 | bool isAddressValid(BLOCK_TYPE dt, byte blocknr); 64 | bool setLastNdefBlock(byte memBlockAddress); 65 | byte _i2c_address; 66 | DEVICE_TYPE _dt; 67 | byte _fd_pin; 68 | byte _vout_pin; 69 | byte _lastMemBlockWritten; 70 | byte _mirrorBaseBlockNr; 71 | Bounce _debouncer; 72 | unsigned long _rfBusyStartTime; 73 | bool _triggered; 74 | }; 75 | 76 | #endif // NTAG_H 77 | -------------------------------------------------------------------------------- /examples/ntagTest/ntagTest.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include "Arduino.h" 3 | #define HARDI2C 4 | #include 5 | 6 | Ntag ntag(Ntag::NTAG_I2C_1K,7,9); 7 | NtagSramAdapter ntagAdapter(&ntag); 8 | 9 | void setup(){ 10 | Serial.begin(115200); 11 | Serial.println("start"); 12 | if(!ntag.begin()){ 13 | Serial.println("Can't find ntag"); 14 | } 15 | getSerialNumber(); 16 | testUserMem(); 17 | testRegisterAccess(); 18 | testSramMirror(); 19 | testSram(); 20 | } 21 | 22 | void loop(){ 23 | 24 | } 25 | 26 | void testWriteAdapter(){ 27 | NdefMessage message = NdefMessage(); 28 | message.addUriRecord("http://www.google.be"); 29 | if(ntagAdapter.write(message)){ 30 | Serial.println("Message written to tag."); 31 | } 32 | } 33 | 34 | void testSram(){ 35 | byte data[16]; 36 | Serial.println("Reading SRAM block 0xF8"); 37 | if(ntag.readSram(0,data,16)){ 38 | showBlockInHex(data,16); 39 | } 40 | for(byte i=0;i<16;i++){ 41 | data[i]=0xF0 | i; 42 | } 43 | Serial.println("Writing dummy data to SRAM block 0xF8"); 44 | if(!ntag.writeSram(0,data,16)){ 45 | return; 46 | } 47 | Serial.println("Reading SRAM block 0xF8 again"); 48 | if(ntag.readSram(0,data,16)){ 49 | showBlockInHex(data,16); 50 | } 51 | } 52 | 53 | void testSramMirror(){ 54 | byte readeeprom[16]; 55 | byte data; 56 | 57 | if(!ntag.setSramMirrorRf(false,1))return; 58 | Serial.println("\nReading memory block 1, no mirroring of SRAM"); 59 | if(ntag.readEeprom(0,readeeprom,16)){ 60 | showBlockInHex(readeeprom,16); 61 | } 62 | Serial.println("\nReading SRAM block 1"); 63 | if(ntag.readSram(0,readeeprom,16)){ 64 | showBlockInHex(readeeprom,16); 65 | } 66 | if(!ntag.setSramMirrorRf(true,1))return; 67 | Serial.print("NC_REG: "); 68 | if(ntag.readRegister(Ntag::NC_REG,data)){ 69 | Serial.println(data, HEX); 70 | } 71 | Serial.println("Use an NFC-reader to verify that the SRAM has been mapped to the memory area that the reader will access by default."); 72 | } 73 | 74 | void testRegisterAccess(){ 75 | byte data; 76 | Serial.println(ntag.readRegister(Ntag::NC_REG,data)); 77 | Serial.println(data,HEX); 78 | Serial.println(ntag.writeRegister(Ntag::NC_REG,0x0C,0x0A)); 79 | Serial.println(ntag.readRegister(Ntag::NC_REG,data)); 80 | Serial.println(data,HEX); 81 | } 82 | 83 | void getSerialNumber(){ 84 | byte* sn=(byte*)malloc(ntag.getUidLength()); 85 | Serial.println(); 86 | if(ntag.getUid(sn,7)) 87 | { 88 | Serial.print("Serial number of the tag is: "); 89 | for(byte i=0;isetSramMirrorRf(false, 0)) || (!_ntag->setFd_ReaderHandshake())){ 14 | Serial.println("Can't initialize tag"); 15 | return false; 16 | } 17 | return true; 18 | } 19 | 20 | bool NtagEepromAdapter::write(NdefMessage& m, unsigned int uiTimeout){ 21 | if(!waitUntilRfDone(uiTimeout)) 22 | { 23 | return false; 24 | } 25 | if (isUnformatted()) 26 | { 27 | Serial.println(F("WARNING: Tag is not formatted.")); 28 | return false; 29 | } 30 | if(!readCapabilityContainer()) 31 | { 32 | return false; 33 | } 34 | 35 | messageLength = m.getEncodedSize(); 36 | ndefStartIndex = messageLength < 0xFF ? 2 : 4; 37 | calculateBufferSize(); 38 | 39 | if(bufferSize>tagCapacity) { 40 | #ifdef MIFARE_ULTRALIGHT_DEBUG 41 | Serial.print(F("Encoded Message length exceeded tag Capacity "));Serial.println(tagCapacity); 42 | #endif 43 | return false; 44 | } 45 | 46 | uint8_t encoded[bufferSize]; 47 | 48 | // Set message size. 49 | encoded[0] = 0x3; 50 | if (messageLength < 0xFF) 51 | { 52 | encoded[1] = messageLength; 53 | } 54 | else 55 | { 56 | encoded[1] = 0xFF; 57 | encoded[2] = ((messageLength >> 8) & 0xFF); 58 | encoded[3] = (messageLength & 0xFF); 59 | } 60 | m.encode(encoded+ndefStartIndex); 61 | // this is always at least 1 byte copy because of terminator. 62 | memset(encoded+ndefStartIndex+messageLength,0,bufferSize-ndefStartIndex-messageLength); 63 | encoded[ndefStartIndex+messageLength] = 0xFE; // terminator 64 | 65 | #ifdef MIFARE_ULTRALIGHT_DEBUG 66 | Serial.print(F("messageLength "));Serial.println(messageLength); 67 | Serial.print(F("Tag Capacity "));Serial.println(tagCapacity); 68 | nfc->PrintHex(encoded,bufferSize); 69 | #endif 70 | 71 | _ntag->writeEeprom(0,encoded,bufferSize); 72 | _ntag->setLastNdefBlock(); 73 | _ntag->releaseI2c(); 74 | // for(int i=0;ireadEeprom(0,buffer, bufferSize); 106 | NdefMessage ndefMessage = NdefMessage(&buffer[ndefStartIndex], messageLength); 107 | return NfcTag(uid, UID_LENGTH, NFC_FORUM_TAG_TYPE_2, ndefMessage); 108 | } 109 | 110 | // Mifare Ultralight can't be reset to factory state 111 | // zero out tag data like the NXP Tag Write Android application 112 | bool NtagEepromAdapter::clean() 113 | { 114 | if(!readCapabilityContainer()) 115 | { 116 | return false; 117 | } 118 | 119 | byte blocks = (tagCapacity / NTAG_BLOCK_SIZE); 120 | 121 | // factory tags have 0xFF, but OTP-CC blocks have already been set so we use 0x00 122 | byte data[16]; 123 | memset(data,0x00,sizeof(data)); 124 | 125 | for (int i = 0; i < blocks; i++) { 126 | #ifdef MIFARE_ULTRALIGHT_DEBUG 127 | Serial.print(F("Wrote page "));Serial.print(i);Serial.print(F(" - ")); 128 | nfc->PrintHex(data, ULTRALIGHT_PAGE_SIZE); 129 | #endif 130 | if (!_ntag->writeEeprom(i,data,NTAG_BLOCK_SIZE)) { 131 | return false; 132 | } 133 | } 134 | return true; 135 | } 136 | 137 | bool NtagEepromAdapter::erase() 138 | { 139 | NdefMessage message = NdefMessage(); 140 | message.addEmptyRecord(); 141 | return write(message); 142 | } 143 | 144 | 145 | bool NtagEepromAdapter::isUnformatted() 146 | { 147 | const byte PAGE_4 = 0;//page 4 is base address of EEPROM from I²C perspective 148 | byte data[NTAG_PAGE_SIZE]; 149 | bool success = _ntag->readEeprom(PAGE_4, data, NTAG_PAGE_SIZE); 150 | if (success) 151 | { 152 | return (data[0] == 0xFF && data[1] == 0xFF && data[2] == 0xFF && data[3] == 0xFF); 153 | } 154 | else 155 | { 156 | Serial.print(F("Error. Failed read page 4")); 157 | return false; 158 | } 159 | } 160 | 161 | // page 3 has tag capabilities 162 | bool NtagEepromAdapter::readCapabilityContainer() 163 | { 164 | byte data[4]; 165 | if (_ntag->getCapabilityContainer(data)) 166 | { 167 | //http://apps4android.org/nfc-specifications/NFCForum-TS-Type-2-Tag_1.1.pdf 168 | if(data[0]!=0xE1) 169 | { 170 | return false; //magic number 171 | } 172 | //NT3H1101 return 0x6D for data[2], which leads to 872 databytes, not 888. 173 | tagCapacity = data[2] * 8; 174 | #ifdef MIFARE_ULTRALIGHT_DEBUG 175 | Serial.print(F("Tag capacity "));Serial.print(tagCapacity);Serial.println(F(" bytes")); 176 | #endif 177 | 178 | // TODO future versions should get lock information 179 | } 180 | return true; 181 | } 182 | 183 | // buffer is larger than the message, need to handle some data before and after 184 | // message and need to ensure we read full pages 185 | void NtagEepromAdapter::calculateBufferSize() 186 | { 187 | // TLV terminator 0xFE is 1 byte 188 | bufferSize = messageLength + ndefStartIndex + 1; 189 | 190 | if (bufferSize % NTAG_PAGE_SIZE != 0) 191 | { 192 | // buffer must be an increment of page size 193 | bufferSize = ((bufferSize / NTAG_PAGE_SIZE) + 1) * NTAG_PAGE_SIZE; 194 | } 195 | } 196 | 197 | // read enough of the message to find the ndef message length 198 | void NtagEepromAdapter::findNdefMessage() 199 | { 200 | byte data[16]; // 4 pages 201 | 202 | // the nxp read command reads 4 pages 203 | if (_ntag->readEeprom(0,data,16)) 204 | { 205 | if (data[0] == 0x03) 206 | { 207 | messageLength = data[1]; 208 | ndefStartIndex = 2; 209 | } 210 | else if (data[5] == 0x3) // page 5 byte 1 211 | { 212 | // TODO should really read the lock control TLV to ensure byte[5] is correct 213 | messageLength = data[6]; 214 | ndefStartIndex = 7; 215 | } 216 | } 217 | 218 | #ifdef MIFARE_ULTRALIGHT_DEBUG 219 | Serial.print(F("messageLength "));Serial.println(messageLength); 220 | Serial.print(F("ndefStartIndex "));Serial.println(ndefStartIndex); 221 | #endif 222 | } 223 | 224 | 225 | -------------------------------------------------------------------------------- /ntag.cpp: -------------------------------------------------------------------------------- 1 | #include "ntag.h" 2 | #include "Wire.h" 3 | #ifdef ARDUINO_STM_NUCLEO_F103RB 4 | //SCL = SCL/D15 5 | //SDA = SDA/D14 6 | HardWire HWire(1, I2C_REMAP);// | I2C_BUS_RESET); // I2c1 7 | #else 8 | #define HWire Wire 9 | #endif 10 | 11 | 12 | Ntag::Ntag(DEVICE_TYPE dt, byte fd_pin, byte vout_pin, byte i2c_address): 13 | _dt(dt), 14 | _fd_pin(fd_pin), 15 | _vout_pin(vout_pin), 16 | _i2c_address(i2c_address), 17 | _rfBusyStartTime(0), 18 | _triggered(false) 19 | { 20 | _debouncer = Bounce(); 21 | } 22 | 23 | bool Ntag::begin(){ 24 | bool bResult=true; 25 | HWire.begin(); 26 | #ifndef ARDUINO_SAM_DUE 27 | HWire.beginTransmission(_i2c_address); 28 | bResult=HWire.endTransmission()==0; 29 | #else 30 | //Arduino Due always sends at least 2 bytes for every I²C operation. This upsets the NTAG. 31 | return true; 32 | #endif 33 | if(_vout_pin!=0){ 34 | pinMode(_vout_pin, INPUT); 35 | } 36 | pinMode(_fd_pin, INPUT); 37 | _debouncer.attach(_fd_pin); 38 | _debouncer.interval(5); // interval in ms 39 | return bResult; 40 | } 41 | 42 | bool Ntag::isReaderPresent() 43 | { 44 | if(_vout_pin==0) 45 | { 46 | return false; 47 | } 48 | return digitalRead(_vout_pin)==HIGH; 49 | } 50 | 51 | void Ntag::detectI2cDevices(){ 52 | for(byte i=0;i<0x80;i++){ 53 | HWire.beginTransmission(i); 54 | if(HWire.endTransmission()==0) 55 | { 56 | Serial.print("Found I²C device on : 0x"); 57 | Serial.println(i,HEX); 58 | } 59 | } 60 | } 61 | 62 | byte Ntag::getUidLength() 63 | { 64 | return UID_LENGTH; 65 | } 66 | 67 | bool Ntag::getUid(byte *uid, unsigned int uidLength) 68 | { 69 | byte data[UID_LENGTH]; 70 | if(!readBlock(CONFIG, 0,data,UID_LENGTH)) 71 | { 72 | return false; 73 | } 74 | if(data[0]!=4) 75 | { 76 | return false; 77 | } 78 | memcpy(uid, data, UID_LENGTH < uidLength ? UID_LENGTH : uidLength); 79 | return true; 80 | } 81 | 82 | bool Ntag::getCapabilityContainer(byte* container) 83 | { 84 | if(!container) 85 | { 86 | return false; 87 | } 88 | byte data[16]; 89 | if(!readBlock(CONFIG, 0,data,16)) 90 | { 91 | return false; 92 | } 93 | memcpy(container, data+12, 4); 94 | return true; 95 | } 96 | 97 | 98 | 99 | bool Ntag::setFd_ReaderHandshake(){ 100 | //return writeRegister(NC_REG, 0x3C,0x18); 101 | return writeRegister(NC_REG, 0x3C,0x28); 102 | //0x28: FD_OFF=10b, FD_ON=10b : FD constant low 103 | //Start of read by reader always clears the FD-pin. 104 | //At the end of the read by reader, the FD-pin becomes high (most of the times) 105 | //0x18: FD pulse high (13.9ms wide) at the beginning of the read sequence, no effect on write sequence. 106 | //0x14: FD_OFF=01b, FD_ON=01b : FD constant high 107 | //0x24: FD constant high 108 | } 109 | 110 | bool Ntag::isRfBusy(){ 111 | byte regVal; 112 | const byte RF_LOCKED=5; 113 | _debouncer.update(); 114 | //Reading this register clears the FD-pin. 115 | //When continuously polling this register while RF reading or writing is ongoing, high will be returned for 2ms, followed 116 | //by low for 9ms, then high again for 2ms then low again for 9ms and so on. 117 | //To get a nice clean high or low instead of spikes, a software retriggerable monostable that triggers on rfBusy will be used. 118 | if(!readRegister(NS_REG, regVal)) 119 | { 120 | Serial.println("Can't read register."); 121 | } 122 | if(bitRead(regVal,RF_LOCKED) || _debouncer.rose()) 123 | { 124 | //retrigger monostable 125 | _rfBusyStartTime=millis(); 126 | _triggered=true; 127 | return true; 128 | } 129 | if(_triggered && millis()<_rfBusyStartTime+30) 130 | { 131 | //a zero has been read, but monostable hasn't run out yet 132 | return true; 133 | } 134 | return false; 135 | } 136 | 137 | //Mirror SRAM to EEPROM 138 | //Remark that the SRAM mirroring is only valid for the RF-interface. 139 | //For the I²C-interface, you still have to use blocks 0xF8 and higher to access SRAM area (see datasheet Table 6) 140 | bool Ntag::setSramMirrorRf(bool bEnable, byte mirrorBaseBlockNr){ 141 | _mirrorBaseBlockNr = bEnable ? mirrorBaseBlockNr : 0; 142 | if(!writeRegister(SRAM_MIRROR_BLOCK,0xFF,mirrorBaseBlockNr)){ 143 | return false; 144 | } 145 | //disable pass-through mode (because it's not compatible with SRAM⁻mirroring: datasheet §11.2). 146 | //enable/disable SRAM memory mirror 147 | return writeRegister(NC_REG, 0x42, bEnable ? 0x02 : 0x00); 148 | } 149 | 150 | bool Ntag::readSram(word address, byte *pdata, byte length) 151 | { 152 | return read(SRAM, address+SRAM_BASE_ADDR, pdata, length); 153 | } 154 | 155 | bool Ntag::writeSram(word address, byte *pdata, byte length) 156 | { 157 | return write(SRAM, address+SRAM_BASE_ADDR, pdata, length); 158 | } 159 | 160 | bool Ntag::readEeprom(word address, byte *pdata, byte length) 161 | { 162 | return read(USERMEM, address+EEPROM_BASE_ADDR, pdata, length); 163 | } 164 | 165 | bool Ntag::writeEeprom(word address, byte *pdata, byte length) 166 | { 167 | return write(USERMEM, address+EEPROM_BASE_ADDR, pdata, length); 168 | } 169 | 170 | void Ntag::releaseI2c() 171 | { 172 | //reset I2C_LOCKED bit 173 | writeRegister(NS_REG,0x40,0); 174 | } 175 | 176 | bool Ntag::write(BLOCK_TYPE bt, word byteAddress, byte* pdata, byte length) 177 | { 178 | byte readbuffer[NTAG_BLOCK_SIZE]; 179 | byte writeLength; 180 | byte* wptr=pdata; 181 | byte blockNr=byteAddress/NTAG_BLOCK_SIZE; 182 | 183 | if(byteAddress % NTAG_BLOCK_SIZE !=0) 184 | { 185 | //start address doesn't point to start of block, so the bytes in this block that precede the address range must 186 | //be read. 187 | if(!readBlock(bt, blockNr, readbuffer, NTAG_BLOCK_SIZE)) 188 | { 189 | return false; 190 | } 191 | writeLength=NTAG_BLOCK_SIZE - (byteAddress % NTAG_BLOCK_SIZE); 192 | if(writeLength NTAG_BLOCK_SIZE ? NTAG_BLOCK_SIZE : pdata+length-wptr); 207 | if(writeLength!=NTAG_BLOCK_SIZE){ 208 | if(!readBlock(bt, blockNr, readbuffer, NTAG_BLOCK_SIZE)) 209 | { 210 | return false; 211 | } 212 | memcpy(readbuffer, wptr, writeLength); 213 | } 214 | if(!writeBlock(bt, blockNr, writeLength==NTAG_BLOCK_SIZE ? wptr : readbuffer)) 215 | { 216 | return false; 217 | } 218 | wptr+=writeLength; 219 | blockNr++; 220 | } 221 | _lastMemBlockWritten = --blockNr; 222 | return true; 223 | } 224 | 225 | bool Ntag::read(BLOCK_TYPE bt, word byteAddress, byte* pdata, byte length) 226 | { 227 | byte readbuffer[NTAG_BLOCK_SIZE]; 228 | byte readLength; 229 | byte* wptr=pdata; 230 | 231 | readLength=(byteAddress % NTAG_BLOCK_SIZE) + length; 232 | if(readLength NTAG_BLOCK_SIZE ? NTAG_BLOCK_SIZE : pdata+length-wptr); 246 | if(!readBlock(bt, i, wptr, readLength)) 247 | { 248 | return false; 249 | } 250 | wptr+=readLength; 251 | } 252 | return true; 253 | } 254 | 255 | bool Ntag::readBlock(BLOCK_TYPE bt, byte memBlockAddress, byte *p_data, byte data_size) 256 | { 257 | if(data_size>NTAG_BLOCK_SIZE || !writeBlockAddress(bt, memBlockAddress)){ 258 | return false; 259 | } 260 | if(!end_transmission()){ 261 | return false; 262 | } 263 | if(HWire.requestFrom(_i2c_address,data_size)!=data_size){ 264 | return false; 265 | } 266 | byte i=0; 267 | while(HWire.available()) 268 | { 269 | p_data[i++] = HWire.read(); 270 | } 271 | return i==data_size; 272 | } 273 | 274 | bool Ntag::setLastNdefBlock() 275 | { 276 | //When SRAM mirroring is used, the LAST_NDEF_BLOCK must point to USERMEM, not to SRAM 277 | return writeRegister(LAST_NDEF_BLOCK, 0xFF, isAddressValid(SRAM, _lastMemBlockWritten) ? 278 | _lastMemBlockWritten - (SRAM_BASE_ADDR>>4) + _mirrorBaseBlockNr : _lastMemBlockWritten); 279 | } 280 | 281 | bool Ntag::writeBlock(BLOCK_TYPE bt, byte memBlockAddress, byte *p_data) 282 | { 283 | if(!writeBlockAddress(bt, memBlockAddress)){ 284 | return false; 285 | } 286 | for (int i=0; i6 || !writeBlockAddress(REGISTER, 0xFE)){ 311 | return false; 312 | } 313 | HWire.write(regAddr); 314 | if(!end_transmission()){ 315 | return false; 316 | } 317 | if(HWire.requestFrom(_i2c_address,(byte)1)!=1){ 318 | return false; 319 | } 320 | value=HWire.read(); 321 | return bRetVal; 322 | } 323 | 324 | bool Ntag::writeRegister(REGISTER_NR regAddr, byte mask, byte regdat) 325 | { 326 | if(regAddr>7 || !writeBlockAddress(REGISTER, 0xFE)){ 327 | return false; 328 | } 329 | HWire.write(regAddr); 330 | HWire.write(mask); 331 | HWire.write(regdat); 332 | return end_transmission(); 333 | } 334 | 335 | bool Ntag::writeBlockAddress(BLOCK_TYPE dt, byte addr) 336 | { 337 | if(!isAddressValid(dt, addr)){ 338 | return false; 339 | } 340 | HWire.beginTransmission(_i2c_address); 341 | HWire.write(addr); 342 | return true; 343 | } 344 | 345 | bool Ntag::end_transmission(void) 346 | { 347 | return HWire.endTransmission()==0; 348 | //I2C_LOCKED must be either reset to 0b at the end of the I2C sequence or wait until the end of the watch dog timer. 349 | } 350 | 351 | bool Ntag::isAddressValid(BLOCK_TYPE type, byte blocknr){ 352 | switch(type){ 353 | case CONFIG: 354 | if(blocknr!=0){ 355 | return false; 356 | } 357 | break; 358 | case USERMEM: 359 | switch (_dt) { 360 | case NTAG_I2C_1K: 361 | if(blocknr < 1 || blocknr > 0x38){ 362 | return false; 363 | } 364 | break; 365 | case NTAG_I2C_2K: 366 | if(blocknr < 1 || blocknr > 0x78){ 367 | return false; 368 | } 369 | break; 370 | default: 371 | return false; 372 | } 373 | break; 374 | case SRAM: 375 | if(blocknr < 0xF8 || blocknr > 0xFB){ 376 | return false; 377 | } 378 | break; 379 | case REGISTER: 380 | if(blocknr != 0xFE){ 381 | return false; 382 | } 383 | break; 384 | default: 385 | return false; 386 | } 387 | return true; 388 | } 389 | -------------------------------------------------------------------------------- /QtCreator/arduino-ntag.creator.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {dfe1b86d-1e0a-4767-9dd4-97f370773810} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | 0 45 | 8 46 | true 47 | 1 48 | true 49 | true 50 | true 51 | false 52 | 53 | 54 | 55 | ProjectExplorer.Project.PluginSettings 56 | 57 | 58 | 59 | ProjectExplorer.Project.Target.0 60 | 61 | STM32F103 Nucleo 62 | STM32F103 Nucleo 63 | {dd60e355-d199-4b17-b612-e96f7bcea42e} 64 | 0 65 | -1 66 | 1 67 | 68 | /tmp/test 69 | 70 | 71 | true 72 | -build-path="/tmp/test" -warnings=none -verbose -build-options-file="../../QtCreator/build.options.json" ./ReadTagExtended.ino --verbose 73 | $HOME/Programs/arduino-1.8.5/arduino-builder 74 | $HOME/git/arduino-ntag/examples/ReadTagExtended 75 | Custom Process Step 76 | 77 | ProjectExplorer.ProcessStep 78 | 79 | 1 80 | Build 81 | 82 | ProjectExplorer.BuildSteps.Build 83 | 84 | 85 | 86 | true 87 | -rf /tmp/test 88 | rm 89 | %{buildDir} 90 | Custom Process Step 91 | 92 | ProjectExplorer.ProcessStep 93 | 94 | 1 95 | Clean 96 | 97 | ProjectExplorer.BuildSteps.Clean 98 | 99 | 2 100 | false 101 | 102 | Default 103 | Default 104 | GenericProjectManager.GenericBuildConfiguration 105 | 106 | 1 107 | 0 108 | 109 | 110 | 111 | false 112 | false 113 | false 114 | false 115 | true 116 | 0.01 117 | 10 118 | true 119 | 1 120 | 25 121 | 122 | 1 123 | true 124 | false 125 | true 126 | valgrind 127 | 128 | 0 129 | 1 130 | 2 131 | 3 132 | 4 133 | 5 134 | 6 135 | 7 136 | 8 137 | 9 138 | 10 139 | 11 140 | 12 141 | 13 142 | 14 143 | 144 | 2 145 | 146 | 147 | 148 | %{buildDir} 149 | Custom Executable 150 | 151 | ProjectExplorer.CustomExecutableRunConfiguration 152 | 3768 153 | false 154 | true 155 | false 156 | false 157 | true 158 | 159 | 160 | 161 | false 162 | false 163 | false 164 | false 165 | true 166 | 0.01 167 | 10 168 | true 169 | 1 170 | 25 171 | 172 | 1 173 | true 174 | false 175 | true 176 | valgrind 177 | 178 | 0 179 | 1 180 | 2 181 | 3 182 | 4 183 | 5 184 | 6 185 | 7 186 | 8 187 | 9 188 | 10 189 | 11 190 | 12 191 | 13 192 | 14 193 | 194 | /tmp/test/ReadTagExtended.ino.elf 195 | /tmp/test 196 | QtCreator (via GDB server or hardware debugger) 197 | 198 | BareMetal.CustomRunConfig 199 | 200 | . 201 | 3768 202 | false 203 | true 204 | false 205 | false 206 | true 207 | 208 | 2 209 | 210 | 211 | 212 | ProjectExplorer.Project.TargetCount 213 | 1 214 | 215 | 216 | ProjectExplorer.Project.Updater.FileVersion 217 | 18 218 | 219 | 220 | Version 221 | 18 222 | 223 | 224 | -------------------------------------------------------------------------------- /Hardware/NFC_NXP/Dtron.OutJob: -------------------------------------------------------------------------------- 1 | [OutputJobFile] 2 | Version=1.0 3 | Caption= 4 | Description= 5 | VaultGUID= 6 | ItemGUID= 7 | ItemHRID= 8 | RevisionGUID= 9 | RevisionId= 10 | VaultHRID= 11 | AutoItemHRID= 12 | NextRevId= 13 | FolderGUID= 14 | LifeCycleDefinitionGUID= 15 | RevisionNamingSchemeGUID= 16 | 17 | [OutputGroup1] 18 | Name=Dtron.OutJob 19 | Description= 20 | TargetOutputMedium=Dungeon Printer 21 | VariantName=[No Variations] 22 | VariantScope=1 23 | CurrentConfigurationName= 24 | TargetPrinter=HP LaserJet Professional P1606dn 25 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 26 | OutputMedium1=Dungeon Printer 27 | OutputMedium1_Type=Printer 28 | OutputMedium1_Printer=HP LaserJet Professional P1606dn 29 | OutputMedium1_PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 30 | OutputMedium2=Publish To PDF 31 | OutputMedium2_Type=Publish 32 | OutputMedium3=Generate Files 33 | OutputMedium3_Type=GeneratedFiles 34 | OutputType1=Schematic Print 35 | OutputName1=Schematic Prints 36 | OutputCategory1=Documentation 37 | OutputDocumentPath1=[Project Physical Documents] 38 | OutputVariantName1= 39 | OutputEnabled1=0 40 | OutputEnabled1_OutputMedium1=0 41 | OutputEnabled1_OutputMedium2=0 42 | OutputEnabled1_OutputMedium3=0 43 | OutputDefault1=0 44 | PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.97|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A3 45 | Configuration1_Name1=OutputConfigurationParameter1 46 | Configuration1_Item1=Record=SchPrintView|ShowNoERC=False|ShowParamSet=False|ShowProbe=False|ShowBlanket=False|ExpandDesignator=True|ExpandNetLabel=False|ExpandPort=False|ExpandSheetNum=False|ExpandDocNum=False 47 | OutputType2=Assembly 48 | OutputName2=Assembly Drawing TOP 49 | OutputCategory2=Assembly 50 | OutputDocumentPath2= 51 | OutputVariantName2= 52 | OutputEnabled2=0 53 | OutputEnabled2_OutputMedium1=0 54 | OutputEnabled2_OutputMedium2=0 55 | OutputEnabled2_OutputMedium3=0 56 | OutputDefault2=0 57 | PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.42|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter 58 | Configuration2_Name1=OutputConfigurationParameter1 59 | Configuration2_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView 60 | Configuration2_Name2=OutputConfigurationParameter2 61 | Configuration2_Item2=IncludeBottomLayerComponents=False|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Top Assembly Drawing|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False 62 | Configuration2_Name3=OutputConfigurationParameter3 63 | Configuration2_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical8|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 64 | Configuration2_Name4=OutputConfigurationParameter4 65 | Configuration2_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopOverlay|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 66 | Configuration2_Name5=OutputConfigurationParameter5 67 | Configuration2_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical4|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 68 | PcbPrintPreferences2= 69 | OutputType3=Assembly 70 | OutputName3=D'tron BOTTOM 71 | OutputCategory3=Assembly 72 | OutputDocumentPath3= 73 | OutputVariantName3= 74 | OutputEnabled3=0 75 | OutputEnabled3_OutputMedium1=0 76 | OutputEnabled3_OutputMedium2=0 77 | OutputEnabled3_OutputMedium3=0 78 | OutputDefault3=0 79 | PageOptions3=Record=PageOptions|CenterHorizontal=False|CenterVertical=False|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=500|BottomOffset=10000|Orientation=1|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=A4|PaperIndex=9 80 | Configuration3_Name1=OutputConfigurationParameter1 81 | Configuration3_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView 82 | Configuration3_Name2=OutputConfigurationParameter2 83 | Configuration3_Item2=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=0|Mirror=False|Name=BOTTOM FILM|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False 84 | Configuration3_Name3=OutputConfigurationParameter3 85 | Configuration3_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 86 | Configuration3_Name4=OutputConfigurationParameter4 87 | Configuration3_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical8|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 88 | Configuration3_Name5=OutputConfigurationParameter5 89 | Configuration3_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=MultiLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 90 | PcbPrintPreferences3= 91 | OutputType4=Drill 92 | OutputName4=Drill Drawing/Guides 93 | OutputCategory4=Fabrication 94 | OutputDocumentPath4= 95 | OutputVariantName4= 96 | OutputEnabled4=1 97 | OutputEnabled4_OutputMedium1=1 98 | OutputEnabled4_OutputMedium2=1 99 | OutputEnabled4_OutputMedium3=0 100 | OutputDefault4=0 101 | PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.60|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4 102 | Configuration4_Name1=OutputConfigurationParameter1 103 | Configuration4_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView 104 | Configuration4_Name2=OutputConfigurationParameter2 105 | Configuration4_Item2=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Combination Drill Guide For (Bottom Layer,Top Layer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False 106 | Configuration4_Name3=OutputConfigurationParameter3 107 | Configuration4_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Hidden|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=984252|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=BottomLayer|DLayer2=TopLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 108 | Configuration4_Name4=OutputConfigurationParameter4 109 | Configuration4_Item4=CArc=Hidden|CFill=Hidden|Comment=Hidden|Coordinate=Hidden|CPad=Hidden|CRegion=Hidden|CText=Hidden|CTrack=Hidden|CVia=Hidden|DDSymbolKind=1|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Hidden|Dimension=Hidden|DLayer1=BottomLayer|DLayer2=TopLayer|FArc=Hidden|FFill=Hidden|FPad=Hidden|FRegion=Hidden|FText=Hidden|FTrack=Hidden|FVia=Hidden|Layer=DrillGuide|Polygon=Hidden|PrintOutIndex=0|Record=PcbPrintLayer 110 | Configuration4_Name5=OutputConfigurationParameter5 111 | Configuration4_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical2|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 112 | Configuration4_Name6=OutputConfigurationParameter6 113 | Configuration4_Item6=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical8|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 114 | PcbPrintPreferences4= 115 | OutputType5=Assembly 116 | OutputName5=D'tron TOP 117 | OutputCategory5=Assembly 118 | OutputDocumentPath5= 119 | OutputVariantName5= 120 | OutputEnabled5=0 121 | OutputEnabled5_OutputMedium1=0 122 | OutputEnabled5_OutputMedium2=0 123 | OutputEnabled5_OutputMedium3=0 124 | OutputDefault5=0 125 | PageOptions5=Record=PageOptions|CenterHorizontal=False|CenterVertical=False|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=500|BottomOffset=10000|Orientation=1|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=A4|PaperIndex=9 126 | Configuration5_Name1=OutputConfigurationParameter1 127 | Configuration5_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView 128 | Configuration5_Name2=OutputConfigurationParameter2 129 | Configuration5_Item2=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=0|Mirror=False|Name=TOP FILM|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False 130 | Configuration5_Name3=OutputConfigurationParameter3 131 | Configuration5_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 132 | Configuration5_Name4=OutputConfigurationParameter4 133 | Configuration5_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=MultiLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 134 | Configuration5_Name5=OutputConfigurationParameter5 135 | Configuration5_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical8|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 136 | PcbPrintPreferences5= 137 | OutputType6=BOM_PartType 138 | OutputName6=Bill of Materials 139 | OutputCategory6=Report 140 | OutputDocumentPath6= 141 | OutputVariantName6= 142 | OutputEnabled6=0 143 | OutputEnabled6_OutputMedium1=0 144 | OutputEnabled6_OutputMedium2=0 145 | OutputEnabled6_OutputMedium3=1 146 | OutputDefault6=0 147 | PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4 148 | Configuration6_Name1=ColumnNameFormat 149 | Configuration6_Item1=CaptionAsName 150 | Configuration6_Name2=Filter 151 | Configuration6_Item2=545046300E5446696C74657257726170706572000D46696C7465722E416374697665090F46696C7465722E43726974657269610A04000000000000000000 152 | Configuration6_Name3=General 153 | Configuration6_Item3=OpenExported=False|AddToProject=False|ForceFit=True|NotFitted=False|Database=False|DatabasePriority=False|IncludePCBData=False|IncludeVaultData=False|ShowExportOptions=True|TemplateFilename=|BatchMode=5|FormWidth=942|FormHeight=660|SupplierProdQty=1|SupplierAutoQty=False|SupplierUseCachedPricing=False|SupplierCurrency= 154 | Configuration6_Name4=GroupOrder 155 | Configuration6_Item4=Comment=True|Footprint=True 156 | Configuration6_Name5=SortOrder 157 | Configuration6_Item5=Designator=Up|Comment=Up|Footprint=Up 158 | Configuration6_Name6=VisibleOrder 159 | Configuration6_Item6=Designator=328|LibRef=117|Order Code=98|Quantity=62 160 | OutputType7=Assembly 161 | OutputName7=Assembly Drawing BOT 162 | OutputCategory7=Assembly 163 | OutputDocumentPath7= 164 | OutputVariantName7= 165 | OutputEnabled7=0 166 | OutputEnabled7_OutputMedium1=0 167 | OutputEnabled7_OutputMedium2=0 168 | OutputEnabled7_OutputMedium3=0 169 | OutputDefault7=0 170 | PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.03|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=10000|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 171 | Configuration7_Name1=OutputConfigurationParameter1 172 | Configuration7_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView 173 | Configuration7_Name2=OutputConfigurationParameter2 174 | Configuration7_Item2=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=False|IncludeViewports=True|Index=0|Mirror=True|Name=Bottom Assembly Drawing|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False 175 | Configuration7_Name3=OutputConfigurationParameter3 176 | Configuration7_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomOverlay|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 177 | Configuration7_Name4=OutputConfigurationParameter4 178 | Configuration7_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical5|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 179 | Configuration7_Name5=OutputConfigurationParameter5 180 | Configuration7_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical8|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer 181 | PcbPrintPreferences7= 182 | 183 | [PublishSettings] 184 | OutputFilePath2=C:\Documents and Settings\test\My Documents\SvnViews\nuc\Hardware\.\D'tron.PDF 185 | ReleaseManaged2=0 186 | OutputBasePath2=.\ 187 | OutputPathMedia2= 188 | OutputPathMediaValue2= 189 | OutputPathOutputer2=[Output Type] 190 | OutputPathOutputerPrefix2= 191 | OutputPathOutputerValue2= 192 | OutputFileName2=NUC.PDF 193 | OutputFileNameMulti2= 194 | UseOutputNameForMulti2=1 195 | OutputFileNameSpecial2= 196 | OpenOutput2=1 197 | PromptOverwrite2=1 198 | PublishMethod2=0 199 | ZoomLevel2=50 200 | FitSCHPrintSizeToDoc2=0 201 | FitPCBPrintSizeToDoc2=0 202 | GenerateNetsInfo2=0 203 | MarkPins2=1 204 | MarkNetLabels2=1 205 | MarkPortsId2=1 206 | GenerateTOC=1 207 | ShowComponentParameters2=1 208 | GlobalBookmarks2=0 209 | OutputFilePath3=C:\Users\user\Dropbox\NFC_NXP\.\ 210 | ReleaseManaged3=0 211 | OutputBasePath3=.\ 212 | OutputPathMedia3= 213 | OutputPathMediaValue3= 214 | OutputPathOutputer3= 215 | OutputPathOutputerPrefix3= 216 | OutputPathOutputerValue3= 217 | OutputFileName3= 218 | OutputFileNameMulti3= 219 | UseOutputNameForMulti3=1 220 | OutputFileNameSpecial3= 221 | OpenOutput3=1 222 | 223 | [GeneratedFilesSettings] 224 | RelativeOutputPath2=C:\Documents and Settings\test\My Documents\SvnViews\nuc\Hardware\.\D'tron.PDF 225 | OpenOutputs2=1 226 | RelativeOutputPath3=C:\Users\user\Dropbox\NFC_NXP\.\ 227 | OpenOutputs3=1 228 | AddToProject3=0 229 | TimestampFolder3=0 230 | UseOutputName3=0 231 | OpenODBOutput3=0 232 | OpenGerberOutput3=0 233 | OpenNCDrillOutput3=0 234 | OpenIPCOutput3=0 235 | EnableReload3=0 236 | 237 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | {description} 294 | Copyright (C) {year} {fullname} 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | 341 | -------------------------------------------------------------------------------- /Hardware/NFC_NXP/NFC_NXP.PrjPcb: -------------------------------------------------------------------------------- 1 | [Design] 2 | Version=1.0 3 | HierarchyMode=0 4 | ChannelRoomNamingStyle=0 5 | ReleasesFolder= 6 | ReleaseVaultGUID= 7 | ReleaseVaultName= 8 | ChannelDesignatorFormatString=$Component_$RoomName 9 | ChannelRoomLevelSeperator=_ 10 | OpenOutputs=1 11 | ArchiveProject=0 12 | TimestampOutput=0 13 | SeparateFolders=0 14 | TemplateLocationPath= 15 | PinSwapBy_Netlabel=1 16 | PinSwapBy_Pin=1 17 | AllowPortNetNames=0 18 | AllowSheetEntryNetNames=1 19 | AppendSheetNumberToLocalNets=0 20 | NetlistSinglePinNets=0 21 | DefaultConfiguration=Default Configuration 22 | UserID=0xFFFFFFFF 23 | DefaultPcbProtel=1 24 | DefaultPcbPcad=0 25 | ReorderDocumentsOnCompile=1 26 | NameNetsHierarchically=0 27 | PowerPortNamesTakePriority=0 28 | PushECOToAnnotationFile=1 29 | DItemRevisionGUID= 30 | ReportSuppressedErrorsInMessages=0 31 | FSMCodingStyle=eFMSDropDownList_OneProcess 32 | FSMEncodingStyle=eFMSDropDownList_OneHot 33 | OutputPath= 34 | LogFolderPath= 35 | ManagedProjectGUID= 36 | 37 | [Preferences] 38 | PrefsVaultGUID= 39 | PrefsRevisionGUID= 40 | 41 | [Document1] 42 | DocumentPath=NFC_NXP.SchDoc 43 | AnnotationEnabled=1 44 | AnnotateStartValue=1 45 | AnnotationIndexControlEnabled=0 46 | AnnotateSuffix= 47 | AnnotateScope=All 48 | AnnotateOrder=0 49 | DoLibraryUpdate=1 50 | DoDatabaseUpdate=1 51 | ClassGenCCAutoEnabled=0 52 | ClassGenCCAutoRoomEnabled=0 53 | ClassGenNCAutoScope=None 54 | DItemRevisionGUID= 55 | GenerateClassCluster=0 56 | DocumentUniqueId=UUVRBSNK 57 | 58 | [Document2] 59 | DocumentPath=BRD151104.pcbdoc 60 | AnnotationEnabled=1 61 | AnnotateStartValue=1 62 | AnnotationIndexControlEnabled=0 63 | AnnotateSuffix= 64 | AnnotateScope=All 65 | AnnotateOrder=-1 66 | DoLibraryUpdate=1 67 | DoDatabaseUpdate=1 68 | ClassGenCCAutoEnabled=1 69 | ClassGenCCAutoRoomEnabled=1 70 | ClassGenNCAutoScope=None 71 | DItemRevisionGUID= 72 | GenerateClassCluster=0 73 | DocumentUniqueId=TGOIIDLT 74 | 75 | [Document3] 76 | DocumentPath=Dtron.OutJob 77 | AnnotationEnabled=1 78 | AnnotateStartValue=1 79 | AnnotationIndexControlEnabled=0 80 | AnnotateSuffix= 81 | AnnotateScope=All 82 | AnnotateOrder=-1 83 | DoLibraryUpdate=1 84 | DoDatabaseUpdate=1 85 | ClassGenCCAutoEnabled=1 86 | ClassGenCCAutoRoomEnabled=1 87 | ClassGenNCAutoScope=None 88 | DItemRevisionGUID= 89 | GenerateClassCluster=0 90 | DocumentUniqueId= 91 | 92 | [GeneratedDocument1] 93 | DocumentPath=Outputs\BOM\BOM_External-BRD151104.xls 94 | DItemRevisionGUID= 95 | 96 | [GeneratedDocument2] 97 | DocumentPath=Outputs\BOM\BOM_External-NFC_NXP.xls 98 | DItemRevisionGUID= 99 | 100 | [GeneratedDocument3] 101 | DocumentPath=Project Outputs for NFC_NXP\Design Rule Check - BRD151104.html 102 | DItemRevisionGUID= 103 | 104 | [Parameter1] 105 | Name=RevisionNr 106 | Value=1 107 | 108 | [Parameter2] 109 | Name=ProjectName 110 | Value=NFC_NXP 111 | 112 | [Parameter3] 113 | Name=PCB_Nr 114 | Value=BRD151104/1 115 | 116 | [Parameter4] 117 | Name=DrawnByX 118 | Value=CT 119 | 120 | [Configuration1] 121 | Name=Default Configuration 122 | ParameterCount=0 123 | ConstraintFileCount=0 124 | ReleaseItemId= 125 | CurrentRevision= 126 | Variant=[No Variations] 127 | GenerateBOM=1 128 | OutputJobsCount=0 129 | 130 | [Generic_EDE] 131 | OutputDir= 132 | 133 | [OutputGroup1] 134 | Name=Netlist Outputs 135 | Description= 136 | TargetPrinter=Foxit Reader PDF Printer 137 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 138 | OutputType1=PADSNetlist 139 | OutputName1=PADS ASCII Netlist 140 | OutputDocumentPath1= 141 | OutputVariantName1= 142 | OutputDefault1=0 143 | OutputType2=PCADNetlist 144 | OutputName2=PCAD Netlist 145 | OutputDocumentPath2= 146 | OutputVariantName2= 147 | OutputDefault2=0 148 | OutputType3=SIMetrixNetlist 149 | OutputName3=SIMetrix 150 | OutputDocumentPath3= 151 | OutputVariantName3= 152 | OutputDefault3=0 153 | OutputType4=SIMPLISNetlist 154 | OutputName4=SIMPLIS 155 | OutputDocumentPath4= 156 | OutputVariantName4= 157 | OutputDefault4=0 158 | OutputType5=Verilog 159 | OutputName5=Verilog File 160 | OutputDocumentPath5= 161 | OutputVariantName5= 162 | OutputDefault5=0 163 | OutputType6=VHDL 164 | OutputName6=VHDL File 165 | OutputDocumentPath6= 166 | OutputVariantName6= 167 | OutputDefault6=0 168 | OutputType7=XSpiceNetlist 169 | OutputName7=XSpice Netlist 170 | OutputDocumentPath7= 171 | OutputVariantName7= 172 | OutputDefault7=0 173 | OutputType8=CadnetixNetlist 174 | OutputName8=Cadnetix Netlist 175 | OutputDocumentPath8= 176 | OutputVariantName8= 177 | OutputDefault8=0 178 | OutputType9=CalayNetlist 179 | OutputName9=Calay Netlist 180 | OutputDocumentPath9= 181 | OutputVariantName9= 182 | OutputDefault9=0 183 | OutputType10=EDIF 184 | OutputName10=EDIF for PCB 185 | OutputDocumentPath10= 186 | OutputVariantName10= 187 | OutputDefault10=0 188 | OutputType11=EESofNetlist 189 | OutputName11=EESof Netlist 190 | OutputDocumentPath11= 191 | OutputVariantName11= 192 | OutputDefault11=0 193 | OutputType12=IntergraphNetlist 194 | OutputName12=Intergraph Netlist 195 | OutputDocumentPath12= 196 | OutputVariantName12= 197 | OutputDefault12=0 198 | OutputType13=MentorBoardStationNetlist 199 | OutputName13=Mentor BoardStation Netlist 200 | OutputDocumentPath13= 201 | OutputVariantName13= 202 | OutputDefault13=0 203 | OutputType14=MultiWire 204 | OutputName14=MultiWire 205 | OutputDocumentPath14= 206 | OutputVariantName14= 207 | OutputDefault14=0 208 | OutputType15=OrCadPCB2Netlist 209 | OutputName15=Orcad/PCB2 Netlist 210 | OutputDocumentPath15= 211 | OutputVariantName15= 212 | OutputDefault15=0 213 | OutputType16=Pcad 214 | OutputName16=Pcad for PCB 215 | OutputDocumentPath16= 216 | OutputVariantName16= 217 | OutputDefault16=0 218 | OutputType17=PCADnltNetlist 219 | OutputName17=PCADnlt Netlist 220 | OutputDocumentPath17= 221 | OutputVariantName17= 222 | OutputDefault17=0 223 | OutputType18=Protel2Netlist 224 | OutputName18=Protel2 Netlist 225 | OutputDocumentPath18= 226 | OutputVariantName18= 227 | OutputDefault18=0 228 | OutputType19=ProtelNetlist 229 | OutputName19=Protel 230 | OutputDocumentPath19= 231 | OutputVariantName19= 232 | OutputDefault19=0 233 | OutputType20=RacalNetlist 234 | OutputName20=Racal Netlist 235 | OutputDocumentPath20= 236 | OutputVariantName20= 237 | OutputDefault20=0 238 | OutputType21=RINFNetlist 239 | OutputName21=RINF Netlist 240 | OutputDocumentPath21= 241 | OutputVariantName21= 242 | OutputDefault21=0 243 | OutputType22=SciCardsNetlist 244 | OutputName22=SciCards Netlist 245 | OutputDocumentPath22= 246 | OutputVariantName22= 247 | OutputDefault22=0 248 | OutputType23=TangoNetlist 249 | OutputName23=Tango Netlist 250 | OutputDocumentPath23= 251 | OutputVariantName23= 252 | OutputDefault23=0 253 | OutputType24=TelesisNetlist 254 | OutputName24=Telesis Netlist 255 | OutputDocumentPath24= 256 | OutputVariantName24= 257 | OutputDefault24=0 258 | OutputType25=WireListNetlist 259 | OutputName25=WireList Netlist 260 | OutputDocumentPath25= 261 | OutputVariantName25= 262 | OutputDefault25=0 263 | 264 | [OutputGroup2] 265 | Name=Simulator Outputs 266 | Description= 267 | TargetPrinter=Foxit Reader PDF Printer 268 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 269 | OutputType1=AdvSimNetlist 270 | OutputName1=Mixed Sim 271 | OutputDocumentPath1= 272 | OutputVariantName1= 273 | OutputDefault1=0 274 | OutputType2=SIMetrixSimulation 275 | OutputName2=SIMetrix 276 | OutputDocumentPath2= 277 | OutputVariantName2= 278 | OutputDefault2=0 279 | OutputType3=SIMPLISSimulation 280 | OutputName3=SIMPLIS 281 | OutputDocumentPath3= 282 | OutputVariantName3= 283 | OutputDefault3=0 284 | 285 | [OutputGroup3] 286 | Name=Documentation Outputs 287 | Description= 288 | TargetPrinter=Virtual Printer 289 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 290 | OutputType1=Assembler Source Print 291 | OutputName1=Assembler Source Prints 292 | OutputDocumentPath1= 293 | OutputVariantName1= 294 | OutputDefault1=0 295 | PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 296 | OutputType2=C Source Print 297 | OutputName2=C Source Prints 298 | OutputDocumentPath2= 299 | OutputVariantName2= 300 | OutputDefault2=0 301 | PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 302 | OutputType3=C/C++ Header Print 303 | OutputName3=C/C++ Header Prints 304 | OutputDocumentPath3= 305 | OutputVariantName3= 306 | OutputDefault3=0 307 | PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 308 | OutputType4=C++ Source Print 309 | OutputName4=C++ Source Prints 310 | OutputDocumentPath4= 311 | OutputVariantName4= 312 | OutputDefault4=0 313 | PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 314 | OutputType5=Composite 315 | OutputName5=Composite Drawing 316 | OutputDocumentPath5= 317 | OutputVariantName5= 318 | OutputDefault5=0 319 | PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 320 | OutputType6=FSM Print 321 | OutputName6=FSM Prints 322 | OutputDocumentPath6= 323 | OutputVariantName6= 324 | OutputDefault6=0 325 | PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 326 | OutputType7=OpenBus Print 327 | OutputName7=OpenBus Prints 328 | OutputDocumentPath7= 329 | OutputVariantName7= 330 | OutputDefault7=0 331 | PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 332 | OutputType8=PCB 3D Print 333 | OutputName8=PCB 3D Print 334 | OutputDocumentPath8= 335 | OutputVariantName8=[No Variations] 336 | OutputDefault8=0 337 | PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 338 | OutputType9=PCB 3D Video 339 | OutputName9=PCB 3D Video 340 | OutputDocumentPath9= 341 | OutputVariantName9=[No Variations] 342 | OutputDefault9=0 343 | PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 344 | OutputType10=PCB Print 345 | OutputName10=PCB Prints 346 | OutputDocumentPath10= 347 | OutputVariantName10= 348 | OutputDefault10=0 349 | PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 350 | OutputType11=PCBLIB Print 351 | OutputName11=PCBLIB Prints 352 | OutputDocumentPath11= 353 | OutputVariantName11= 354 | OutputDefault11=0 355 | PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 356 | OutputType12=Report Print 357 | OutputName12=Report Prints 358 | OutputDocumentPath12= 359 | OutputVariantName12= 360 | OutputDefault12=0 361 | PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 362 | OutputType13=Schematic Print 363 | OutputName13=Schematic Prints 364 | OutputDocumentPath13= 365 | OutputVariantName13= 366 | OutputDefault13=0 367 | PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 368 | OutputType14=SimView Print 369 | OutputName14=SimView Prints 370 | OutputDocumentPath14= 371 | OutputVariantName14= 372 | OutputDefault14=0 373 | PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 374 | OutputType15=VHDL Print 375 | OutputName15=VHDL Prints 376 | OutputDocumentPath15= 377 | OutputVariantName15= 378 | OutputDefault15=0 379 | PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 380 | OutputType16=Wave Print 381 | OutputName16=Wave Prints 382 | OutputDocumentPath16= 383 | OutputVariantName16= 384 | OutputDefault16=0 385 | PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 386 | OutputType17=WaveSim Print 387 | OutputName17=WaveSim Prints 388 | OutputDocumentPath17= 389 | OutputVariantName17= 390 | OutputDefault17=0 391 | PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 392 | OutputType18=PDF3D 393 | OutputName18=PDF3D 394 | OutputDocumentPath18= 395 | OutputVariantName18=[No Variations] 396 | OutputDefault18=0 397 | PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 398 | 399 | [OutputGroup4] 400 | Name=Assembly Outputs 401 | Description= 402 | TargetPrinter=Foxit Reader PDF Printer 403 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 404 | OutputType1=Assembly 405 | OutputName1=Assembly Drawings 406 | OutputDocumentPath1= 407 | OutputVariantName1=[No Variations] 408 | OutputDefault1=0 409 | PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 410 | OutputType2=Pick Place 411 | OutputName2=Generates pick and place files 412 | OutputDocumentPath2= 413 | OutputVariantName2=[No Variations] 414 | OutputDefault2=0 415 | OutputType3=Test Points For Assembly 416 | OutputName3=Test Point Report 417 | OutputDocumentPath3= 418 | OutputVariantName3=[No Variations] 419 | OutputDefault3=0 420 | 421 | [OutputGroup5] 422 | Name=Fabrication Outputs 423 | Description= 424 | TargetPrinter=Foxit Reader PDF Printer 425 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 426 | OutputType1=Board Stack Report 427 | OutputName1=Report Board Stack 428 | OutputDocumentPath1= 429 | OutputVariantName1= 430 | OutputDefault1=0 431 | PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 432 | OutputType2=CompositeDrill 433 | OutputName2=Composite Drill Drawing 434 | OutputDocumentPath2= 435 | OutputVariantName2= 436 | OutputDefault2=0 437 | PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 438 | OutputType3=Drill 439 | OutputName3=Drill Drawing/Guides 440 | OutputDocumentPath3= 441 | OutputVariantName3= 442 | OutputDefault3=0 443 | PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 444 | OutputType4=Final 445 | OutputName4=Final Artwork Prints 446 | OutputDocumentPath4= 447 | OutputVariantName4=[No Variations] 448 | OutputDefault4=0 449 | PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 450 | OutputType5=Gerber 451 | OutputName5=Gerber Files 452 | OutputDocumentPath5= 453 | OutputVariantName5=[No Variations] 454 | OutputDefault5=0 455 | OutputType6=Gerber X2 456 | OutputName6=Gerber X2 Files 457 | OutputDocumentPath6= 458 | OutputVariantName6= 459 | OutputDefault6=0 460 | OutputType7=IPC2581 461 | OutputName7=IPC-2581 Files 462 | OutputDocumentPath7= 463 | OutputVariantName7= 464 | OutputDefault7=0 465 | OutputType8=Mask 466 | OutputName8=Solder/Paste Mask Prints 467 | OutputDocumentPath8= 468 | OutputVariantName8= 469 | OutputDefault8=0 470 | PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 471 | OutputType9=NC Drill 472 | OutputName9=NC Drill Files 473 | OutputDocumentPath9= 474 | OutputVariantName9= 475 | OutputDefault9=0 476 | OutputType10=ODB 477 | OutputName10=ODB++ Files 478 | OutputDocumentPath10= 479 | OutputVariantName10=[No Variations] 480 | OutputDefault10=0 481 | OutputType11=Plane 482 | OutputName11=Power-Plane Prints 483 | OutputDocumentPath11= 484 | OutputVariantName11= 485 | OutputDefault11=0 486 | PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 487 | OutputType12=Test Points 488 | OutputName12=Test Point Report 489 | OutputDocumentPath12= 490 | OutputVariantName12= 491 | OutputDefault12=0 492 | 493 | [OutputGroup6] 494 | Name=Report Outputs 495 | Description= 496 | TargetPrinter=Foxit Reader PDF Printer 497 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 498 | OutputType1=BOM_PartType 499 | OutputName1=Bill of Materials 500 | OutputDocumentPath1= 501 | OutputVariantName1=[No Variations] 502 | OutputDefault1=0 503 | PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 504 | OutputType2=ComponentCrossReference 505 | OutputName2=Component Cross Reference Report 506 | OutputDocumentPath2= 507 | OutputVariantName2=[No Variations] 508 | OutputDefault2=0 509 | OutputType3=ReportHierarchy 510 | OutputName3=Report Project Hierarchy 511 | OutputDocumentPath3= 512 | OutputVariantName3=[No Variations] 513 | OutputDefault3=0 514 | OutputType4=Script 515 | OutputName4=Script Output 516 | OutputDocumentPath4= 517 | OutputVariantName4=[No Variations] 518 | OutputDefault4=0 519 | OutputType5=SimpleBOM 520 | OutputName5=Simple BOM 521 | OutputDocumentPath5= 522 | OutputVariantName5=[No Variations] 523 | OutputDefault5=0 524 | OutputType6=SinglePinNetReporter 525 | OutputName6=Report Single Pin Nets 526 | OutputDocumentPath6= 527 | OutputVariantName6=[No Variations] 528 | OutputDefault6=0 529 | 530 | [OutputGroup7] 531 | Name=Other Outputs 532 | Description= 533 | TargetPrinter=Foxit Reader PDF Printer 534 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 535 | OutputType1=Text Print 536 | OutputName1=Text Print 537 | OutputDocumentPath1= 538 | OutputVariantName1= 539 | OutputDefault1=0 540 | PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 541 | OutputType2=Text Print 542 | OutputName2=Text Print 543 | OutputDocumentPath2= 544 | OutputVariantName2= 545 | OutputDefault2=0 546 | PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 547 | OutputType3=Text Print 548 | OutputName3=Text Print 549 | OutputDocumentPath3= 550 | OutputVariantName3= 551 | OutputDefault3=0 552 | PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 553 | OutputType4=Text Print 554 | OutputName4=Text Print 555 | OutputDocumentPath4= 556 | OutputVariantName4= 557 | OutputDefault4=0 558 | PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 559 | OutputType5=Text Print 560 | OutputName5=Text Print 561 | OutputDocumentPath5= 562 | OutputVariantName5= 563 | OutputDefault5=0 564 | PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 565 | OutputType6=Text Print 566 | OutputName6=Text Print 567 | OutputDocumentPath6= 568 | OutputVariantName6= 569 | OutputDefault6=0 570 | PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 571 | OutputType7=Text Print 572 | OutputName7=Text Print 573 | OutputDocumentPath7= 574 | OutputVariantName7= 575 | OutputDefault7=0 576 | PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 577 | OutputType8=Text Print 578 | OutputName8=Text Print 579 | OutputDocumentPath8= 580 | OutputVariantName8= 581 | OutputDefault8=0 582 | PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 583 | OutputType9=Text Print 584 | OutputName9=Text Print 585 | OutputDocumentPath9= 586 | OutputVariantName9= 587 | OutputDefault9=0 588 | PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 589 | OutputType10=Text Print 590 | OutputName10=Text Print 591 | OutputDocumentPath10= 592 | OutputVariantName10= 593 | OutputDefault10=0 594 | PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 595 | OutputType11=Text Print 596 | OutputName11=Text Print 597 | OutputDocumentPath11= 598 | OutputVariantName11= 599 | OutputDefault11=0 600 | PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 601 | OutputType12=Text Print 602 | OutputName12=Text Print 603 | OutputDocumentPath12= 604 | OutputVariantName12= 605 | OutputDefault12=0 606 | PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 607 | OutputType13=Text Print 608 | OutputName13=Text Print 609 | OutputDocumentPath13= 610 | OutputVariantName13= 611 | OutputDefault13=0 612 | PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 613 | OutputType14=Text Print 614 | OutputName14=Text Print 615 | OutputDocumentPath14= 616 | OutputVariantName14= 617 | OutputDefault14=0 618 | PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 619 | OutputType15=Text Print 620 | OutputName15=Text Print 621 | OutputDocumentPath15= 622 | OutputVariantName15= 623 | OutputDefault15=0 624 | PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 625 | OutputType16=Text Print 626 | OutputName16=Text Print 627 | OutputDocumentPath16= 628 | OutputVariantName16= 629 | OutputDefault16=0 630 | PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 631 | OutputType17=Text Print 632 | OutputName17=Text Print 633 | OutputDocumentPath17= 634 | OutputVariantName17= 635 | OutputDefault17=0 636 | PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 637 | OutputType18=Text Print 638 | OutputName18=Text Print 639 | OutputDocumentPath18= 640 | OutputVariantName18= 641 | OutputDefault18=0 642 | PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 643 | OutputType19=Text Print 644 | OutputName19=Text Print 645 | OutputDocumentPath19= 646 | OutputVariantName19= 647 | OutputDefault19=0 648 | PageOptions19=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 649 | OutputType20=Text Print 650 | OutputName20=Text Print 651 | OutputDocumentPath20= 652 | OutputVariantName20= 653 | OutputDefault20=0 654 | PageOptions20=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 655 | OutputType21=Text Print 656 | OutputName21=Text Print 657 | OutputDocumentPath21= 658 | OutputVariantName21= 659 | OutputDefault21=0 660 | PageOptions21=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 661 | OutputType22=Text Print 662 | OutputName22=Text Print 663 | OutputDocumentPath22= 664 | OutputVariantName22= 665 | OutputDefault22=0 666 | PageOptions22=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 667 | OutputType23=Text Print 668 | OutputName23=Text Print 669 | OutputDocumentPath23= 670 | OutputVariantName23= 671 | OutputDefault23=0 672 | PageOptions23=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 673 | OutputType24=Text Print 674 | OutputName24=Text Print 675 | OutputDocumentPath24= 676 | OutputVariantName24= 677 | OutputDefault24=0 678 | PageOptions24=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 679 | OutputType25=Text Print 680 | OutputName25=Text Print 681 | OutputDocumentPath25= 682 | OutputVariantName25= 683 | OutputDefault25=0 684 | PageOptions25=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 685 | OutputType26=Text Print 686 | OutputName26=Text Print 687 | OutputDocumentPath26= 688 | OutputVariantName26= 689 | OutputDefault26=0 690 | PageOptions26=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 691 | OutputType27=Text Print 692 | OutputName27=Text Print 693 | OutputDocumentPath27= 694 | OutputVariantName27= 695 | OutputDefault27=0 696 | PageOptions27=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 697 | OutputType28=Text Print 698 | OutputName28=Text Print 699 | OutputDocumentPath28= 700 | OutputVariantName28= 701 | OutputDefault28=0 702 | PageOptions28=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 703 | OutputType29=Text Print 704 | OutputName29=Text Print 705 | OutputDocumentPath29= 706 | OutputVariantName29= 707 | OutputDefault29=0 708 | PageOptions29=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 709 | 710 | [OutputGroup8] 711 | Name=Validation Outputs 712 | Description= 713 | TargetPrinter=Foxit Reader PDF Printer 714 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 715 | OutputType1=Component states check 716 | OutputName1=Vault's components states check 717 | OutputDocumentPath1= 718 | OutputVariantName1= 719 | OutputDefault1=0 720 | OutputType2=Configuration compliance 721 | OutputName2=Environment configuration compliance check 722 | OutputDocumentPath2= 723 | OutputVariantName2= 724 | OutputDefault2=0 725 | OutputType3=Design Rules Check 726 | OutputName3=Design Rules Check 727 | OutputDocumentPath3= 728 | OutputVariantName3= 729 | OutputDefault3=0 730 | PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 731 | OutputType4=Differences Report 732 | OutputName4=Differences Report 733 | OutputDocumentPath4= 734 | OutputVariantName4= 735 | OutputDefault4=0 736 | PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 737 | OutputType5=Electrical Rules Check 738 | OutputName5=Electrical Rules Check 739 | OutputDocumentPath5= 740 | OutputVariantName5= 741 | OutputDefault5=0 742 | PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 743 | OutputType6=Footprint Comparison Report 744 | OutputName6=Footprint Comparison Report 745 | OutputDocumentPath6= 746 | OutputVariantName6= 747 | OutputDefault6=0 748 | 749 | [OutputGroup9] 750 | Name=Export Outputs 751 | Description= 752 | TargetPrinter=Foxit Reader PDF Printer 753 | PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 754 | OutputType1=AutoCAD dwg/dxf PCB 755 | OutputName1=AutoCAD dwg/dxf File PCB 756 | OutputDocumentPath1= 757 | OutputVariantName1= 758 | OutputDefault1=0 759 | OutputType2=AutoCAD dwg/dxf Schematic 760 | OutputName2=AutoCAD dwg/dxf File Schematic 761 | OutputDocumentPath2= 762 | OutputVariantName2= 763 | OutputDefault2=0 764 | OutputType3=ExportIDF 765 | OutputName3=Export IDF 766 | OutputDocumentPath3= 767 | OutputVariantName3= 768 | OutputDefault3=0 769 | OutputType4=ExportSTEP 770 | OutputName4=Export STEP 771 | OutputDocumentPath4= 772 | OutputVariantName4=[No Variations] 773 | OutputDefault4=0 774 | OutputType5=NetList Sch 775 | OutputName5=NetList Sch 776 | OutputDocumentPath5= 777 | OutputVariantName5= 778 | OutputDefault5=0 779 | 780 | [Modification Levels] 781 | Type1=1 782 | Type2=1 783 | Type3=1 784 | Type4=1 785 | Type5=1 786 | Type6=1 787 | Type7=1 788 | Type8=1 789 | Type9=1 790 | Type10=1 791 | Type11=1 792 | Type12=1 793 | Type13=1 794 | Type14=1 795 | Type15=1 796 | Type16=1 797 | Type17=1 798 | Type18=1 799 | Type19=1 800 | Type20=1 801 | Type21=1 802 | Type22=1 803 | Type23=1 804 | Type24=1 805 | Type25=1 806 | Type26=1 807 | Type27=1 808 | Type28=1 809 | Type29=1 810 | Type30=1 811 | Type31=1 812 | Type32=1 813 | Type33=1 814 | Type34=1 815 | Type35=1 816 | Type36=1 817 | Type37=1 818 | Type38=1 819 | Type39=1 820 | Type40=1 821 | Type41=1 822 | Type42=1 823 | Type43=1 824 | Type44=1 825 | Type45=1 826 | Type46=1 827 | Type47=1 828 | Type48=1 829 | Type49=1 830 | Type50=1 831 | Type51=1 832 | Type52=1 833 | Type53=1 834 | Type54=1 835 | Type55=1 836 | Type56=1 837 | Type57=1 838 | Type58=1 839 | Type59=1 840 | Type60=1 841 | Type61=1 842 | Type62=1 843 | Type63=1 844 | Type64=1 845 | Type65=1 846 | Type66=1 847 | Type67=1 848 | Type68=1 849 | Type69=1 850 | Type70=1 851 | Type71=1 852 | Type72=1 853 | Type73=1 854 | Type74=1 855 | Type75=1 856 | Type76=1 857 | Type77=1 858 | Type78=1 859 | Type79=1 860 | Type80=1 861 | 862 | [Difference Levels] 863 | Type1=1 864 | Type2=1 865 | Type3=1 866 | Type4=1 867 | Type5=1 868 | Type6=1 869 | Type7=1 870 | Type8=1 871 | Type9=1 872 | Type10=1 873 | Type11=1 874 | Type12=1 875 | Type13=1 876 | Type14=1 877 | Type15=1 878 | Type16=1 879 | Type17=1 880 | Type18=1 881 | Type19=1 882 | Type20=1 883 | Type21=1 884 | Type22=1 885 | Type23=1 886 | Type24=1 887 | Type25=1 888 | Type26=1 889 | Type27=1 890 | Type28=1 891 | Type29=1 892 | Type30=1 893 | Type31=1 894 | Type32=1 895 | Type33=1 896 | Type34=1 897 | Type35=1 898 | Type36=1 899 | Type37=1 900 | Type38=1 901 | Type39=1 902 | Type40=1 903 | Type41=1 904 | Type42=1 905 | Type43=1 906 | Type44=0 907 | Type45=1 908 | 909 | [Electrical Rules Check] 910 | Type1=1 911 | Type2=1 912 | Type3=2 913 | Type4=1 914 | Type5=2 915 | Type6=2 916 | Type7=1 917 | Type8=1 918 | Type9=1 919 | Type10=1 920 | Type11=2 921 | Type12=2 922 | Type13=2 923 | Type14=1 924 | Type15=1 925 | Type16=1 926 | Type17=1 927 | Type18=1 928 | Type19=1 929 | Type20=1 930 | Type21=1 931 | Type22=1 932 | Type23=1 933 | Type24=1 934 | Type25=2 935 | Type26=2 936 | Type27=2 937 | Type28=1 938 | Type29=1 939 | Type30=1 940 | Type31=1 941 | Type32=2 942 | Type33=2 943 | Type34=2 944 | Type35=1 945 | Type36=2 946 | Type37=1 947 | Type38=2 948 | Type39=2 949 | Type40=2 950 | Type41=0 951 | Type42=2 952 | Type43=1 953 | Type44=1 954 | Type45=2 955 | Type46=1 956 | Type47=2 957 | Type48=2 958 | Type49=1 959 | Type50=2 960 | Type51=1 961 | Type52=1 962 | Type53=1 963 | Type54=1 964 | Type55=1 965 | Type56=2 966 | Type57=1 967 | Type58=1 968 | Type59=2 969 | Type60=1 970 | Type61=2 971 | Type62=2 972 | Type63=1 973 | Type64=0 974 | Type65=2 975 | Type66=3 976 | Type67=2 977 | Type68=2 978 | Type69=1 979 | Type70=2 980 | Type71=2 981 | Type72=2 982 | Type73=2 983 | Type74=1 984 | Type75=2 985 | Type76=1 986 | Type77=1 987 | Type78=1 988 | Type79=1 989 | Type80=2 990 | Type81=3 991 | Type82=3 992 | Type83=3 993 | Type84=3 994 | Type85=3 995 | Type86=2 996 | Type87=2 997 | Type88=2 998 | Type89=1 999 | Type90=1 1000 | Type91=3 1001 | Type92=3 1002 | Type93=2 1003 | Type94=2 1004 | Type95=2 1005 | Type96=2 1006 | Type97=2 1007 | Type98=0 1008 | Type99=1 1009 | Type100=2 1010 | Type101=1 1011 | Type102=2 1012 | Type103=2 1013 | Type104=1 1014 | Type105=2 1015 | Type106=2 1016 | Type107=2 1017 | Type108=2 1018 | Type109=1 1019 | Type110=1 1020 | Type111=1 1021 | 1022 | [ERC Connection Matrix] 1023 | L1=NNNNNNNNNNNWNNNWW 1024 | L2=NNWNNNNWWWNWNWNWN 1025 | L3=NWEENEEEENEWNEEWN 1026 | L4=NNENNNWEENNWNENWN 1027 | L5=NNNNNNNNNNNNNNNNN 1028 | L6=NNENNNNEENNWNENWN 1029 | L7=NNEWNNWEENNWNENWN 1030 | L8=NWEENEENEEENNEENN 1031 | L9=NWEENEEEENEWNEEWW 1032 | L10=NWNNNNNENNEWNNEWN 1033 | L11=NNENNNNEEENWNENWN 1034 | L12=WWWWNWWNWWWNWWWNN 1035 | L13=NNNNNNNNNNNWNNNWW 1036 | L14=NWEENEEEENEWNEEWW 1037 | L15=NNENNNNEEENWNENWW 1038 | L16=WWWWNWWNWWWNWWWNW 1039 | L17=WNNNNNNNWNNNWWWWN 1040 | 1041 | [Annotate] 1042 | SortOrder=3 1043 | SortLocation=0 1044 | MatchParameter1=Comment 1045 | MatchStrictly1=1 1046 | MatchParameter2=Library Reference 1047 | MatchStrictly2=1 1048 | PhysicalNamingFormat=$Component_$RoomName 1049 | GlobalIndexSortOrder=3 1050 | GlobalIndexSortLocation=0 1051 | 1052 | [PrjClassGen] 1053 | CompClassManualEnabled=0 1054 | CompClassManualRoomEnabled=0 1055 | NetClassAutoBusEnabled=0 1056 | NetClassAutoCompEnabled=0 1057 | NetClassAutoNamedHarnessEnabled=0 1058 | NetClassManualEnabled=0 1059 | NetClassSeparateForBusSections=0 1060 | 1061 | [LibraryUpdateOptions] 1062 | SelectedOnly=0 1063 | UpdateVariants=1 1064 | PartTypes=0 1065 | ComponentLibIdentifierKind0=Library Name And Type 1066 | ComponentLibraryIdentifier0=Testing.DbLib/Blad1$ 1067 | ComponentDesignItemID0=18n/NP0 1068 | ComponentSymbolReference0=CA_STD_NonPolar 1069 | ComponentUpdate0=1 1070 | ComponentIsDeviceSheet0=0 1071 | ComponentLibIdentifierKind1=Library Name And Type 1072 | ComponentLibraryIdentifier1=Testing.DbLib/Blad1$ 1073 | ComponentDesignItemID1=CNXH006M1 1074 | ComponentSymbolReference1=CN_JST-B6B-XH-A 1075 | ComponentUpdate1=1 1076 | ComponentIsDeviceSheet1=0 1077 | ComponentLibIdentifierKind2=Library Name And Type 1078 | ComponentLibraryIdentifier2=Testing.DbLib/Blad1$ 1079 | ComponentDesignItemID2=NFC_Class6_coil 1080 | ComponentSymbolReference2=CL_STD_PlanarCoil 1081 | ComponentUpdate2=1 1082 | ComponentIsDeviceSheet2=0 1083 | ComponentLibIdentifierKind3=Library Name And Type 1084 | ComponentLibraryIdentifier3=Testing.DbLib/Blad1$ 1085 | ComponentDesignItemID3=NT3H1101W0FTT 1086 | ComponentSymbolReference3=IC_NT3H1x01 1087 | ComponentUpdate3=1 1088 | ComponentIsDeviceSheet3=0 1089 | ComponentLibIdentifierKind4=Library Name And Type 1090 | ComponentLibraryIdentifier4=Testing.DbLib/Blad1$ 1091 | ComponentDesignItemID4=pcb_nr 1092 | ComponentSymbolReference4=BD_PCB 1093 | ComponentUpdate4=1 1094 | ComponentIsDeviceSheet4=0 1095 | ComponentLibIdentifierKind5=Library Name And Type 1096 | ComponentLibraryIdentifier5=Testing.DbLib/Blad1$ 1097 | ComponentDesignItemID5=YRES3K3 1098 | ComponentSymbolReference5=RE_STD_Resistor 1099 | ComponentUpdate5=1 1100 | ComponentIsDeviceSheet5=0 1101 | ComponentLibIdentifierKind6=Library Name And Type 1102 | ComponentLibraryIdentifier6=Traficon_TIS_CT.DbLib/Traficon 1103 | ComponentDesignItemID6=YCAM100N 1104 | ComponentSymbolReference6=CA_STD_NonPolar 1105 | ComponentUpdate6=1 1106 | ComponentIsDeviceSheet6=0 1107 | FullReplace=1 1108 | UpdateDesignatorLock=1 1109 | UpdatePartIDLock=1 1110 | PreserveParameterLocations=1 1111 | PreserveParameterVisibility=1 1112 | DoGraphics=1 1113 | DoParameters=1 1114 | DoModels=1 1115 | AddParameters=0 1116 | RemoveParameters=0 1117 | AddModels=1 1118 | RemoveModels=1 1119 | UpdateCurrentModels=1 1120 | ParameterName0=3D_model 1121 | ParameterUpdate0=1 1122 | ParameterName1=Article 1123 | ParameterUpdate1=1 1124 | ParameterName2=Catalogus_Nr 1125 | ParameterUpdate2=1 1126 | ParameterName3=Category 1127 | ParameterUpdate3=1 1128 | ParameterName4=Comment 1129 | ParameterUpdate4=1 1130 | ParameterName5=Component Kind 1131 | ParameterUpdate5=1 1132 | ParameterName6=ComponentLink1Description 1133 | ParameterUpdate6=1 1134 | ParameterName7=ComponentLink1URL 1135 | ParameterUpdate7=1 1136 | ParameterName8=Cost 1137 | ParameterUpdate8=1 1138 | ParameterName9=Description 1139 | ParameterUpdate9=1 1140 | ParameterName10=Library Reference 1141 | ParameterUpdate10=1 1142 | ParameterName11=Order Code 1143 | ParameterUpdate11=1 1144 | ParameterName12=Property 1 1145 | ParameterUpdate12=1 1146 | ParameterName13=Property 2 1147 | ParameterUpdate13=1 1148 | ParameterName14=Property 3 1149 | ParameterUpdate14=1 1150 | ParameterName15=Status 1151 | ParameterUpdate15=1 1152 | ParameterName16=Sub Category 1153 | ParameterUpdate16=1 1154 | ParameterName17=Value 1155 | ParameterUpdate17=1 1156 | ModelTypeGroup0=PCBLIB 1157 | ModelTypeUpdate0=1 1158 | ModelType0=PCBLIB 1159 | ModelName0=CA_STD1206_H16 1160 | ModelUpdate0=1 1161 | ModelType1=PCBLIB 1162 | ModelName1=CL_NFC_Class6 1163 | ModelUpdate1=1 1164 | ModelType2=PCBLIB 1165 | ModelName2=CN_JST-B6B-XH 1166 | ModelUpdate2=1 1167 | ModelType3=PCBLIB 1168 | ModelName3=MC_BoardNr 1169 | ModelUpdate3=1 1170 | ModelType4=PCBLIB 1171 | ModelName4=RE_STD1206_H6 1172 | ModelUpdate4=1 1173 | ModelType5=PCBLIB 1174 | ModelName5=SC_TSSOP8 1175 | ModelUpdate5=1 1176 | 1177 | [DatabaseUpdateOptions] 1178 | SelectedOnly=0 1179 | UpdateVariants=1 1180 | PartTypes=0 1181 | 1182 | [Comparison Options] 1183 | ComparisonOptions0=Kind=Net|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 1184 | ComparisonOptions1=Kind=Net Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 1185 | ComparisonOptions2=Kind=Component Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 1186 | ComparisonOptions3=Kind=Rule|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 1187 | ComparisonOptions4=Kind=Differential Pair|MinPercent=50|MinMatch=1|ShowMatch=0|Confirm=0|UseName=0|InclAllRules=0 1188 | ComparisonOptions5=Kind=Code Memory|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 1189 | 1190 | [SmartPDF] 1191 | PageOptions=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9 1192 | 1193 | --------------------------------------------------------------------------------