| 319 | } |
| 320 | |
| 321 | static error_t close(Device* device) { |
| 322 | ESP_LOGI(TAG, "%s close", device->name); |
| 323 | if (xPortInIsrContext()) return ERROR_ISR_STATUS; |
| 324 | auto* driver_data = GET_DATA(device); |
| 325 | auto* dts_config = GET_CONFIG(device); |
| 326 | |
| 327 | lock(driver_data); |
| 328 | if (!driver_data->is_open) { |
| 329 | unlock(driver_data); |
| 330 | LOG_W(TAG, "Already closed"); |
| 331 | return ERROR_INVALID_STATE; |
| 332 | } |
| 333 | uart_driver_delete(dts_config->port); |
| 334 | driver_data->cleanup_pins(); |
| 335 | driver_data->is_open = false; |
| 336 | unlock(driver_data); |
| 337 | |
| 338 | return ERROR_NONE; |
| 339 | } |
| 340 | |
| 341 | static bool is_open(Device* device) { |
| 342 | auto* driver_data = GET_DATA(device); |
no test coverage detected