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:
Fri Sep 26 04:34:10 2014 +0000
Parent:
18:a89333f9f671
Child:
20:660361de9b8c
Commit message:
revamped to use new salesforce interface

Changed in this revision

ID12RFID.lib Show diff for this revision Revisions of this file
ReportDB.lib Show diff for this revision Revisions of this file
SalesforceCaseGenerator.lib 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
--- a/ID12RFID.lib	Wed Sep 24 19:09:30 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/ansond/code/ID12RFID/#2593c0ca3e8f
--- a/ReportDB.lib	Wed Sep 24 19:09:30 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://developer.mbed.org/users/ansond/code/ReportDB/#ea6ac7464011
--- a/SalesforceCaseGenerator.lib	Wed Sep 24 19:09:30 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/ansond/code/SalesforceCaseGenerator/#8603f9ff1336
--- a/StatusReporter.cpp	Wed Sep 24 19:09:30 2014 +0000
+++ b/StatusReporter.cpp	Fri Sep 26 04:34:10 2014 +0000
@@ -1,5 +1,7 @@
 /* Copyright C2014 ARM, MIT License
  *
+ * Author: Doug Anson (doug.anson@arm.com)
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
  * and associated documentation files the "Software", to deal in the Software without restriction,
  * including without limitation the rights to use, copy, modify, merge, publish, distribute,
@@ -18,23 +20,28 @@
  
  #include "StatusReporter.h"
  
+ // Logging
+ #define LOG_CONSOLE(...) { if (this->logger() != NULL) { this->logger()->logConsole(__VA_ARGS__); } }
+ 
  // temperature sensor
  AnalogIn tmp36_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) {
+ StatusReporter::StatusReporter(HTTPClient *http,Logger *logger) : m_case_generator(http,logger), m_db(), m_rfid_reader(RFID_TX_PIN,RFID_RX_PIN) {
      this->m_logger = logger;
  }
  
  StatusReporter::~StatusReporter() {
  }
  
+ Logger *StatusReporter::logger() { return this->m_logger; }
+ 
  // 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)tmp36_temp_sensor*3.3)-0.600)*100.0;
      
      // DEBUG
-     this->m_logger->log("Ambient Temp: %.1f C",tempC);
+     LOG_CONSOLE("Ambient Temp: %.1f C",tempC);
      
      // convert to int for brevity...
      return (int)tempC;
@@ -44,9 +51,9 @@
     // look for a readable RFID tag
     if(this->m_rfid_reader.readable()) {
         // capture the RFID id...
-        this->m_logger->log("RFID: Found RFID.\r\nReading...");
+        LOG_CONSOLE("RFID: Found RFID.\r\nReading...");
         int rfid = this->m_rfid_reader.read();
-        this->m_logger->log("RFID: ID %d found...\r\nProcessing...",rfid);
+        LOG_CONSOLE("RFID: ID %d found...\r\nProcessing...",rfid);
         
         // look it up in our ReportDB... proceed only if we find something we know about...
         char *name = this->m_db.lookupReportName(rfid);
@@ -63,19 +70,19 @@
             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);
+            bool success = this->m_case_generator.createAnonymousCase(subject,description,condition,temperature,latitude,longitude);
             if (success == true) {
-                this->m_logger->log("Case Generated!\r\nScanning...");
+                LOG_CONSOLE("Case Generated!\r\nScanning...");
                 this->m_logger->turnLEDGreen();
             }
             else {
-                this->m_logger->log("Case Generation FAILED\r\nScanning...");
+                LOG_CONSOLE("Case Generation FAILED\r\nScanning...");
                 this->m_logger->turnLEDYellow();
             }
         }
         else {
             // unrecognized RFID
-            this->m_logger->log("RFID %d unknown.\r\nScanning...",rfid);
+            LOG_CONSOLE("RFID %d unknown.\r\nScanning...",rfid);
         }
      }
  }
\ No newline at end of file
--- a/StatusReporter.h	Wed Sep 24 19:09:30 2014 +0000
+++ b/StatusReporter.h	Fri Sep 26 04:34:10 2014 +0000
@@ -1,5 +1,7 @@
 /* Copyright C2014 ARM, MIT License
  *
+ * Author: Doug Anson (doug.anson@arm.com)
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
  * and associated documentation files the "Software", to deal in the Software without restriction,
  * including without limitation the rights to use, copy, modify, merge, publish, distribute,
@@ -20,26 +22,27 @@
  #define _STATUS_REPORTER_H_
  
  #include "Definitions.h"
- #include "ErrorHandler.h"
+ #include "Logger.h"
  #include "SalesForceCaseGenerator.h"
  #include "ReportDB.h"
  #include "ID12RFID.h"
  
  class StatusReporter {
      private:
-        ErrorHandler            *m_logger;
+        Logger                  *m_logger;
         ReportDB                 m_db;
         SalesForceCaseGenerator  m_case_generator;
         ID12RFID                 m_rfid_reader;
         
      public:
-        StatusReporter(ErrorHandler *logger,void *transport);
+        StatusReporter(HTTPClient *http,Logger *logger);
         virtual ~StatusReporter();
         
         void checkAndReportOnStatus();
         
     private:
         int getLocalTemperature();
+        Logger *logger();
  };
  
  #endif // _STATUS_REPORTER_H_
\ No newline at end of file