Dreamforce 2014 Demo of RFID-based Salesforce Case generation for status reporting.

Dependencies:   ID12RFID ReportDB SalesforceCaseGenerator SalesforceInterface

Dependents:   mbed_mqtt_endpoint_ublox_ethernet mbed_mqtt_endpoint_ublox_cellular mbed_nsp_endpoint_ublox_cellular mbed_nsp_endpoint_ublox_ethernet ... more

Files at this revision

API Documentation at this revision

Comitter:
ansond
Date:
Wed Sep 24 18:52:58 2014 +0000
Parent:
15:8a751090bddd
Child:
17:6ae3d86f0c22
Commit message:
updates for temp and lat/long inclusion into case

Changed in this revision

ReportDB.lib Show annotated file Show diff for this revision Revisions of this file
SalesforceCaseGenerator.lib Show annotated file Show diff for this revision Revisions of this file
StatusReporter.cpp Show annotated file Show diff for this revision Revisions of this file
StatusReporter.h Show annotated file Show diff for this revision Revisions of this file
WidgetDB.lib Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ReportDB.lib	Wed Sep 24 18:52:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/ansond/code/WidgetDB/#ea6ac7464011
--- a/SalesforceCaseGenerator.lib	Sun Sep 21 07:28:42 2014 +0000
+++ b/SalesforceCaseGenerator.lib	Wed Sep 24 18:52:58 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/ansond/code/SalesforceCaseGenerator/#57f6f0f286c0
+http://mbed.org/users/ansond/code/SalesforceCaseGenerator/#8603f9ff1336
--- a/StatusReporter.cpp	Sun Sep 21 07:28:42 2014 +0000
+++ b/StatusReporter.cpp	Wed Sep 24 18:52:58 2014 +0000
@@ -18,6 +18,9 @@
  
  #include "StatusReporter.h"
  
+ // temperature sensor
+ AnalogIn temp_sensor(TEMP_PIN);
+ 
  StatusReporter::StatusReporter(ErrorHandler *logger,void *transport) : m_case_generator(logger,transport), m_db(), m_rfid_reader(RFID_TX_PIN,RFID_RX_PIN) {
      this->m_logger = logger;
  }
@@ -25,6 +28,18 @@
  StatusReporter::~StatusReporter() {
  }
  
+ // Calculate the ambient temperature of the TMP36 sensor in C...
+ int StatusReporter::getLocalTemperature() {
+     //conversion to degrees C - from sensor output voltage per TMP36 data sheet
+     float tempC = (float)(((float)temp_sensor*3.3)-0.600)*100.0;
+     
+     // DEBUG
+     this->m_logger->log("Ambient Temp: %.1f C",tempC);
+     
+     // convert to int for brevity...
+     return (int)tempC;
+ }
+ 
  void StatusReporter::checkAndReportOnStatus() { 
     // look for a readable RFID tag
     if(this->m_rfid_reader.readable()) {
@@ -33,8 +48,8 @@
         int rfid = this->m_rfid_reader.read();
         this->m_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 = this->m_db.lookupWidgetName(rfid);
+        // look it up in our ReportDB... proceed only if we find something we know about...
+        char *name = this->m_db.lookupReportName(rfid);
         if (name != NULL) {
             // build out a simple subject for the case
             char subject[DB_MAX_NAME_LENGTH+1];
@@ -43,7 +58,12 @@
             
             // create and dispatch a case
             this->m_logger->turnLEDPurple();
-            bool success = this->m_case_generator.createCase(subject,this->m_db.lookupWidgetDescription(rfid));
+            char *description = this->m_db.lookupReportDescription(rfid);
+            char *condition = this->m_db.lookupReportCondition(rfid);
+            int temperature = this->getLocalTemperature();
+            char *latitude = this->m_db.lookupReportLatitude(rfid);
+            char *longitude = this->m_db.lookupReportLongitude(rfid);
+            bool success = this->m_case_generator.createCase(subject,description,condition,temperature,latitude,longitude);
             if (success == true) {
                 this->m_logger->log("Case Generated!\r\nScanning...");
                 this->m_logger->turnLEDGreen();
--- a/StatusReporter.h	Sun Sep 21 07:28:42 2014 +0000
+++ b/StatusReporter.h	Wed Sep 24 18:52:58 2014 +0000
@@ -22,13 +22,13 @@
  #include "Definitions.h"
  #include "ErrorHandler.h"
  #include "SalesForceCaseGenerator.h"
- #include "WidgetDB.h"
+ #include "ReportDB.h"
  #include "ID12RFID.h"
  
  class StatusReporter {
      private:
         ErrorHandler            *m_logger;
-        WidgetDB                 m_db;
+        ReportDB                 m_db;
         SalesForceCaseGenerator  m_case_generator;
         ID12RFID                 m_rfid_reader;
         
@@ -37,6 +37,9 @@
         virtual ~StatusReporter();
         
         void checkAndReportOnStatus();
+        
+    private:
+        int getLocalTemperature();
  };
  
  #endif // _STATUS_REPORTER_H_
\ No newline at end of file
--- a/WidgetDB.lib	Sun Sep 21 07:28:42 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/ansond/code/WidgetDB/#5a7b822b54d7