summaryrefslogtreecommitdiffstats
path: root/watch-library/hal/utils
diff options
context:
space:
mode:
authorAlexsander Akers <me@a2.io>2022-01-25 15:03:22 -0500
committerGitHub <noreply@github.com>2022-01-25 15:03:22 -0500
commitb8de35658ffd78ad8b22f91ccbbd3d63663afda9 (patch)
tree1f265ddfcc8e5abf0316b81b15f80bf5c70fa7b7 /watch-library/hal/utils
parent9e24f6c336773c7404139ab4db0eaab2f99504e2 (diff)
downloadSensor-Watch-b8de35658ffd78ad8b22f91ccbbd3d63663afda9.tar.gz
Sensor-Watch-b8de35658ffd78ad8b22f91ccbbd3d63663afda9.tar.bz2
Sensor-Watch-b8de35658ffd78ad8b22f91ccbbd3d63663afda9.zip
Sensor Watch Simulator (#35)
* Put something on screen * Use the 32bit watch_date_time repr to pass from JS * Implement periodic callbacks * Clear display on enabling * Hook up watch_set_led_color() to SVG (green-only) * Make debug output full-width * Remove default Emscripten canvas * Implement sleep and button clicks * Fix time zone conversion bug in beats-time app * Clean up warnings * Fix pin levels * Set time zone to browser value (if available) * Add basic backup data saving * Silence format specifier warnings in both targets * Remove unnecessary, copied files * Use RTC pointer to clear callbacks (if available) * Use preprocessor define to avoid hardcoding MOVEMENT_NUM_FACES * Change each face to const preprocessor definition * Remove Intl.DateTimeFormat usage * Update shell.html title, header * Add touch start/end event handlers on SVG buttons * Update shell.html * Update folder structure (shared, simulator, hardware under watch-library) * Tease out shared components from watch_slcd * Clean up simulator watch_slcd.c inline JS calls * Fix missing newlines at end of file * Add simulator warnings (except format, unused-paremter) * Implement remaining watch_rtc functions * Fix button bug on mouse down then drag out * Implement remaining watch_slcd functions * Link keyboard events to buttons (for keys A, L, M) * Rewrite event handling (mouse, touch, keyboard) in C * Set explicit text UTF-8 charset in shell.html * Address PR comments * Remove unused directories from include paths
Diffstat (limited to 'watch-library/hal/utils')
-rw-r--r--watch-library/hal/utils/include/compiler.h64
-rw-r--r--watch-library/hal/utils/include/err_codes.h73
-rw-r--r--watch-library/hal/utils/include/events.h54
-rw-r--r--watch-library/hal/utils/include/parts.h41
-rw-r--r--watch-library/hal/utils/include/utils.h368
-rw-r--r--watch-library/hal/utils/include/utils_assert.h93
-rw-r--r--watch-library/hal/utils/include/utils_decrement_macro.h309
-rw-r--r--watch-library/hal/utils/include/utils_event.h115
-rw-r--r--watch-library/hal/utils/include/utils_increment_macro.h308
-rw-r--r--watch-library/hal/utils/include/utils_list.h164
-rw-r--r--watch-library/hal/utils/include/utils_recursion_macro.h69
-rw-r--r--watch-library/hal/utils/include/utils_repeat_macro.h322
-rw-r--r--watch-library/hal/utils/src/utils_assert.c46
-rw-r--r--watch-library/hal/utils/src/utils_event.c125
-rw-r--r--watch-library/hal/utils/src/utils_list.c136
-rw-r--r--watch-library/hal/utils/src/utils_syscalls.c152
16 files changed, 0 insertions, 2439 deletions
diff --git a/watch-library/hal/utils/include/compiler.h b/watch-library/hal/utils/include/compiler.h
deleted file mode 100644
index f35db3df..00000000
--- a/watch-library/hal/utils/include/compiler.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * \file
- *
- * \brief Header
- *
- * Copyright (c) 2016-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
- *
- */
-/*
- * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a>
- */
-
-/******************************************************************************
- * compiler.h
- *
- * Created: 05.05.2014
- * Author: N. Fomin
- ******************************************************************************/
-
-#ifndef _COMPILER_H
-#define _COMPILER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stddef.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifndef _UNIT_TEST_
-#include "parts.h"
-#endif
-#include "err_codes.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _COMPILER_H */
diff --git a/watch-library/hal/utils/include/err_codes.h b/watch-library/hal/utils/include/err_codes.h
deleted file mode 100644
index a7aff018..00000000
--- a/watch-library/hal/utils/include/err_codes.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * \file
- *
- * \brief Error code definitions.
- *
- * This file defines various status codes returned by functions,
- * indicating success or failure as well as what kind of failure.
- *
- * 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
- *
- */
-
-#ifndef ERROR_CODES_H_INCLUDED
-#define ERROR_CODES_H_INCLUDED
-
-#define ERR_NONE 0
-#define ERR_INVALID_DATA -1
-#define ERR_NO_CHANGE -2
-#define ERR_ABORTED -3
-#define ERR_BUSY -4
-#define ERR_SUSPEND -5
-#define ERR_IO -6
-#define ERR_REQ_FLUSHED -7
-#define ERR_TIMEOUT -8
-#define ERR_BAD_DATA -9
-#define ERR_NOT_FOUND -10
-#define ERR_UNSUPPORTED_DEV -11
-#define ERR_NO_MEMORY -12
-#define ERR_INVALID_ARG -13
-#define ERR_BAD_ADDRESS -14
-#define ERR_BAD_FORMAT -15
-#define ERR_BAD_FRQ -16
-#define ERR_DENIED -17
-#define ERR_ALREADY_INITIALIZED -18
-#define ERR_OVERFLOW -19
-#define ERR_NOT_INITIALIZED -20
-#define ERR_SAMPLERATE_UNAVAILABLE -21
-#define ERR_RESOLUTION_UNAVAILABLE -22
-#define ERR_BAUDRATE_UNAVAILABLE -23
-#define ERR_PACKET_COLLISION -24
-#define ERR_PROTOCOL -25
-#define ERR_PIN_MUX_INVALID -26
-#define ERR_UNSUPPORTED_OP -27
-#define ERR_NO_RESOURCE -28
-#define ERR_NOT_READY -29
-#define ERR_FAILURE -30
-#define ERR_WRONG_LENGTH -31
-
-#endif
diff --git a/watch-library/hal/utils/include/events.h b/watch-library/hal/utils/include/events.h
deleted file mode 100644
index 3ee891a7..00000000
--- a/watch-library/hal/utils/include/events.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * \file
- *
- * \brief Events 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
- *
- */
-
-#ifndef _EVENTS_H_INCLUDED
-#define _EVENTS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <compiler.h>
-
-/**
- * \brief List of events. Must start with 0, be unique and follow numerical order.
- */
-#define EVENT_IS_READY_TO_SLEEP_ID 0
-#define EVENT_PREPARE_TO_SLEEP_ID 1
-#define EVENT_WOKEN_UP_ID 2
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _EVENTS_H_INCLUDED */
diff --git a/watch-library/hal/utils/include/parts.h b/watch-library/hal/utils/include/parts.h
deleted file mode 100644
index df30040f..00000000
--- a/watch-library/hal/utils/include/parts.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * \file
- *
- * \brief Atmel part identification macros
- *
- * Copyright (c) 2015-2019 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
- *
- */
-
-#ifndef ATMEL_PARTS_H
-#define ATMEL_PARTS_H
-
-#include "saml22.h"
-
-#include "hri_l22.h"
-
-#endif /* ATMEL_PARTS_H */
diff --git a/watch-library/hal/utils/include/utils.h b/watch-library/hal/utils/include/utils.h
deleted file mode 100644
index 1cf26996..00000000
--- a/watch-library/hal/utils/include/utils.h
+++ /dev/null
@@ -1,368 +0,0 @@
-/**
- * \file
- *
- * \brief Different macros.
- *
- * 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
- *
- */
-
-#ifndef UTILS_H_INCLUDED
-#define UTILS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \addtogroup doc_driver_hal_utils_macro
- *
- * @{
- */
-
-/**
- * \brief Retrieve pointer to parent structure
- */
-#define CONTAINER_OF(ptr, type, field_name) ((type *)(((uint8_t *)ptr) - offsetof(type, field_name)))
-
-/**
- * \brief Retrieve array size
- */
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
-
-/**
- * \brief Emit the compiler pragma \a arg.
- *
- * \param[in] arg The pragma directive as it would appear after \e \#pragma
- * (i.e. not stringified).
- */
-#define COMPILER_PRAGMA(arg) _Pragma(#arg)
-
-/**
- * \def COMPILER_PACK_SET(alignment)
- * \brief Set maximum alignment for subsequent struct and union definitions to \a alignment.
- */
-#define COMPILER_PACK_SET(alignment) COMPILER_PRAGMA(pack(alignment))
-
-/**
- * \def COMPILER_PACK_RESET()
- * \brief Set default alignment for subsequent struct and union definitions.
- */
-#define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack())
-
-/**
- * \brief Set aligned boundary.
- */
-#if defined __GNUC__
-#define COMPILER_ALIGNED(a) __attribute__((__aligned__(a)))
-#elif defined __ICCARM__
-#define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a)
-#elif defined __CC_ARM
-#define COMPILER_ALIGNED(a) __attribute__((__aligned__(a)))
-#endif
-
-/**
- * \brief Flash located data macros
- */
-#if defined __GNUC__
-#define PROGMEM_DECLARE(type, name) const type name
-#define PROGMEM_T const
-#define PROGMEM_READ_BYTE(x) *((uint8_t *)(x))
-#define PROGMEM_PTR_T const *
-#define PROGMEM_STRING_T const uint8_t *
-#elif defined __ICCARM__
-#define PROGMEM_DECLARE(type, name) const type name
-#define PROGMEM_T const
-#define PROGMEM_READ_BYTE(x) *((uint8_t *)(x))
-#define PROGMEM_PTR_T const *
-#define PROGMEM_STRING_T const uint8_t *
-#elif defined __CC_ARM
-#define PROGMEM_DECLARE(type, name) const type name
-#define PROGMEM_T const
-#define PROGMEM_READ_BYTE(x) *((uint8_t *)(x))
-#define PROGMEM_PTR_T const *
-#define PROGMEM_STRING_T const uint8_t *
-#endif
-
-/**
- * \brief Optimization
- */
-#if defined __GNUC__
-#define OPTIMIZE_HIGH __attribute__((optimize(s)))
-#elif defined __CC_ARM
-#define OPTIMIZE_HIGH _Pragma("O3")
-#elif defined __ICCARM__
-#define OPTIMIZE_HIGH _Pragma("optimize=high")
-#endif
-
-/**
- * \brief RAM located function attribute
- */
-#if defined(__CC_ARM) /* Keil ?Vision 4 */
-#define RAMFUNC __attribute__((section(".ramfunc")))
-#elif defined(__ICCARM__) /* IAR Ewarm 5.41+ */
-#define RAMFUNC __ramfunc
-#elif defined(__GNUC__) /* GCC CS3 2009q3-68 */
-#define RAMFUNC __attribute__((section(".ramfunc")))
-#endif
-
-/**
- * \brief No-init section.
- * Place a data object or a function in a no-init section.
- */
-#if defined(__CC_ARM)
-#define NO_INIT(a) __attribute__((zero_init))
-#elif defined(__ICCARM__)
-#define NO_INIT(a) __no_init
-#elif defined(__GNUC__)
-#define NO_INIT(a) __attribute__((section(".no_init")))
-#endif
-
-/**
- * \brief Set user-defined section.
- * Place a data object or a function in a user-defined section.
- */
-#if defined(__CC_ARM)
-#define COMPILER_SECTION(a) __attribute__((__section__(a)))
-#elif defined(__ICCARM__)
-#define COMPILER_SECTION(a) COMPILER_PRAGMA(location = a)
-#elif defined(__GNUC__)
-#define COMPILER_SECTION(a) __attribute__((__section__(a)))
-#endif
-
-/**
- * \brief Define WEAK attribute.
- */
-#if defined(__CC_ARM) /* Keil ?Vision 4 */
-#define WEAK __attribute__((weak))
-#elif defined(__ICCARM__) /* IAR Ewarm 5.41+ */
-#define WEAK __weak
-#elif defined(__GNUC__) /* GCC CS3 2009q3-68 */
-#define WEAK __attribute__((weak))
-#endif
-
-/**
- * \brief Pointer to function
- */
-typedef void (*FUNC_PTR)(void);
-
-#define LE_BYTE0(a) ((uint8_t)(a))
-#define LE_BYTE1(a) ((uint8_t)((a) >> 8))
-#define LE_BYTE2(a) ((uint8_t)((a) >> 16))
-#define LE_BYTE3(a) ((uint8_t)((a) >> 24))
-
-#define LE_2_U16(p) ((p)[0] + ((p)[1] << 8))
-#define LE_2_U32(p) ((p)[0] + ((p)[1] << 8) + ((p)[2] << 16) + ((p)[3] << 24))
-
-/** \name Zero-Bit Counting
- *
- * Under GCC, __builtin_clz and __builtin_ctz behave like macros when
- * applied to constant expressions (values known at compile time), so they are
- * more optimized than the use of the corresponding assembly instructions and
- * they can be used as constant expressions e.g. to initialize objects having
- * static storage duration, and like the corresponding assembly instructions
- * when applied to non-constant expressions (values unknown at compile time), so
- * they are more optimized than an assembly periphrasis. Hence, clz and ctz
- * ensure a possible and optimized behavior for both constant and non-constant
- * expressions.
- *
- * @{ */
-
-/** \brief Counts the leading zero bits of the given value considered as a 32-bit integer.
- *
- * \param[in] u Value of which to count the leading zero bits.
- *
- * \return The count of leading zero bits in \a u.
- */
-#if (defined __GNUC__) || (defined __CC_ARM)
-#define clz(u) __builtin_clz(u)
-#else
-#define clz(u) \
- ( \
- ((u) == 0) \
- ? 32 \
- : ((u) & (1ul << 31)) \
- ? 0 \
- : ((u) & (1ul << 30)) \
- ? 1 \
- : ((u) & (1ul << 29)) \
- ? 2 \
- : ((u) & (1ul << 28)) \
- ? 3 \
- : ((u) & (1ul << 27)) \
- ? 4 \
- : ((u) & (1ul << 26)) \
- ? 5 \
- : ((u) & (1ul << 25)) \
- ? 6 \
- : ((u) & (1ul << 24)) \
- ? 7 \
- : ((u) & (1ul << 23)) \
- ? 8 \
- : ((u) & (1ul << 22)) \
- ? 9 \
- : ((u) & (1ul << 21)) \
- ? 10 \
- : ((u) & (1ul << 20)) \
- ? 11 \
- : ((u) & (1ul << 19)) \
- ? 12 \
- : ((u) & (1ul << 18)) \
- ? 13 \
- : ((u) & (1ul << 17)) ? 14 \
- : ((u) & (1ul << 16)) ? 15 \
- : ((u) & (1ul << 15)) ? 16 \
- : ((u) & (1ul << 14)) ? 17 \
- : ((u) & (1ul << 13)) ? 18 \
- : ((u) & (1ul << 12)) ? 19 \
- : ((u) \
- & (1ul \
- << 11)) \
- ? 20 \
- : ((u) \
- & (1ul \
- << 10)) \
- ? 21 \
- : ((u) \
- & (1ul \
- << 9)) \
- ? 22 \
- : ((u) \
- & (1ul \
- << 8)) \
- ? 23 \
- : ((u) & (1ul << 7)) ? 24 \
- : ((u) & (1ul << 6)) ? 25 \
- : ((u) \
- & (1ul \
- << 5)) \
- ? 26 \
- : ((u) & (1ul << 4)) ? 27 \
- : ((u) & (1ul << 3)) ? 28 \
- : ((u) & (1ul << 2)) ? 29 \
- : ( \
- (u) & (1ul << 1)) \
- ? 30 \
- : 31)
-#endif
-
-/** \brief Counts the trailing zero bits of the given value considered as a 32-bit integer.
- *
- * \param[in] u Value of which to count the trailing zero bits.
- *
- * \return The count of trailing zero bits in \a u.
- */
-#if (defined __GNUC__) || (defined __CC_ARM)
-#define ctz(u) __builtin_ctz(u)
-#else
-#define ctz(u) \
- ( \
- (u) & (1ul << 0) \
- ? 0 \
- : (u) & (1ul << 1) \
- ? 1 \
- : (u) & (1ul << 2) \
- ? 2 \
- : (u) & (1ul << 3) \
- ? 3 \
- : (u) & (1ul << 4) \
- ? 4 \
- : (u) & (1ul << 5) \
- ? 5 \
- : (u) & (1ul << 6) \
- ? 6 \
- : (u) & (1ul << 7) \
- ? 7 \
- : (u) & (1ul << 8) \
- ? 8 \
- : (u) & (1ul << 9) \
- ? 9 \
- : (u) & (1ul << 10) \
- ? 10 \
- : (u) & (1ul << 11) \
- ? 11 \
- : (u) & (1ul << 12) \
- ? 12 \
- : (u) & (1ul << 13) \
- ? 13 \
- : (u) & (1ul << 14) \
- ? 14 \
- : (u) & (1ul << 15) \
- ? 15 \
- : (u) & (1ul << 16) \
- ? 16 \
- : (u) & (1ul << 17) \
- ? 17 \
- : (u) & (1ul << 18) \
- ? 18 \
- : (u) & (1ul << 19) ? 19 \
- : (u) & (1ul << 20) ? 20 \
- : (u) & (1ul << 21) ? 21 \
- : (u) & (1ul << 22) ? 22 \
- : (u) & (1ul << 23) ? 23 \
- : (u) & (1ul << 24) ? 24 \
- : (u) & (1ul << 25) ? 25 \
- : (u) & (1ul << 26) ? 26 \
- : (u) & (1ul << 27) ? 27 \
- : (u) & (1ul << 28) ? 28 : (u) & (1ul << 29) ? 29 : (u) & (1ul << 30) ? 30 : (u) & (1ul << 31) ? 31 : 32)
-#endif
-/** @} */
-
-/**
- * \brief Counts the number of bits in a mask (no more than 32 bits)
- * \param[in] mask Mask of which to count the bits.
- */
-#define size_of_mask(mask) (32 - clz(mask) - ctz(mask))
-
-/**
- * \brief Retrieve the start position of bits mask (no more than 32 bits)
- * \param[in] mask Mask of which to retrieve the start position.
- */
-#define pos_of_mask(mask) ctz(mask)
-
-/**
- * \brief Return division result of a/b and round up the result to the closest
- * number divisible by "b"
- */
-#define round_up(a, b) (((a)-1) / (b) + 1)
-
-/**
- * \brief Get the minimum of x and y
- */
-#define min(x, y) ((x) > (y) ? (y) : (x))
-
-/**
- * \brief Get the maximum of x and y
- */
-#define max(x, y) ((x) > (y) ? (x) : (y))
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* UTILS_H_INCLUDED */
diff --git a/watch-library/hal/utils/include/utils_assert.h b/watch-library/hal/utils/include/utils_assert.h
deleted file mode 100644
index c2328d6c..00000000
--- a/watch-library/hal/utils/include/utils_assert.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * \file
- *
- * \brief Asserts related functionality.
- *
- * 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
- *
- */
-
-#ifndef _ASSERT_H_INCLUDED
-#define _ASSERT_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <compiler.h>
-
-#ifndef USE_SIMPLE_ASSERT
-//# define USE_SIMPLE_ASSERT
-#endif
-
-/**
- * \brief Assert macro
- *
- * This macro is used to throw asserts. It can be mapped to different function
- * based on debug level.
- *
- * \param[in] condition A condition to be checked;
- * assert is thrown if the given condition is false
- */
-#define ASSERT(condition) ASSERT_IMPL((condition), __FILE__, __LINE__)
-
-#ifdef DEBUG
-
-#ifdef USE_SIMPLE_ASSERT
-#define ASSERT_IMPL(condition, file, line) \
- if (!(condition)) \
- __asm("BKPT #0");
-#else
-#define ASSERT_IMPL(condition, file, line) assert((condition), file, line)
-#endif
-
-#else /* DEBUG */
-
-#ifdef USE_SIMPLE_ASSERT
-#define ASSERT_IMPL(condition, file, line) ((void)0)
-#else
-#define ASSERT_IMPL(condition, file, line) ((void)0)
-#endif
-
-#endif /* DEBUG */
-
-/**
- * \brief Assert function
- *
- * This function is used to throw asserts.
- *
- * \param[in] condition A condition to be checked; assert is thrown if the given
- * condition is false
- * \param[in] file File name
- * \param[in] line Line number
- */
-void assert(const bool condition, const char *const file, const int line);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _ASSERT_H_INCLUDED */
diff --git a/watch-library/hal/utils/include/utils_decrement_macro.h b/watch-library/hal/utils/include/utils_decrement_macro.h
deleted file mode 100644
index 2b524699..00000000
--- a/watch-library/hal/utils/include/utils_decrement_macro.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/**
- * \file
- *
- * \brief Decrement macro.
- *
- * 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
- *
- */
-
-#ifndef _UTILS_DECREMENT_MACRO_H
-#define _UTILS_DECREMENT_MACRO_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Compile time decrement, result value is entire integer literal
- *
- * \param[in] val - value to be decremented
- */
-#define DEC_VALUE(val) DEC_##val
-
-// Preprocessor increment implementation
-#define DEC_256 255
-#define DEC_255 254
-#define DEC_254 253
-#define DEC_253 252
-#define DEC_252 251
-#define DEC_251 250
-#define DEC_250 249
-#define DEC_249 248
-#define DEC_248 247
-#define DEC_247 246
-#define DEC_246 245
-#define DEC_245 244
-#define DEC_244 243
-#define DEC_243 242
-#define DEC_242 241
-#define DEC_241 240
-#define DEC_240 239
-#define DEC_239 238
-#define DEC_238 237
-#define DEC_237 236
-#define DEC_236 235
-#define DEC_235 234
-#define DEC_234 233
-#define DEC_233 232
-#define DEC_232 231
-#define DEC_231 230
-#define DEC_230 229
-#define DEC_229 228
-#define DEC_228 227
-#define DEC_227 226
-#define DEC_226 225
-#define DEC_225 224
-#define DEC_224 223
-#define DEC_223 222
-#define DEC_222 221
-#define DEC_221 220
-#define DEC_220 219
-#define DEC_219 218
-#define DEC_218 217
-#define DEC_217 216
-#define DEC_216 215
-#define DEC_215 214
-#define DEC_214 213
-#define DEC_213 212
-#define DEC_212 211
-#define DEC_211 210
-#define DEC_210 209
-#define DEC_209 208
-#define DEC_208 207
-#define DEC_207 206
-#define DEC_206 205
-#define DEC_205 204
-#define DEC_204 203
-#define DEC_203 202
-#define DEC_202 201
-#define DEC_201 200
-#define DEC_200 199
-#define DEC_199 198
-#define DEC_198 197
-#define DEC_197 196
-#define DEC_196 195
-#define DEC_195 194
-#define DEC_194 193
-#define DEC_193 192
-#define DEC_192 191
-#define DEC_191 190
-#define DEC_190 189
-#define DEC_189 188
-#define DEC_188 187
-#define DEC_187 186
-#define DEC_186 185
-#define DEC_185 184
-#define DEC_184 183
-#define DEC_183 182
-#define DEC_182 181
-#define DEC_181 180
-#define DEC_180 179
-#define DEC_179 178
-#define DEC_178 177
-#define DEC_177 176
-#define DEC_176 175
-#define DEC_175 174
-#define DEC_174 173
-#define DEC_173 172
-#define DEC_172 171
-#define DEC_171 170
-#define DEC_170 169
-#define DEC_169 168
-#define DEC_168 167
-#define DEC_167 166
-#define DEC_166 165
-#define DEC_165 164
-#define DEC_164 163
-#define DEC_163 162
-#define DEC_162 161
-#define DEC_161 160
-#define DEC_160 159
-#define DEC_159 158
-#define DEC_158 157
-#define DEC_157 156
-#define DEC_156 155
-#define DEC_155 154
-#define DEC_154 153
-#define DEC_153 152
-#define DEC_152 151
-#define DEC_151 150
-#define DEC_150 149
-#define DEC_149 148
-#define DEC_148 147
-#define DEC_147 146
-#define DEC_146 145
-#define DEC_145 144
-#define DEC_144 143
-#define DEC_143 142
-#define DEC_142 141
-#define DEC_141 140
-#define DEC_140 139
-#define DEC_139 138
-#define DEC_138 137
-#define DEC_137 136
-#define DEC_136 135
-#define DEC_135 134
-#define DEC_134 133
-#define DEC_133 132
-#define DEC_132 131
-#define DEC_131 130
-#define DEC_130 129
-#define DEC_129 128
-#define DEC_128 127
-#define DEC_127 126
-#define DEC_126 125
-#define DEC_125 124
-#define DEC_124 123
-#define DEC_123 122
-#define DEC_122 121
-#define DEC_121 120
-#define DEC_120 119
-#define DEC_119 118
-#define DEC_118 117
-#define DEC_117 116
-#define DEC_116 115
-#define DEC_115 114
-#define DEC_114 113
-#define DEC_113 112
-#define DEC_112 111
-#define DEC_111 110
-#define DEC_110 109
-#define DEC_109 108
-#define DEC_108 107
-#define DEC_107 106
-#define DEC_106 105
-#define DEC_105 104
-#define DEC_104 103
-#define DEC_103 102
-#define DEC_102 101
-#define DEC_101 100
-#define DEC_100 99
-#define DEC_99 98
-#define DEC_98 97
-#define DEC_97 96
-#define DEC_96 95
-#define DEC_95 94
-#define DEC_94 93
-#define DEC_93 92
-#define DEC_92 91
-#define DEC_91 90
-#define DEC_90 89
-#define DEC_89 88
-#define DEC_88 87
-#define DEC_87 86
-#define DEC_86 85
-#define DEC_85 84
-#define DEC_84 83
-#define DEC_83 82
-#define DEC_82 81
-#define DEC_81 80
-#define DEC_80 79
-#define DEC_79 78
-#define DEC_78 77
-#define DEC_77 76
-#define DEC_76 75
-#define DEC_75 74
-#define DEC_74 73
-#define DEC_73 72
-#define DEC_72 71
-#define DEC_71 70
-#define DEC_70 69
-#define DEC_69 68
-#define DEC_68 67
-#define DEC_67 66
-#define DEC_66 65
-#define DEC_65 64
-#define DEC_64 63
-#define DEC_63 62
-#define DEC_62 61
-#define DEC_61 60
-#define DEC_60 59
-#define DEC_59 58
-#define DEC_58 57
-#define DEC_57 56
-#define DEC_56 55
-#define DEC_55 54
-#define DEC_54 53
-#define DEC_53 52
-#define DEC_52 51
-#define DEC_51 50
-#define DEC_50 49
-#define DEC_49 48
-#define DEC_48 47
-#define DEC_47 46
-#define DEC_46 45
-#define DEC_45 44
-#define DEC_44 43
-#define DEC_43 42
-#define DEC_42 41
-#define DEC_41 40
-#define DEC_40 39
-#define DEC_39 38
-#define DEC_38 37
-#define DEC_37 36
-#define DEC_36 35
-#define DEC_35 34
-#define DEC_34 33
-#define DEC_33 32
-#define DEC_32 31
-#define DEC_31 30
-#define DEC_30 29
-#define DEC_29 28
-#define DEC_28 27
-#define DEC_27 26
-#define DEC_26 25
-#define DEC_25 24
-#define DEC_24 23
-#define DEC_23 22
-#define DEC_22 21
-#define DEC_21 20
-#define DEC_20 19
-#define DEC_19 18
-#define DEC_18 17
-#define DEC_17 16
-#define DEC_16 15
-#define DEC_15 14
-#define DEC_14 13
-#define DEC_13 12
-#define DEC_12 11
-#define DEC_11 10
-#define DEC_10 9
-#define DEC_9 8
-#define DEC_8 7
-#define DEC_7 6
-#define DEC_6 5
-#define DEC_5 4
-#define DEC_4 3
-#define DEC_3 2
-#define DEC_2 1
-#define DEC_1 0
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _UTILS_DECREMENT_MACRO_H */
diff --git a/watch-library/hal/utils/include/utils_event.h b/watch-library/hal/utils/include/utils_event.h
deleted file mode 100644
index 13067c4f..00000000
--- a/watch-library/hal/utils/include/utils_event.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * \file
- *
- * \brief Events 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
- *
- */
-
-#ifndef _UTILS_EVENT_H_INCLUDED
-#define _UTILS_EVENT_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <utils.h>
-#include <utils_list.h>
-#include <events.h>
-
-/**
- * \brief The maximum amount of events
- */
-#define EVENT_MAX_AMOUNT 8
-
-/**
- * \brief The size of event mask used, it is EVENT_MAX_AMOUNT rounded up to the
- * closest number divisible by 8.
- */
-#define EVENT_MASK_SIZE (round_up(EVENT_MAX_AMOUNT, 8))
-
-/**
- * \brief The type of event ID. IDs should start with 0 and be in numerical order.
- */
-typedef uint8_t event_id_t;
-
-/**
- * \brief The type of returned parameter. This type is big enough to contain
- * pointer to data on any platform.
- */
-typedef uintptr_t event_data_t;
-
-/**
- * \brief The type of returned parameter. This type is big enough to contain
- * pointer to data on any platform.
- */
-typedef void (*event_cb_t)(event_id_t id, event_data_t data);
-
-/**
- * \brief Event structure
- */
-struct event {
- struct list_element elem; /*! The pointer to next event */
- uint8_t mask[EVENT_MASK_SIZE]; /*! Mask of event IDs callback is called for */
- event_cb_t cb; /*! Callback to be called when an event occurs */
-};
-
-/**
- * \brief Subscribe to event
- *
- * \param[in] event The pointer to event structure
- * \param[in] id The event ID to subscribe to
- * \param[in] cb The callback function to call when the given event occurs
- *
- * \return The status of subscription
- */
-int32_t event_subscribe(struct event *const event, const event_id_t id, event_cb_t cb);
-
-/**
- * \brief Remove event from subscription
- *
- * \param[in] event The pointer to event structure
- * \param[in] id The event ID to remove subscription from
- *
- * \return The status of subscription removing
- */
-int32_t event_unsubscribe(struct event *const event, const event_id_t id);
-
-/**
- * \brief Post event
- *
- * \param[in] id The event ID to post
- * \param[in] data The event data to be passed to event subscribers
- */
-void event_post(const event_id_t id, const event_data_t data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UTILS_EVENT_H_INCLUDED */
diff --git a/watch-library/hal/utils/include/utils_increment_macro.h b/watch-library/hal/utils/include/utils_increment_macro.h
deleted file mode 100644
index 464c6cbb..00000000
--- a/watch-library/hal/utils/include/utils_increment_macro.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/**
- * \file
- *
- * \brief Increment macro.
- *
- * 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
- *
- */
-
-#ifndef _UTILS_INCREMENT_MACRO_H
-#define _UTILS_INCREMENT_MACRO_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Compile time increment, result value is entire integer literal
- *
- * \param[in] val - value to be incremented (254 max)
- */
-#define INC_VALUE(val) SP_INC_##val
-
-// Preprocessor increment implementation
-#define SP_INC_0 1
-#define SP_INC_1 2
-#define SP_INC_2 3
-#define SP_INC_3 4
-#define SP_INC_4 5
-#define SP_INC_5 6
-#define SP_INC_6 7
-#define SP_INC_7 8
-#define SP_INC_8 9
-#define SP_INC_9 10
-#define SP_INC_10 11
-#define SP_INC_11 12
-#define SP_INC_12 13
-#define SP_INC_13 14
-#define SP_INC_14 15
-#define SP_INC_15 16
-#define SP_INC_16 17
-#define SP_INC_17 18
-#define SP_INC_18 19
-#define SP_INC_19 20
-#define SP_INC_20 21
-#define SP_INC_21 22
-#define SP_INC_22 23
-#define SP_INC_23 24
-#define SP_INC_24 25
-#define SP_INC_25 26
-#define SP_INC_26 27
-#define SP_INC_27 28
-#define SP_INC_28 29
-#define SP_INC_29 30
-#define SP_INC_30 31
-#define SP_INC_31 32
-#define SP_INC_32 33
-#define SP_INC_33 34
-#define SP_INC_34 35
-#define SP_INC_35 36
-#define SP_INC_36 37
-#define SP_INC_37 38
-#define SP_INC_38 39
-#define SP_INC_39 40
-#define SP_INC_40 41
-#define SP_INC_41 42
-#define SP_INC_42 43
-#define SP_INC_43 44
-#define SP_INC_44 45
-#define SP_INC_45 46
-#define SP_INC_46 47
-#define SP_INC_47 48
-#define SP_INC_48 49
-#define SP_INC_49 50
-#define SP_INC_50 51
-#define SP_INC_51 52
-#define SP_INC_52 53
-#define SP_INC_53 54
-#define SP_INC_54 55
-#define SP_INC_55 56
-#define SP_INC_56 57
-#define SP_INC_57 58
-#define SP_INC_58 59
-#define SP_INC_59 60
-#define SP_INC_60 61
-#define SP_INC_61 62
-#define SP_INC_62 63
-#define SP_INC_63 64
-#define SP_INC_64 65
-#define SP_INC_65 66
-#define SP_INC_66 67
-#define SP_INC_67 68
-#define SP_INC_68 69
-#define SP_INC_69 70
-#define SP_INC_70 71
-#define SP_INC_71 72
-#define SP_INC_72 73
-#define SP_INC_73 74
-#define SP_INC_74 75
-#define SP_INC_75 76
-#define SP_INC_76 77
-#define SP_INC_77 78
-#define SP_INC_78 79
-#define SP_INC_79 80
-#define SP_INC_80 81
-#define SP_INC_81 82
-#define SP_INC_82 83
-#define SP_INC_83 84
-#define SP_INC_84 85
-#define SP_INC_85 86
-#define SP_INC_86 87
-#define SP_INC_87 88
-#define SP_INC_88 89
-#define SP_INC_89 90
-#define SP_INC_90 91
-#define SP_INC_91 92
-#define SP_INC_92 93
-#define SP_INC_93 94
-#define SP_INC_94 95
-#define SP_INC_95 96
-#define SP_INC_96 97
-#define SP_INC_97 98
-#define SP_INC_98 99
-#define SP_INC_99 100
-#define SP_INC_100 101
-#define SP_INC_101 102
-#define SP_INC_102 103
-#define SP_INC_103 104
-#define SP_INC_104 105
-#define SP_INC_105 106
-#define SP_INC_106 107
-#define SP_INC_107 108
-#define SP_INC_108 109
-#define SP_INC_109 110
-#define SP_INC_110 111
-#define SP_INC_111 112
-#define SP_INC_112 113
-#define SP_INC_113 114
-#define SP_INC_114 115
-#define SP_INC_115 116
-#define SP_INC_116 117
-#define SP_INC_117 118
-#define SP_INC_118 119
-#define SP_INC_119 120
-#define SP_INC_120 121
-#define SP_INC_121 122
-#define SP_INC_122 123
-#define SP_INC_123 124
-#define SP_INC_124 125
-#define SP_INC_125 126
-#define SP_INC_126 127
-#define SP_INC_127 128
-#define SP_INC_128 129
-#define SP_INC_129 130
-#define SP_INC_130 131
-#define SP_INC_131 132
-#define SP_INC_132 133
-#define SP_INC_133 134
-#define SP_INC_134 135
-#define SP_INC_135 136
-#define SP_INC_136 137
-#define SP_INC_137 138
-#define SP_INC_138 139
-#define SP_INC_139 140
-#define SP_INC_140 141
-#define SP_INC_141 142
-#define SP_INC_142 143
-#define SP_INC_143 144
-#define SP_INC_144 145
-#define SP_INC_145 146
-#define SP_INC_146 147
-#define SP_INC_147 148
-#define SP_INC_148 149
-#define SP_INC_149 150
-#define SP_INC_150 151
-#define SP_INC_151 152
-#define SP_INC_152 153
-#define SP_INC_153 154
-#define SP_INC_154 155
-#define SP_INC_155 156
-#define SP_INC_156 157
-#define SP_INC_157 158
-#define SP_INC_158 159
-#define SP_INC_159 160
-#define SP_INC_160 161
-#define SP_INC_161 162
-#define SP_INC_162 163
-#define SP_INC_163 164
-#define SP_INC_164 165
-#define SP_INC_165 166
-#define SP_INC_166 167
-#define SP_INC_167 168
-#define SP_INC_168 169
-#define SP_INC_169 170
-#define SP_INC_170 171
-#define SP_INC_171 172
-#define SP_INC_172 173
-#define SP_INC_173 174
-#define SP_INC_174 175
-#define SP_INC_175 176
-#define SP_INC_176 177
-#define SP_INC_177 178
-#define SP_INC_178 179
-#define SP_INC_179 180
-#define SP_INC_180 181
-#define SP_INC_181 182
-#define SP_INC_182 183
-#define SP_INC_183 184
-#define SP_INC_184 185
-#define SP_INC_185 186
-#define SP_INC_186 187
-#define SP_INC_187 188
-#define SP_INC_188 189
-#define SP_INC_189 190
-#define SP_INC_190 191
-#define SP_INC_191 192
-#define SP_INC_192 193
-#define SP_INC_193 194
-#define SP_INC_194 195
-#define SP_INC_195 196
-#define SP_INC_196 197
-#define SP_INC_197 198
-#define SP_INC_198 199
-#define SP_INC_199 200
-#define SP_INC_200 201
-#define SP_INC_201 202
-#define SP_INC_202 203
-#define SP_INC_203 204
-#define SP_INC_204 205
-#define SP_INC_205 206
-#define SP_INC_206 207
-#define SP_INC_207 208
-#define SP_INC_208 209
-#define SP_INC_209 210
-#define SP_INC_210 211
-#define SP_INC_211 212
-#define SP_INC_212 213
-#define SP_INC_213 214
-#define SP_INC_214 215
-#define SP_INC_215 216
-#define SP_INC_216 217
-#define SP_INC_217 218
-#define SP_INC_218 219
-#define SP_INC_219 220
-#define SP_INC_220 221
-#define SP_INC_221 222
-#define SP_INC_222 223
-#define SP_INC_223 224
-#define SP_INC_224 225
-#define SP_INC_225 226
-#define SP_INC_226 227
-#define SP_INC_227 228
-#define SP_INC_228 229
-#define SP_INC_229 230
-#define SP_INC_230 231
-#define SP_INC_231 232
-#define SP_INC_232 233
-#define SP_INC_233 234
-#define SP_INC_234 235
-#define SP_INC_235 236
-#define SP_INC_236 237
-#define SP_INC_237 238
-#define SP_INC_238 239
-#define SP_INC_239 240
-#define SP_INC_240 241
-#define SP_INC_241 242
-#define SP_INC_242 243
-#define SP_INC_243 244
-#define SP_INC_244 245
-#define SP_INC_245 246
-#define SP_INC_246 247
-#define SP_INC_247 248
-#define SP_INC_248 249
-#define SP_INC_249 250
-#define SP_INC_250 251
-#define SP_INC_251 252
-#define SP_INC_252 253
-#define SP_INC_253 254
-#define SP_INC_254 255
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _UTILS_INCREMENT_MACRO_H */
diff --git a/watch-library/hal/utils/include/utils_list.h b/watch-library/hal/utils/include/utils_list.h
deleted file mode 100644
index 977e8cca..00000000
--- a/watch-library/hal/utils/include/utils_list.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * \file
- *
- * \brief List declaration.
- *
- * 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
- *
- */
-
-#ifndef _UTILS_LIST_H_INCLUDED
-#define _UTILS_LIST_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \addtogroup doc_driver_hal_utils_list
- *
- * @{
- */
-
-#include <compiler.h>
-
-/**
- * \brief List element type
- */
-struct list_element {
- struct list_element *next;
-};
-
-/**
- * \brief List head type
- */
-struct list_descriptor {
- struct list_element *head;
-};
-
-/**
- * \brief Reset list
- *
- * \param[in] list The pointer to a list descriptor
- */
-static inline void list_reset(struct list_descriptor *const list)
-{
- list->head = NULL;
-}
-
-/**
- * \brief Retrieve list head
- *
- * \param[in] list The pointer to a list descriptor
- *
- * \return A pointer to the head of the given list or NULL if the list is
- * empty
- */
-static inline void *list_get_head(const struct list_descriptor *const list)
-{
- return (void *)list->head;
-}
-
-/**
- * \brief Retrieve next list head
- *
- * \param[in] list The pointer to a list element
- *
- * \return A pointer to the next list element or NULL if there is not next
- * element
- */
-static inline void *list_get_next_element(const void *const element)
-{
- return element ? ((struct list_element *)element)->next : NULL;
-}
-
-/**
- * \brief Insert an element as list head
- *
- * \param[in] list The pointer to a list element
- * \param[in] element An element to insert to the given list
- */
-void list_insert_as_head(struct list_descriptor *const list, void *const element);
-
-/**
- * \brief Insert an element after the given list element
- *
- * \param[in] after An element to insert after
- * \param[in] element Element to insert to the given list
- */
-void list_insert_after(void *const after, void *const element);
-
-/**
- * \brief Insert an element at list end
- *
- * \param[in] after An element to insert after
- * \param[in] element Element to insert to the given list
- */
-void list_insert_at_end(struct list_descriptor *const list, void *const element);
-
-/**
- * \brief Check whether an element belongs to a list
- *
- * \param[in] list The pointer to a list
- * \param[in] element An element to check
- *
- * \return The result of checking
- * \retval true If the given element is an element of the given list
- * \retval false Otherwise
- */
-bool is_list_element(const struct list_descriptor *const list, const void *const element);
-
-/**
- * \brief Removes list head
- *
- * This function removes the list head and sets the next element after the list
- * head as a new list head.
- *
- * \param[in] list The pointer to a list
- *
- * \return The pointer to the new list head of NULL if the list head is NULL
- */
-void *list_remove_head(struct list_descriptor *const list);
-
-/**
- * \brief Removes the list element
- *
- * \param[in] list The pointer to a list
- * \param[in] element An element to remove
- *
- * \return The result of element removing
- * \retval true The given element is removed from the given list
- * \retval false The given element is not an element of the given list
- */
-bool list_delete_element(struct list_descriptor *const list, const void *const element);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _UTILS_LIST_H_INCLUDED */
diff --git a/watch-library/hal/utils/include/utils_recursion_macro.h b/watch-library/hal/utils/include/utils_recursion_macro.h
deleted file mode 100644
index 294314c4..00000000
--- a/watch-library/hal/utils/include/utils_recursion_macro.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * \file
- *
- * \brief Recursion macro.
- *
- * 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
- *
- */
-
-#ifndef _UTILS_RECURSION_MACRO_H
-#define _UTILS_RECURSION_MACRO_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * \brief Macro recursion
- *
- * \param[in] macro Macro to be repeated recursively
- * \param[in] arg A recursive threshold, building on this to decline by times
- * defined with parameter n
- * \param[in] n The number of repetitious calls to macro
- */
-#define RECURSION_MACRO(macro, arg, n) RECURSION_MACRO_I(macro, arg, n)
-
-/*
- * \brief Second level is needed to get integer literal from "n" if it is
- * defined as macro
- */
-#define RECURSION_MACRO_I(macro, arg, n) RECURSION##n(macro, arg)
-
-#define RECURSION0(macro, arg)
-#define RECURSION1(macro, arg) RECURSION0(macro, DEC_VALUE(arg)) macro(arg, 0)
-#define RECURSION2(macro, arg) RECURSION1(macro, DEC_VALUE(arg)) macro(arg, 1)
-#define RECURSION3(macro, arg) RECURSION2(macro, DEC_VALUE(arg)) macro(arg, 2)
-#define RECURSION4(macro, arg) RECURSION3(macro, DEC_VALUE(arg)) macro(arg, 3)
-#define RECURSION5(macro, arg) RECURSION4(macro, DEC_VALUE(arg)) macro(arg, 4)
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <utils_decrement_macro.h>
-#endif /* _UTILS_RECURSION_MACRO_H */
diff --git a/watch-library/hal/utils/include/utils_repeat_macro.h b/watch-library/hal/utils/include/utils_repeat_macro.h
deleted file mode 100644
index 89e6f52d..00000000
--- a/watch-library/hal/utils/include/utils_repeat_macro.h
+++ /dev/null
@@ -1,322 +0,0 @@
-/**
- * \file
- *
- * \brief Repeat macro.
- *
- * 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
- *
- */
-
-#ifndef _UTILS_REPEAT_MACRO_H
-#define _UTILS_REPEAT_MACRO_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * \brief Sequently repeates specified macro for n times (255 max).
- *
- * Specified macro shall have two arguments: macro(arg, i)
- * arg - user defined argument, which have the same value for all iterations.
- * i - iteration number; numbering begins from zero and increments on each
- * iteration.
- *
- * \param[in] macro - macro to be repeated
- * \param[in] arg - user defined argument for repeated macro
- * \param[in] n - total number of iterations (255 max)
- */
-#define REPEAT_MACRO(macro, arg, n) REPEAT_MACRO_I(macro, arg, n)
-
-/*
- * \brief Second level is needed to get integer literal from "n" if it is
- * defined as macro
- */
-#define REPEAT_MACRO_I(macro, arg, n) REPEAT##n(macro, arg, 0)
-
-#define REPEAT1(macro, arg, n) macro(arg, n)
-#define REPEAT2(macro, arg, n) macro(arg, n) REPEAT1(macro, arg, INC_VALUE(n))
-#define REPEAT3(macro, arg, n) macro(arg, n) REPEAT2(macro, arg, INC_VALUE(n))
-#define REPEAT4(macro, arg, n) macro(arg, n) REPEAT3(macro, arg, INC_VALUE(n))
-#define REPEAT5(macro, arg, n) macro(arg, n) REPEAT4(macro, arg, INC_VALUE(n))
-#define REPEAT6(macro, arg, n) macro(arg, n) REPEAT5(macro, arg, INC_VALUE(n))
-#define REPEAT7(macro, arg, n) macro(arg, n) REPEAT6(macro, arg, INC_VALUE(n))
-#define REPEAT8(macro, arg, n) macro(arg, n) REPEAT7(macro, arg, INC_VALUE(n))
-#define REPEAT9(macro, arg, n) macro(arg, n) REPEAT8(macro, arg, INC_VALUE(n))
-#define REPEAT10(macro, arg, n) macro(arg, n) REPEAT9(macro, arg, INC_VALUE(n))
-#define REPEAT11(macro, arg, n) macro(arg, n) REPEAT10(macro, arg, INC_VALUE(n))
-#define REPEAT12(macro, arg, n) macro(arg, n) REPEAT11(macro, arg, INC_VALUE(n))
-#define REPEAT13(macro, arg, n) macro(arg, n) REPEAT12(macro, arg, INC_VALUE(n))
-#define REPEAT14(macro, arg, n) macro(arg, n) REPEAT13(macro, arg, INC_VALUE(n))
-#define REPEAT15(macro, arg, n) macro(arg, n) REPEAT14(macro, arg, INC_VALUE(n))
-#define REPEAT16(macro, arg, n) macro(arg, n) REPEAT15(macro, arg, INC_VALUE(n))
-#define REPEAT17(macro, arg, n) macro(arg, n) REPEAT16(macro, arg, INC_VALUE(n))
-#define REPEAT18(macro, arg, n) macro(arg, n) REPEAT17(macro, arg, INC_VALUE(n))
-#define REPEAT19(macro, arg, n) macro(arg, n) REPEAT18(macro, arg, INC_VALUE(n))
-#define REPEAT20(macro, arg, n) macro(arg, n) REPEAT19(macro, arg, INC_VALUE(n))
-#define REPEAT21(macro, arg, n) macro(arg, n) REPEAT20(macro, arg, INC_VALUE(n))
-#define REPEAT22(macro, arg, n) macro(arg, n) REPEAT21(macro, arg, INC_VALUE(n))
-#define REPEAT23(macro, arg, n) macro(arg, n) REPEAT22(macro, arg, INC_VALUE(n))
-#define REPEAT24(macro, arg, n) macro(arg, n) REPEAT23(macro, arg, INC_VALUE(n))
-#define REPEAT25(macro, arg, n) macro(arg, n) REPEAT24(macro, arg, INC_VALUE(n))
-#define REPEAT26(macro, arg, n) macro(arg, n) REPEAT25(macro, arg, INC_VALUE(n))
-#define REPEAT27(macro, arg, n) macro(arg, n) REPEAT26(macro, arg, INC_VALUE(n))
-#define REPEAT28(macro, arg, n) macro(arg, n) REPEAT27(macro, arg, INC_VALUE(n))
-#define REPEAT29(macro, arg, n) macro(arg, n) REPEAT28(macro, arg, INC_VALUE(n))
-#define REPEAT30(macro, arg, n) macro(arg, n) REPEAT29(macro, arg, INC_VALUE(n))
-#define REPEAT31(macro, arg, n) macro(arg, n) REPEAT30(macro, arg, INC_VALUE(n))
-#define REPEAT32(macro, arg, n) macro(arg, n) REPEAT31(macro, arg, INC_VALUE(n))
-#define REPEAT33(macro, arg, n) macro(arg, n) REPEAT32(macro, arg, INC_VALUE(n))
-#define REPEAT34(macro, arg, n) macro(arg, n) REPEAT33(macro, arg, INC_VALUE(n))
-#define REPEAT35(macro, arg, n) macro(arg, n) REPEAT34(macro, arg, INC_VALUE(n))
-#define REPEAT36(macro, arg, n) macro(arg, n) REPEAT35(macro, arg, INC_VALUE(n))
-#define REPEAT37(macro, arg, n) macro(arg, n) REPEAT36(macro, arg, INC_VALUE(n))
-#define REPEAT38(macro, arg, n) macro(arg, n) REPEAT37(macro, arg, INC_VALUE(n))
-#define REPEAT39(macro, arg, n) macro(arg, n) REPEAT38(macro, arg, INC_VALUE(n))
-#define REPEAT40(macro, arg, n) macro(arg, n) REPEAT39(macro, arg, INC_VALUE(n))
-#define REPEAT41(macro, arg, n) macro(arg, n) REPEAT40(macro, arg, INC_VALUE(n))
-#define REPEAT42(macro, arg, n) macro(arg, n) REPEAT41(macro, arg, INC_VALUE(n))
-#define REPEAT43(macro, arg, n) macro(arg, n) REPEAT42(macro, arg, INC_VALUE(n))
-#define REPEAT44(macro, arg, n) macro(arg, n) REPEAT43(macro, arg, INC_VALUE(n))
-#define REPEAT45(macro, arg, n) macro(arg, n) REPEAT44(macro, arg, INC_VALUE(n))
-#define REPEAT46(macro, arg, n) macro(arg, n) REPEAT45(macro, arg, INC_VALUE(n))
-#define REPEAT47(macro, arg, n) macro(arg, n) REPEAT46(macro, arg, INC_VALUE(n))
-#define REPEAT48(macro, arg, n) macro(arg, n) REPEAT47(macro, arg, INC_VALUE(n))
-#define REPEAT49(macro, arg, n) macro(arg, n) REPEAT48(macro, arg, INC_VALUE(n))
-#define REPEAT50(macro, arg, n) macro(arg, n) REPEAT49(macro, arg, INC_VALUE(n))
-#define REPEAT51(macro, arg, n) macro(arg, n) REPEAT50(macro, arg, INC_VALUE(n))
-#define REPEAT52(macro, arg, n) macro(arg, n) REPEAT51(macro, arg, INC_VALUE(n))
-#define REPEAT53(macro, arg, n) macro(arg, n) REPEAT52(macro, arg, INC_VALUE(n))
-#define REPEAT54(macro, arg, n) macro(arg, n) REPEAT53(macro, arg, INC_VALUE(n))
-#define REPEAT55(macro, arg, n) macro(arg, n) REPEAT54(macro, arg, INC_VALUE(n))
-#define REPEAT56(macro, arg, n) macro(arg, n) REPEAT55(macro, arg, INC_VALUE(n))
-#define REPEAT57(macro, arg, n) macro(arg, n) REPEAT56(macro, arg, INC_VALUE(n))
-#define REPEAT58(macro, arg, n) macro(arg, n) REPEAT57(macro, arg, INC_VALUE(n))
-#define REPEAT59(macro, arg, n) macro(arg, n) REPEAT58(macro, arg, INC_VALUE(n))
-#define REPEAT60(macro, arg, n) macro(arg, n) REPEAT59(macro, arg, INC_VALUE(n))
-#define REPEAT61(macro, arg, n) macro(arg, n) REPEAT60(macro, arg, INC_VALUE(n))
-#define REPEAT62(macro, arg, n) macro(arg, n) REPEAT61(macro, arg, INC_VALUE(n))
-#define REPEAT63(macro, arg, n) macro(arg, n) REPEAT62(macro, arg, INC_VALUE(n))
-#define REPEAT64(macro, arg, n) macro(arg, n) REPEAT63(macro, arg, INC_VALUE(n))
-#define REPEAT65(macro, arg, n) macro(arg, n) REPEAT64(macro, arg, INC_VALUE(n))
-#define REPEAT66(macro, arg, n) macro(arg, n) REPEAT65(macro, arg, INC_VALUE(n))
-#define REPEAT67(macro, arg, n) macro(arg, n) REPEAT66(macro, arg, INC_VALUE(n))
-#define REPEAT68(macro, arg, n) macro(arg, n) REPEAT67(macro, arg, INC_VALUE(n))
-#define REPEAT69(macro, arg, n) macro(arg, n) REPEAT68(macro, arg, INC_VALUE(n))
-#define REPEAT70(macro, arg, n) macro(arg, n) REPEAT69(macro, arg, INC_VALUE(n))
-#define REPEAT71(macro, arg, n) macro(arg, n) REPEAT70(macro, arg, INC_VALUE(n))
-#define REPEAT72(macro, arg, n) macro(arg, n) REPEAT71(macro, arg, INC_VALUE(n))
-#define REPEAT73(macro, arg, n) macro(arg, n) REPEAT72(macro, arg, INC_VALUE(n))
-#define REPEAT74(macro, arg, n) macro(arg, n) REPEAT73(macro, arg, INC_VALUE(n))
-#define REPEAT75(macro, arg, n) macro(arg, n) REPEAT74(macro, arg, INC_VALUE(n))
-#define REPEAT76(macro, arg, n) macro(arg, n) REPEAT75(macro, arg, INC_VALUE(n))
-#define REPEAT77(macro, arg, n) macro(arg, n) REPEAT76(macro, arg, INC_VALUE(n))
-#define REPEAT78(macro, arg, n) macro(arg, n) REPEAT77(macro, arg, INC_VALUE(n))
-#define REPEAT79(macro, arg, n) macro(arg, n) REPEAT78(macro, arg, INC_VALUE(n))
-#define REPEAT80(macro, arg, n) macro(arg, n) REPEAT79(macro, arg, INC_VALUE(n))
-#define REPEAT81(macro, arg, n) macro(arg, n) REPEAT80(macro, arg, INC_VALUE(n))
-#define REPEAT82(macro, arg, n) macro(arg, n) REPEAT81(macro, arg, INC_VALUE(n))
-#define REPEAT83(macro, arg, n) macro(arg, n) REPEAT82(macro, arg, INC_VALUE(n))
-#define REPEAT84(macro, arg, n) macro(arg, n) REPEAT83(macro, arg, INC_VALUE(n))
-#define REPEAT85(macro, arg, n) macro(arg, n) REPEAT84(macro, arg, INC_VALUE(n))
-#define REPEAT86(macro, arg, n) macro(arg, n) REPEAT85(macro, arg, INC_VALUE(n))
-#define REPEAT87(macro, arg, n) macro(arg, n) REPEAT86(macro, arg, INC_VALUE(n))
-#define REPEAT88(macro, arg, n) macro(arg, n) REPEAT87(macro, arg, INC_VALUE(n))
-#define REPEAT89(macro, arg, n) macro(arg, n) REPEAT88(macro, arg, INC_VALUE(n))
-#define REPEAT90(macro, arg, n) macro(arg, n) REPEAT89(macro, arg, INC_VALUE(n))
-#define REPEAT91(macro, arg, n) macro(arg, n) REPEAT90(macro, arg, INC_VALUE(n))
-#define REPEAT92(macro, arg, n) macro(arg, n) REPEAT91(macro, arg, INC_VALUE(n))
-#define REPEAT93(macro, arg, n) macro(arg, n) REPEAT92(macro, arg, INC_VALUE(n))
-#define REPEAT94(macro, arg, n) macro(arg, n) REPEAT93(macro, arg, INC_VALUE(n))
-#define REPEAT95(macro, arg, n) macro(arg, n) REPEAT94(macro, arg, INC_VALUE(n))
-#define REPEAT96(macro, arg, n) macro(arg, n) REPEAT95(macro, arg, INC_VALUE(n))
-#define REPEAT97(macro, arg, n) macro(arg, n) REPEAT96(macro, arg, INC_VALUE(n))
-#define REPEAT98(macro, arg, n) macro(arg, n) REPEAT97(macro, arg, INC_VALUE(n))
-#define REPEAT99(macro, arg, n) macro(arg, n) REPEAT98(macro, arg, INC_VALUE(n))
-#define REPEAT100(macro, arg, n) macro(arg, n) REPEAT99(macro, arg, INC_VALUE(n))
-#define REPEAT101(macro, arg, n) macro(arg, n) REPEAT100(macro, arg, INC_VALUE(n))
-#define REPEAT102(macro, arg, n) macro(arg, n) REPEAT101(macro, arg, INC_VALUE(n))
-#define REPEAT103(macro, arg, n) macro(arg, n) REPEAT102(macro, arg, INC_VALUE(n))
-#define REPEAT104(macro, arg, n) macro(arg, n) REPEAT103(macro, arg, INC_VALUE(n))
-#define REPEAT105(macro, arg, n) macro(arg, n) REPEAT104(macro, arg, INC_VALUE(n))
-#define REPEAT106(macro, arg, n) macro(arg, n) REPEAT105(macro, arg, INC_VALUE(n))
-#define REPEAT107(macro, arg, n) macro(arg, n) REPEAT106(macro, arg, INC_VALUE(n))
-#define REPEAT108(macro, arg, n) macro(arg, n) REPEAT107(macro, arg, INC_VALUE(n))
-#define REPEAT109(macro, arg, n) macro(arg, n) REPEAT108(macro, arg, INC_VALUE(n))
-#define REPEAT110(macro, arg, n) macro(arg, n) REPEAT109(macro, arg, INC_VALUE(n))
-#define REPEAT111(macro, arg, n) macro(arg, n) REPEAT110(macro, arg, INC_VALUE(n))
-#define REPEAT112(macro, arg, n) macro(arg, n) REPEAT111(macro, arg, INC_VALUE(n))
-#define REPEAT113(macro, arg, n) macro(arg, n) REPEAT112(macro, arg, INC_VALUE(n))
-#define REPEAT114(macro, arg, n) macro(arg, n) REPEAT113(macro, arg, INC_VALUE(n))
-#define REPEAT115(macro, arg, n) macro(arg, n) REPEAT114(macro, arg, INC_VALUE(n))
-#define REPEAT116(macro, arg, n) macro(arg, n) REPEAT115(macro, arg, INC_VALUE(n))
-#define REPEAT117(macro, arg, n) macro(arg, n) REPEAT116(macro, arg, INC_VALUE(n))
-#define REPEAT118(macro, arg, n) macro(arg, n) REPEAT117(macro, arg, INC_VALUE(n))
-#define REPEAT119(macro, arg, n) macro(arg, n) REPEAT118(macro, arg, INC_VALUE(n))
-#define REPEAT120(macro, arg, n) macro(arg, n) REPEAT119(macro, arg, INC_VALUE(n))
-#define REPEAT121(macro, arg, n) macro(arg, n) REPEAT120(macro, arg, INC_VALUE(n))
-#define REPEAT122(macro, arg, n) macro(arg, n) REPEAT121(macro, arg, INC_VALUE(n))
-#define REPEAT123(macro, arg, n) macro(arg, n) REPEAT122(macro, arg, INC_VALUE(n))
-#define REPEAT124(macro, arg, n) macro(arg, n) REPEAT123(macro, arg, INC_VALUE(n))
-#define REPEAT125(macro, arg, n) macro(arg, n) REPEAT124(macro, arg, INC_VALUE(n))
-#define REPEAT126(macro, arg, n) macro(arg, n) REPEAT125(macro, arg, INC_VALUE(n))
-#define REPEAT127(macro, arg, n) macro(arg, n) REPEAT126(macro, arg, INC_VALUE(n))
-#define REPEAT128(macro, arg, n) macro(arg, n) REPEAT127(macro, arg, INC_VALUE(n))
-#define REPEAT129(macro, arg, n) macro(arg, n) REPEAT128(macro, arg, INC_VALUE(n))
-#define REPEAT130(macro, arg, n) macro(arg, n) REPEAT129(macro, arg, INC_VALUE(n))
-#define REPEAT131(macro, arg, n) macro(arg, n) REPEAT130(macro, arg, INC_VALUE(n))
-#define REPEAT132(macro, arg, n) macro(arg, n) REPEAT131(macro, arg, INC_VALUE(n))
-#define REPEAT133(macro, arg, n) macro(arg, n) REPEAT132(macro, arg, INC_VALUE(n))
-#define REPEAT134(macro, arg, n) macro(arg, n) REPEAT133(macro, arg, INC_VALUE(n))
-#define REPEAT135(macro, arg, n) macro(arg, n) REPEAT134(macro, arg, INC_VALUE(n))
-#define REPEAT136(macro, arg, n) macro(arg, n) REPEAT135(macro, arg, INC_VALUE(n))
-#define REPEAT137(macro, arg, n) macro(arg, n) REPEAT136(macro, arg, INC_VALUE(n))
-#define REPEAT138(macro, arg, n) macro(arg, n) REPEAT137(macro, arg, INC_VALUE(n))
-#define REPEAT139(macro, arg, n) macro(arg, n) REPEAT138(macro, arg, INC_VALUE(n))
-#define REPEAT140(macro, arg, n) macro(arg, n) REPEAT139(macro, arg, INC_VALUE(n))
-#define REPEAT141(macro, arg, n) macro(arg, n) REPEAT140(macro, arg, INC_VALUE(n))
-#define REPEAT142(macro, arg, n) macro(arg, n) REPEAT141(macro, arg, INC_VALUE(n))
-#define REPEAT143(macro, arg, n) macro(arg, n) REPEAT142(macro, arg, INC_VALUE(n))
-#define REPEAT144(macro, arg, n) macro(arg, n) REPEAT143(macro, arg, INC_VALUE(n))
-#define REPEAT145(macro, arg, n) macro(arg, n) REPEAT144(macro, arg, INC_VALUE(n))
-#define REPEAT146(macro, arg, n) macro(arg, n) REPEAT145(macro, arg, INC_VALUE(n))
-#define REPEAT147(macro, arg, n) macro(arg, n) REPEAT146(macro, arg, INC_VALUE(n))
-#define REPEAT148(macro, arg, n) macro(arg, n) REPEAT147(macro, arg, INC_VALUE(n))
-#define REPEAT149(macro, arg, n) macro(arg, n) REPEAT148(macro, arg, INC_VALUE(n))
-#define REPEAT150(macro, arg, n) macro(arg, n) REPEAT149(macro, arg, INC_VALUE(n))
-#define REPEAT151(macro, arg, n) macro(arg, n) REPEAT150(macro, arg, INC_VALUE(n))
-#define REPEAT152(macro, arg, n) macro(arg, n) REPEAT151(macro, arg, INC_VALUE(n))
-#define REPEAT153(macro, arg, n) macro(arg, n) REPEAT152(macro, arg, INC_VALUE(n))
-#define REPEAT154(macro, arg, n) macro(arg, n) REPEAT153(macro, arg, INC_VALUE(n))
-#define REPEAT155(macro, arg, n) macro(arg, n) REPEAT154(macro, arg, INC_VALUE(n))
-#define REPEAT156(macro, arg, n) macro(arg, n) REPEAT155(macro, arg, INC_VALUE(n))
-#define REPEAT157(macro, arg, n) macro(arg, n) REPEAT156(macro, arg, INC_VALUE(n))
-#define REPEAT158(macro, arg, n) macro(arg, n) REPEAT157(macro, arg, INC_VALUE(n))
-#define REPEAT159(macro, arg, n) macro(arg, n) REPEAT158(macro, arg, INC_VALUE(n))
-#define REPEAT160(macro, arg, n) macro(arg, n) REPEAT159(macro, arg, INC_VALUE(n))
-#define REPEAT161(macro, arg, n) macro(arg, n) REPEAT160(macro, arg, INC_VALUE(n))
-#define REPEAT162(macro, arg, n) macro(arg, n) REPEAT161(macro, arg, INC_VALUE(n))
-#define REPEAT163(macro, arg, n) macro(arg, n) REPEAT162(macro, arg, INC_VALUE(n))
-#define REPEAT164(macro, arg, n) macro(arg, n) REPEAT163(macro, arg, INC_VALUE(n))
-#define REPEAT165(macro, arg, n) macro(arg, n) REPEAT164(macro, arg, INC_VALUE(n))
-#define REPEAT166(macro, arg, n) macro(arg, n) REPEAT165(macro, arg, INC_VALUE(n))
-#define REPEAT167(macro, arg, n) macro(arg, n) REPEAT166(macro, arg, INC_VALUE(n))
-#define REPEAT168(macro, arg, n) macro(arg, n) REPEAT167(macro, arg, INC_VALUE(n))
-#define REPEAT169(macro, arg, n) macro(arg, n) REPEAT168(macro, arg, INC_VALUE(n))
-#define REPEAT170(macro, arg, n) macro(arg, n) REPEAT169(macro, arg, INC_VALUE(n))
-#define REPEAT171(macro, arg, n) macro(arg, n) REPEAT170(macro, arg, INC_VALUE(n))
-#define REPEAT172(macro, arg, n) macro(arg, n) REPEAT171(macro, arg, INC_VALUE(n))
-#define REPEAT173(macro, arg, n) macro(arg, n) REPEAT172(macro, arg, INC_VALUE(n))
-#define REPEAT174(macro, arg, n) macro(arg, n) REPEAT173(macro, arg, INC_VALUE(n))
-#define REPEAT175(macro, arg, n) macro(arg, n) REPEAT174(macro, arg, INC_VALUE(n))
-#define REPEAT176(macro, arg, n) macro(arg, n) REPEAT175(macro, arg, INC_VALUE(n))
-#define REPEAT177(macro, arg, n) macro(arg, n) REPEAT176(macro, arg, INC_VALUE(n))
-#define REPEAT178(macro, arg, n) macro(arg, n) REPEAT177(macro, arg, INC_VALUE(n))
-#define REPEAT179(macro, arg, n) macro(arg, n) REPEAT178(macro, arg, INC_VALUE(n))
-#define REPEAT180(macro, arg, n) macro(arg, n) REPEAT179(macro, arg, INC_VALUE(n))
-#define REPEAT181(macro, arg, n) macro(arg, n) REPEAT180(macro, arg, INC_VALUE(n))
-#define REPEAT182(macro, arg, n) macro(arg, n) REPEAT181(macro, arg, INC_VALUE(n))
-#define REPEAT183(macro, arg, n) macro(arg, n) REPEAT182(macro, arg, INC_VALUE(n))
-#define REPEAT184(macro, arg, n) macro(arg, n) REPEAT183(macro, arg, INC_VALUE(n))
-#define REPEAT185(macro, arg, n) macro(arg, n) REPEAT184(macro, arg, INC_VALUE(n))
-#define REPEAT186(macro, arg, n) macro(arg, n) REPEAT185(macro, arg, INC_VALUE(n))
-#define REPEAT187(macro, arg, n) macro(arg, n) REPEAT186(macro, arg, INC_VALUE(n))
-#define REPEAT188(macro, arg, n) macro(arg, n) REPEAT187(macro, arg, INC_VALUE(n))
-#define REPEAT189(macro, arg, n) macro(arg, n) REPEAT188(macro, arg, INC_VALUE(n))
-#define REPEAT190(macro, arg, n) macro(arg, n) REPEAT189(macro, arg, INC_VALUE(n))
-#define REPEAT191(macro, arg, n) macro(arg, n) REPEAT190(macro, arg, INC_VALUE(n))
-#define REPEAT192(macro, arg, n) macro(arg, n) REPEAT191(macro, arg, INC_VALUE(n))
-#define REPEAT193(macro, arg, n) macro(arg, n) REPEAT192(macro, arg, INC_VALUE(n))
-#define REPEAT194(macro, arg, n) macro(arg, n) REPEAT193(macro, arg, INC_VALUE(n))
-#define REPEAT195(macro, arg, n) macro(arg, n) REPEAT194(macro, arg, INC_VALUE(n))
-#define REPEAT196(macro, arg, n) macro(arg, n) REPEAT195(macro, arg, INC_VALUE(n))
-#define REPEAT197(macro, arg, n) macro(arg, n) REPEAT196(macro, arg, INC_VALUE(n))
-#define REPEAT198(macro, arg, n) macro(arg, n) REPEAT197(macro, arg, INC_VALUE(n))
-#define REPEAT199(macro, arg, n) macro(arg, n) REPEAT198(macro, arg, INC_VALUE(n))
-#define REPEAT200(macro, arg, n) macro(arg, n) REPEAT199(macro, arg, INC_VALUE(n))
-#define REPEAT201(macro, arg, n) macro(arg, n) REPEAT200(macro, arg, INC_VALUE(n))
-#define REPEAT202(macro, arg, n) macro(arg, n) REPEAT201(macro, arg, INC_VALUE(n))
-#define REPEAT203(macro, arg, n) macro(arg, n) REPEAT202(macro, arg, INC_VALUE(n))
-#define REPEAT204(macro, arg, n) macro(arg, n) REPEAT203(macro, arg, INC_VALUE(n))
-#define REPEAT205(macro, arg, n) macro(arg, n) REPEAT204(macro, arg, INC_VALUE(n))
-#define REPEAT206(macro, arg, n) macro(arg, n) REPEAT205(macro, arg, INC_VALUE(n))
-#define REPEAT207(macro, arg, n) macro(arg, n) REPEAT206(macro, arg, INC_VALUE(n))
-#define REPEAT208(macro, arg, n) macro(arg, n) REPEAT207(macro, arg, INC_VALUE(n))
-#define REPEAT209(macro, arg, n) macro(arg, n) REPEAT208(macro, arg, INC_VALUE(n))
-#define REPEAT210(macro, arg, n) macro(arg, n) REPEAT209(macro, arg, INC_VALUE(n))
-#define REPEAT211(macro, arg, n) macro(arg, n) REPEAT210(macro, arg, INC_VALUE(n))
-#define REPEAT212(macro, arg, n) macro(arg, n) REPEAT211(macro, arg, INC_VALUE(n))
-#define REPEAT213(macro, arg, n) macro(arg, n) REPEAT212(macro, arg, INC_VALUE(n))
-#define REPEAT214(macro, arg, n) macro(arg, n) REPEAT213(macro, arg, INC_VALUE(n))
-#define REPEAT215(macro, arg, n) macro(arg, n) REPEAT214(macro, arg, INC_VALUE(n))
-#define REPEAT216(macro, arg, n) macro(arg, n) REPEAT215(macro, arg, INC_VALUE(n))
-#define REPEAT217(macro, arg, n) macro(arg, n) REPEAT216(macro, arg, INC_VALUE(n))
-#define REPEAT218(macro, arg, n) macro(arg, n) REPEAT217(macro, arg, INC_VALUE(n))
-#define REPEAT219(macro, arg, n) macro(arg, n) REPEAT218(macro, arg, INC_VALUE(n))
-#define REPEAT220(macro, arg, n) macro(arg, n) REPEAT219(macro, arg, INC_VALUE(n))
-#define REPEAT221(macro, arg, n) macro(arg, n) REPEAT220(macro, arg, INC_VALUE(n))
-#define REPEAT222(macro, arg, n) macro(arg, n) REPEAT221(macro, arg, INC_VALUE(n))
-#define REPEAT223(macro, arg, n) macro(arg, n) REPEAT222(macro, arg, INC_VALUE(n))
-#define REPEAT224(macro, arg, n) macro(arg, n) REPEAT223(macro, arg, INC_VALUE(n))
-#define REPEAT225(macro, arg, n) macro(arg, n) REPEAT224(macro, arg, INC_VALUE(n))
-#define REPEAT226(macro, arg, n) macro(arg, n) REPEAT225(macro, arg, INC_VALUE(n))
-#define REPEAT227(macro, arg, n) macro(arg, n) REPEAT226(macro, arg, INC_VALUE(n))
-#define REPEAT228(macro, arg, n) macro(arg, n) REPEAT227(macro, arg, INC_VALUE(n))
-#define REPEAT229(macro, arg, n) macro(arg, n) REPEAT228(macro, arg, INC_VALUE(n))
-#define REPEAT230(macro, arg, n) macro(arg, n) REPEAT229(macro, arg, INC_VALUE(n))
-#define REPEAT231(macro, arg, n) macro(arg, n) REPEAT230(macro, arg, INC_VALUE(n))
-#define REPEAT232(macro, arg, n) macro(arg, n) REPEAT231(macro, arg, INC_VALUE(n))
-#define REPEAT233(macro, arg, n) macro(arg, n) REPEAT232(macro, arg, INC_VALUE(n))
-#define REPEAT234(macro, arg, n) macro(arg, n) REPEAT233(macro, arg, INC_VALUE(n))
-#define REPEAT235(macro, arg, n) macro(arg, n) REPEAT234(macro, arg, INC_VALUE(n))
-#define REPEAT236(macro, arg, n) macro(arg, n) REPEAT235(macro, arg, INC_VALUE(n))
-#define REPEAT237(macro, arg, n) macro(arg, n) REPEAT236(macro, arg, INC_VALUE(n))
-#define REPEAT238(macro, arg, n) macro(arg, n) REPEAT237(macro, arg, INC_VALUE(n))
-#define REPEAT239(macro, arg, n) macro(arg, n) REPEAT238(macro, arg, INC_VALUE(n))
-#define REPEAT240(macro, arg, n) macro(arg, n) REPEAT239(macro, arg, INC_VALUE(n))
-#define REPEAT241(macro, arg, n) macro(arg, n) REPEAT240(macro, arg, INC_VALUE(n))
-#define REPEAT242(macro, arg, n) macro(arg, n) REPEAT241(macro, arg, INC_VALUE(n))
-#define REPEAT243(macro, arg, n) macro(arg, n) REPEAT242(macro, arg, INC_VALUE(n))
-#define REPEAT244(macro, arg, n) macro(arg, n) REPEAT243(macro, arg, INC_VALUE(n))
-#define REPEAT245(macro, arg, n) macro(arg, n) REPEAT244(macro, arg, INC_VALUE(n))
-#define REPEAT246(macro, arg, n) macro(arg, n) REPEAT245(macro, arg, INC_VALUE(n))
-#define REPEAT247(macro, arg, n) macro(arg, n) REPEAT246(macro, arg, INC_VALUE(n))
-#define REPEAT248(macro, arg, n) macro(arg, n) REPEAT247(macro, arg, INC_VALUE(n))
-#define REPEAT249(macro, arg, n) macro(arg, n) REPEAT248(macro, arg, INC_VALUE(n))
-#define REPEAT250(macro, arg, n) macro(arg, n) REPEAT249(macro, arg, INC_VALUE(n))
-#define REPEAT251(macro, arg, n) macro(arg, n) REPEAT250(macro, arg, INC_VALUE(n))
-#define REPEAT252(macro, arg, n) macro(arg, n) REPEAT251(macro, arg, INC_VALUE(n))
-#define REPEAT253(macro, arg, n) macro(arg, n) REPEAT252(macro, arg, INC_VALUE(n))
-#define REPEAT254(macro, arg, n) macro(arg, n) REPEAT253(macro, arg, INC_VALUE(n))
-#define REPEAT255(macro, arg, n) macro(arg, n) REPEAT254(macro, arg, INC_VALUE(n))
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <utils_increment_macro.h>
-#endif /* _UTILS_REPEAT_MACRO_H */
diff --git a/watch-library/hal/utils/src/utils_assert.c b/watch-library/hal/utils/src/utils_assert.c
deleted file mode 100644
index b376c970..00000000
--- a/watch-library/hal/utils/src/utils_assert.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * \file
- *
- * \brief Asserts related functionality.
- *
- * 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 <utils_assert.h>
-
-/**
- * \brief Assert function
- */
-void assert(const bool condition, const char *const file, const int line)
-{
- if (!(condition)) {
- __asm("BKPT #0");
- }
- (void)file;
- (void)line;
-}
diff --git a/watch-library/hal/utils/src/utils_event.c b/watch-library/hal/utils/src/utils_event.c
deleted file mode 100644
index d1af9d0c..00000000
--- a/watch-library/hal/utils/src/utils_event.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * \file
- *
- * \brief Events 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 <utils_event.h>
-#include <utils_assert.h>
-#include <string.h>
-
-#define EVENT_WORD_BITS (sizeof(event_word_t) * 8)
-
-static struct list_descriptor events;
-static uint8_t subscribed[EVENT_MASK_SIZE];
-
-int32_t event_subscribe(struct event *const event, const event_id_t id, event_cb_t cb)
-{
- /* get byte and bit number of the given event in the event mask */
- const uint8_t position = id >> 3;
- const uint8_t mask = 1 << (id & 0x7);
-
- ASSERT(event && cb && (id < EVENT_MAX_AMOUNT));
-
- if (event->mask[position] & mask) {
- return ERR_NO_CHANGE; /* Already subscribed */
- }
-
- if (!is_list_element(&events, event)) {
- memset(event->mask, 0, EVENT_MASK_SIZE);
- list_insert_as_head(&events, event);
- }
- event->cb = cb;
- event->mask[position] |= mask;
-
- subscribed[position] |= mask;
-
- return ERR_NONE;
-}
-
-int32_t event_unsubscribe(struct event *const event, const event_id_t id)
-{
- /* get byte and bit number of the given event in the event mask */
- const uint8_t position = id >> 3;
- const uint8_t mask = 1 << (id & 0x7);
- const struct event *current;
- uint8_t i;
-
- ASSERT(event && (id < EVENT_MAX_AMOUNT));
-
- if (!(event->mask[position] & mask)) {
- return ERR_NO_CHANGE; /* Already unsubscribed */
- }
-
- event->mask[position] &= ~mask;
-
- /* Check if there are more subscribers */
- for ((current = (const struct event *)list_get_head(&events)); current;
- current = (const struct event *)list_get_next_element(current)) {
- if (current->mask[position] & mask) {
- break;
- }
- }
- if (!current) {
- subscribed[position] &= ~mask;
- }
-
- /* Remove event from the list. Can be unsave, document it! */
- for (i = 0; i < ARRAY_SIZE(event->mask); i++) {
- if (event->mask[i]) {
- return ERR_NONE;
- }
- }
- list_delete_element(&events, event);
-
- return ERR_NONE;
-}
-
-void event_post(const event_id_t id, const event_data_t data)
-{
- /* get byte and bit number of the given event in the event mask */
- const uint8_t position = id >> 3;
- const uint8_t mask = 1 << (id & 0x7);
- const struct event *current;
-
- ASSERT((id < EVENT_MAX_AMOUNT));
-
- if (!(subscribed[position] & mask)) {
- return; /* No subscribers */
- }
-
- /* Find all subscribers */
- for ((current = (const struct event *)list_get_head(&events)); current;
- current = (const struct event *)list_get_next_element(current)) {
- if (current->mask[position] & mask) {
- current->cb(id, data);
- }
- }
-}
diff --git a/watch-library/hal/utils/src/utils_list.c b/watch-library/hal/utils/src/utils_list.c
deleted file mode 100644
index 4006a019..00000000
--- a/watch-library/hal/utils/src/utils_list.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * \file
- *
- * \brief List 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 <utils_list.h>
-#include <utils_assert.h>
-
-/**
- * \brief Check whether element belongs to list
- */
-bool is_list_element(const struct list_descriptor *const list, const void *const element)
-{
- struct list_element *it;
- for (it = list->head; it; it = it->next) {
- if (it == element) {
- return true;
- }
- }
-
- return false;
-}
-
-/**
- * \brief Insert an element as list head
- */
-void list_insert_as_head(struct list_descriptor *const list, void *const element)
-{
- ASSERT(!is_list_element(list, element));
-
- ((struct list_element *)element)->next = list->head;
- list->head = (struct list_element *)element;
-}
-
-/**
- * \brief Insert an element after the given list element
- */
-void list_insert_after(void *const after, void *const element)
-{
- ((struct list_element *)element)->next = ((struct list_element *)after)->next;
- ((struct list_element *)after)->next = (struct list_element *)element;
-}
-
-/**
- * \brief Insert an element at list end
- */
-void list_insert_at_end(struct list_descriptor *const list, void *const element)
-{
- struct list_element *it = list->head;
-
- ASSERT(!is_list_element(list, element));
-
- if (!list->head) {
- list->head = (struct list_element *)element;
- ((struct list_element *)element)->next = NULL;
- return;
- }
-
- while (it->next) {
- it = it->next;
- }
- it->next = (struct list_element *)element;
- ((struct list_element *)element)->next = NULL;
-}
-
-/**
- * \brief Removes list head
- */
-void *list_remove_head(struct list_descriptor *const list)
-{
- if (list->head) {
- struct list_element *tmp = list->head;
-
- list->head = list->head->next;
- return (void *)tmp;
- }
-
- return NULL;
-}
-
-/**
- * \brief Removes list element
- */
-bool list_delete_element(struct list_descriptor *const list, const void *const element)
-{
- if (!element) {
- return false;
- }
-
- if (list->head == element) {
- list->head = list->head->next;
- return true;
- } else {
- struct list_element *it = list->head;
-
- while (it && it->next != element) {
- it = it->next;
- }
- if (it) {
- it->next = ((struct list_element *)element)->next;
- return true;
- }
- }
-
- return false;
-}
-
-//@}
diff --git a/watch-library/hal/utils/src/utils_syscalls.c b/watch-library/hal/utils/src/utils_syscalls.c
deleted file mode 100644
index 79e2f1fe..00000000
--- a/watch-library/hal/utils/src/utils_syscalls.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/**
- * \file
- *
- * \brief Syscalls for SAM0 (GCC).
- *
- * 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 <stdio.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#undef errno
-extern int errno;
-extern int _end;
-
-extern caddr_t _sbrk(int incr);
-extern int link(char *old, char *_new);
-extern int _close(int file);
-extern int _fstat(int file, struct stat *st);
-extern int _isatty(int file);
-extern int _lseek(int file, int ptr, int dir);
-extern void _exit(int status);
-extern void _kill(int pid, int sig);
-extern int _getpid(void);
-
-/**
- * \brief Replacement of C library of _sbrk
- */
-extern caddr_t _sbrk(int incr)
-{
- static unsigned char *heap = NULL;
- unsigned char * prev_heap;
-
- if (heap == NULL) {
- heap = (unsigned char *)&_end;
- }
- prev_heap = heap;
-
- heap += incr;
-
- return (caddr_t)prev_heap;
-}
-
-/**
- * \brief Replacement of C library of link
- */
-extern int link(char *old, char *_new)
-{
- (void)old, (void)_new;
- return -1;
-}
-
-/**
- * \brief Replacement of C library of _close
- */
-extern int _close(int file)
-{
- (void)file;
- return -1;
-}
-
-/**
- * \brief Replacement of C library of _fstat
- */
-extern int _fstat(int file, struct stat *st)
-{
- (void)file;
- st->st_mode = S_IFCHR;
-
- return 0;
-}
-
-/**
- * \brief Replacement of C library of _isatty
- */
-extern int _isatty(int file)
-{
- (void)file;
- return 1;
-}
-
-/**
- * \brief Replacement of C library of _lseek
- */
-extern int _lseek(int file, int ptr, int dir)
-{
- (void)file, (void)ptr, (void)dir;
- return 0;
-}
-
-/**
- * \brief Replacement of C library of _exit
- */
-extern void _exit(int status)
-{
- printf("Exiting with status %d.\n", status);
-
- for (;;)
- ;
-}
-
-/**
- * \brief Replacement of C library of _kill
- */
-extern void _kill(int pid, int sig)
-{
- (void)pid, (void)sig;
- return;
-}
-
-/**
- * \brief Replacement of C library of _getpid
- */
-extern int _getpid(void)
-{
- return -1;
-}
-
-#ifdef __cplusplus
-}
-#endif