Has base BMU code but sends dummy temperature and voltage readings to test CAN

Dependencies:   CUER_CAN DS1820 LTC2943 LTC6804 mbed

Fork of BMS_BMUCore_Max by CUER

Revision:
13:7b42af989cd1
Parent:
9:82ba050a7e13
Child:
14:e0e88a009f4c
--- a/CANParserBMU.cpp	Fri Jun 23 17:41:17 2017 +0000
+++ b/CANParserBMU.cpp	Wed Jun 28 16:56:33 2017 +0000
@@ -1,20 +1,28 @@
 // Here are the functions to generate the CAN messages
 #include "CANParserBMU.h"
 #include "mbed.h"
+#include "Data_Types_BMU.h"
 
 
 using namespace CAN_IDs;
 
-CANMessage createTemperatureTelemetry(uint8_t ID, uint32_t CMUSerialNumber, uint16_t PCBTemperature, uint16_t cellTemperature)
+/**
+* This function is rewritten to give readings for individual probes rather than
+* for specific CMU. As a consequence, 0x800 onwards is being used for these probes,
+* as everything above about 0x700 is unused by the Tritium standard. Additionally,
+* instead of using uint16, floats will be used since only one temperature reading
+* is needed per message, allowing 32 bits per reading, and float is the natural
+* type obtained by the sensor.
+*/
+CANMessage createTemperatureTelemetry(uint8_t offset, uint32_t ProbeID, float Temperature)
 {
     CANMessage msg;
     msg.len = 8;
-    msg.id = BMS_BASE_ID + ID; // for voltage 0x601 - 0x6EF
+    msg.id = TEMPERATURE_BASE_ID + offset; // for temp it is 0x800 onwards
     CAN_Data data;
 
-    data.setLower_uLong(CMUSerialNumber);
-    data.set_u16(2, PCBTemperature);
-    data.set_u16(3, cellTemperature);
+    data.setLower_uLong(ProbeID);
+    data.setUpperFloat(Temperature);
 
     for (int i = 0; i<8; i++) {
         msg.data[i] = data.get_u8(i);
@@ -22,6 +30,21 @@
 
     return msg;
 }
+/**
+* Takes a CANMessage with precondition that it stores temperature of an individual
+* probe and returns an individual_temperature object containing ID and reading.
+*/
+individual_temperature decodeTemperatureTelemetry(CANMessage msg)
+{
+    individual_temperature probe_reading;
+    CAN_Data decode;
+    
+    decode.importCANData(msg);
+    probe_reading.measurement = decode.getUpperFloat();
+    probe_reading.ID = decode.getLower_uLong();
+    
+    return probe_reading;
+}
 
 CANMessage createVoltageTelemetry(int offset_id, uint16_t voltage[])
 {