Dreamforce 2014 Workshop Exercise - RFID Case Generator
Dependencies: BufferedSerial C12832 EndpointMain-rfid EthernetInterface Logger StatusReporter-df2014 mbed-rtos mbed
Fork of df-2014-workshop-rfid-case-generator-k64f by
Overview
This code demonstrates how to use the mbed platform with a ID-12LA RFID reader and a Freescale K64F to get data into the SalesForce cloud.
This project was generated as a workshop for DreamForce 2014..
Details
The 2014 DreamForce workshop centers around an example scenario where you, as a street light technician, will "check in" to a given street light to service it. The street lights in this example are intelligent - they are connected, have knowledge about who/what they are, and in this example, contain an RFID sensor to allow technicians to "check in" during a service event.
The purpose of the workshop exercise is to provide exposure to new developers that the mbed IDE and development environment/ecosystem is very simple and easy to setup and use. Additionally, the workshop highlights that mbed devices can directly interact with SalesForce. The slides for the workshop can be found here.
For more information about the mbed SalesForce Interface API and its use, please see: http://developer.mbed.org/teams/MBED_DEMOS/code/SalesforceInterface/
Pretty Pictures
For the workshop the mbed team designed breakout boards to connect the ID12LA to the Freescale K64F for ease of use. Pictures of the boards can be found below. If you are interested in the breakout board you can order one from the OSHPark project page or use the eagle or gerber files as you see fit.
The ID-12LA sockets onto the RFID Brekout Board which then is put onto the Freescale K64F.
Revision 6:427c387b10e7, committed 2014-08-27
- Comitter:
- ansond
- Date:
- Wed Aug 27 18:30:05 2014 +0000
- Parent:
- 5:606c2b0be78b
- Child:
- 7:5d6e03557246
- Commit message:
- updates
Changed in this revision
--- a/Definitions.h Wed Aug 27 18:10:18 2014 +0000 +++ b/Definitions.h Wed Aug 27 18:30:05 2014 +0000 @@ -40,6 +40,9 @@ // DF2014 CaseGenerator Relay for mbed - ties into the Salesforce APEX host for case generation #define DF_CASE_GEN_URL "https://df2014-arm-developer-edition.na15.force.com/services/apexrest/CaseService" + // Enable/Disable RFID ID12 usage + #define ID12_ENABLE false // true - enable, false - disable + // Buffer length for HTTPS requests #define BUFFER_LENGTH 256
--- a/SalesforceCaseGenerator.lib Wed Aug 27 18:10:18 2014 +0000 +++ b/SalesforceCaseGenerator.lib Wed Aug 27 18:30:05 2014 +0000 @@ -1,1 +1,1 @@ -SalesforceCaseGenerator#8ad19b204ddf +SalesforceCaseGenerator#f506cc61e09e
--- a/main.cpp Wed Aug 27 18:10:18 2014 +0000 +++ b/main.cpp Wed Aug 27 18:30:05 2014 +0000 @@ -19,9 +19,11 @@ // our definitions #include "Definitions.h" - // RFID Reader - on P14 pin - //#include "ID12RFID.h" - //ID12RFID rfid_reader(p14); + // RFID Reader - on P14 pin + #if ID12_ENABLE + #include "ID12RFID.h" + ID12RFID rfid_reader(p14); + #endif // Salesforce Case Generator #include "SalesForceCaseGenerator.h" @@ -44,6 +46,9 @@ #include "EthernetInterface.h" EthernetInterface ethernet; + // HARD RESET +extern "C" void HardFault_Handler() { NVIC_SystemReset(); } + // Main Entry... int main() { // create our object instances @@ -68,17 +73,19 @@ // create the Salesforce Case Generator SalesForceCaseGenerator case_generator(&logger); - /* // Enter the main loop while(true) { +#if ID12_ENABLE // look for a readable RFID tag + logger.log("RFID: Scanning..."); if(rfid_reader.readable()) { // capture the RFID id... + logger.log("RFID: Found RFID.\r\nReading..."); int rfid = rfid_reader.read(); - logger.log("RFID: %d found...\r\nProcessing...",rfid); + logger.log("RFID: ID %d found...\r\nProcessing...",rfid); // look it up in our WidgetDB... proceed only if we find something we know about... - //char *name = db.lookupWidgetName(rfid); + char *name = db.lookupWidgetName(rfid); if (name != NULL) { // build out a simple subject for the case char subject[MAX_NAME_LENGTH+1]; @@ -99,24 +106,29 @@ logger.log("RFID unknown. Ignoring..."); } } +#else + // simply create and dispatch a single case + logger.log("Creating Case..."); + bool success = case_generator.createCase("sample mbed case","this is a sample mbed case"); + if (success == true) { + logger.log("Case Generated!"); + logger.log("Exiting..."); + exit(1); + } + else { + logger.log("Case Generation FAILED"); + logger.log("Exiting..."); + exit(1); + } +#endif // wait a bit and look again wait_ms(WAIT_TIME_MS); } - - */ - - logger.log("Generating Sample Case..."); - bool success = case_generator.createCase("hello mbed","this is a mbed case dispatch"); - if (success == true) { - logger.log("Case Generated!"); - } - else { - logger.log("Case Generation FAILED"); - } } else { logger.log("No Network... Exiting..."); + exit(1); } // disconnect @@ -124,6 +136,6 @@ ethernet.disconnect(); // Exit - logger.log("Sleeping..."); - while(1) wait(1000); + logger.log("Exiting..."); + exit(1); } \ No newline at end of file