Dreamforce 2014 Workshop RFID Case Generator - FRDM-K64F
Dependencies: EndpointMain-rfid EthernetInterface StatusReporter BufferedSerial mbed-rtos mbed Logger C12832
Fork of df-2014-workshop-rfid-case-generator-ublox by
main.cpp@0:df2aa79c64f2, 2014-08-23 (annotated)
- Committer:
- ansond
- Date:
- Sat Aug 23 20:17:18 2014 +0000
- Revision:
- 0:df2aa79c64f2
- Child:
- 3:03108e424931
initial checkin
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ansond | 0:df2aa79c64f2 | 1 | /* Copyright C2014 ARM, MIT License |
ansond | 0:df2aa79c64f2 | 2 | * |
ansond | 0:df2aa79c64f2 | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
ansond | 0:df2aa79c64f2 | 4 | * and associated documentation files the "Software", to deal in the Software without restriction, |
ansond | 0:df2aa79c64f2 | 5 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
ansond | 0:df2aa79c64f2 | 6 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
ansond | 0:df2aa79c64f2 | 7 | * furnished to do so, subject to the following conditions: |
ansond | 0:df2aa79c64f2 | 8 | * |
ansond | 0:df2aa79c64f2 | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
ansond | 0:df2aa79c64f2 | 10 | * substantial portions of the Software. |
ansond | 0:df2aa79c64f2 | 11 | * |
ansond | 0:df2aa79c64f2 | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
ansond | 0:df2aa79c64f2 | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
ansond | 0:df2aa79c64f2 | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
ansond | 0:df2aa79c64f2 | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
ansond | 0:df2aa79c64f2 | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
ansond | 0:df2aa79c64f2 | 17 | */ |
ansond | 0:df2aa79c64f2 | 18 | |
ansond | 0:df2aa79c64f2 | 19 | // our definitions |
ansond | 0:df2aa79c64f2 | 20 | #include "Definitions.h" |
ansond | 0:df2aa79c64f2 | 21 | |
ansond | 0:df2aa79c64f2 | 22 | // RFID Reader - on P14 pin |
ansond | 0:df2aa79c64f2 | 23 | #include "ID12RFID.h" |
ansond | 0:df2aa79c64f2 | 24 | ID12RFID rfid_reader(p14); |
ansond | 0:df2aa79c64f2 | 25 | |
ansond | 0:df2aa79c64f2 | 26 | // Salesforce Case Generator |
ansond | 0:df2aa79c64f2 | 27 | #include "SalesForceCaseGenerator.h" |
ansond | 0:df2aa79c64f2 | 28 | |
ansond | 0:df2aa79c64f2 | 29 | // our Logger |
ansond | 0:df2aa79c64f2 | 30 | #include "Logger.h" |
ansond | 0:df2aa79c64f2 | 31 | |
ansond | 0:df2aa79c64f2 | 32 | // our WidgetDB |
ansond | 0:df2aa79c64f2 | 33 | #include "WidgetDB.h" |
ansond | 0:df2aa79c64f2 | 34 | |
ansond | 0:df2aa79c64f2 | 35 | // our LCD Panel |
ansond | 0:df2aa79c64f2 | 36 | #include "C12832_lcd.h" |
ansond | 0:df2aa79c64f2 | 37 | C12832_LCD lcd; |
ansond | 0:df2aa79c64f2 | 38 | |
ansond | 0:df2aa79c64f2 | 39 | // our Serial port |
ansond | 0:df2aa79c64f2 | 40 | #include "Serial.h" |
ansond | 0:df2aa79c64f2 | 41 | Serial pc(USBTX, USBRX); |
ansond | 0:df2aa79c64f2 | 42 | |
ansond | 0:df2aa79c64f2 | 43 | // Main Entry... |
ansond | 0:df2aa79c64f2 | 44 | int main() { |
ansond | 0:df2aa79c64f2 | 45 | // create our object instances |
ansond | 0:df2aa79c64f2 | 46 | Logger logger(&pc,&lcd); |
ansond | 0:df2aa79c64f2 | 47 | |
ansond | 0:df2aa79c64f2 | 48 | // announce |
ansond | 0:df2aa79c64f2 | 49 | logger.log("DF 2014 RFID Reader\r\nVersion: %s",APP_VERSION); |
ansond | 0:df2aa79c64f2 | 50 | |
ansond | 0:df2aa79c64f2 | 51 | // create the WidgetDB |
ansond | 0:df2aa79c64f2 | 52 | WidgetDB db; |
ansond | 0:df2aa79c64f2 | 53 | |
ansond | 0:df2aa79c64f2 | 54 | // create the Salesforce Case Generator |
ansond | 0:df2aa79c64f2 | 55 | SalesForceCaseGenerator case_generator(&logger); |
ansond | 0:df2aa79c64f2 | 56 | |
ansond | 0:df2aa79c64f2 | 57 | // Enter the main loop |
ansond | 0:df2aa79c64f2 | 58 | while(true) { |
ansond | 0:df2aa79c64f2 | 59 | // look for a readable RFID tag |
ansond | 0:df2aa79c64f2 | 60 | if(rfid_reader.readable()) { |
ansond | 0:df2aa79c64f2 | 61 | // capture the RFID id... |
ansond | 0:df2aa79c64f2 | 62 | int rfid = rfid_reader.read(); |
ansond | 0:df2aa79c64f2 | 63 | logger.log("RFID: %d found...\r\nProcessing...",rfid); |
ansond | 0:df2aa79c64f2 | 64 | |
ansond | 0:df2aa79c64f2 | 65 | // look it up in our WidgetDB... proceed only if we find something we know about... |
ansond | 0:df2aa79c64f2 | 66 | char *name = db.lookupWidgetName(rfid); |
ansond | 0:df2aa79c64f2 | 67 | if (name != NULL) { |
ansond | 0:df2aa79c64f2 | 68 | // build out a simple subject for the case |
ansond | 0:df2aa79c64f2 | 69 | char subject[MAX_NAME_LENGTH+1]; |
ansond | 0:df2aa79c64f2 | 70 | memset(subject,0,MAX_NAME_LENGTH+1); |
ansond | 0:df2aa79c64f2 | 71 | sprintf(subject,"Widget %s detected",name); |
ansond | 0:df2aa79c64f2 | 72 | |
ansond | 0:df2aa79c64f2 | 73 | // create and dispatch a case |
ansond | 0:df2aa79c64f2 | 74 | bool success = case_generator.createCase(subject,db.lookupWidgetDescription(rfid)); |
ansond | 0:df2aa79c64f2 | 75 | if (success == true) { |
ansond | 0:df2aa79c64f2 | 76 | logger.log("Case Generated!"); |
ansond | 0:df2aa79c64f2 | 77 | } |
ansond | 0:df2aa79c64f2 | 78 | else { |
ansond | 0:df2aa79c64f2 | 79 | logger.log("Case Generation FAILED"); |
ansond | 0:df2aa79c64f2 | 80 | } |
ansond | 0:df2aa79c64f2 | 81 | } |
ansond | 0:df2aa79c64f2 | 82 | else { |
ansond | 0:df2aa79c64f2 | 83 | // unrecognized RFID |
ansond | 0:df2aa79c64f2 | 84 | logger.log("RFID unknown. Ignoring..."); |
ansond | 0:df2aa79c64f2 | 85 | } |
ansond | 0:df2aa79c64f2 | 86 | } |
ansond | 0:df2aa79c64f2 | 87 | |
ansond | 0:df2aa79c64f2 | 88 | // wait a bit and look again |
ansond | 0:df2aa79c64f2 | 89 | wait_ms(WAIT_TIME_MS); |
ansond | 0:df2aa79c64f2 | 90 | } |
ansond | 0:df2aa79c64f2 | 91 | } |