@@ -246,29 +246,67 @@ extern "C" {
246
246
extern esp_err_t esp_hosted_init ();
247
247
extern esp_err_t esp_hosted_deinit ();
248
248
};
249
+ typedef struct {
250
+ uint8_t pin_clk;
251
+ uint8_t pin_cmd;
252
+ uint8_t pin_d0;
253
+ uint8_t pin_d1;
254
+ uint8_t pin_d2;
255
+ uint8_t pin_d3;
256
+ uint8_t pin_reset;
257
+ } sdio_pin_config_t ;
258
+
249
259
static bool hosted_initialized = false ;
260
+ static sdio_pin_config_t sdio_pin_config = {
261
+ #ifdef BOARD_HAS_SDIO_ESP_HOSTED
262
+ .pin_clk = BOARD_SDIO_ESP_HOSTED_CLK,
263
+ .pin_cmd = BOARD_SDIO_ESP_HOSTED_CMD,
264
+ .pin_d0 = BOARD_SDIO_ESP_HOSTED_D0,
265
+ .pin_d1 = BOARD_SDIO_ESP_HOSTED_D1,
266
+ .pin_d2 = BOARD_SDIO_ESP_HOSTED_D2,
267
+ .pin_d3 = BOARD_SDIO_ESP_HOSTED_D3,
268
+ .pin_reset = BOARD_SDIO_ESP_HOSTED_RESET
269
+ #else
270
+ .pin_clk = CONFIG_ESP_SDIO_PIN_CLK,
271
+ .pin_cmd = CONFIG_ESP_SDIO_PIN_CMD,
272
+ .pin_d0 = CONFIG_ESP_SDIO_PIN_D0,
273
+ .pin_d1 = CONFIG_ESP_SDIO_PIN_D1,
274
+ .pin_d2 = CONFIG_ESP_SDIO_PIN_D2,
275
+ .pin_d3 = CONFIG_ESP_SDIO_PIN_D3,
276
+ .pin_reset = CONFIG_ESP_SDIO_GPIO_RESET_SLAVE
277
+ #endif
278
+ };
279
+
280
+ bool WiFiGenericClass::setPins (int8_t clk, int8_t cmd, int8_t d0, int8_t d1, int8_t d2, int8_t d3, int8_t rst) {
281
+ if (clk < 0 || cmd < 0 || d0 < 0 || d1 < 0 || d2 < 0 || d3 < 0 || rst < 0 ) {
282
+ log_e (" All SDIO pins must be defined" );
283
+ return false ;
284
+ }
285
+ if (hosted_initialized) {
286
+ log_e (" SDIO pins must be set before WiFi is initialized" );
287
+ return false ;
288
+ }
289
+ sdio_pin_config.pin_clk = clk;
290
+ sdio_pin_config.pin_cmd = cmd;
291
+ sdio_pin_config.pin_d0 = d0;
292
+ sdio_pin_config.pin_d1 = d1;
293
+ sdio_pin_config.pin_d2 = d2;
294
+ sdio_pin_config.pin_d3 = d3;
295
+ sdio_pin_config.pin_reset = rst;
296
+ return true ;
297
+ }
250
298
251
299
static bool wifiHostedInit () {
252
300
if (!hosted_initialized) {
253
301
hosted_initialized = true ;
254
302
struct esp_hosted_sdio_config conf = INIT_DEFAULT_HOST_SDIO_CONFIG ();
255
- #ifdef BOARD_HAS_SDIO_ESP_HOSTED
256
- conf.pin_clk .pin = BOARD_SDIO_ESP_HOSTED_CLK;
257
- conf.pin_cmd .pin = BOARD_SDIO_ESP_HOSTED_CMD;
258
- conf.pin_d0 .pin = BOARD_SDIO_ESP_HOSTED_D0;
259
- conf.pin_d1 .pin = BOARD_SDIO_ESP_HOSTED_D1;
260
- conf.pin_d2 .pin = BOARD_SDIO_ESP_HOSTED_D2;
261
- conf.pin_d3 .pin = BOARD_SDIO_ESP_HOSTED_D3;
262
- conf.pin_reset .pin = BOARD_SDIO_ESP_HOSTED_RESET;
263
- #else
264
- conf.pin_clk .pin = CONFIG_ESP_SDIO_PIN_CLK;
265
- conf.pin_cmd .pin = CONFIG_ESP_SDIO_PIN_CMD;
266
- conf.pin_d0 .pin = CONFIG_ESP_SDIO_PIN_D0;
267
- conf.pin_d1 .pin = CONFIG_ESP_SDIO_PIN_D1;
268
- conf.pin_d2 .pin = CONFIG_ESP_SDIO_PIN_D2;
269
- conf.pin_d3 .pin = CONFIG_ESP_SDIO_PIN_D3;
270
- conf.pin_reset .pin = CONFIG_ESP_SDIO_GPIO_RESET_SLAVE;
271
- #endif
303
+ conf.pin_clk .pin = sdio_pin_config.pin_clk ;
304
+ conf.pin_cmd .pin = sdio_pin_config.pin_cmd ;
305
+ conf.pin_d0 .pin = sdio_pin_config.pin_d0 ;
306
+ conf.pin_d1 .pin = sdio_pin_config.pin_d1 ;
307
+ conf.pin_d2 .pin = sdio_pin_config.pin_d2 ;
308
+ conf.pin_d3 .pin = sdio_pin_config.pin_d3 ;
309
+ conf.pin_reset .pin = sdio_pin_config.pin_reset ;
272
310
// esp_hosted_sdio_set_config() will fail on second attempt but here temporarily to not cause exception on reinit
273
311
if (esp_hosted_sdio_set_config (&conf) != ESP_OK || esp_hosted_init () != ESP_OK) {
274
312
log_e (" esp_hosted_init failed!" );
@@ -279,13 +317,13 @@ static bool wifiHostedInit() {
279
317
}
280
318
// Attach pins to PeriMan here
281
319
// Slave chip model is CONFIG_IDF_SLAVE_TARGET
282
- // CONFIG_ESP_SDIO_PIN_CMD
283
- // CONFIG_ESP_SDIO_PIN_CLK
284
- // CONFIG_ESP_SDIO_PIN_D0
285
- // CONFIG_ESP_SDIO_PIN_D1
286
- // CONFIG_ESP_SDIO_PIN_D2
287
- // CONFIG_ESP_SDIO_PIN_D3
288
- // CONFIG_ESP_SDIO_GPIO_RESET_SLAVE
320
+ // sdio_pin_config.pin_clk
321
+ // sdio_pin_config.pin_cmd
322
+ // sdio_pin_config.pin_d0
323
+ // sdio_pin_config.pin_d1
324
+ // sdio_pin_config.pin_d2
325
+ // sdio_pin_config.pin_d3
326
+ // sdio_pin_config.pin_reset
289
327
290
328
return true ;
291
329
}
0 commit comments