Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of FINAL_PROJECT_4180 by
FPScanner.h@14:ca57ad53761b, 2016-11-23 (annotated)
- Committer:
- xemnas214
- Date:
- Wed Nov 23 01:07:10 2016 +0000
- Revision:
- 14:ca57ad53761b
- Parent:
- 2:1b1c0502bb08
iotlockkkk;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nyengele | 2:1b1c0502bb08 | 1 | /* |
nyengele | 2:1b1c0502bb08 | 2 | FPScanner.h v1.0 - Library for controlling the GT-511C3 Finger Print Scanner (FPS) |
nyengele | 2:1b1c0502bb08 | 3 | Created by Josh Hawley, July 23rd 2013 |
nyengele | 2:1b1c0502bb08 | 4 | Licensed for non-commercial use, must include this license message |
nyengele | 2:1b1c0502bb08 | 5 | basically, Feel free to hack away at it, but just give me credit for my work =) |
nyengele | 2:1b1c0502bb08 | 6 | TLDR; Wil Wheaton's Law |
nyengele | 2:1b1c0502bb08 | 7 | */ |
nyengele | 2:1b1c0502bb08 | 8 | |
nyengele | 2:1b1c0502bb08 | 9 | #ifndef FPScanner_H |
nyengele | 2:1b1c0502bb08 | 10 | #define FPScanner_H |
nyengele | 2:1b1c0502bb08 | 11 | |
nyengele | 2:1b1c0502bb08 | 12 | #include "mbed.h" |
nyengele | 2:1b1c0502bb08 | 13 | |
nyengele | 2:1b1c0502bb08 | 14 | typedef uint8_t byte; |
nyengele | 2:1b1c0502bb08 | 15 | typedef uint16_t word; |
nyengele | 2:1b1c0502bb08 | 16 | |
nyengele | 2:1b1c0502bb08 | 17 | |
nyengele | 2:1b1c0502bb08 | 18 | class Command_Packet |
nyengele | 2:1b1c0502bb08 | 19 | { |
nyengele | 2:1b1c0502bb08 | 20 | public: |
nyengele | 2:1b1c0502bb08 | 21 | class Commands |
nyengele | 2:1b1c0502bb08 | 22 | { |
nyengele | 2:1b1c0502bb08 | 23 | public: |
nyengele | 2:1b1c0502bb08 | 24 | enum Commands_Enum |
nyengele | 2:1b1c0502bb08 | 25 | { |
nyengele | 2:1b1c0502bb08 | 26 | NotSet = 0x00, // Default value for enum. Scanner will return error if sent this. |
nyengele | 2:1b1c0502bb08 | 27 | Open = 0x01, // Open Initialization |
nyengele | 2:1b1c0502bb08 | 28 | Close = 0x02, // Close Termination |
nyengele | 2:1b1c0502bb08 | 29 | UsbInternalCheck = 0x03, // UsbInternalCheck Check if the connected USB device is valid |
nyengele | 2:1b1c0502bb08 | 30 | ChangeEBaudRate = 0x04, // ChangeBaudrate Change UART baud rate |
nyengele | 2:1b1c0502bb08 | 31 | SetIAPMode = 0x05, // SetIAPMode Enter IAP Mode In this mode, FW Upgrade is available |
nyengele | 2:1b1c0502bb08 | 32 | CmosLed = 0x12, // CmosLed Control CMOS LED |
nyengele | 2:1b1c0502bb08 | 33 | GetEnrollCount = 0x20, // Get enrolled fingerprint count |
nyengele | 2:1b1c0502bb08 | 34 | CheckEnrolled = 0x21, // Check whether the specified ID is already enrolled |
nyengele | 2:1b1c0502bb08 | 35 | EnrollStart = 0x22, // Start an enrollment |
nyengele | 2:1b1c0502bb08 | 36 | Enroll1 = 0x23, // Make 1st template for an enrollment |
nyengele | 2:1b1c0502bb08 | 37 | Enroll2 = 0x24, // Make 2nd template for an enrollment |
nyengele | 2:1b1c0502bb08 | 38 | Enroll3 = 0x25, // Make 3rd template for an enrollment, merge three templates into one template, save merged template to the database |
nyengele | 2:1b1c0502bb08 | 39 | IsPressFinger = 0x26, // Check if a finger is placed on the sensor |
nyengele | 2:1b1c0502bb08 | 40 | DeleteID = 0x40, // Delete the fingerprint with the specified ID |
nyengele | 2:1b1c0502bb08 | 41 | DeleteAll = 0x41, // Delete all fingerprints from the database |
nyengele | 2:1b1c0502bb08 | 42 | Verify1_1 = 0x50, // Verification of the capture fingerprint image with the specified ID |
nyengele | 2:1b1c0502bb08 | 43 | Identify1_N = 0x51, // Identification of the capture fingerprint image with the database |
nyengele | 2:1b1c0502bb08 | 44 | VerifyTemplate1_1 = 0x52, // Verification of a fingerprint template with the specified ID |
nyengele | 2:1b1c0502bb08 | 45 | IdentifyTemplate1_N = 0x53, // Identification of a fingerprint template with the database |
nyengele | 2:1b1c0502bb08 | 46 | CaptureFinger = 0x60, // Capture a fingerprint image(256x256) from the sensor |
nyengele | 2:1b1c0502bb08 | 47 | MakeTemplate = 0x61, // Make template for transmission |
nyengele | 2:1b1c0502bb08 | 48 | GetImage = 0x62, // Download the captured fingerprint image(256x256) |
nyengele | 2:1b1c0502bb08 | 49 | GetRawImage = 0x63, // Capture & Download raw fingerprint image(320x240) |
nyengele | 2:1b1c0502bb08 | 50 | GetTemplate = 0x70, // Download the template of the specified ID |
nyengele | 2:1b1c0502bb08 | 51 | SetTemplate = 0x71, // Upload the template of the specified ID |
nyengele | 2:1b1c0502bb08 | 52 | GetDatabaseStart = 0x72, // Start database download, obsolete |
nyengele | 2:1b1c0502bb08 | 53 | GetDatabaseEnd = 0x73, // End database download, obsolete |
nyengele | 2:1b1c0502bb08 | 54 | UpgradeFirmware = 0x80, // Not supported |
nyengele | 2:1b1c0502bb08 | 55 | UpgradeISOCDImage = 0x81, // Not supported |
nyengele | 2:1b1c0502bb08 | 56 | Ack = 0x30, // Acknowledge. |
nyengele | 2:1b1c0502bb08 | 57 | Nack = 0x31 // Non-acknowledge |
nyengele | 2:1b1c0502bb08 | 58 | }; |
nyengele | 2:1b1c0502bb08 | 59 | }; |
nyengele | 2:1b1c0502bb08 | 60 | |
nyengele | 2:1b1c0502bb08 | 61 | Commands::Commands_Enum Command; |
nyengele | 2:1b1c0502bb08 | 62 | byte Parameter[4]; // Parameter 4 bytes, changes meaning depending on command |
nyengele | 2:1b1c0502bb08 | 63 | byte* GetPacketBytes(); // returns the bytes to be transmitted |
nyengele | 2:1b1c0502bb08 | 64 | void ParameterFromInt(int i); |
nyengele | 2:1b1c0502bb08 | 65 | |
nyengele | 2:1b1c0502bb08 | 66 | Command_Packet(); |
nyengele | 2:1b1c0502bb08 | 67 | |
nyengele | 2:1b1c0502bb08 | 68 | private: |
nyengele | 2:1b1c0502bb08 | 69 | static const byte COMMAND_START_CODE_1 = 0x55; // Static byte to mark the beginning of a command packet - never changes |
nyengele | 2:1b1c0502bb08 | 70 | static const byte COMMAND_START_CODE_2 = 0xAA; // Static byte to mark the beginning of a command packet - never changes |
nyengele | 2:1b1c0502bb08 | 71 | static const byte COMMAND_DEVICE_ID_1 = 0x01; // Device ID Byte 1 (lesser byte) - theoretically never changes |
nyengele | 2:1b1c0502bb08 | 72 | static const byte COMMAND_DEVICE_ID_2 = 0x00; // Device ID Byte 2 (greater byte) - theoretically never changes |
nyengele | 2:1b1c0502bb08 | 73 | byte command[2]; // Command 2 bytes |
nyengele | 2:1b1c0502bb08 | 74 | |
nyengele | 2:1b1c0502bb08 | 75 | word _CalculateChecksum(); // Checksum is calculated using byte addition |
nyengele | 2:1b1c0502bb08 | 76 | byte GetHighByte(word w); |
nyengele | 2:1b1c0502bb08 | 77 | byte GetLowByte(word w); |
nyengele | 2:1b1c0502bb08 | 78 | }; |
nyengele | 2:1b1c0502bb08 | 79 | |
nyengele | 2:1b1c0502bb08 | 80 | |
nyengele | 2:1b1c0502bb08 | 81 | /* |
nyengele | 2:1b1c0502bb08 | 82 | Response_Packet represents the returned data from the finger print scanner |
nyengele | 2:1b1c0502bb08 | 83 | */ |
nyengele | 2:1b1c0502bb08 | 84 | class Response_Packet |
nyengele | 2:1b1c0502bb08 | 85 | { |
nyengele | 2:1b1c0502bb08 | 86 | public: |
nyengele | 2:1b1c0502bb08 | 87 | class ErrorCodes |
nyengele | 2:1b1c0502bb08 | 88 | { |
nyengele | 2:1b1c0502bb08 | 89 | public: |
nyengele | 2:1b1c0502bb08 | 90 | enum Errors_Enum |
nyengele | 2:1b1c0502bb08 | 91 | { |
nyengele | 2:1b1c0502bb08 | 92 | NO_ERROR = 0x0000, // Default value. no error |
nyengele | 2:1b1c0502bb08 | 93 | NACK_TIMEOUT = 0x1001, // Obsolete, capture timeout |
nyengele | 2:1b1c0502bb08 | 94 | NACK_INVALID_BAUDRATE = 0x1002, // Obsolete, Invalid serial baud rate |
nyengele | 2:1b1c0502bb08 | 95 | NACK_INVALID_POS = 0x1003, // The specified ID is not between 0~199 |
nyengele | 2:1b1c0502bb08 | 96 | NACK_IS_NOT_USED = 0x1004, // The specified ID is not used |
nyengele | 2:1b1c0502bb08 | 97 | NACK_IS_ALREADY_USED = 0x1005, // The specified ID is already used |
nyengele | 2:1b1c0502bb08 | 98 | NACK_COMM_ERR = 0x1006, // Communication Error |
nyengele | 2:1b1c0502bb08 | 99 | NACK_VERIFY_FAILED = 0x1007, // 1:1 Verification Failure |
nyengele | 2:1b1c0502bb08 | 100 | NACK_IDENTIFY_FAILED = 0x1008, // 1:N Identification Failure |
nyengele | 2:1b1c0502bb08 | 101 | NACK_DB_IS_FULL = 0x1009, // The database is full |
nyengele | 2:1b1c0502bb08 | 102 | NACK_DB_IS_EMPTY = 0x100A, // The database is empty |
nyengele | 2:1b1c0502bb08 | 103 | NACK_TURN_ERR = 0x100B, // Obsolete, Invalid order of the enrollment (The order was not as: EnrollStart -> Enroll1 -> Enroll2 -> Enroll3) |
nyengele | 2:1b1c0502bb08 | 104 | NACK_BAD_FINGER = 0x100C, // Too bad fingerprint |
nyengele | 2:1b1c0502bb08 | 105 | NACK_ENROLL_FAILED = 0x100D, // Enrollment Failure |
nyengele | 2:1b1c0502bb08 | 106 | NACK_IS_NOT_SUPPORTED = 0x100E, // The specified command is not supported |
nyengele | 2:1b1c0502bb08 | 107 | NACK_DEV_ERR = 0x100F, // Device Error, especially if Crypto-Chip is trouble |
nyengele | 2:1b1c0502bb08 | 108 | NACK_CAPTURE_CANCELED = 0x1010, // Obsolete, The capturing is canceled |
nyengele | 2:1b1c0502bb08 | 109 | NACK_INVALID_PARAM = 0x1011, // Invalid parameter |
nyengele | 2:1b1c0502bb08 | 110 | NACK_FINGER_IS_NOT_PRESSED = 0x1012, // Finger is not pressed |
nyengele | 2:1b1c0502bb08 | 111 | INVALID = 0XFFFF // Used when parsing fails |
nyengele | 2:1b1c0502bb08 | 112 | }; |
nyengele | 2:1b1c0502bb08 | 113 | |
nyengele | 2:1b1c0502bb08 | 114 | static Errors_Enum ParseFromBytes(byte high, byte low); |
nyengele | 2:1b1c0502bb08 | 115 | }; |
nyengele | 2:1b1c0502bb08 | 116 | Response_Packet(byte* buffer); |
nyengele | 2:1b1c0502bb08 | 117 | ErrorCodes::Errors_Enum Error; |
nyengele | 2:1b1c0502bb08 | 118 | byte RawBytes[12]; |
nyengele | 2:1b1c0502bb08 | 119 | byte ParameterBytes[4]; |
nyengele | 2:1b1c0502bb08 | 120 | byte ResponseBytes[2]; |
nyengele | 2:1b1c0502bb08 | 121 | bool ACK; |
nyengele | 2:1b1c0502bb08 | 122 | static const byte COMMAND_START_CODE_1 = 0x55; // Static byte to mark the beginning of a command packet - never changes |
nyengele | 2:1b1c0502bb08 | 123 | static const byte COMMAND_START_CODE_2 = 0xAA; // Static byte to mark the beginning of a command packet - never changes |
nyengele | 2:1b1c0502bb08 | 124 | static const byte COMMAND_DEVICE_ID_1 = 0x01; // Device ID Byte 1 (lesser byte) - theoretically never changes |
nyengele | 2:1b1c0502bb08 | 125 | static const byte COMMAND_DEVICE_ID_2 = 0x00; // Device ID Byte 2 (greater byte) - theoretically never changes |
nyengele | 2:1b1c0502bb08 | 126 | int IntFromParameter(); |
nyengele | 2:1b1c0502bb08 | 127 | |
nyengele | 2:1b1c0502bb08 | 128 | private: |
nyengele | 2:1b1c0502bb08 | 129 | bool CheckParsing(byte b, byte propervalue, byte alternatevalue); |
nyengele | 2:1b1c0502bb08 | 130 | word CalculateChecksum(byte* buffer, int length); |
nyengele | 2:1b1c0502bb08 | 131 | byte GetHighByte(word w); |
nyengele | 2:1b1c0502bb08 | 132 | byte GetLowByte(word w); |
nyengele | 2:1b1c0502bb08 | 133 | }; |
nyengele | 2:1b1c0502bb08 | 134 | |
nyengele | 2:1b1c0502bb08 | 135 | |
nyengele | 2:1b1c0502bb08 | 136 | /* |
nyengele | 2:1b1c0502bb08 | 137 | Object for controlling the GT-511C3 Finger Print Scanner (FPS) |
nyengele | 2:1b1c0502bb08 | 138 | */ |
nyengele | 2:1b1c0502bb08 | 139 | class FPScanner |
nyengele | 2:1b1c0502bb08 | 140 | { |
nyengele | 2:1b1c0502bb08 | 141 | |
nyengele | 2:1b1c0502bb08 | 142 | public: |
nyengele | 2:1b1c0502bb08 | 143 | |
nyengele | 2:1b1c0502bb08 | 144 | // Creates a new object to interface with the fingerprint scanner |
nyengele | 2:1b1c0502bb08 | 145 | FPScanner(PinName tx, PinName rx); |
nyengele | 2:1b1c0502bb08 | 146 | |
nyengele | 2:1b1c0502bb08 | 147 | //Initialises the device and gets ready for commands |
nyengele | 2:1b1c0502bb08 | 148 | void Open(); |
nyengele | 2:1b1c0502bb08 | 149 | |
nyengele | 2:1b1c0502bb08 | 150 | // Does not actually do anything (according to the datasheet) |
nyengele | 2:1b1c0502bb08 | 151 | // I implemented open, so had to do closed too... lol |
nyengele | 2:1b1c0502bb08 | 152 | void Close(); |
nyengele | 2:1b1c0502bb08 | 153 | |
nyengele | 2:1b1c0502bb08 | 154 | // Turns on or off the LED backlight |
nyengele | 2:1b1c0502bb08 | 155 | // LED must be on to see fingerprints |
nyengele | 2:1b1c0502bb08 | 156 | // Parameter: true turns on the backlight, false turns it off |
nyengele | 2:1b1c0502bb08 | 157 | // Returns: True if successful, false if not |
nyengele | 2:1b1c0502bb08 | 158 | bool SetLED(bool on); |
nyengele | 2:1b1c0502bb08 | 159 | |
nyengele | 2:1b1c0502bb08 | 160 | // Changes the baud rate of the connection |
nyengele | 2:1b1c0502bb08 | 161 | // Parameter: 9600 - 115200 |
nyengele | 2:1b1c0502bb08 | 162 | // Returns: True if success, false if invalid baud |
nyengele | 2:1b1c0502bb08 | 163 | // NOTE: Untested (don't have a logic level changer and a voltage divider is too slow) |
nyengele | 2:1b1c0502bb08 | 164 | bool ChangeBaudRate(int baud); |
nyengele | 2:1b1c0502bb08 | 165 | |
nyengele | 2:1b1c0502bb08 | 166 | // Gets the number of enrolled fingerprints |
nyengele | 2:1b1c0502bb08 | 167 | // Return: The total number of enrolled fingerprints |
nyengele | 2:1b1c0502bb08 | 168 | int GetEnrollCount(); |
nyengele | 2:1b1c0502bb08 | 169 | |
nyengele | 2:1b1c0502bb08 | 170 | // checks to see if the ID number is in use or not |
nyengele | 2:1b1c0502bb08 | 171 | // Parameter: 0-199 |
nyengele | 2:1b1c0502bb08 | 172 | // Return: True if the ID number is enrolled, false if not |
nyengele | 2:1b1c0502bb08 | 173 | bool CheckEnrolled(int id); |
nyengele | 2:1b1c0502bb08 | 174 | |
nyengele | 2:1b1c0502bb08 | 175 | // Starts the Enrollment Process |
nyengele | 2:1b1c0502bb08 | 176 | // Parameter: 0-199 |
nyengele | 2:1b1c0502bb08 | 177 | // Return: |
nyengele | 2:1b1c0502bb08 | 178 | // 0 - ACK |
nyengele | 2:1b1c0502bb08 | 179 | // 1 - Database is full |
nyengele | 2:1b1c0502bb08 | 180 | // 2 - Invalid Position |
nyengele | 2:1b1c0502bb08 | 181 | // 3 - Position(ID) is already used |
nyengele | 2:1b1c0502bb08 | 182 | int EnrollStart(int id); |
nyengele | 2:1b1c0502bb08 | 183 | |
nyengele | 2:1b1c0502bb08 | 184 | // Gets the first scan of an enrollment |
nyengele | 2:1b1c0502bb08 | 185 | // Return: |
nyengele | 2:1b1c0502bb08 | 186 | // 0 - ACK |
nyengele | 2:1b1c0502bb08 | 187 | // 1 - Enroll Failed |
nyengele | 2:1b1c0502bb08 | 188 | // 2 - Bad finger |
nyengele | 2:1b1c0502bb08 | 189 | // 3 - ID in use |
nyengele | 2:1b1c0502bb08 | 190 | int Enroll1(); |
nyengele | 2:1b1c0502bb08 | 191 | |
nyengele | 2:1b1c0502bb08 | 192 | // Gets the Second scan of an enrollment |
nyengele | 2:1b1c0502bb08 | 193 | // Return: |
nyengele | 2:1b1c0502bb08 | 194 | // 0 - ACK |
nyengele | 2:1b1c0502bb08 | 195 | // 1 - Enroll Failed |
nyengele | 2:1b1c0502bb08 | 196 | // 2 - Bad finger |
nyengele | 2:1b1c0502bb08 | 197 | // 3 - ID in use |
nyengele | 2:1b1c0502bb08 | 198 | int Enroll2(); |
nyengele | 2:1b1c0502bb08 | 199 | |
nyengele | 2:1b1c0502bb08 | 200 | // Gets the Third scan of an enrollment |
nyengele | 2:1b1c0502bb08 | 201 | // Finishes Enrollment |
nyengele | 2:1b1c0502bb08 | 202 | // Return: |
nyengele | 2:1b1c0502bb08 | 203 | // 0 - ACK |
nyengele | 2:1b1c0502bb08 | 204 | // 1 - Enroll Failed |
nyengele | 2:1b1c0502bb08 | 205 | // 2 - Bad finger |
nyengele | 2:1b1c0502bb08 | 206 | // 3 - ID in use |
nyengele | 2:1b1c0502bb08 | 207 | int Enroll3(); |
nyengele | 2:1b1c0502bb08 | 208 | |
nyengele | 2:1b1c0502bb08 | 209 | // Checks to see if a finger is pressed on the FPS |
nyengele | 2:1b1c0502bb08 | 210 | // Return: true if finger pressed, false if not |
nyengele | 2:1b1c0502bb08 | 211 | bool IsPressFinger(); |
nyengele | 2:1b1c0502bb08 | 212 | |
nyengele | 2:1b1c0502bb08 | 213 | // Deletes the specified ID (enrollment) from the database |
nyengele | 2:1b1c0502bb08 | 214 | // Returns: true if successful, false if position invalid |
nyengele | 2:1b1c0502bb08 | 215 | bool DeleteID(int ID); |
nyengele | 2:1b1c0502bb08 | 216 | |
nyengele | 2:1b1c0502bb08 | 217 | // Deletes all IDs (enrollments) from the database |
nyengele | 2:1b1c0502bb08 | 218 | // Returns: true if successful, false if db is empty |
nyengele | 2:1b1c0502bb08 | 219 | bool DeleteAll(); |
nyengele | 2:1b1c0502bb08 | 220 | |
nyengele | 2:1b1c0502bb08 | 221 | // Checks the currently pressed finger against a specific ID |
nyengele | 2:1b1c0502bb08 | 222 | // Parameter: 0-199 (id number to be checked) |
nyengele | 2:1b1c0502bb08 | 223 | // Returns: |
nyengele | 2:1b1c0502bb08 | 224 | // 0 - Verified OK (the correct finger) |
nyengele | 2:1b1c0502bb08 | 225 | // 1 - Invalid Position |
nyengele | 2:1b1c0502bb08 | 226 | // 2 - ID is not in use |
nyengele | 2:1b1c0502bb08 | 227 | // 3 - Verified FALSE (not the correct finger) |
nyengele | 2:1b1c0502bb08 | 228 | int Verify1_1(int id); |
nyengele | 2:1b1c0502bb08 | 229 | |
nyengele | 2:1b1c0502bb08 | 230 | // Checks the currently pressed finger against all enrolled fingerprints |
nyengele | 2:1b1c0502bb08 | 231 | // Returns: |
nyengele | 2:1b1c0502bb08 | 232 | // 0-199: Verified against the specified ID (found, and here is the ID number) |
nyengele | 2:1b1c0502bb08 | 233 | // 200: Failed to find the fingerprint in the database |
nyengele | 2:1b1c0502bb08 | 234 | int Identify1_N(); |
nyengele | 2:1b1c0502bb08 | 235 | |
nyengele | 2:1b1c0502bb08 | 236 | // Captures the currently pressed finger into onboard ram |
nyengele | 2:1b1c0502bb08 | 237 | // Parameter: true for high quality image(slower), false for low quality image (faster) |
nyengele | 2:1b1c0502bb08 | 238 | // Generally, use high quality for enrollment, and low quality for verification/identification |
nyengele | 2:1b1c0502bb08 | 239 | // Returns: True if ok, false if no finger pressed |
nyengele | 2:1b1c0502bb08 | 240 | bool CaptureFinger(bool highquality); |
nyengele | 2:1b1c0502bb08 | 241 | |
nyengele | 2:1b1c0502bb08 | 242 | |
nyengele | 2:1b1c0502bb08 | 243 | // resets the Data_Packet class, and gets ready to download |
nyengele | 2:1b1c0502bb08 | 244 | // Not implemented due to memory restrictions on the arduino |
nyengele | 2:1b1c0502bb08 | 245 | // may revisit this if I find a need for it |
nyengele | 2:1b1c0502bb08 | 246 | //void StartDataDownload(); |
nyengele | 2:1b1c0502bb08 | 247 | |
nyengele | 2:1b1c0502bb08 | 248 | // Returns the next data packet |
nyengele | 2:1b1c0502bb08 | 249 | // Not implemented due to memory restrictions on the arduino |
nyengele | 2:1b1c0502bb08 | 250 | // may revisit this if I find a need for it |
nyengele | 2:1b1c0502bb08 | 251 | //Data_Packet GetNextDataPacket(); |
nyengele | 2:1b1c0502bb08 | 252 | |
nyengele | 2:1b1c0502bb08 | 253 | private: |
nyengele | 2:1b1c0502bb08 | 254 | void SendCommand(byte cmd[], int length); |
nyengele | 2:1b1c0502bb08 | 255 | Response_Packet* GetResponse(); |
nyengele | 2:1b1c0502bb08 | 256 | PinName pin_RX,pin_TX; |
nyengele | 2:1b1c0502bb08 | 257 | Serial _serial; |
nyengele | 2:1b1c0502bb08 | 258 | }; |
nyengele | 2:1b1c0502bb08 | 259 | |
nyengele | 2:1b1c0502bb08 | 260 | |
nyengele | 2:1b1c0502bb08 | 261 | #endif // FPScanner_H |
nyengele | 2:1b1c0502bb08 | 262 |