Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Revision 1:7d24c69d9a0e, committed 2021-08-16
- Comitter:
- Picard22
- Date:
- Mon Aug 16 13:35:58 2021 +0000
- Parent:
- 0:c8ecd653066c
- Commit message:
- revision_with_med_lib
Changed in this revision
sensirion/sensirion_i2c_hal.c | Show diff for this revision Revisions of this file |
sensirion/sensirion_i2c_hal.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/sensirion/sensirion_i2c_hal.c Mon Aug 16 13:00:07 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2018, Sensirion AG - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Sensirion AG nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "sensirion_i2c_hal.h" -#include "sensirion_common.h" -#include "sensirion_config.h" - -/* - * INSTRUCTIONS - * ============ - * - * Implement all functions where they are marked as IMPLEMENT. - * Follow the function specification in the comments. - */ - -/** - * Select the current i2c bus by index. - * All following i2c operations will be directed at that bus. - * - * THE IMPLEMENTATION IS OPTIONAL ON SINGLE-BUS SETUPS (all sensors on the same - * bus) - * - * @param bus_idx Bus index to select - * @returns 0 on success, an error code otherwise - */ -int16_t sensirion_i2c_hal_select_bus(uint8_t bus_idx) { - /* TODO:IMPLEMENT or leave empty if all sensors are located on one single - * bus - */ - return NOT_IMPLEMENTED_ERROR; -} - -/** - * Initialize all hard- and software components that are needed for the I2C - * communication. - */ -void sensirion_i2c_hal_init(void) { - /* TODO:IMPLEMENT */ -} - -/** - * Release all resources initialized by sensirion_i2c_hal_init(). - */ -void sensirion_i2c_hal_free(void) { - /* TODO:IMPLEMENT or leave empty if no resources need to be freed */ -} - -/** - * Execute one read transaction on the I2C bus, reading a given number of bytes. - * If the device does not acknowledge the read command, an error shall be - * returned. - * - * @param address 7-bit I2C address to read from - * @param data pointer to the buffer where the data is to be stored - * @param count number of bytes to read from I2C and store in the buffer - * @returns 0 on success, error code otherwise - */ -int8_t sensirion_i2c_hal_read(uint8_t address, uint8_t* data, uint16_t count) { - /* TODO:IMPLEMENT */ - return NOT_IMPLEMENTED_ERROR; -} - -/** - * Execute one write transaction on the I2C bus, sending a given number of - * bytes. The bytes in the supplied buffer must be sent to the given address. If - * the slave device does not acknowledge any of the bytes, an error shall be - * returned. - * - * @param address 7-bit I2C address to write to - * @param data pointer to the buffer containing the data to write - * @param count number of bytes to read from the buffer and send over I2C - * @returns 0 on success, error code otherwise - */ -int8_t sensirion_i2c_hal_write(uint8_t address, const uint8_t* data, - uint16_t count) { - /* TODO:IMPLEMENT */ - return NOT_IMPLEMENTED_ERROR; -} - -/** - * Sleep for a given number of microseconds. The function should delay the - * execution for at least the given time, but may also sleep longer. - * - * Despite the unit, a <10 millisecond precision is sufficient. - * - * @param useconds the sleep time in microseconds - */ -void sensirion_i2c_hal_sleep_usec(uint32_t useconds) { - /* TODO:IMPLEMENT */ -} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sensirion/sensirion_i2c_hal.cpp Mon Aug 16 13:35:58 2021 +0000 @@ -0,0 +1,99 @@ + +/* + * Copyright (c) 2018, Sensirion AG + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of Sensirion AG nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "sensirion_i2c_hal.h" +#include "sensirion_common.h" +#include "sensirion_config.h" +#include <mbed.h> + +#define E_MBED_I2C_READ_FAILED -1 +#define E_MBED_I2C_WRITE_FAILED -1 + +/* open I2C connection */ +static I2C i2c_connection(I2C_SDA, I2C_SCL); + +/** + * Initialize all hard- and software components that are needed for the I2C + * communication. + */ +void sensirion_i2c_hal_init(void) { +} + +/** + * Release all resources initialized by sensirion_i2c_hal_init(). + */ +void sensirion_i2c_hal_free(void) { +} + +/** + * Execute one read transaction on the I2C bus, reading a given number of bytes. + * If the device does not acknowledge the read command, an error shall be + * returned. + * + * @param address 7-bit I2C address to read from + * @param data pointer to the buffer where the data is to be stored + * @param count number of bytes to read from I2C and store in the buffer + * @returns 0 on success, error code otherwise + */ +int8_t sensirion_i2c_hal_read(uint8_t address, uint8_t* data, uint16_t count) { + if (i2c_connection.read(address << 1, (char*)data, count) != 0) + return E_MBED_I2C_READ_FAILED; + return 0; +} + +/** + * Execute one write transaction on the I2C bus, sending a given number of + * bytes. The bytes in the supplied buffer must be sent to the given address. If + * the slave device does not acknowledge any of the bytes, an error shall be + * returned. + * + * @param address 7-bit I2C address to write to + * @param data pointer to the buffer containing the data to write + * @param count number of bytes to read from the buffer and send over I2C + * @returns 0 on success, error code otherwise + */ +int8_t sensirion_i2c_hal_write(uint8_t address, const uint8_t* data, + uint16_t count) { + if (i2c_connection.write(address << 1, (char*)data, count) != 0) + return E_MBED_I2C_WRITE_FAILED; + return 0; +} + +/** + * Sleep for a given number of microseconds. The function should delay the + * execution for at least the given time, but may also sleep longer. + * + * @param useconds the sleep time in microseconds + */ +void sensirion_i2c_hal_sleep_usec(uint32_t useconds) { + wait_us(useconds); +} \ No newline at end of file