diff options
Diffstat (limited to 'watch-library/hal/src')
-rw-r--r-- | watch-library/hal/src/hal_atomic.c | 66 | ||||
-rw-r--r-- | watch-library/hal/src/hal_calendar.c | 0 | ||||
-rw-r--r-- | watch-library/hal/src/hal_delay.c | 80 | ||||
-rw-r--r-- | watch-library/hal/src/hal_ext_irq.c | 188 | ||||
-rwxr-xr-x | watch-library/hal/src/hal_flash.c | 314 | ||||
-rw-r--r-- | watch-library/hal/src/hal_gpio.c | 44 | ||||
-rw-r--r-- | watch-library/hal/src/hal_i2c_m_sync.c | 258 | ||||
-rw-r--r-- | watch-library/hal/src/hal_init.c | 47 | ||||
-rw-r--r-- | watch-library/hal/src/hal_io.c | 58 | ||||
-rwxr-xr-x | watch-library/hal/src/hal_rand_sync.c | 122 | ||||
-rw-r--r-- | watch-library/hal/src/hal_slcd_sync.c | 150 | ||||
-rw-r--r-- | watch-library/hal/src/hal_sleep.c | 73 | ||||
-rwxr-xr-x | watch-library/hal/src/hal_spi_m_sync.c | 201 | ||||
-rwxr-xr-x | watch-library/hal/src/hal_usart_sync.c | 276 |
14 files changed, 0 insertions, 1877 deletions
diff --git a/watch-library/hal/src/hal_atomic.c b/watch-library/hal/src/hal_atomic.c deleted file mode 100644 index f56418ee..00000000 --- a/watch-library/hal/src/hal_atomic.c +++ /dev/null @@ -1,66 +0,0 @@ -/** - * \file - * - * \brief Critical sections related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_atomic.h" - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -/** - * \brief Disable interrupts, enter critical section - */ -void atomic_enter_critical(hal_atomic_t volatile *atomic) -{ - *atomic = __get_PRIMASK(); - __disable_irq(); - __DMB(); -} - -/** - * \brief Exit atomic section - */ -void atomic_leave_critical(hal_atomic_t volatile *atomic) -{ - __DMB(); - __set_PRIMASK(*atomic); -} - -/** - * \brief Retrieve the current driver version - */ -uint32_t atomic_get_version(void) -{ - return DRIVER_VERSION; -} diff --git a/watch-library/hal/src/hal_calendar.c b/watch-library/hal/src/hal_calendar.c deleted file mode 100644 index e69de29b..00000000 --- a/watch-library/hal/src/hal_calendar.c +++ /dev/null diff --git a/watch-library/hal/src/hal_delay.c b/watch-library/hal/src/hal_delay.c deleted file mode 100644 index 6f77cc70..00000000 --- a/watch-library/hal/src/hal_delay.c +++ /dev/null @@ -1,80 +0,0 @@ -/** - * \file - * - * \brief HAL delay related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include <hpl_irq.h> -#include <hpl_reset.h> -#include <hpl_sleep.h> -#include "hal_delay.h" -#include <hpl_delay.h> - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -/** - * \brief The pointer to a hardware instance used by the driver. - */ -static void *hardware; - -/** - * \brief Initialize Delay driver - */ -void delay_init(void *const hw) -{ - _delay_init(hardware = hw); -} - -/** - * \brief Perform delay in us - */ -void delay_us(const uint16_t us) -{ - _delay_cycles(hardware, _get_cycles_for_us(us)); -} - -/** - * \brief Perform delay in ms - */ -void delay_ms(const uint16_t ms) -{ - _delay_cycles(hardware, _get_cycles_for_ms(ms)); -} - -/** - * \brief Retrieve the current driver version - */ -uint32_t delay_get_version(void) -{ - return DRIVER_VERSION; -} diff --git a/watch-library/hal/src/hal_ext_irq.c b/watch-library/hal/src/hal_ext_irq.c deleted file mode 100644 index 2c383b4b..00000000 --- a/watch-library/hal/src/hal_ext_irq.c +++ /dev/null @@ -1,188 +0,0 @@ -/** - * \file - * - * \brief External interrupt functionality imkplementation. - * - * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_ext_irq.h" - -#define EXT_IRQ_AMOUNT 6 - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -/** - * \brief External IRQ struct - */ -struct ext_irq { - ext_irq_cb_t cb; - uint32_t pin; -}; - -/* Remove KEIL compiling error in case no IRQ line selected */ -#if EXT_IRQ_AMOUNT == 0 -#undef EXT_IRQ_AMOUNT -#define EXT_IRQ_AMOUNT 1 -#endif - -/** - * \brief Array of external IRQs callbacks - */ -static struct ext_irq ext_irqs[EXT_IRQ_AMOUNT]; - -static void process_ext_irq(const uint32_t pin); - -/** - * \brief Initialize external irq component if any - */ -int32_t ext_irq_init(void) -{ - uint16_t i; - - for (i = 0; i < EXT_IRQ_AMOUNT; i++) { - ext_irqs[i].pin = 0xFFFFFFFF; - ext_irqs[i].cb = NULL; - } - - return _ext_irq_init(process_ext_irq); -} - -/** - * \brief Deinitialize external irq if any - */ -int32_t ext_irq_deinit(void) -{ - return _ext_irq_deinit(); -} - -/** - * \brief Register callback for the given external interrupt - */ -int32_t ext_irq_register(const uint32_t pin, ext_irq_cb_t cb) -{ - uint8_t i = 0, j = 0; - bool found = false; - - for (; i < EXT_IRQ_AMOUNT; i++) { - if (ext_irqs[i].pin == pin) { - ext_irqs[i].cb = cb; - found = true; - break; - } - } - - if (NULL == cb) { - if (!found) { - return ERR_INVALID_ARG; - } - return _ext_irq_enable(pin, false); - } - - if (!found) { - for (i = 0; i < EXT_IRQ_AMOUNT; i++) { - if (NULL == ext_irqs[i].cb) { - ext_irqs[i].cb = cb; - ext_irqs[i].pin = pin; - found = true; - break; - } - } - for (; (j < EXT_IRQ_AMOUNT) && (i < EXT_IRQ_AMOUNT); j++) { - if ((ext_irqs[i].pin < ext_irqs[j].pin) && (ext_irqs[j].pin != 0xFFFFFFFF)) { - struct ext_irq tmp = ext_irqs[j]; - - ext_irqs[j] = ext_irqs[i]; - ext_irqs[i] = tmp; - } - } - } - - if (!found) { - return ERR_INVALID_ARG; - } - - return _ext_irq_enable(pin, true); -} - -/** - * \brief Enable external irq - */ -int32_t ext_irq_enable(const uint32_t pin) -{ - return _ext_irq_enable(pin, true); -} - -/** - * \brief Disable external irq - */ -int32_t ext_irq_disable(const uint32_t pin) -{ - return _ext_irq_enable(pin, false); -} - -/** - * \brief Retrieve the current driver version - */ -uint32_t ext_irq_get_version(void) -{ - return DRIVER_VERSION; -} - -/** - * \brief Interrupt processing routine - * - * \param[in] pin The pin which triggered the interrupt - */ -static void process_ext_irq(const uint32_t pin) -{ - uint8_t lower = 0, middle, upper = EXT_IRQ_AMOUNT; - - while (upper >= lower) { - middle = (upper + lower) >> 1; - if (middle >= EXT_IRQ_AMOUNT) { - return; - } - - if (ext_irqs[middle].pin == pin) { - if (ext_irqs[middle].cb) { - ext_irqs[middle].cb(); - } - return; - } - - if (ext_irqs[middle].pin < pin) { - lower = middle + 1; - } else { - upper = middle - 1; - } - } -} diff --git a/watch-library/hal/src/hal_flash.c b/watch-library/hal/src/hal_flash.c deleted file mode 100755 index b1a58b71..00000000 --- a/watch-library/hal/src/hal_flash.c +++ /dev/null @@ -1,314 +0,0 @@ -/** - * \file - * - * \brief Flash functionality implementation. - * - * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_flash.h" -#include <utils_assert.h> -#include <utils.h> -#include <hal_atomic.h> - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -static void flash_ready(struct _flash_device *device); -static void flash_error(struct _flash_device *device); - -static int32_t flash_is_address_aligned(struct flash_descriptor *flash, const uint32_t flash_addr); - -/** - * \brief Initialize the FLASH HAL instance and hardware for callback mode. - */ -int32_t flash_init(struct flash_descriptor *flash, void *const hw) -{ - int32_t rc; - - ASSERT(flash && hw); - - rc = _flash_init(&flash->dev, hw); - if (rc) { - return rc; - } - - flash->dev.flash_cb.ready_cb = flash_ready; - flash->dev.flash_cb.error_cb = flash_error; - - return ERR_NONE; -} - -/** - * \brief Deinitialize the FLASH HAL instance. - */ -int32_t flash_deinit(struct flash_descriptor *flash) -{ - ASSERT(flash); - - _flash_deinit(&flash->dev); - - return ERR_NONE; -} - -/** - * \brief Reads a number of bytes to a page in the internal Flash - */ -int32_t flash_read(struct flash_descriptor *flash, uint32_t src_addr, uint8_t *buffer, uint32_t length) -{ - ASSERT(flash && buffer && length); - - uint32_t page_size = _flash_get_page_size(&flash->dev); - uint32_t total_pages = _flash_get_total_pages(&flash->dev); - - /* Check if the address is valid */ - if ((src_addr > page_size * total_pages) || (src_addr + length > page_size * total_pages)) { - return ERR_BAD_ADDRESS; - } - - _flash_read(&flash->dev, src_addr, buffer, length); - - return ERR_NONE; -} - -/** - * \brief Updates several bytes to the internal Flash - */ -int32_t flash_write(struct flash_descriptor *flash, uint32_t dst_addr, uint8_t *buffer, uint32_t length) -{ - ASSERT(flash && buffer && length); - - uint32_t page_size = _flash_get_page_size(&flash->dev); - uint32_t total_pages = _flash_get_total_pages(&flash->dev); - - /* Check if the address is valid */ - if ((dst_addr > page_size * total_pages) || (dst_addr + length > page_size * total_pages)) { - return ERR_BAD_ADDRESS; - } - - if (_flash_is_locked(&flash->dev, dst_addr)) { - return ERR_DENIED; - } - - _flash_write(&flash->dev, dst_addr, buffer, length); - - return ERR_NONE; -} - -/** - * \brief Appends a number of bytes to a page in the internal Flash - */ -int32_t flash_append(struct flash_descriptor *flash, uint32_t dst_addr, uint8_t *buffer, uint32_t length) -{ - ASSERT(flash && buffer && length); - - uint32_t page_size = _flash_get_page_size(&flash->dev); - uint32_t total_pages = _flash_get_total_pages(&flash->dev); - - /* Check if the address is valid */ - if ((dst_addr > page_size * total_pages) || (dst_addr + length > page_size * total_pages)) { - return ERR_BAD_ADDRESS; - } - - if (_flash_is_locked(&flash->dev, dst_addr)) { - return ERR_DENIED; - } - - _flash_append(&flash->dev, dst_addr, buffer, length); - - return ERR_NONE; -} - -/** - * \brief Execute erase in the internal flash - */ -int32_t flash_erase(struct flash_descriptor *flash, const uint32_t dst_addr, const uint32_t page_nums) -{ - ASSERT(flash && page_nums); - uint32_t page_size = _flash_get_page_size(&flash->dev); - uint32_t total_pages = _flash_get_total_pages(&flash->dev); - int32_t rc; - - rc = flash_is_address_aligned(flash, dst_addr); - if (rc) { - return rc; - } - - if ((page_nums > total_pages) || (dst_addr / page_size + page_nums > total_pages)) { - return ERR_INVALID_ARG; - } - - _flash_erase(&flash->dev, dst_addr, page_nums); - - return ERR_NONE; -} - -/** - * \brief Register a function as FLASH transfer completion callback - */ -int32_t flash_register_callback(struct flash_descriptor *flash, const enum flash_cb_type type, flash_cb_t func) -{ - ASSERT(flash); - - switch (type) { - case FLASH_CB_READY: - flash->callbacks.cb_ready = func; - break; - - case FLASH_CB_ERROR: - flash->callbacks.cb_error = func; - break; - - default: - return ERR_INVALID_ARG; - } - - _flash_set_irq_state(&flash->dev, (enum _flash_cb_type)type, NULL != func); - - return ERR_NONE; -} - -/** - * \brief Execute lock in the internal flash - */ -int32_t flash_lock(struct flash_descriptor *flash, const uint32_t dst_addr, const uint32_t page_nums) -{ - ASSERT(flash && page_nums); - uint32_t page_size = _flash_get_page_size(&flash->dev); - uint32_t total_pages = _flash_get_total_pages(&flash->dev); - int32_t rc; - - rc = flash_is_address_aligned(flash, dst_addr); - if (rc) { - return rc; - } - - if ((page_nums > total_pages) || (dst_addr / page_size + page_nums > total_pages)) { - return ERR_INVALID_ARG; - } - - return _flash_lock(&flash->dev, dst_addr, page_nums); -} - -/** - * \brief Execute unlock in the internal flash - */ -int32_t flash_unlock(struct flash_descriptor *flash, const uint32_t dst_addr, const uint32_t page_nums) -{ - ASSERT(flash && page_nums); - uint32_t page_size = _flash_get_page_size(&flash->dev); - uint32_t total_pages = _flash_get_total_pages(&flash->dev); - int32_t rc; - - rc = flash_is_address_aligned(flash, dst_addr); - if (rc) { - return rc; - } - - if ((page_nums > total_pages) || (dst_addr / page_size + page_nums > total_pages)) { - return ERR_INVALID_ARG; - } - - return _flash_unlock(&flash->dev, dst_addr, page_nums); -} - -/** - * \brief Get the flash page size. - */ -uint32_t flash_get_page_size(struct flash_descriptor *flash) -{ - ASSERT(flash); - return _flash_get_page_size(&flash->dev); -} - -/** - * \brief Get the numbers of flash page. - */ -uint32_t flash_get_total_pages(struct flash_descriptor *flash) -{ - ASSERT(flash); - return _flash_get_total_pages(&flash->dev); -} - -/** - * \brief Retrieve the current driver version - */ -uint32_t flash_get_version(void) -{ - return DRIVER_VERSION; -} - -/** - * \internal check the address whether it is aligned - * \param[in, out] flash Pointer to the HAL FLASH instance. - * \param[in] flash_addr address to be check in flash - * - * \return whether it is valid - * \retval 0 Valid. - * \retval -1 Error, invalid. - */ -static int32_t flash_is_address_aligned(struct flash_descriptor *flash, const uint32_t flash_addr) -{ - ASSERT(flash); - - uint32_t page_size = _flash_get_page_size(&flash->dev); - - /* Check if the read address not aligned to the start of a page */ - if (flash_addr & (page_size - 1)) { - return ERR_BAD_ADDRESS; - } - return ERR_NONE; -} - -/** - * \internal Ready for a new flash command - * - * \param[in] device The pointer to flash device structure - */ -static void flash_ready(struct _flash_device *device) -{ - struct flash_descriptor *const descr = CONTAINER_OF(device, struct flash_descriptor, dev); - if (descr->callbacks.cb_ready) { - descr->callbacks.cb_ready(descr); - } -} - -/** - * \internal Error occurs in flash command - * - * \param[in] device The pointer to flash device structure - */ -static void flash_error(struct _flash_device *device) -{ - struct flash_descriptor *const descr = CONTAINER_OF(device, struct flash_descriptor, dev); - if (descr->callbacks.cb_error) { - descr->callbacks.cb_error(descr); - } -} diff --git a/watch-library/hal/src/hal_gpio.c b/watch-library/hal/src/hal_gpio.c deleted file mode 100644 index 00dfea6f..00000000 --- a/watch-library/hal/src/hal_gpio.c +++ /dev/null @@ -1,44 +0,0 @@ -/** - * \file - * - * \brief Port - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_gpio.h" - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -uint32_t gpio_get_version(void) -{ - return DRIVER_VERSION; -} diff --git a/watch-library/hal/src/hal_i2c_m_sync.c b/watch-library/hal/src/hal_i2c_m_sync.c deleted file mode 100644 index 9be16be4..00000000 --- a/watch-library/hal/src/hal_i2c_m_sync.c +++ /dev/null @@ -1,258 +0,0 @@ -/** - * \file - * - * \brief I/O I2C related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ -#include <hal_i2c_m_sync.h> -#include <utils.h> -#include <utils_assert.h> - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -/** - * \brief Sync version of I2C I/O read - */ -static int32_t i2c_m_sync_read(struct io_descriptor *io, uint8_t *buf, const uint16_t n) -{ - struct i2c_m_sync_desc *i2c = CONTAINER_OF(io, struct i2c_m_sync_desc, io); - struct _i2c_m_msg msg; - int32_t ret; - - msg.addr = i2c->periph_addr; - msg.len = n; - msg.flags = I2C_M_STOP | I2C_M_RD; - msg.buffer = buf; - - ret = _i2c_m_sync_transfer(&i2c->device, &msg); - - if (ret) { - return ret; - } - - return n; -} - -/** - * \brief Sync version of I2C I/O write - */ -static int32_t i2c_m_sync_write(struct io_descriptor *io, const uint8_t *buf, const uint16_t n) -{ - struct i2c_m_sync_desc *i2c = CONTAINER_OF(io, struct i2c_m_sync_desc, io); - struct _i2c_m_msg msg; - int32_t ret; - - msg.addr = i2c->periph_addr; - msg.len = n; - msg.flags = I2C_M_STOP; - msg.buffer = (uint8_t *)buf; - - ret = _i2c_m_sync_transfer(&i2c->device, &msg); - - if (ret) { - return ret; - } - - return n; -} - -/** - * \brief Sync version of i2c initialize - */ -int32_t i2c_m_sync_init(struct i2c_m_sync_desc *i2c, void *hw) -{ - int32_t init_status; - ASSERT(i2c); - - init_status = _i2c_m_sync_init(&i2c->device, hw); - if (init_status) { - return init_status; - } - - /* Init I/O */ - i2c->io.read = i2c_m_sync_read; - i2c->io.write = i2c_m_sync_write; - - return ERR_NONE; -} - -/** - * \brief deinitialize - */ -int32_t i2c_m_sync_deinit(struct i2c_m_sync_desc *i2c) -{ - int32_t status; - ASSERT(i2c); - - status = _i2c_m_sync_deinit(&i2c->device); - if (status) { - return status; - } - - i2c->io.read = NULL; - i2c->io.write = NULL; - - return ERR_NONE; -} - -/** - * \brief Sync version of i2c enable - */ -int32_t i2c_m_sync_enable(struct i2c_m_sync_desc *i2c) -{ - return _i2c_m_sync_enable(&i2c->device); -} - -/** - * \brief Sync version of i2c disable - */ -int32_t i2c_m_sync_disable(struct i2c_m_sync_desc *i2c) -{ - return _i2c_m_sync_disable(&i2c->device); -} - -/** - * \brief Sync version of i2c set peripheral address - */ -int32_t i2c_m_sync_set_periphaddr(struct i2c_m_sync_desc *i2c, int16_t addr, int32_t addr_len) -{ - return i2c->periph_addr = (addr & 0x3ff) | (addr_len & I2C_M_TEN); -} - -/** - * \brief Sync version of i2c set baudrate - */ -int32_t i2c_m_sync_set_baudrate(struct i2c_m_sync_desc *i2c, uint32_t clkrate, uint32_t baudrate) -{ - return _i2c_m_sync_set_baudrate(&i2c->device, clkrate, baudrate); -} - -/** - * \brief Sync version of i2c write command - */ -int32_t i2c_m_sync_cmd_write(struct i2c_m_sync_desc *i2c, uint8_t reg, uint8_t *buffer, uint8_t length) -{ - struct _i2c_m_msg msg; - int32_t ret; - - msg.addr = i2c->periph_addr; - msg.len = 1; - msg.flags = 0; - msg.buffer = ® - - ret = _i2c_m_sync_transfer(&i2c->device, &msg); - - if (ret != 0) { - /* error occurred */ - return ret; - } - - msg.flags = I2C_M_STOP; - msg.buffer = buffer; - msg.len = length; - - ret = _i2c_m_sync_transfer(&i2c->device, &msg); - - if (ret != 0) { - /* error occurred */ - return ret; - } - - return ERR_NONE; -} - -/** - * \brief Sync version of i2c read command - */ -int32_t i2c_m_sync_cmd_read(struct i2c_m_sync_desc *i2c, uint8_t reg, uint8_t *buffer, uint8_t length) -{ - struct _i2c_m_msg msg; - int32_t ret; - - msg.addr = i2c->periph_addr; - msg.len = 1; - msg.flags = 0; - msg.buffer = ® - - ret = _i2c_m_sync_transfer(&i2c->device, &msg); - - if (ret != 0) { - /* error occurred */ - return ret; - } - - msg.flags = I2C_M_STOP | I2C_M_RD; - msg.buffer = buffer; - msg.len = length; - - ret = _i2c_m_sync_transfer(&i2c->device, &msg); - - if (ret != 0) { - /* error occurred */ - return ret; - } - - return ERR_NONE; -} - -/** - * \brief Sync version of i2c transfer command - */ -int32_t i2c_m_sync_transfer(struct i2c_m_sync_desc *const i2c, struct _i2c_m_msg *msg) -{ - return _i2c_m_sync_transfer(&i2c->device, msg); -} - -/** - * \brief Sync version of i2c send stop condition command - */ -int32_t i2c_m_sync_send_stop(struct i2c_m_sync_desc *const i2c) -{ - return _i2c_m_sync_send_stop(&i2c->device); -} - -/** - * \brief Retrieve I/O descriptor - */ -int32_t i2c_m_sync_get_io_descriptor(struct i2c_m_sync_desc *const i2c, struct io_descriptor **io) -{ - *io = &i2c->io; - return ERR_NONE; -} - -/** - * \brief Retrieve the current driver version - */ -uint32_t i2c_m_sync_get_version(void) -{ - return DRIVER_VERSION; -} diff --git a/watch-library/hal/src/hal_init.c b/watch-library/hal/src/hal_init.c deleted file mode 100644 index fb65341f..00000000 --- a/watch-library/hal/src/hal_init.c +++ /dev/null @@ -1,47 +0,0 @@ -/** - * \file - * - * \brief HAL initialization related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_init.h" - -/** - * \brief Driver version - */ -#define HAL_INIT_VERSION 0x00000001u - -/** - * \brief Retrieve the current driver version - */ -uint32_t init_get_version(void) -{ - return HAL_INIT_VERSION; -} diff --git a/watch-library/hal/src/hal_io.c b/watch-library/hal/src/hal_io.c deleted file mode 100644 index ae787d42..00000000 --- a/watch-library/hal/src/hal_io.c +++ /dev/null @@ -1,58 +0,0 @@ -/** - * \file - * - * \brief I/O functionality implementation. - * - * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include <hal_io.h> -#include <utils_assert.h> - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -/** - * \brief I/O write interface - */ -int32_t io_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length) -{ - ASSERT(io_descr && buf); - return io_descr->write(io_descr, buf, length); -} - -/** - * \brief I/O read interface - */ -int32_t io_read(struct io_descriptor *const io_descr, uint8_t *const buf, const uint16_t length) -{ - ASSERT(io_descr && buf); - return io_descr->read(io_descr, buf, length); -} diff --git a/watch-library/hal/src/hal_rand_sync.c b/watch-library/hal/src/hal_rand_sync.c deleted file mode 100755 index 8b29ed1b..00000000 --- a/watch-library/hal/src/hal_rand_sync.c +++ /dev/null @@ -1,122 +0,0 @@ -/** - * \file - * - * \brief Generic Random Number Generator (RNG) functionality declaration. - * - * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include <utils.h> -#include "hal_rand_sync.h" - -#define HAL_RNG_SYNC_VERSION 0x00000001u - -int32_t rand_sync_init(struct rand_sync_desc *const desc, void *const hw) -{ - ASSERT(desc); - - return _rand_sync_init(&desc->dev, hw); -} - -void rand_sync_deinit(struct rand_sync_desc *const desc) -{ - ASSERT(desc); - _rand_sync_deinit(&desc->dev); -} - -int32_t rand_sync_enable(struct rand_sync_desc *const desc) -{ - ASSERT(desc); - return _rand_sync_enable(&desc->dev); -} - -void rand_sync_disable(struct rand_sync_desc *const desc) -{ - ASSERT(desc); - _rand_sync_disable(&desc->dev); -} - -int32_t rand_sync_set_seed(struct rand_sync_desc *const desc, const uint32_t seed) -{ - ASSERT(desc); - return _rand_sync_set_seed(&desc->dev, seed); -} - -/** - * \brief Read data bits - */ -static uint32_t _rand_sync_read_data(const struct _rand_sync_dev *dev, const uint8_t n_bits) -{ - uint8_t r_bits = (dev->n_bits < 1) ? 32 : dev->n_bits; - if (r_bits < n_bits) { - uint8_t i; - uint32_t d = 0; - /* Join read bits */ - for (i = 0; i < n_bits; i += r_bits) { - d |= (uint32_t)(_rand_sync_read_one(dev) << i); - } - return d; - } else { - return _rand_sync_read_one(dev); - } -} - -uint8_t rand_sync_read8(const struct rand_sync_desc *const desc) -{ - ASSERT(desc); - return (uint8_t)_rand_sync_read_data(&desc->dev, 8); -} - -uint32_t rand_sync_read32(const struct rand_sync_desc *const desc) -{ - ASSERT(desc); - return (uint32_t)_rand_sync_read_data(&desc->dev, 32); -} - -void rand_sync_read_buf8(const struct rand_sync_desc *const desc, uint8_t *buf, uint32_t len) -{ - uint32_t i; - ASSERT(desc && (buf && len)); - for (i = 0; i < len; i++) { - buf[i] = (uint8_t)_rand_sync_read_data(&desc->dev, 8); - } -} - -void rand_sync_read_buf32(const struct rand_sync_desc *const desc, uint32_t *buf, uint32_t len) -{ - uint32_t i; - ASSERT(desc && (buf && len)); - for (i = 0; i < len; i++) { - buf[i] = (uint32_t)_rand_sync_read_data(&desc->dev, 32); - } -} - -uint32_t rand_sync_get_version(void) -{ - return HAL_RNG_SYNC_VERSION; -} diff --git a/watch-library/hal/src/hal_slcd_sync.c b/watch-library/hal/src/hal_slcd_sync.c deleted file mode 100644 index 573eb0e2..00000000 --- a/watch-library/hal/src/hal_slcd_sync.c +++ /dev/null @@ -1,150 +0,0 @@ -/** - * \file - * - * \brief SLCD Segment Liquid Crystal Display Controller(Sync) functionality - * declaration. - * - * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include <hal_slcd_sync.h> -#include <utils_assert.h> - -/** - * \brief Initialize SLCD Descriptor - */ -int32_t slcd_sync_init(struct slcd_sync_descriptor *const descr, void *const hw) -{ - ASSERT(descr && hw); - return _slcd_sync_init(&descr->dev, hw); -} - -/** - * \brief Deinitialize SLCD Descriptor - */ -int32_t slcd_sync_deinit(struct slcd_sync_descriptor *const descr) -{ - ASSERT(descr); - return _slcd_sync_deinit(&descr->dev); -} - -/** - * \brief Enable SLCD driver - * - */ -int32_t slcd_sync_enable(struct slcd_sync_descriptor *const descr) -{ - ASSERT(descr); - return _slcd_sync_enable(&descr->dev); -} -/** - * \brief Disable SLCD driver - * - */ -int32_t slcd_sync_disable(struct slcd_sync_descriptor *const descr) -{ - ASSERT(descr); - return _slcd_sync_disable(&descr->dev); -} -/** - * \brief Turn on a Segment - */ -int32_t slcd_sync_seg_on(struct slcd_sync_descriptor *const descr, uint32_t seg) -{ - ASSERT(descr); - return _slcd_sync_seg_on(&descr->dev, seg); -} -/** - * \brief Turn off a Segment - */ -int32_t slcd_sync_seg_off(struct slcd_sync_descriptor *const descr, uint32_t seg) -{ - ASSERT(descr); - return _slcd_sync_seg_off(&descr->dev, seg); -} -/** - * \brief Blink a Segment - */ -int32_t slcd_sync_seg_blink(struct slcd_sync_descriptor *const descr, uint32_t seg, const uint32_t period) -{ - ASSERT(descr && period); - return _slcd_sync_seg_blink(&descr->dev, seg, period); -} - -/** - * \brief Displays a character - */ -int32_t slcd_sync_write_char(struct slcd_sync_descriptor *const descr, const uint8_t character, uint32_t index) -{ - ASSERT(descr); - return _slcd_sync_write_char(&descr->dev, character, index); -} - -/** - * \brief Displays character string string - */ -int32_t slcd_sync_write_string(struct slcd_sync_descriptor *const descr, uint8_t *const str, uint32_t len, - uint32_t index) -{ - uint32_t i; - ASSERT(descr && len); - - for (i = 0; i < len; i++) { - if (_slcd_sync_write_char(&descr->dev, *(str + i), index + i) != ERR_NONE) { - return ERR_INVALID_ARG; - } - } - return ERR_NONE; -} -/** - * \brief Start animation play by a segment array - */ -int32_t slcd_sync_start_animation(struct slcd_sync_descriptor *const descr, const uint32_t segs[], uint32_t len, - const uint32_t period) -{ - ASSERT(descr && segs && len && period); - return _slcd_sync_start_animation(&descr->dev, segs, len, period); -} - -/** - * \brief Stop animation play by a segment array - */ -int32_t slcd_sync_stop_animation(struct slcd_sync_descriptor *const descr, const uint32_t segs[], uint32_t len) -{ - ASSERT(descr && segs && len); - return _slcd_sync_stop_animation(&descr->dev, segs, len); -} - -/** - * \brief Set animation Frequency - */ -int32_t slcd_sync_set_animation_period(struct slcd_sync_descriptor *const descr, const uint32_t period) -{ - ASSERT(descr && period); - return _slcd_sync_set_animation_period(&descr->dev, period); -} diff --git a/watch-library/hal/src/hal_sleep.c b/watch-library/hal/src/hal_sleep.c deleted file mode 100644 index 89472f15..00000000 --- a/watch-library/hal/src/hal_sleep.c +++ /dev/null @@ -1,73 +0,0 @@ -/** - * \file - * - * \brief Sleep related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_sleep.h" -#include <hpl_sleep.h> - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -/** - * \brief Set the sleep mode of the device and put the MCU to sleep - * - * For an overview of which systems are disabled in sleep for the different - * sleep modes, see the data sheet. - * - * \param[in] mode Sleep mode to use - * - * \return The status of a sleep request - * \retval -1 The requested sleep mode was invalid or not available - * \retval 0 The operation completed successfully, returned after leaving the - * sleep - */ -int sleep(const uint8_t mode) -{ - if (ERR_NONE != _set_sleep_mode(mode)) - return ERR_INVALID_ARG; - - _go_to_sleep(); - - return ERR_NONE; -} - -/** - * \brief Retrieve the current driver version - * - * \return Current driver version - */ -uint32_t sleep_get_version(void) -{ - return DRIVER_VERSION; -} diff --git a/watch-library/hal/src/hal_spi_m_sync.c b/watch-library/hal/src/hal_spi_m_sync.c deleted file mode 100755 index 1a64296a..00000000 --- a/watch-library/hal/src/hal_spi_m_sync.c +++ /dev/null @@ -1,201 +0,0 @@ -/** - * \file - * - * \brief I/O SPI related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_spi_m_sync.h" -#include <utils_assert.h> -#include <utils.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Driver version - */ -#define SPI_M_SYNC_DRIVER_VERSION 0x00000001u - -#define SPI_DEACTIVATE_NEXT 0x8000 - -static int32_t _spi_m_sync_io_write(struct io_descriptor *const io, const uint8_t *const buf, const uint16_t length); -static int32_t _spi_m_sync_io_read(struct io_descriptor *const io, uint8_t *const buf, const uint16_t length); - -/** - * \brief Initialize the SPI HAL instance function pointer for HPL APIs. - */ -void spi_m_sync_set_func_ptr(struct spi_m_sync_descriptor *spi, void *const func) -{ - ASSERT(spi); - spi->func = (struct _spi_m_sync_hpl_interface *)func; -} - -int32_t spi_m_sync_init(struct spi_m_sync_descriptor *spi, void *const hw) -{ - int32_t rc = 0; - ASSERT(spi && hw); - spi->dev.prvt = (void *)hw; - rc = _spi_m_sync_init(&spi->dev, hw); - - if (rc < 0) { - return rc; - } - - spi->flags = SPI_DEACTIVATE_NEXT; - spi->io.read = _spi_m_sync_io_read; - spi->io.write = _spi_m_sync_io_write; - - return ERR_NONE; -} - -void spi_m_sync_deinit(struct spi_m_sync_descriptor *spi) -{ - ASSERT(spi); - _spi_m_sync_deinit(&spi->dev); -} - -void spi_m_sync_enable(struct spi_m_sync_descriptor *spi) -{ - ASSERT(spi); - _spi_m_sync_enable(&spi->dev); -} - -void spi_m_sync_disable(struct spi_m_sync_descriptor *spi) -{ - ASSERT(spi); - _spi_m_sync_disable(&spi->dev); -} - -int32_t spi_m_sync_set_baudrate(struct spi_m_sync_descriptor *spi, const uint32_t baud_val) -{ - ASSERT(spi); - return _spi_m_sync_set_baudrate(&spi->dev, baud_val); -} - -int32_t spi_m_sync_set_mode(struct spi_m_sync_descriptor *spi, const enum spi_transfer_mode mode) -{ - ASSERT(spi); - return _spi_m_sync_set_mode(&spi->dev, mode); -} - -int32_t spi_m_sync_set_char_size(struct spi_m_sync_descriptor *spi, const enum spi_char_size char_size) -{ - ASSERT(spi); - return _spi_m_sync_set_char_size(&spi->dev, char_size); -} - -int32_t spi_m_sync_set_data_order(struct spi_m_sync_descriptor *spi, const enum spi_data_order dord) -{ - ASSERT(spi); - return _spi_m_sync_set_data_order(&spi->dev, dord); -} - -/** \brief Do SPI read in polling way - * For SPI master, activate CS, do send 0xFFs and read data, deactivate CS. - * - * It blocks until all data read or error. - * - * \param[in, out] spi Pointer to the HAL SPI instance. - * \param[out] buf Pointer to the buffer to store read data. - * \param[in] size Size of the data in number of characters. - * \return Operation status. - * \retval size Success. - * \retval >=0 Time out, with number of characters read. - */ -static int32_t _spi_m_sync_io_read(struct io_descriptor *io, uint8_t *buf, const uint16_t length) -{ - ASSERT(io); - - struct spi_m_sync_descriptor *spi = CONTAINER_OF(io, struct spi_m_sync_descriptor, io); - struct spi_xfer xfer; - - xfer.rxbuf = buf; - xfer.txbuf = 0; - xfer.size = length; - - return spi_m_sync_transfer(spi, &xfer); -} - -/** \brief Do SPI data write in polling way - * For SPI master, activate CS, do buffer send and deactivate CS. The data back - * is discarded. - * - * The data read back is discarded. - * - * It blocks until all data sent or error. - * - * \param[in, out] spi Pointer to the HAL SPI instance. - * \param[in] p_xfer Pointer to the transfer information (\ref spi_transfer). - * \return Operation status. - * \retval size Success. - * \retval >=0 Timeout, with number of characters transferred. - */ -static int32_t _spi_m_sync_io_write(struct io_descriptor *const io, const uint8_t *const buf, const uint16_t length) -{ - ASSERT(io); - - struct spi_m_sync_descriptor *spi = CONTAINER_OF(io, struct spi_m_sync_descriptor, io); - struct spi_xfer xfer; - - xfer.rxbuf = 0; - xfer.txbuf = (uint8_t *)buf; - xfer.size = length; - - return spi_m_sync_transfer(spi, &xfer); -} - -int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer) -{ - struct spi_msg msg; - - ASSERT(spi && p_xfer); - - msg.txbuf = p_xfer->txbuf; - msg.rxbuf = p_xfer->rxbuf; - msg.size = p_xfer->size; - return _spi_m_sync_trans(&spi->dev, &msg); -} - -int32_t spi_m_sync_get_io_descriptor(struct spi_m_sync_descriptor *const spi, struct io_descriptor **io) -{ - ASSERT(spi && io); - *io = &spi->io; - return 0; -} - -uint32_t spi_m_sync_get_version(void) -{ - return SPI_M_SYNC_DRIVER_VERSION; -} - -#ifdef __cplusplus -} -#endif diff --git a/watch-library/hal/src/hal_usart_sync.c b/watch-library/hal/src/hal_usart_sync.c deleted file mode 100755 index ab99c1d1..00000000 --- a/watch-library/hal/src/hal_usart_sync.c +++ /dev/null @@ -1,276 +0,0 @@ -/** - * \file - * - * \brief I/O USART related functionality implementation. - * - * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -#include "hal_usart_sync.h" -#include <utils_assert.h> -#include <utils.h> - -/** - * \brief Driver version - */ -#define DRIVER_VERSION 0x00000001u - -static int32_t usart_sync_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length); -static int32_t usart_sync_read(struct io_descriptor *const io_descr, uint8_t *const buf, const uint16_t length); - -/** - * \brief Initialize usart interface - */ -int32_t usart_sync_init(struct usart_sync_descriptor *const descr, void *const hw, void *const func) -{ - int32_t init_status; - ASSERT(descr && hw); - init_status = _usart_sync_init(&descr->device, hw); - if (init_status) { - return init_status; - } - - descr->io.read = usart_sync_read; - descr->io.write = usart_sync_write; - - return ERR_NONE; -} - -/** - * \brief Uninitialize usart interface - */ -int32_t usart_sync_deinit(struct usart_sync_descriptor *const descr) -{ - ASSERT(descr); - _usart_sync_deinit(&descr->device); - - descr->io.read = NULL; - descr->io.write = NULL; - - return ERR_NONE; -} - -/** - * \brief Enable usart interface - */ -int32_t usart_sync_enable(struct usart_sync_descriptor *const descr) -{ - ASSERT(descr); - _usart_sync_enable(&descr->device); - - return ERR_NONE; -} - -/** - * \brief Disable usart interface - */ -int32_t usart_sync_disable(struct usart_sync_descriptor *const descr) -{ - ASSERT(descr); - _usart_sync_disable(&descr->device); - - return ERR_NONE; -} - -/** - * \brief Retrieve I/O descriptor - */ -int32_t usart_sync_get_io_descriptor(struct usart_sync_descriptor *const descr, struct io_descriptor **io) -{ - ASSERT(descr && io); - - *io = &descr->io; - return ERR_NONE; -} - -/** - * \brief Specify action for flow control pins - */ -int32_t usart_sync_set_flow_control(struct usart_sync_descriptor *const descr, - const union usart_flow_control_state state) -{ - ASSERT(descr); - _usart_sync_set_flow_control_state(&descr->device, state); - - return ERR_NONE; -} - -/** - * \brief Set usart baud rate - */ -int32_t usart_sync_set_baud_rate(struct usart_sync_descriptor *const descr, const uint32_t baud_rate) -{ - ASSERT(descr); - _usart_sync_set_baud_rate(&descr->device, baud_rate); - - return ERR_NONE; -} - -/** - * \brief Set usart data order - */ -int32_t usart_sync_set_data_order(struct usart_sync_descriptor *const descr, const enum usart_data_order data_order) -{ - ASSERT(descr); - _usart_sync_set_data_order(&descr->device, data_order); - - return ERR_NONE; -} - -/** - * \brief Set usart mode - */ -int32_t usart_sync_set_mode(struct usart_sync_descriptor *const descr, const enum usart_mode mode) -{ - ASSERT(descr); - _usart_sync_set_mode(&descr->device, mode); - - return ERR_NONE; -} - -/** - * \brief Set usart parity - */ -int32_t usart_sync_set_parity(struct usart_sync_descriptor *const descr, const enum usart_parity parity) -{ - ASSERT(descr); - _usart_sync_set_parity(&descr->device, parity); - - return ERR_NONE; -} - -/** - * \brief Set usart stop bits - */ -int32_t usart_sync_set_stopbits(struct usart_sync_descriptor *const descr, const enum usart_stop_bits stop_bits) -{ - ASSERT(descr); - _usart_sync_set_stop_bits(&descr->device, stop_bits); - - return ERR_NONE; -} - -/** - * \brief Set usart character size - */ -int32_t usart_sync_set_character_size(struct usart_sync_descriptor *const descr, const enum usart_character_size size) -{ - ASSERT(descr); - _usart_sync_set_character_size(&descr->device, size); - - return ERR_NONE; -} - -/** - * \brief Retrieve the state of flow control pins - */ -int32_t usart_sync_flow_control_status(const struct usart_sync_descriptor *const descr, - union usart_flow_control_state *const state) -{ - ASSERT(descr && state); - *state = _usart_sync_get_flow_control_state(&descr->device); - - return ERR_NONE; -} - -/** - * \brief Check if the usart transmitter is empty - */ -int32_t usart_sync_is_tx_empty(const struct usart_sync_descriptor *const descr) -{ - ASSERT(descr); - return _usart_sync_is_ready_to_send(&descr->device); -} - -/** - * \brief Check if the usart receiver is not empty - */ -int32_t usart_sync_is_rx_not_empty(const struct usart_sync_descriptor *const descr) -{ - ASSERT(descr); - return _usart_sync_is_byte_received(&descr->device); -} - -/** - * \brief Retrieve the current driver version - */ -uint32_t usart_sync_get_version(void) -{ - return DRIVER_VERSION; -} - -/* - * \internal Write the given data to usart interface - * - * \param[in] descr The pointer to an io descriptor - * \param[in] buf Data to write to usart - * \param[in] length The number of bytes to write - * - * \return The number of bytes written. - */ -static int32_t usart_sync_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length) -{ - uint32_t offset = 0; - struct usart_sync_descriptor *descr = CONTAINER_OF(io_descr, struct usart_sync_descriptor, io); - - ASSERT(io_descr && buf && length); - while (!_usart_sync_is_ready_to_send(&descr->device)) - ; - do { - _usart_sync_write_byte(&descr->device, buf[offset]); - while (!_usart_sync_is_ready_to_send(&descr->device)) - ; - } while (++offset < length); - while (!_usart_sync_is_transmit_done(&descr->device)) - ; - return (int32_t)offset; -} - -/* - * \internal Read data from usart interface - * - * \param[in] descr The pointer to an io descriptor - * \param[in] buf A buffer to read data to - * \param[in] length The size of a buffer - * - * \return The number of bytes read. - */ -static int32_t usart_sync_read(struct io_descriptor *const io_descr, uint8_t *const buf, const uint16_t length) -{ - uint32_t offset = 0; - struct usart_sync_descriptor *descr = CONTAINER_OF(io_descr, struct usart_sync_descriptor, io); - - ASSERT(io_descr && buf && length); - do { - while (!_usart_sync_is_byte_received(&descr->device)) - ; - buf[offset] = _usart_sync_read_byte(&descr->device); - } while (++offset < length); - - return (int32_t)offset; -} |