Skip to content

Commit 6886e11

Browse files
authored
Fix esp32c3 build (SlimeVR#163)
1 parent fcbd4ff commit 6886e11

File tree

12 files changed

+74
-98
lines changed

12 files changed

+74
-98
lines changed

ci/build.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,6 @@ def get_platformio_section(self) -> str:
2929
[env:{self.platformio_board}]
3030
platform = {self.platform}
3131
board = {self.platformio_board}""")
32-
33-
if self.platform == "espressif32 @ 3.5.0":
34-
section += dedent("""
35-
lib_deps =
36-
${env.lib_deps}
37-
lorol/LittleFS_esp32 @ 1.0.6
38-
""")
39-
4032
return section
4133

4234
def filename(self) -> str:

ci/devices.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@
55
"board": "SLIMEVR"
66
},
77
{
8-
"platform": "espressif32 @ 3.5.0",
8+
"platform": "espressif32 @ 4.4.0",
99
"platformio_board": "esp32dev",
1010
"board": "WROOM32"
11+
},
12+
{
13+
"platform": "espressif32 @ 4.4.0",
14+
"platformio_board": "lolin_c3_mini",
15+
"board": "SLIMEVR"
1116
}
1217
]

lib/ICM20948/ICM_20948.cpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ float ICM_20948::getGyrDPS(int16_t axis_val)
240240
}
241241

242242
//Gyro Bias
243-
ICM_20948_Status_e ICM_20948::SetBiasGyroX( int newValue)
243+
ICM_20948_Status_e ICM_20948::SetBiasGyroX( int32_t newValue)
244244
{
245245
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
246246
unsigned char gyro_bias_reg[4];
@@ -252,7 +252,7 @@ ICM_20948_Status_e ICM_20948::SetBiasGyroX( int newValue)
252252
return result;
253253
}
254254

255-
ICM_20948_Status_e ICM_20948::SetBiasGyroY( int newValue)
255+
ICM_20948_Status_e ICM_20948::SetBiasGyroY( int32_t newValue)
256256
{
257257
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
258258
unsigned char gyro_bias_reg[4];
@@ -264,7 +264,7 @@ ICM_20948_Status_e ICM_20948::SetBiasGyroY( int newValue)
264264
return result;
265265
}
266266

267-
ICM_20948_Status_e ICM_20948::SetBiasGyroZ( int newValue)
267+
ICM_20948_Status_e ICM_20948::SetBiasGyroZ( int32_t newValue)
268268
{
269269
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
270270
unsigned char gyro_bias_reg[4];
@@ -276,34 +276,34 @@ ICM_20948_Status_e ICM_20948::SetBiasGyroZ( int newValue)
276276
return result;
277277
}
278278

279-
ICM_20948_Status_e ICM_20948::GetBiasGyroX( int* bias)
279+
ICM_20948_Status_e ICM_20948::GetBiasGyroX( int32_t* bias)
280280
{
281281
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
282282
unsigned char bias_data[4] = { 0 };
283283
result = inv_icm20948_read_mems(&_device, GYRO_BIAS_X, 4, bias_data);
284-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
284+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
285285
return result;
286286
}
287287

288-
ICM_20948_Status_e ICM_20948::GetBiasGyroY( int* bias)
288+
ICM_20948_Status_e ICM_20948::GetBiasGyroY( int32_t* bias)
289289
{
290290
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
291291
unsigned char bias_data[4] = { 0 };
292292
result = inv_icm20948_read_mems(&_device, GYRO_BIAS_Y, 4, bias_data);
293-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
293+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
294294
return result;
295295
}
296296

297-
ICM_20948_Status_e ICM_20948::GetBiasGyroZ( int* bias)
297+
ICM_20948_Status_e ICM_20948::GetBiasGyroZ( int32_t* bias)
298298
{
299299
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
300300
unsigned char bias_data[4] = { 0 };
301301
result = inv_icm20948_read_mems(&_device, GYRO_BIAS_Z, 4, bias_data);
302-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
302+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
303303
return result;
304304
}
305305
//Accel Bias
306-
ICM_20948_Status_e ICM_20948::SetBiasAccelX( int newValue)
306+
ICM_20948_Status_e ICM_20948::SetBiasAccelX( int32_t newValue)
307307
{
308308
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
309309
unsigned char accel_bias_reg[4];
@@ -315,7 +315,7 @@ ICM_20948_Status_e ICM_20948::SetBiasAccelX( int newValue)
315315
return result;
316316
}
317317

318-
ICM_20948_Status_e ICM_20948::SetBiasAccelY( int newValue)
318+
ICM_20948_Status_e ICM_20948::SetBiasAccelY( int32_t newValue)
319319
{
320320
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
321321
unsigned char accel_bias_reg[4];
@@ -327,7 +327,7 @@ ICM_20948_Status_e ICM_20948::SetBiasAccelY( int newValue)
327327
return result;
328328
}
329329

330-
ICM_20948_Status_e ICM_20948::SetBiasAccelZ( int newValue)
330+
ICM_20948_Status_e ICM_20948::SetBiasAccelZ( int32_t newValue)
331331
{
332332
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
333333
unsigned char accel_bias_reg[4];
@@ -339,34 +339,34 @@ ICM_20948_Status_e ICM_20948::SetBiasAccelZ( int newValue)
339339
return result;
340340
}
341341

342-
ICM_20948_Status_e ICM_20948::GetBiasAccelX( int* bias)
342+
ICM_20948_Status_e ICM_20948::GetBiasAccelX( int32_t* bias)
343343
{
344344
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
345345
unsigned char bias_data[4] = { 0 };
346346
result = inv_icm20948_read_mems(&_device, ACCEL_BIAS_X, 4, bias_data);
347-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
347+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
348348
return result;
349349
}
350350

351-
ICM_20948_Status_e ICM_20948::GetBiasAccelY( int* bias)
351+
ICM_20948_Status_e ICM_20948::GetBiasAccelY( int32_t* bias)
352352
{
353353
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
354354
unsigned char bias_data[4] = { 0 };
355355
result = inv_icm20948_read_mems(&_device, ACCEL_BIAS_Y, 4, bias_data);
356-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
356+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
357357
return result;
358358
}
359359

360-
ICM_20948_Status_e ICM_20948::GetBiasAccelZ( int* bias)
360+
ICM_20948_Status_e ICM_20948::GetBiasAccelZ( int32_t* bias)
361361
{
362362
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
363363
unsigned char bias_data[4] = { 0 };
364364
result = inv_icm20948_read_mems(&_device, ACCEL_BIAS_Z, 4, bias_data);
365-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
365+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
366366
return result;
367367
}
368368
//CPass Bias
369-
ICM_20948_Status_e ICM_20948::SetBiasCPassX( int newValue)
369+
ICM_20948_Status_e ICM_20948::SetBiasCPassX( int32_t newValue)
370370
{
371371
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
372372
unsigned char cpass_bias_reg[4];
@@ -378,7 +378,7 @@ ICM_20948_Status_e ICM_20948::SetBiasCPassX( int newValue)
378378
return result;
379379
}
380380

381-
ICM_20948_Status_e ICM_20948::SetBiasCPassY( int newValue)
381+
ICM_20948_Status_e ICM_20948::SetBiasCPassY( int32_t newValue)
382382
{
383383
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
384384
unsigned char cpass_bias_reg[4];
@@ -390,7 +390,7 @@ ICM_20948_Status_e ICM_20948::SetBiasCPassY( int newValue)
390390
return result;
391391
}
392392

393-
ICM_20948_Status_e ICM_20948::SetBiasCPassZ( int newValue)
393+
ICM_20948_Status_e ICM_20948::SetBiasCPassZ( int32_t newValue)
394394
{
395395
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
396396
unsigned char cpass_bias_reg[4];
@@ -402,30 +402,30 @@ ICM_20948_Status_e ICM_20948::SetBiasCPassZ( int newValue)
402402
return result;
403403
}
404404

405-
ICM_20948_Status_e ICM_20948::GetBiasCPassX( int* bias)
405+
ICM_20948_Status_e ICM_20948::GetBiasCPassX( int32_t* bias)
406406
{
407407
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
408408
unsigned char bias_data[4] = { 0 };
409409
result = inv_icm20948_read_mems(&_device, CPASS_BIAS_X, 4, bias_data);
410-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
410+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
411411
return result;
412412
}
413413

414-
ICM_20948_Status_e ICM_20948::GetBiasCPassY( int* bias)
414+
ICM_20948_Status_e ICM_20948::GetBiasCPassY( int32_t* bias)
415415
{
416416
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
417417
unsigned char bias_data[4] = { 0 };
418418
result = inv_icm20948_read_mems(&_device, CPASS_BIAS_Y, 4, bias_data);
419-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
419+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
420420
return result;
421421
}
422422

423-
ICM_20948_Status_e ICM_20948::GetBiasCPassZ( int* bias)
423+
ICM_20948_Status_e ICM_20948::GetBiasCPassZ( int32_t* bias)
424424
{
425425
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
426426
unsigned char bias_data[4] = { 0 };
427427
result = inv_icm20948_read_mems(&_device, CPASS_BIAS_Z, 4, bias_data);
428-
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
428+
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
429429
return result;
430430
}
431431

lib/ICM20948/ICM_20948.h

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -174,26 +174,26 @@ class ICM_20948
174174
//DMP
175175

176176
//Gyro Bias
177-
ICM_20948_Status_e SetBiasGyroX( int newValue);
178-
ICM_20948_Status_e SetBiasGyroY( int newValue);
179-
ICM_20948_Status_e SetBiasGyroZ( int newValue);
180-
ICM_20948_Status_e GetBiasGyroX( int* bias);
181-
ICM_20948_Status_e GetBiasGyroY( int* bias);
182-
ICM_20948_Status_e GetBiasGyroZ( int* bias);
177+
ICM_20948_Status_e SetBiasGyroX( int32_t newValue);
178+
ICM_20948_Status_e SetBiasGyroY( int32_t newValue);
179+
ICM_20948_Status_e SetBiasGyroZ( int32_t newValue);
180+
ICM_20948_Status_e GetBiasGyroX( int32_t* bias);
181+
ICM_20948_Status_e GetBiasGyroY( int32_t* bias);
182+
ICM_20948_Status_e GetBiasGyroZ( int32_t* bias);
183183
//Accel Bias
184-
ICM_20948_Status_e SetBiasAccelX( int newValue);
185-
ICM_20948_Status_e SetBiasAccelY( int newValue);
186-
ICM_20948_Status_e SetBiasAccelZ( int newValue);
187-
ICM_20948_Status_e GetBiasAccelX( int* bias);
188-
ICM_20948_Status_e GetBiasAccelY( int* bias);
189-
ICM_20948_Status_e GetBiasAccelZ( int* bias);
184+
ICM_20948_Status_e SetBiasAccelX( int32_t newValue);
185+
ICM_20948_Status_e SetBiasAccelY( int32_t newValue);
186+
ICM_20948_Status_e SetBiasAccelZ( int32_t newValue);
187+
ICM_20948_Status_e GetBiasAccelX( int32_t* bias);
188+
ICM_20948_Status_e GetBiasAccelY( int32_t* bias);
189+
ICM_20948_Status_e GetBiasAccelZ( int32_t* bias);
190190
//CPass Bias
191-
ICM_20948_Status_e SetBiasCPassX( int newValue);
192-
ICM_20948_Status_e SetBiasCPassY( int newValue);
193-
ICM_20948_Status_e SetBiasCPassZ( int newValue);
194-
ICM_20948_Status_e GetBiasCPassX( int* bias);
195-
ICM_20948_Status_e GetBiasCPassY( int* bias);
196-
ICM_20948_Status_e GetBiasCPassZ( int* bias);
191+
ICM_20948_Status_e SetBiasCPassX( int32_t newValue);
192+
ICM_20948_Status_e SetBiasCPassY( int32_t newValue);
193+
ICM_20948_Status_e SetBiasCPassZ( int32_t newValue);
194+
ICM_20948_Status_e GetBiasCPassX( int32_t* bias);
195+
ICM_20948_Status_e GetBiasCPassY( int32_t* bias);
196+
ICM_20948_Status_e GetBiasCPassZ( int32_t* bias);
197197

198198
// Done:
199199
// Configure DMP start address through PRGM_STRT_ADDRH/PRGM_STRT_ADDRL

lib/math/basis.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ class Basis {
109109
void set_euler_zyx(const Vector3& p_euler);
110110

111111
Quat get_quat() const;
112-
void set_quat(const Quat& p_quat);
113112

114113
Vector3 get_euler() const { return get_euler_yxz(); }
115114
void set_euler(const Vector3& p_euler) { set_euler_yxz(p_euler); }
@@ -240,7 +239,6 @@ class Basis {
240239

241240
operator Quat() const { return get_quat(); }
242241

243-
Basis(const Quat& p_quat) { set_quat(p_quat); };
244242
Basis(const Quat& p_quat, const Vector3& p_scale) { set_quat_scale(p_quat, p_scale); }
245243

246244
Basis(const Vector3& p_euler) { set_euler(p_euler); }

lib/math/quat.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,6 @@ void Quat::set_euler_xyz(const Vector3& p_euler) {
5757
-sin_a1 * sin_a2 * sin_a3 + cos_a1 * cos_a2 * cos_a3);
5858
}
5959

60-
// get_euler_xyz returns a vector containing the Euler angles in the format
61-
// (ax,ay,az), where ax is the angle of rotation around x axis,
62-
// and similar for other axes.
63-
// This implementation uses XYZ convention (Z is the first rotation).
64-
Vector3 Quat::get_euler_xyz() const {
65-
Basis m(*this);
66-
return m.get_euler_xyz();
67-
}
6860

6961
// set_euler_yxz expects a vector containing the Euler angles in the format
7062
// (ax,ay,az), where ax is the angle of rotation around x axis,
@@ -92,18 +84,6 @@ void Quat::set_euler_yxz(const Vector3& p_euler) {
9284
sin_a1 * sin_a2 * sin_a3 + cos_a1 * cos_a2 * cos_a3);
9385
}
9486

95-
// get_euler_yxz returns a vector containing the Euler angles in the format
96-
// (ax,ay,az), where ax is the angle of rotation around x axis,
97-
// and similar for other axes.
98-
// This implementation uses YXZ convention (Z is the first rotation).
99-
Vector3 Quat::get_euler_yxz() const {
100-
#ifdef MATH_CHECKS
101-
ERR_FAIL_COND_V_MSG(!is_normalized(), Vector3(0, 0, 0), "The quaternion must be normalized.");
102-
#endif
103-
Basis m(*this);
104-
return m.get_euler_yxz();
105-
}
106-
10787
void Quat::operator*=(const Quat& q) {
10888
set(w * q.x + x * q.w + y * q.z - z * q.y,
10989
w * q.y + y * q.w + z * q.x - x * q.z,

platformio-tools.ini

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,13 @@ platform = espressif8266
2828
board = esp12e
2929

3030
[env:BOARD_WROOM32]
31-
lib_deps=
32-
${env.lib_deps}
33-
34-
31+
3532
board = esp32dev
3633

3734
[env:BOARD_ESP01]
38-
lib_deps=
39-
${env.lib_deps}
40-
41-
35+
4236
board = esp32dev
37+
38+
[env:BOARD_LOLIN_C3_MINI]
39+
40+
board = lolin_c3_mini

platformio.ini

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,12 @@ upload_speed = 921600
5757
; Uncomment below if you want to build for esp32
5858
; Check your board name at https://docs.platformio.org/en/latest/platforms/espressif32.html#boards
5959
; [env:esp32]
60-
; lib_deps =
61-
; ${env.lib_deps}
62-
; lorol/LittleFS_esp32 @ 1.0.6
63-
; platform = espressif32 @ 3.5.0
60+
; platform = espressif32 @ 4.4.0
6461
; board = esp32dev
6562
; Comment out this line below if you have any trouble uploading the firmware - and if it has a CP2102 on it (a square chip next to the usb port): change to 3000000 (3 million) for even faster upload speed
6663
; upload_speed = 921600
64+
65+
; If you want to use a esp32c3, you can use this (experimental)
66+
;[env:esp32c3]
67+
;platform = espressif32 @ 4.4.0
68+
;board = lolin_c3_mini

src/configuration/Configuration.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,7 @@
2121
THE SOFTWARE.
2222
*/
2323

24-
#ifdef ESP32
25-
// #define CONFIG_LITTLEFS_SPIFFS_COMPAT 1
26-
// #define CONFIG_LITTLEFS_LFS_YES_TRACE
27-
// #define LFS_YES_TRACE
28-
#include <LITTLEFS.h>
29-
#define LittleFS LITTLEFS
30-
#else
31-
#include <LittleFS.h>
32-
#endif
24+
#include <LittleFS.h>
3325

3426
#include "Configuration.h"
3527
#include "consts.h"

src/consts.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
#define BOARD_TTGO_TBASE 7
4444
#define BOARD_ESP01 8
4545
#define BOARD_SLIMEVR 9
46+
#define BOARD_LOLIN_C3_MINI 10
4647

4748
#define BAT_EXTERNAL 1
4849
#define BAT_INTERNAL 2

src/defines.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,12 @@
110110
#define PIN_BATTERY_LEVEL 36
111111
// #define LED_PIN 2
112112
// #define LED_INVERTED false
113+
#elif BOARD == BOARD_LOLIN_C3_MINI
114+
#define PIN_IMU_SDA 10
115+
#define PIN_IMU_SCL 8
116+
#define PIN_IMU_INT 6
117+
#define PIN_IMU_INT_2 7
118+
#define PIN_BATTERY_LEVEL 3
119+
// #define LED_PIN 2
120+
// #define LED_INVERTED false
113121
#endif

src/sensors/icm20948sensor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ void ICM20948Sensor::load_bias() {
121121
imu.SetBiasCPassY(90);
122122
imu.SetBiasCPassZ(90);
123123

124-
int bias_gyro[3], bias_accel[3], bias_compass[3];
124+
int32_t bias_gyro[3], bias_accel[3], bias_compass[3];
125125

126126
// Reloads all bias from memory
127127
imu.GetBiasGyroX(&bias_gyro[0]);

0 commit comments

Comments
 (0)