| /* |
| * Copyright (c) 2022 Thomas Stranger |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/device.h> |
| #include <zephyr/sys/crc.h> |
| #include <zephyr/types.h> |
| #include <zephyr/drivers/w1.h> |
| |
| |
| int z_impl_w1_read_block(const struct device *dev, uint8_t *buffer, size_t len) |
| { |
| const struct w1_driver_api *api = dev->api; |
| int ret; |
| |
| if (api->read_block != NULL) { |
| return api->read_block(dev, buffer, len); |
| } |
| for (int i = 0; i < len; ++i) { |
| ret = w1_read_byte(dev); |
| if (ret < 0) { |
| return ret; |
| } |
| buffer[i] = ret; |
| } |
| |
| return 0; |
| } |
| |
| int z_impl_w1_write_block(const struct device *dev, const uint8_t *buffer, |
| size_t len) |
| { |
| const struct w1_driver_api *api = dev->api; |
| int ret; |
| |
| if (api->write_block != NULL) { |
| return api->write_block(dev, buffer, len); |
| } |
| for (int i = 0; i < len; ++i) { |
| ret = w1_write_byte(dev, buffer[i]); |
| if (ret < 0) { |
| return ret; |
| } |
| } |
| |
| return 0; |
| } |