MTS_SPI_Slave unfinished

Fork of MTS-Serial by MultiTech

Revision:
13:010d349bc731
Child:
14:d5a86071845e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MTS_SPI_Slave.cpp	Thu Nov 16 16:13:57 2017 +0000
@@ -0,0 +1,74 @@
+#include "mbed.h"
+#include "MTS_SPI_Slave.h"
+#include "MTSLog.h"
+//#include <Thread.h>
+
+using namespace mts;
+Serial debug(USBTX, USBRX); //DELETE
+
+MTS_SPI_Slave::MTS_SPI_Slave(PinName mosi, PinName miso, PinName sclk, PinName ssel, int txBufferSize, int rxBufferSize)
+    : MTSBufferedIO(txBufferSize, rxBufferSize)
+    , spi(mosi,miso,sclk,ssel)
+
+{
+   //this is where you are going to have a thread that is constantly polling to see if data has been sent, having the thread go to sleep in the time inbetween the polling
+   Thread thread;
+   debug.baud(115200); //DELETE
+   //thread.start(this, &MTS_SPI_Slave::recieved_Read);
+   osStatus status = thread.start(this, &MTS_SPI_Slave::recieved_Read);
+        if (status != osOK) {
+            debug.printf("Thread is not OK");
+        }
+   debug.printf("Thread state:  %d\n\r",thread.get_state());
+}
+
+MTS_SPI_Slave::~MTS_SPI_Slave()
+{
+}
+
+void MTS_SPI_Slave::recieved_Read(){
+            debug.printf("Outside While\n\r");
+        while(true){
+           // debug.printf("Within While\n\r");
+            if(this->receive()){
+                 debug.printf("Recieved\n\r");
+                this->handleRead();
+                }
+            }
+    }
+
+void MTS_SPI_Slave::frequency(int frequency)
+{
+   spi.frequency(frequency);
+}
+
+void MTS_SPI_Slave::format(int format_bits,int format_mode)
+{
+    spi.format(format_bits,format_mode);
+}
+
+int MTS_SPI_Slave::receive(){
+    return spi.receive();
+}
+
+void MTS_SPI_Slave::handleRead(){
+    
+    int byte = spi.read();
+    debug.printf("handleRead() executed with byte: %c \n\r",byte);
+    if(rxBuffer.write((char)byte) != 1) {
+        logError("SPI Rx Byte Dropped [%c][0x%02X]", byte, byte);
+    }
+}
+    
+void MTS_SPI_Slave::handleWrite(){
+        while(txBuffer.size() != 0) {
+            char byte;
+            if(txBuffer.read(byte)==1){
+                spi.reply(byte);
+                }
+            else{
+                return;
+                }
+        }
+}
+