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 Doug Anson

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.

/media/uploads/mbedAustin/rfidboard_-8-.small.jpg

/media/uploads/mbedAustin/rfidboard_-9-.small.jpg

Revision:
6:427c387b10e7
Parent:
4:46459ed734f3
Child:
7:5d6e03557246
--- 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