mbed-os

Fork of mbed-os by erkin yucel

Revision:
0:f269e3021894
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/features/unsupported/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp	Sun Oct 23 15:10:02 2016 +0000
@@ -0,0 +1,43 @@
+/* mbed Microcontroller Library - SPIHalfDuplex
+ * Copyright (c) 2010-2011 ARM Limited. All rights reserved.
+ */
+#include "SPIHalfDuplex.h"
+
+#if DEVICE_SPI
+
+#include "spi_api.h"
+#include "pinmap.h"
+
+#define GPIO_MODE 0
+#define SPI_MODE  2
+
+namespace mbed {
+
+SPIHalfDuplex::SPIHalfDuplex(PinName mosi, PinName miso, PinName sclk) : SPI(mosi, miso, sclk) {
+    _mosi = mosi;
+    _miso = miso;
+    _sbits = _bits;
+}
+
+void SPIHalfDuplex::slave_format(int sbits) {
+    _sbits = sbits;
+}
+
+int SPIHalfDuplex::write(int value) {
+    int t_bits = _bits;
+    pin_function(_mosi, SPI_MODE);
+    int ret_val = SPI::write(value);
+    if (ret_val != value) {
+        return -1;
+    }
+    format(_sbits, _mode);
+    pin_function(_mosi, GPIO_MODE);
+    ret_val = SPI::write(0x55);
+    format(t_bits, _mode);
+    pin_function(_mosi, SPI_MODE);
+    return ret_val;
+}
+
+} // end namespace mbed
+
+#endif