SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
wire_helper.ino
Go to the documentation of this file.
1
30#include <SPI.h>
31#include <SensorWireHelper.h>
32#include <Commander.h> //Deplib https://github.com/CreativeRobotics/Commander
33
34#ifndef SerialMon
35#define SerialMon Serial
36#endif
37
38#ifndef SENSOR_SDA
39#define SENSOR_SDA 2
40#endif
41
42#ifndef SENSOR_SCL
43#define SENSOR_SCL 3
44#endif
45
46Commander cmd;
47
48bool dumpReg(Commander &Cmdr);
49bool dumpDevices(Commander &Cmdr);
50bool helpHandler(Commander &Cmdr);
51
52//COMMAND ARRAY ------------------------------------------------------------------------------
53const commandList_t masterCommands[] = {
54 {"help", helpHandler, "help"},
55 {"dump reg", dumpReg, "dump reg"},
56 {"dump devices", dumpDevices, "dump devices"},
57
58};
59
60bool helpHandler(Commander &Cmdr)
61{
62 SerialMon.println("Help:");
63 SerialMon.println("\tdump reg [device address] [reg address] [request read len]");
64 SerialMon.println("\tdump devices");
65 return false;
66}
67
68void setup()
69{
70 Serial.begin(115200);
71 while (!Serial);
72 Serial.println("Start!");
73
74#if (defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32)) && !defined(ARDUINO_ARCH_MBED)
75 Wire.setSCL(SENSOR_SCL);
76 Wire.setSDA(SENSOR_SDA);
77 Wire.begin();
78#elif defined(ARDUINO_ARCH_NRF52)
79 Wire.setPins(SENSOR_SDA, SENSOR_SCL);
80 Wire.begin();
81#elif defined(ARDUINO_ARCH_ESP32)
82 Wire.begin(SENSOR_SDA, SENSOR_SCL);
83#else
84 Wire.begin();
85#endif
86
87 // Initialise Commander
89 cmd.commandPrompt(ON); //enable the command prompt
90 cmd.echo(true); //Echo incoming characters to theoutput port
91 cmd.errorMessages(ON); //error messages are enabled - it will tell us if we issue any unrecognised commands
92 //Error messaged do NOT work for quick set and get commands
93
94 cmd.printCommandPrompt();
95}
96
97void loop()
98{
99 //Call the update functions using the activeCommander pointer
100 cmd.update();
101}
102
103uint8_t toInt(String data)
104{
105 uint8_t retVal = 0x0;
106 if (data.startsWith("0x")) {
107 retVal = (uint8_t)strtol(data.c_str(), NULL, 16);
108 } else {
109 retVal = atoi(data.c_str());
110 }
111 return retVal;
112}
113
114bool dumpReg(Commander &Cmdr)
115{
116 int items = Cmdr.countItems();
117 if (items < 3) {
118 return 0;
119 }
120 String dev_address_str, reg_str, request_read_len_str;
121 uint8_t dev_address = 0, reg = 0, request_read_len = 0;
122
123 Cmdr.getString(dev_address_str);
124 Cmdr.getString(reg_str);
125 Cmdr.getString(request_read_len_str);
126
127 dev_address = toInt(dev_address_str);
128 reg = toInt(reg_str);
129 request_read_len = toInt(request_read_len_str);
130
131 SerialMon.print("Reg : 0x");
132 if (dev_address < 16) {
133 SerialMon.print("0");
134 }
135 SerialMon.print(dev_address, HEX);
136 SerialMon.print(" - start:0x");
137 if (reg < 16) {
138 SerialMon.print("0");
139 }
140 SerialMon.print(reg, HEX);
141 SerialMon.print(" end:0x");
142 if (request_read_len < 16) {
143 SerialMon.print("0");
144 }
145 SerialMon.print(request_read_len, HEX);
146 SerialMon.println();
147
148 int ret = SensorWireHelper::regdump(Wire, SerialMon, dev_address, reg, request_read_len);
149 if (ret == -1) {
150 SerialMon.println("ERROR!");
151 }
152 return false;
153}
154
155bool dumpDevices(Commander &Cmdr)
156{
157 SensorWireHelper::dumpDevices(Wire, SerialMon);
158 return false;
159}
160
@license MIT License
bool helpHandler(Commander &Cmdr)
bool dumpReg(Commander &Cmdr)
#define SerialMon
void setup()
#define SENSOR_SCL
bool dumpDevices(Commander &Cmdr)
#define SENSOR_SDA
const commandList_t masterCommands[]
Commander cmd
uint8_t toInt(String data)
void loop()