Dependencies:   ros_lib_kinetic

Revision:
12:595ed862e52f
Parent:
11:7029367a1840
Child:
13:a373dfc57b89
--- a/LLComms.cpp	Fri Aug 10 10:40:18 2018 +0000
+++ b/LLComms.cpp	Mon Aug 13 09:16:29 2018 +0000
@@ -2,7 +2,8 @@
 
 #include "LLComms.h"
 
-LLComms::LLComms(int spi_frequency) : 
+LLComms::LLComms() : 
+    queue(32 * EVENTS_EVENT_SIZE), //8 * EVENTS_EVENT_SIZE
     pinGate6(PE_11),
     spi(PC_12, PC_11, PC_10),
     pinCheck(PE_5),
@@ -15,12 +16,11 @@
     pinGate5(PF_13),
     //pinGate6(PE_11), // See above nonsense
     pinGate7(PE_13),
-    pinReset(PD_2),
-    queue(32 * EVENTS_EVENT_SIZE)
+    pinReset(PD_2)
 { // Constructor
-    _spi_frequency = spi_frequency;
 
-    PinName LLPins[8] = {PD_15, PE_10, PD_14, PD_11, PE_7, PD_12, PF_10, PD_13};
+    PinName LLPins[8] = {PD_15, PE_10, PD_11, PD_14, PE_7, PD_12, PF_10, PD_13};
+    //PinName LLPins[8] = {PD_15, PE_10, PD_14, PD_11, PE_7, PD_12, PF_10, PD_13};
     PinName ADCPins[8] = {PG_12, PG_9, PE_1, PG_0, PD_0, PD_1, PF_0, PF_1};
     for (short int i = 0; i < 8; i++) {
         isDataReady[i] = 0;
@@ -41,23 +41,23 @@
     pinReset = 1; // Ready to go
     
     // Set up rise interrupts MIGHT NOT NEED TO BE POINTERS
-    pinGate0.rise(this,&LLComms::rise0);
-    pinGate1.rise(this,&LLComms::rise1);
-    pinGate2.rise(this,&LLComms::rise2);
-    pinGate3.rise(this,&LLComms::rise3);
-    pinGate4.rise(this,&LLComms::rise4);
-    pinGate5.rise(this,&LLComms::rise5);
-    pinGate6.rise(this,&LLComms::rise6);
-    pinGate7.rise(this,&LLComms::rise7);
+    pinGate0.rise(callback(this,&LLComms::rise0));
+    pinGate1.rise(callback(this,&LLComms::rise1));
+    pinGate2.rise(callback(this,&LLComms::rise2));
+    pinGate3.rise(callback(this,&LLComms::rise3));
+    pinGate4.rise(callback(this,&LLComms::rise4));
+    pinGate5.rise(callback(this,&LLComms::rise5));
+    pinGate6.rise(callback(this,&LLComms::rise6));
+    pinGate7.rise(callback(this,&LLComms::rise7));
     // Set up fall interrupts MIGHT NOT NEED TO BE POINTERS
-    pinGate0.fall(this,&LLComms::fall0);
-    pinGate1.fall(this,&LLComms::fall1);
-    pinGate2.fall(this,&LLComms::fall2);
-    pinGate3.fall(this,&LLComms::fall3);
-    pinGate4.fall(this,&LLComms::fall4);
-    pinGate5.fall(this,&LLComms::fall5);
-    pinGate6.fall(this,&LLComms::fall6);
-    pinGate7.fall(this,&LLComms::fall7);
+    pinGate0.fall(callback(this,&LLComms::fall0));
+    pinGate1.fall(callback(this,&LLComms::fall1));
+    pinGate2.fall(callback(this,&LLComms::fall2));
+    pinGate3.fall(callback(this,&LLComms::fall3));
+    pinGate4.fall(callback(this,&LLComms::fall4));
+    pinGate5.fall(callback(this,&LLComms::fall5));
+    pinGate6.fall(callback(this,&LLComms::fall6));
+    pinGate7.fall(callback(this,&LLComms::fall7));
 }
 
 //LLComms::~LLComms(void) { } // Destructor
@@ -67,7 +67,7 @@
     
     // Get data from controller
     spi.format(16,2);
-    spi.frequency(_spi_frequency);
+    spi.frequency(LOW_LEVEL_SPI_FREQUENCY);
     mutChannel[channel].lock(); // Lock mutex for specific Channel
     *cs_LL[channel] = 0; // Select relevant chip
     intPosSPI_Rx[channel] = spi.write(demandPosition[channel]); // Transmit & receive
@@ -84,7 +84,7 @@
     intPosSPI_Rx[channel] = intPosSPI_Rx[channel] & 0x1FFF;
     //dblPosition_mtrs[channel] = (double)intPosSPI_Rx[channel]/8191*(MAX_ACTUATOR_LENGTH/DBL_ACTUATOR_CONVERSION[channel])/1000;
     mutChannel[channel].unlock();//unlock mutex for specific channel
-    //printf("%d, %d\r\n",intPosSPI_Rx[0],_intDemandPos_Tx[0]);
+    //if(IS_PRINT_OUTPUT) printf("%d, %d\r\n",intPosSPI_Rx[0],_intDemandPos_Tx[0]);
 }
 
 // Common rise handler function 
@@ -120,6 +120,7 @@
 void LLComms::fall6(void) { common_fall_handler(6); }
 void LLComms::fall7(void) { common_fall_handler(7); }
 
+// NEEDS CALIBRATING
 double LLComms::ReadADCPosition_mtrs(int channel) {
     unsigned int outputA;
     unsigned int outputB;