Fixed accessing out of scope memory

This commit is contained in:
Dreaded_X 2022-06-11 04:01:13 +02:00
parent 788708fb74
commit f42df67f80
Signed by: Dreaded_X
GPG Key ID: 76BDEC4E165D8AD9

View File

@ -393,36 +393,36 @@ void can::init() {
.spics_io_num=PIN_NUM_CS, .spics_io_num=PIN_NUM_CS,
.queue_size=7, .queue_size=7,
}; };
spi_device_handle_t spi; spi_device_handle_t* spi = new spi_device_handle_t;
ret = spi_bus_add_device(VSPI_HOST, &devcfg, &spi); ret = spi_bus_add_device(VSPI_HOST, &devcfg, spi);
ESP_ERROR_CHECK(ret); ESP_ERROR_CHECK(ret);
ESP_LOGI(CAN_TAG, "Resetting MCP1525"); ESP_LOGI(CAN_TAG, "Resetting MCP1525");
send_cmd(spi, MCP_RESET); send_cmd(*spi, MCP_RESET);
// @TODO Check if this is really needed // @TODO Check if this is really needed
// Copied from other libary, here to give the MCP2515 time to wake up // Copied from other libary, here to give the MCP2515 time to wake up
vTaskDelay(5 / portTICK_PERIOD_MS); vTaskDelay(5 / portTICK_PERIOD_MS);
ESP_LOGI(CAN_TAG, "Enter config mode"); ESP_LOGI(CAN_TAG, "Enter config mode");
set_CANCTRL_mode(spi, MODE_CONFIG); set_CANCTRL_mode(*spi, MODE_CONFIG);
ESP_LOGI(CAN_TAG, "Setting rate"); ESP_LOGI(CAN_TAG, "Setting rate");
config_rate(spi); config_rate(*spi);
ESP_LOGI(CAN_TAG, "Init CAN buffers"); ESP_LOGI(CAN_TAG, "Init CAN buffers");
init_CAN_buffers(spi); init_CAN_buffers(*spi);
ESP_LOGI(CAN_TAG, "Setting interrupt mode"); ESP_LOGI(CAN_TAG, "Setting interrupt mode");
set_register(spi, MCP_CANINTE, MCP_RX0IF | MCP_RX1IF); set_register(*spi, MCP_CANINTE, MCP_RX0IF | MCP_RX1IF);
ESP_LOGI(CAN_TAG, "Enable receive buffers"); ESP_LOGI(CAN_TAG, "Enable receive buffers");
modify_register(spi, MCP_RXB0CTRL, MCP_RXB_RX_MASK | MCP_RXB_BUKT_MASK, MCP_RXB_RX_STDEXT | MCP_RXB_BUKT_MASK); modify_register(*spi, MCP_RXB0CTRL, MCP_RXB_RX_MASK | MCP_RXB_BUKT_MASK, MCP_RXB_RX_STDEXT | MCP_RXB_BUKT_MASK);
modify_register(spi, MCP_RXB1CTRL, MCP_RXB_RX_MASK, MCP_RXB_RX_STDEXT); modify_register(*spi, MCP_RXB1CTRL, MCP_RXB_RX_MASK, MCP_RXB_RX_STDEXT);
ESP_LOGI(CAN_TAG, "Enter normal mode"); ESP_LOGI(CAN_TAG, "Enter normal mode");
set_CANCTRL_mode(spi, MODE_NORMAL); set_CANCTRL_mode(*spi, MODE_NORMAL);
ESP_LOGI(CAN_TAG, "Init done!"); ESP_LOGI(CAN_TAG, "Init done!");
xTaskCreate(can_task, "CAN Task", 4096, &spi, 0, nullptr); xTaskCreate(can_task, "CAN Task", 4096, spi, 0, nullptr);
} }