SCL3300 sensor 3-axis inclinometer with angle output and digital SPI interface

Revision:
1:52b1117c65ea
Parent:
0:e8ba98a758d0
--- a/SCL3300.h	Mon Aug 15 19:17:10 2022 +0000
+++ b/SCL3300.h	Mon Sep 05 15:56:44 2022 +0000
@@ -7,10 +7,6 @@
 
 Resources:
 Uses SPI.h for SPI operation
-
-Development environment specifics:
-Arduino IDE 1.8.9, 1.8.11, 1.8.12, 1.8.13, 1.8.15
-
 This code is released under the [MIT License](http://opensource.org/licenses/MIT).
 Please review the LICENSE.md file included with this example.
 Distributed as-is; no warranty is given.
@@ -26,34 +22,7 @@
 // Uncomment the following line for debugging output
 //#define debug_scl3300
 
-// Need the following define for SAMD processors
-#if defined(ARDUINO_SAMD_ZERO) && defined(SERIAL_PORT_USBVIRTUAL)
-  #define Serial_SCL SERIAL_PORT_USBVIRTUAL
-#else
-  #define Serial_SCL Serial
-#endif
-
-#include <stdint.h>
-
-#if defined(ARDUINO) && ARDUINO >= 100
-  #include "Arduino.h"
-#else
-  #include "WProgram.h"
-#endif
-
-#include <SPI.h>  // SPI library is used for...SPI.
-
-#ifndef SCL3300_SPI_CLOCK
-#ifdef ARDUINO_ARCH_ESP32
-#define SCL3300_SPI_CLOCK 4000000
-#else
-#define SCL3300_SPI_CLOCK 4000000
-#endif
-#endif
-
-#ifndef SCL3300_SPI_MODE
-#define SCL3300_SPI_MODE SPI_MODE0
-#endif
+#include "mbed.h"// SPI library is used for...SPI.
 
 //Define allowed commands to SCL3300 inclinometer
 #define RdAccX      0x040000f7
@@ -103,16 +72,14 @@
 class SCL3300 {
   // user-accessible "public" interface
   public:
-    SPISettings spiSettings{SCL3300_SPI_CLOCK, MSBFIRST, SCL3300_SPI_MODE};
+    SCL3300 (PinName mosi, PinName miso, PinName sclk, PinName scl3300_csPin);//constructer
     
     SCL3300data sclData;
-    boolean setMode(int mode);
-    boolean begin(void);
-    boolean begin(uint8_t csPin);
-    boolean begin(SPIClass &spiPort, uint8_t csPin);
+    bool setMode(int mode);
+    bool begin(void);
     //Functions to retrieve sensor data
-    boolean isConnected();
-    boolean available(void);
+    bool isConnected();
+    bool available(void);
     void setFastReadMode();
     void stopFastReadMode();
     double getCalculatedAngleX(void);
@@ -138,14 +105,16 @@
     
   // library-accessible "private" interface
   private:
-    SPIClass *_spiPort = NULL;  //The generic connection to user's chosen spi hardware
-
-    uint8_t scl3300_csPin = 10; // Default SPI chip select pin
-    uint8_t scl3300_mode = 4; // Default inclinometer mode
+    SPI _spi;
+    Timer timer1;
+    Timer timer2;
+    DigitalOut _scl3300_csPin; //  SPI chip select pin
+    uint8_t scl3300_mode ; // no Default mode
     uint8_t SCL3300_CMD, SCL3300_CRC;
     uint16_t SCL3300_DATA;
     double Temperature, X_angle, Y_angle, Z_angle;
-    bool setFastRead = false;
+    bool setFastRead; //chose mode
+   uint32_t _transfer_sck;
     
     void initSPI();
     void beginTransmission();
@@ -159,6 +128,6 @@
       unsigned int bit16[2];
       unsigned char bit8[4];
     };
-    unsigned long modeCMD[5]  = { 0, ChgMode1, ChgMode2, ChgMode3, ChgMode4 };
+    unsigned long modeCMD[5];
 };
 #endif