diff --git a/.archive/Drivers/example/atmel_devices_cdc.cat b/.archive/Drivers/example/atmel_devices_cdc.cat
deleted file mode 100644
index 09a0673b2..000000000
Binary files a/.archive/Drivers/example/atmel_devices_cdc.cat and /dev/null differ
diff --git a/.archive/Drivers/example/atmel_devices_cdc.inf b/.archive/Drivers/example/atmel_devices_cdc.inf
deleted file mode 100644
index 10e58d521..000000000
--- a/.archive/Drivers/example/atmel_devices_cdc.inf
+++ /dev/null
@@ -1,181 +0,0 @@
-; Windows 2000, XP, Vista, 7 and 8 (x32 and x64) setup file for Atmel CDC Devices
-; Copyright (c) 2000-2013 ATMEL, Inc.
-
-[Version]
-Signature = "$Windows NT$"
-Class = Ports
-ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318}
-
-Provider = %Manufacturer%
-LayoutFile = layout.inf
-CatalogFile = atmel_devices_cdc.cat
-DriverVer = 01/08/2013,6.0.0.0
-
-;----------------------------------------------------------
-; Targets
-;----------------------------------------------------------
-[Manufacturer]
-%Manufacturer%=DeviceList, NTAMD64, NTIA64, NT
-
-[DeviceList]
-%ATMEL_CDC_XPLAINED%=DriverInstall, USB\VID_03EB&PID_2122
-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall, USB\VID_03EB&PID_214B
-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall, USB\VID_03EB&PID_214A
-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall, USB\VID_03EB&PID_2307
-%ATMEL_CDC_EVK1XXX%=DriverInstall, USB\VID_03EB&PID_2310
-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall, USB\VID_03EB&PID_2404
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall, USB\VID_03EB&PID_2421&MI_00
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall, USB\VID_03EB&PID_2424&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall, USB\VID_03EB&PID_2425&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall, USB\VID_03EB&PID_2425&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall, USB\VID_03EB&PID_2426&MI_00
-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall, USB\VID_03EB&PID_2426&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall, USB\VID_03EB&PID_2426&MI_04
-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall, USB\VID_03EB&PID_2426&MI_06
-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall, USB\VID_03EB&PID_2426&MI_08
-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall, USB\VID_03EB&PID_2426&MI_0A
-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall, USB\VID_03EB&PID_2426&MI_0C
-
-[DeviceList.NTAMD64]
-%ATMEL_CDC_XPLAINED%=DriverInstall.NTamd64, USB\VID_03EB&PID_2122
-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall.NTamd64, USB\VID_03EB&PID_214B
-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall.NTamd64, USB\VID_03EB&PID_214A
-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2307
-%ATMEL_CDC_EVK1XXX%=DriverInstall.NTamd64, USB\VID_03EB&PID_2310
-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2404
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2421&MI_00
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2424&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_00
-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_04
-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_06
-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_08
-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0A
-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0C
-
-[DeviceList.NTIA64]
-%ATMEL_CDC_XPLAINED%=DriverInstall.NTamd64, USB\VID_03EB&PID_2122
-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall.NTamd64, USB\VID_03EB&PID_214B
-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall.NTamd64, USB\VID_03EB&PID_214A
-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2307
-%ATMEL_CDC_EVK1XXX%=DriverInstall.NTamd64, USB\VID_03EB&PID_2310
-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2404
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2421&MI_00
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2424&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_00
-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_04
-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_06
-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_08
-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0A
-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0C
-
-[DeviceList.NT]
-%ATMEL_CDC_XPLAINED%=DriverInstall.NT, USB\VID_03EB&PID_2122
-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall.NT, USB\VID_03EB&PID_214B
-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall.NT, USB\VID_03EB&PID_214A
-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall.NT, USB\VID_03EB&PID_2307
-%ATMEL_CDC_EVK1XXX%=DriverInstall.NT, USB\VID_03EB&PID_2310
-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall.NT, USB\VID_03EB&PID_2404
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall.NT, USB\VID_03EB&PID_2421&MI_00
-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall.NT, USB\VID_03EB&PID_2424&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall.NT, USB\VID_03EB&PID_2425&MI_00
-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall.NT, USB\VID_03EB&PID_2425&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_00
-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_02
-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_04
-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_06
-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_08
-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_0A
-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_0C
-
-;----------------------------------------------------------
-; Windows 2000, XP, Vista, Windows 7, Windows 8 - 32bit
-;----------------------------------------------------------
-[Reader_Install.NTx86]
-
-
-[DestinationDirs]
-DefaultDestDir=12
-DriverInstall.NT.Copy=12
-
-[DriverInstall.NT]
-include=mdmcpq.inf
-CopyFiles=DriverInstall.NT.Copy
-AddReg=DriverInstall.NT.AddReg
-
-[DriverInstall.NT.Copy]
-usbser.sys
-
-[DriverInstall.NT.AddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,usbser.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.NT.Services]
-AddService = usbser, 0x00000002, DriverService.NT
-
-[DriverService.NT]
-DisplayName = %Serial.SvcDesc%
-ServiceType = 1 ; SERVICE_KERNEL_DRIVER
-StartType = 3 ; SERVICE_DEMAND_START
-ErrorControl = 1 ; SERVICE_ERROR_NORMAL
-ServiceBinary = %12%\usbser.sys
-LoadOrderGroup = Base
-
-;----------------------------------------------------------
-; Windows XP, Vista, Windows 7, Windows 8 - 64bit
-;----------------------------------------------------------
-
-[DriverInstall.NTamd64]
-include=mdmcpq.inf
-CopyFiles=DriverCopyFiles.NTamd64
-AddReg=DriverInstall.NTamd64.AddReg
-
-[DriverCopyFiles.NTamd64]
-usbser.sys,,,0x20
-
-[DriverInstall.NTamd64.AddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,usbser.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.NTamd64.Services]
-AddService=usbser, 0x00000002, DriverService.NTamd64
-
-[DriverService.NTamd64]
-DisplayName=%Serial.SvcDesc%
-ServiceType=1
-StartType=3
-ErrorControl=1
-ServiceBinary=%12%\usbser.sys
-
-;----------------------------------------------------------
-; String
-;----------------------------------------------------------
-
-[Strings]
-Manufacturer = "ATMEL, Inc."
-ATMEL_CDC_XPLAINED = "XPLAINED Virtual Com Port"
-ATMEL_CDC_USB_ZIGBIT_Sub = "ZigBit SubGHz USBstick Com Port"
-ATMEL_CDC_USB_ZIGBIT_2_4 = "ZigBit 2.4GHz USBstick Com Port"
-ATMEL_CDC_SFW_EXAMPLE = "Communication Device Class SFW example"
-ATMEL_CDC_EVK1XXX = "EVK1XXX Virtual Com Port"
-ATMEL_CDC_ASF_EXAMPLE = "Communication Device Class ASF example"
-ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2 = "Communication Device Class ASF composite example 2"
-ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4 = "Communication Device Class ASF composite example 4"
-ATMEL_CDC_ASF_EXAMPLE2_COM1 = "Communication Device Class ASF example2, COM1"
-ATMEL_CDC_ASF_EXAMPLE2_COM2 = "Communication Device Class ASF example2, COM2"
-ATMEL_CDC_ASF_EXAMPLE3_COM1 = "Communication Device Class ASF example3, COM1"
-ATMEL_CDC_ASF_EXAMPLE3_COM2 = "Communication Device Class ASF example3, COM2"
-ATMEL_CDC_ASF_EXAMPLE3_COM3 = "Communication Device Class ASF example3, COM3"
-ATMEL_CDC_ASF_EXAMPLE3_COM4 = "Communication Device Class ASF example3, COM4"
-ATMEL_CDC_ASF_EXAMPLE3_COM5 = "Communication Device Class ASF example3, COM5"
-ATMEL_CDC_ASF_EXAMPLE3_COM6 = "Communication Device Class ASF example3, COM6"
-ATMEL_CDC_ASF_EXAMPLE3_COM7 = "Communication Device Class ASF example3, COM7"
-
-Serial.SvcDesc = "USB Serial emulation driver"
diff --git a/.archive/Drivers/example/cdcdf_acm.c b/.archive/Drivers/example/cdcdf_acm.c
deleted file mode 100644
index 77779e41e..000000000
--- a/.archive/Drivers/example/cdcdf_acm.c
+++ /dev/null
@@ -1,358 +0,0 @@
-/**
- * \file
- *
- * \brief USB Device Stack CDC ACM Function 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 "cdcdf_acm.h"
-
-#define CDCDF_ACM_VERSION 0x00000001u
-#define CDCDF_ACM_COMM_EP_INDEX 0
-#define CDCDF_ACM_DATA_EP_INDEX 1
-
-/** USB Device CDC ACM Function Specific Data */
-struct cdcdf_acm_func_data {
- /** CDC Device ACM Interface information */
- uint8_t func_iface[2];
- /** CDC Device ACM IN Endpoint */
- uint8_t func_ep_in[2];
- /** CDC Device ACM OUT Endpoint */
- uint8_t func_ep_out;
- /** CDC Device ACM Enable Flag */
- bool enabled;
-};
-
-static struct usbdf_driver _cdcdf_acm;
-static struct cdcdf_acm_func_data _cdcdf_acm_funcd;
-static struct usb_cdc_line_coding usbd_cdc_line_coding;
-
-static cdcdf_acm_notify_state_t cdcdf_acm_notify_state = NULL;
-static cdcdf_acm_set_line_coding_t cdcdf_acm_set_line_coding = NULL;
-
-/**
- * \brief Enable CDC ACM Function
- * \param[in] drv Pointer to USB device function driver
- * \param[in] desc Pointer to USB interface descriptor
- * \return Operation status.
- */
-static int32_t cdcdf_acm_enable(struct usbdf_driver* drv, struct usbd_descriptors* desc) {
- struct cdcdf_acm_func_data* func_data = (struct cdcdf_acm_func_data*)(drv->func_data);
-
- usb_ep_desc_t ep_desc;
- usb_iface_desc_t ifc_desc;
- uint8_t *ifc, *ep;
- uint8_t i;
-
- ifc = desc->sod;
- for (i = 0; i < 2; i++) {
- if (NULL == ifc) {
- return ERR_NOT_FOUND;
- }
-
- ifc_desc.bInterfaceNumber = ifc[2];
- ifc_desc.bInterfaceClass = ifc[5];
-
- if ((CDC_CLASS_COMM == ifc_desc.bInterfaceClass) || (CDC_CLASS_DATA == ifc_desc.bInterfaceClass)) {
- if (func_data->func_iface[i] == ifc_desc.bInterfaceNumber) { // Initialized
- return ERR_ALREADY_INITIALIZED;
- } else if (func_data->func_iface[i] != 0xFF) { // Occupied
- return ERR_NO_RESOURCE;
- } else {
- func_data->func_iface[i] = ifc_desc.bInterfaceNumber;
- }
- } else { // Not supported by this function driver
- return ERR_NOT_FOUND;
- }
-
- // Install endpoints
- ep = usb_find_desc(ifc, desc->eod, USB_DT_ENDPOINT);
- while (NULL != ep) {
- ep_desc.bEndpointAddress = ep[2];
- ep_desc.bmAttributes = ep[3];
- ep_desc.wMaxPacketSize = usb_get_u16(ep + 4);
- if (usb_d_ep_init(ep_desc.bEndpointAddress, ep_desc.bmAttributes, ep_desc.wMaxPacketSize)) {
- return ERR_NOT_INITIALIZED;
- }
- if (ep_desc.bEndpointAddress & USB_EP_DIR_IN) {
- func_data->func_ep_in[i] = ep_desc.bEndpointAddress;
- usb_d_ep_enable(func_data->func_ep_in[i]);
- } else {
- func_data->func_ep_out = ep_desc.bEndpointAddress;
- usb_d_ep_enable(func_data->func_ep_out);
- }
- desc->sod = ep;
- ep = usb_find_ep_desc(usb_desc_next(desc->sod), desc->eod);
- }
- ifc = usb_find_desc(usb_desc_next(desc->sod), desc->eod, USB_DT_INTERFACE);
- }
- // Installed
- _cdcdf_acm_funcd.enabled = true;
- return ERR_NONE;
-}
-
-/**
- * \brief Disable CDC ACM Function
- * \param[in] drv Pointer to USB device function driver
- * \param[in] desc Pointer to USB device descriptor
- * \return Operation status.
- */
-static int32_t cdcdf_acm_disable(struct usbdf_driver* drv, struct usbd_descriptors* desc) {
- struct cdcdf_acm_func_data* func_data = (struct cdcdf_acm_func_data*)(drv->func_data);
-
- usb_iface_desc_t ifc_desc;
- uint8_t i;
-
- if (desc) {
- ifc_desc.bInterfaceClass = desc->sod[5];
- // Check interface
- if ((ifc_desc.bInterfaceClass != CDC_CLASS_COMM) && (ifc_desc.bInterfaceClass != CDC_CLASS_DATA)) {
- return ERR_NOT_FOUND;
- }
- }
-
- for (i = 0; i < 2; i++) {
- if (func_data->func_iface[i] == 0xFF) {
- continue;
- } else {
- func_data->func_iface[i] = 0xFF;
- if (func_data->func_ep_in[i] != 0xFF) {
- usb_d_ep_deinit(func_data->func_ep_in[i]);
- func_data->func_ep_in[i] = 0xFF;
- }
- }
- }
-
- if (func_data->func_ep_out != 0xFF) {
- usb_d_ep_deinit(func_data->func_ep_out);
- func_data->func_ep_out = 0xFF;
- }
-
- _cdcdf_acm_funcd.enabled = false;
- return ERR_NONE;
-}
-
-/**
- * \brief CDC ACM Control Function
- * \param[in] drv Pointer to USB device function driver
- * \param[in] ctrl USB device general function control type
- * \param[in] param Parameter pointer
- * \return Operation status.
- */
-static int32_t cdcdf_acm_ctrl(struct usbdf_driver* drv, enum usbdf_control ctrl, void* param) {
- switch (ctrl) {
- case USBDF_ENABLE:
- return cdcdf_acm_enable(drv, (struct usbd_descriptors*)param);
-
- case USBDF_DISABLE:
- return cdcdf_acm_disable(drv, (struct usbd_descriptors*)param);
-
- case USBDF_GET_IFACE:
- return ERR_UNSUPPORTED_OP;
-
- default:
- return ERR_INVALID_ARG;
- }
-}
-
-/**
- * \brief Process the CDC class set request
- * \param[in] ep Endpoint address.
- * \param[in] req Pointer to the request.
- * \return Operation status.
- */
-static int32_t cdcdf_acm_set_req(uint8_t ep, struct usb_req* req, enum usb_ctrl_stage stage) {
- struct usb_cdc_line_coding line_coding_tmp;
- uint16_t len = req->wLength;
- uint8_t* ctrl_buf = usbdc_get_ctrl_buffer();
-
- switch (req->bRequest) {
- case USB_REQ_CDC_SET_LINE_CODING:
- if (sizeof(struct usb_cdc_line_coding) != len) {
- return ERR_INVALID_DATA;
- }
- if (USB_SETUP_STAGE == stage) {
- return usbdc_xfer(ep, ctrl_buf, len, false);
- } else {
- memcpy(&line_coding_tmp, ctrl_buf, sizeof(struct usb_cdc_line_coding));
- if ((NULL == cdcdf_acm_set_line_coding) || (true == cdcdf_acm_set_line_coding(&line_coding_tmp))) {
- usbd_cdc_line_coding = line_coding_tmp;
- }
- return ERR_NONE;
- }
- case USB_REQ_CDC_SET_CONTROL_LINE_STATE:
- usbdc_xfer(0, NULL, 0, 0);
- if (NULL != cdcdf_acm_notify_state) {
- cdcdf_acm_notify_state(req->wValue);
- }
- return ERR_NONE;
- default:
- return ERR_INVALID_ARG;
- }
-}
-
-/**
- * \brief Process the CDC class get request
- * \param[in] ep Endpoint address.
- * \param[in] req Pointer to the request.
- * \return Operation status.
- */
-static int32_t cdcdf_acm_get_req(uint8_t ep, struct usb_req* req, enum usb_ctrl_stage stage) {
- uint16_t len = req->wLength;
-
- if (USB_DATA_STAGE == stage) {
- return ERR_NONE;
- }
-
- switch (req->bRequest) {
- case USB_REQ_CDC_GET_LINE_CODING:
- if (sizeof(struct usb_cdc_line_coding) != len) {
- return ERR_INVALID_DATA;
- }
- return usbdc_xfer(ep, (uint8_t*)&usbd_cdc_line_coding, len, false);
- default:
- return ERR_INVALID_ARG;
- }
-}
-
-/**
- * \brief Process the CDC class request
- * \param[in] ep Endpoint address.
- * \param[in] req Pointer to the request.
- * \return Operation status.
- */
-static int32_t cdcdf_acm_req(uint8_t ep, struct usb_req* req, enum usb_ctrl_stage stage) {
- if (0x01 != ((req->bmRequestType >> 5) & 0x03)) { // class request
- return ERR_NOT_FOUND;
- }
- if ((req->wIndex == _cdcdf_acm_funcd.func_iface[0]) || (req->wIndex == _cdcdf_acm_funcd.func_iface[1])) {
- if (req->bmRequestType & USB_EP_DIR_IN) {
- return cdcdf_acm_get_req(ep, req, stage);
- } else {
- return cdcdf_acm_set_req(ep, req, stage);
- }
- } else {
- return ERR_NOT_FOUND;
- }
-}
-
-/** USB Device CDC ACM Handler Struct */
-static struct usbdc_handler cdcdf_acm_req_h = {NULL, (FUNC_PTR)cdcdf_acm_req};
-
-/**
- * \brief Initialize the USB CDC ACM Function Driver
- */
-int32_t cdcdf_acm_init(void) {
- if (usbdc_get_state() > USBD_S_POWER) {
- return ERR_DENIED;
- }
-
- _cdcdf_acm.ctrl = cdcdf_acm_ctrl;
- _cdcdf_acm.func_data = &_cdcdf_acm_funcd;
-
- usbdc_register_function(&_cdcdf_acm);
- usbdc_register_handler(USBDC_HDL_REQ, &cdcdf_acm_req_h);
- return ERR_NONE;
-}
-
-/**
- * \brief Deinitialize the USB CDC ACM Function Driver
- */
-void cdcdf_acm_deinit(void) {
- usb_d_ep_deinit(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_COMM_EP_INDEX]);
- usb_d_ep_deinit(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX]);
- usb_d_ep_deinit(_cdcdf_acm_funcd.func_ep_out);
-}
-
-/**
- * \brief USB CDC ACM Function Read Data
- */
-int32_t cdcdf_acm_read(uint8_t* buf, uint32_t size) {
- if (!cdcdf_acm_is_enabled()) {
- return ERR_DENIED;
- }
- return usbdc_xfer(_cdcdf_acm_funcd.func_ep_out, buf, size, false);
-}
-
-/**
- * \brief USB CDC ACM Function Write Data
- */
-int32_t cdcdf_acm_write(uint8_t* buf, uint32_t size) {
- if (!cdcdf_acm_is_enabled()) {
- return ERR_DENIED;
- }
- return usbdc_xfer(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX], buf, size, true);
-}
-
-/**
- * \brief USB CDC ACM Stop the data transfer
- */
-void cdcdf_acm_stop_xfer(void) {
- /* Stop transfer. */
- usb_d_ep_abort(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX]);
- usb_d_ep_abort(_cdcdf_acm_funcd.func_ep_out);
-}
-
-/**
- * \brief USB CDC ACM Function Register Callback
- */
-int32_t cdcdf_acm_register_callback(enum cdcdf_acm_cb_type cb_type, FUNC_PTR func) {
- switch (cb_type) {
- case CDCDF_ACM_CB_READ:
- usb_d_ep_register_callback(_cdcdf_acm_funcd.func_ep_out, USB_D_EP_CB_XFER, func);
- break;
- case CDCDF_ACM_CB_WRITE:
- usb_d_ep_register_callback(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX], USB_D_EP_CB_XFER, func);
- break;
- case CDCDF_ACM_CB_LINE_CODING_C:
- cdcdf_acm_set_line_coding = (cdcdf_acm_set_line_coding_t)func;
- break;
- case CDCDF_ACM_CB_STATE_C:
- cdcdf_acm_notify_state = (cdcdf_acm_notify_state_t)func;
- break;
- default:
- return ERR_INVALID_ARG;
- }
- return ERR_NONE;
-}
-
-/**
- * \brief Check whether CDC ACM Function is enabled
- */
-bool cdcdf_acm_is_enabled(void) { return _cdcdf_acm_funcd.enabled; }
-
-/**
- * \brief Return the CDC ACM line coding structure start address
- */
-const struct usb_cdc_line_coding* cdcdf_acm_get_line_coding(void) { return (const struct usb_cdc_line_coding*)&usbd_cdc_line_coding; }
-
-/**
- * \brief Return version
- */
-uint32_t cdcdf_acm_get_version(void) { return CDCDF_ACM_VERSION; }
diff --git a/.archive/Drivers/example/cdcdf_acm.h b/.archive/Drivers/example/cdcdf_acm.h
deleted file mode 100644
index 6c326ad5b..000000000
--- a/.archive/Drivers/example/cdcdf_acm.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * \file
- *
- * \brief USB Device Stack CDC ACM Function Definition.
- *
- * 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 USBDF_CDC_ACM_SER_H_
-#define USBDF_CDC_ACM_SER_H_
-
-#include "usb_protocol_cdc.h"
-#include "usbdc.h"
-
-/** CDC ACM Class Callback Type */
-enum cdcdf_acm_cb_type { CDCDF_ACM_CB_READ, CDCDF_ACM_CB_WRITE, CDCDF_ACM_CB_LINE_CODING_C, CDCDF_ACM_CB_STATE_C };
-
-/** CDC ACM Notify Line State Callback. */
-typedef void (*cdcdf_acm_notify_state_t)(uint16_t);
-
-/** CDC ACM Set Line Coding Callback. */
-typedef bool (*cdcdf_acm_set_line_coding_t)(struct usb_cdc_line_coding*);
-
-/**
- * \brief Initialize the USB CDC ACM Function Driver
- * \return Operation status.
- */
-int32_t cdcdf_acm_init(void);
-
-/**
- * \brief Deinitialize the USB CDC ACM Function Driver
- * \return Operation status.
- */
-void cdcdf_acm_deinit(void);
-
-/**
- * \brief USB CDC ACM Function Read Data
- * \param[in] buf Pointer to the buffer which receives data
- * \param[in] size the size of data to be received
- * \return Operation status.
- */
-int32_t cdcdf_acm_read(uint8_t* buf, uint32_t size);
-
-/**
- * \brief USB CDC ACM Function Write Data
- * \param[in] buf Pointer to the buffer which stores data
- * \param[in] size the size of data to be sent
- * \return Operation status.
- */
-int32_t cdcdf_acm_write(uint8_t* buf, uint32_t size);
-
-/**
- * \brief USB CDC ACM Stop the current data transfer
- */
-void cdcdf_acm_stop_xfer(void);
-
-/**
- * \brief USB CDC ACM Function Register Callback
- * \param[in] cb_type Callback type of CDC ACM Function
- * \param[in] func Pointer to callback function
- * \return Operation status.
- */
-int32_t cdcdf_acm_register_callback(enum cdcdf_acm_cb_type cb_type, FUNC_PTR func);
-
-/**
- * \brief Check whether CDC ACM Function is enabled
- * \return Operation status.
- * \return true CDC ACM Function is enabled
- * \return false CDC ACM Function is disabled
- */
-bool cdcdf_acm_is_enabled(void);
-
-/**
- * \brief Return the CDC ACM line coding structure start address
- * \return Pointer to USB CDC ACM line coding data.
- */
-const struct usb_cdc_line_coding* cdcdf_acm_get_line_coding(void);
-
-/**
- * \brief Return version
- */
-uint32_t cdcdf_acm_get_version(void);
-
-#endif /* USBDF_CDC_ACM_SER_H_ */
diff --git a/.archive/Drivers/example/cdcdf_acm_desc.h b/.archive/Drivers/example/cdcdf_acm_desc.h
deleted file mode 100644
index de060fc72..000000000
--- a/.archive/Drivers/example/cdcdf_acm_desc.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * \file
- *
- * \brief USB Device Stack CDC ACM Function Descriptor Setting.
- *
- * 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 USBDF_CDC_ACM_DESC_H_
-#define USBDF_CDC_ACM_DESC_H_
-
-#include "usb_protocol.h"
-#include "usb_protocol_cdc.h"
-#include "usbd_config.h"
-
-#define CDCD_ACM_DEV_DESC \
- USB_DEV_DESC_BYTES(CONF_USB_CDCD_ACM_BCDUSB, 0x02, 0x00, 0x00, CONF_USB_CDCD_ACM_BMAXPKSZ0, CONF_USB_CDCD_ACM_IDVENDER, CONF_USB_CDCD_ACM_IDPRODUCT, CONF_USB_CDCD_ACM_BCDDEVICE, \
- CONF_USB_CDCD_ACM_IMANUFACT, CONF_USB_CDCD_ACM_IPRODUCT, CONF_USB_CDCD_ACM_ISERIALNUM, CONF_USB_CDCD_ACM_BNUMCONFIG)
-
-#define CDCD_ACM_DEV_QUAL_DESC USB_DEV_QUAL_DESC_BYTES(CONF_USB_CDCD_ACM_BCDUSB, 0x02, 0x00, 0x00, CONF_USB_CDCD_ACM_BMAXPKSZ0, CONF_USB_CDCD_ACM_BNUMCONFIG)
-
-#define CDCD_ACM_CFG_DESC USB_CONFIG_DESC_BYTES(67, 2, CONF_USB_CDCD_ACM_BCONFIGVAL, CONF_USB_CDCD_ACM_ICONFIG, CONF_USB_CDCD_ACM_BMATTRI, CONF_USB_CDCD_ACM_BMAXPOWER)
-
-#define CDCD_ACM_OTH_SPD_CFG_DESC USB_OTH_SPD_CFG_DESC_BYTES(67, 2, CONF_USB_CDCD_ACM_BCONFIGVAL, CONF_USB_CDCD_ACM_ICONFIG, CONF_USB_CDCD_ACM_BMATTRI, CONF_USB_CDCD_ACM_BMAXPOWER)
-
-#define CDCD_ACM_COMM_IFACE_DESCES \
- USB_IFACE_DESC_BYTES(CONF_USB_CDCD_ACM_COMM_BIFCNUM, CONF_USB_CDCD_ACM_COMM_BALTSET, 1, 0x2, 0x2, 0x0, CONF_USB_CDCD_ACM_COMM_IIFC), USB_CDC_HDR_DESC_BYTES(0x1001), \
- USB_CDC_CALL_MGMT_DESC_BYTES(0x01, 0x00), USB_CDC_ACM_DESC_BYTES(0x02), USB_CDC_UNION_DESC_BYTES(CONF_USB_CDCD_ACM_COMM_BIFCNUM, 0x01), \
- USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_COMM_INT_EPADDR, 3, CONF_USB_CDCD_ACM_COMM_INT_MAXPKSZ, CONF_USB_CDCD_ACM_COMM_INT_INTERVAL)
-
-#define CDCD_ACM_DATA_IFACE_DESCES \
- USB_IFACE_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BIFCNUM, CONF_USB_CDCD_ACM_DATA_BALTSET, 2, 0x0A, 0x0, 0x0, CONF_USB_CDCD_ACM_DATA_IIFC), \
- USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKOUT_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKOUT_MAXPKSZ, 0), \
- USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKIN_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKIN_MAXPKSZ, 0)
-
-#define CDCD_ACM_DATA_IFACE_DESCES_HS \
- USB_IFACE_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BIFCNUM, CONF_USB_CDCD_ACM_DATA_BALTSET, 2, 0x0A, 0x0, 0x0, CONF_USB_CDCD_ACM_DATA_IIFC), \
- USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKOUT_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKOUT_MAXPKSZ_HS, 0), \
- USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKIN_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKIN_MAXPKSZ_HS, 0)
-
-#define CDCD_ACM_STR_DESCES \
- CONF_USB_CDCD_ACM_LANGID_DESC \
- CONF_USB_CDCD_ACM_IMANUFACT_STR_DESC \
- CONF_USB_CDCD_ACM_IPRODUCT_STR_DESC \
- CONF_USB_CDCD_ACM_ISERIALNUM_STR_DESC \
- CONF_USB_CDCD_ACM_ICONFIG_STR_DESC
-
-/** USB Device descriptors and configuration descriptors */
-#define CDCD_ACM_DESCES_LS_FS CDCD_ACM_DEV_DESC, CDCD_ACM_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES, CDCD_ACM_STR_DESCES
-
-#define CDCD_ACM_HS_DESCES_LS_FS \
- CDCD_ACM_DEV_DESC, CDCD_ACM_DEV_QUAL_DESC, CDCD_ACM_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES, CDCD_ACM_OTH_SPD_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, \
- CDCD_ACM_DATA_IFACE_DESCES_HS, CDCD_ACM_STR_DESCES
-
-#define CDCD_ACM_HS_DESCES_HS CDCD_ACM_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES_HS, CDCD_ACM_OTH_SPD_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES
-
-#endif /* USBDF_CDC_ACM_DESC_H_ */
diff --git a/.archive/Drivers/intech/atmel_devices_cdc.cat b/.archive/Drivers/intech/atmel_devices_cdc.cat
deleted file mode 100644
index 09a0673b2..000000000
Binary files a/.archive/Drivers/intech/atmel_devices_cdc.cat and /dev/null differ
diff --git a/.archive/Drivers/intech/atmel_devices_cdc.inf b/.archive/Drivers/intech/atmel_devices_cdc.inf
deleted file mode 100644
index cdbfd08ad..000000000
--- a/.archive/Drivers/intech/atmel_devices_cdc.inf
+++ /dev/null
@@ -1,109 +0,0 @@
-; Windows 2000, XP, Vista, 7 and 8 (x32 and x64) setup file for Atmel CDC Devices
-; Copyright (c) 2000-2013 ATMEL, Inc.
-
-[Version]
-Signature = "$Windows NT$"
-Class = Ports
-ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318}
-
-Provider = %Manufacturer%
-LayoutFile = layout.inf
-CatalogFile = atmel_devices_cdc.cat
-DriverVer = 01/08/2013,6.0.0.0
-
-;----------------------------------------------------------
-; Targets
-;----------------------------------------------------------
-[Manufacturer]
-%Manufacturer%=DeviceList, NTAMD64, NTIA64, NT
-
-[DeviceList]
-
-%INTECH_STUDIO_GRID%=DriverInstall, USB\VID_03EB&PID_ECAD&MI_00
-
-[DeviceList.NTAMD64]
-
-%INTECH_STUDIO_GRID%=DriverInstall.NTamd64, USB\VID_03EB&PID_ECAD&MI_00
-
-
-[DeviceList.NTIA64]
-
-%INTECH_STUDIO_GRID%=DriverInstall.NTamd64, USB\VID_03EB&PID_ECAD&MI_00
-
-
-[DeviceList.NT]
-
-%INTECH_STUDIO_GRID%=DriverInstall.NT, USB\VID_03EB&PID_ECAD&MI_00
-
-
-;----------------------------------------------------------
-; Windows 2000, XP, Vista, Windows 7, Windows 8 - 32bit
-;----------------------------------------------------------
-[Reader_Install.NTx86]
-
-
-[DestinationDirs]
-DefaultDestDir=12
-DriverInstall.NT.Copy=12
-
-[DriverInstall.NT]
-include=mdmcpq.inf
-CopyFiles=DriverInstall.NT.Copy
-AddReg=DriverInstall.NT.AddReg
-
-[DriverInstall.NT.Copy]
-usbser.sys
-
-[DriverInstall.NT.AddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,usbser.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.NT.Services]
-AddService = usbser, 0x00000002, DriverService.NT
-
-[DriverService.NT]
-DisplayName = %Serial.SvcDesc%
-ServiceType = 1 ; SERVICE_KERNEL_DRIVER
-StartType = 3 ; SERVICE_DEMAND_START
-ErrorControl = 1 ; SERVICE_ERROR_NORMAL
-ServiceBinary = %12%\usbser.sys
-LoadOrderGroup = Base
-
-;----------------------------------------------------------
-; Windows XP, Vista, Windows 7, Windows 8 - 64bit
-;----------------------------------------------------------
-
-[DriverInstall.NTamd64]
-include=mdmcpq.inf
-CopyFiles=DriverCopyFiles.NTamd64
-AddReg=DriverInstall.NTamd64.AddReg
-
-[DriverCopyFiles.NTamd64]
-usbser.sys,,,0x20
-
-[DriverInstall.NTamd64.AddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,usbser.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.NTamd64.Services]
-AddService=usbser, 0x00000002, DriverService.NTamd64
-
-[DriverService.NTamd64]
-DisplayName=%Serial.SvcDesc%
-ServiceType=1
-StartType=3
-ErrorControl=1
-ServiceBinary=%12%\usbser.sys
-
-;----------------------------------------------------------
-; String
-;----------------------------------------------------------
-
-[Strings]
-Manufacturer = "Intech Studio ltd."
-INTECH_STUDIO_GRID = "Intech Studio: Grid (COM)"
-
-
-Serial.SvcDesc = "USB Serial emulation driver"
diff --git a/.archive/production_programming.zip b/.archive/production_programming.zip
deleted file mode 100644
index a73840252..000000000
Binary files a/.archive/production_programming.zip and /dev/null differ
diff --git a/.archive/sdebugger.zip b/.archive/sdebugger.zip
deleted file mode 100644
index 19878595b..000000000
Binary files a/.archive/sdebugger.zip and /dev/null differ
diff --git a/.github/actions/prepare-image/action.yml b/.github/actions/prepare-image/action.yml
new file mode 100644
index 000000000..82744aef2
--- /dev/null
+++ b/.github/actions/prepare-image/action.yml
@@ -0,0 +1,44 @@
+name: Prepare image
+
+inputs:
+ image-name:
+ description: Image name
+ required: true
+ type: string
+ dockerfile:
+ description: Path to the Dockerfile
+ required: true
+ type: string
+
+runs:
+ using: composite
+ steps:
+
+ - name: Log in to GHCR
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Pull or rebuild image
+ env:
+ image: ghcr.io/${{ github.repository_owner }}/${{ inputs.image-name }}:latest
+ label: org.opencontainers.image.revision
+ shell: bash
+ run: |
+ REBUILD=true
+ if docker pull ${{ env.image }} ; then
+ SHA=$(docker inspect ${{ env.image }} --format '{{ index .Config.Labels "${{ env.label }}" }}')
+ git fetch origin "$SHA"
+ git diff $SHA ${{ github.sha }} -- ${{ inputs.dockerfile }}
+ if [ -z "$(git diff $SHA ${{ github.sha }} -- ${{ inputs.dockerfile }})" ] ; then
+ REBUILD=false
+ fi
+ fi
+ if [ "$REBUILD" = "true" ] ; then
+ docker build --label ${{ env.label }}=${{ github.sha }} -t ${{ env.image }} .
+ if [ "${{ github.ref_name }}" = "main" ] || [ "${{ github.ref_name }}" = "master" ] ; then
+ docker push ${{ env.image }}
+ fi
+ fi
diff --git a/.github/workflows/build-and-push-firmware.yml b/.github/workflows/build-and-push-firmware.yml
new file mode 100644
index 000000000..9048b26da
--- /dev/null
+++ b/.github/workflows/build-and-push-firmware.yml
@@ -0,0 +1,79 @@
+name: Build and push firmware
+
+on:
+ workflow_call:
+ outputs:
+ timestamp:
+ description: "Build date timestamp"
+ value: ${{ jobs.build-and-push.outputs.timestamp }}
+
+jobs:
+ build-and-push:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ env:
+ image: ghcr.io/${{ github.repository }}:latest
+ d51-path: d51n20a
+ esp-path: esp32s3
+ outputs:
+ timestamp: ${{ steps.set_out.outputs.timestamp }}
+ steps:
+
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ github.ref }}
+
+ - name: Prepare image
+ uses: ./.github/actions/prepare-image
+ with:
+ image-name: "grid-fw"
+ dockerfile: "Dockerfile"
+
+ - name: Build ESP32 firmware
+ run: |
+ docker run -v $PWD:/project -w /project ${{ env.image }} \
+ sh -c "./lua_build.sh && ./pico_build.sh && ./esp_build.sh"
+
+ - name: Build D51 firmware
+ run: |
+ docker run -v $PWD:/project -w /project ${{ env.image }} \
+ sh -c "./lua_build.sh && ./d51_build.sh"
+
+ - name: Set environment variables
+ run: echo "ACTION_DATE=$(date +'%Y-%m-%d-%H%M')" >> $GITHUB_ENV
+
+ - name: Set output variables
+ id: set_out
+ run: echo "timestamp=$(date +'%Y-%m-%d-%H%M')" >> $GITHUB_OUTPUT
+
+ - name: Copy and rename artifacts
+ run: |
+ cp ${{ env.esp-path }}/build/grid_fw.uf2 grid_esp32_release_${{ env.ACTION_DATE }}.uf2
+ cp ${{ env.esp-path }}/build/grid_fw.uf2 grid_esp32_nightly_${{ env.ACTION_DATE }}.uf2
+ cp ${{ env.esp-path }}/build/grid_fw.uf2 grid_esp32_nightly.uf2
+ cp ${{ env.d51-path }}/gcc/grid_fw.uf2 grid_d51_release_${{ env.ACTION_DATE }}.uf2
+ cp ${{ env.d51-path }}/gcc/grid_fw.uf2 grid_d51_nightly_${{ env.ACTION_DATE }}.uf2
+ cp ${{ env.d51-path }}/gcc/grid_fw.uf2 grid_d51_nightly.uf2
+ cp .github/workflows/INSTRUCTIONS.txt INSTRUCTIONS.txt
+
+ - name: Upload nightly artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: nightly_firmware
+ path: |
+ grid_esp32_nightly_${{ env.ACTION_DATE }}.uf2
+ grid_esp32_nightly.uf2
+ grid_d51_nightly_${{ env.ACTION_DATE }}.uf2
+ grid_d51_nightly.uf2
+
+ - name: Upload release artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: release_firmware
+ path: |
+ grid_esp32_release_${{ env.ACTION_DATE }}.uf2
+ grid_d51_release_${{ env.ACTION_DATE }}.uf2
+ INSTRUCTIONS.txt
diff --git a/.github/workflows/build-and-run-unit-tests.yml b/.github/workflows/build-and-run-unit-tests.yml
new file mode 100644
index 000000000..dba6eaf15
--- /dev/null
+++ b/.github/workflows/build-and-run-unit-tests.yml
@@ -0,0 +1,23 @@
+name: Build and run unit tests
+
+on:
+ workflow_call:
+
+jobs:
+ unit-testing:
+ runs-on: ubuntu-latest
+ steps:
+
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ github.ref }}
+
+ - name: Clang setup
+ uses: egor-tensin/setup-clang@v1
+ with:
+ version: latest
+ platform: x64
+
+ - name: Run unit tests
+ run: ./lua_build.sh && ./test.sh
diff --git a/.github/workflows/diagram.yml b/.github/workflows/diagram.yml
deleted file mode 100644
index 5ef516231..000000000
--- a/.github/workflows/diagram.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: Create diagram
-on:
- workflow_dispatch: {}
- push:
- branches:
- - main
-jobs:
- get_data:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@master
- - name: Update diagram
- uses: githubocto/repo-visualizer@main
- with:
- excluded_paths: "ignore,.github"
diff --git a/.github/workflows/documentation_validator.sh b/.github/workflows/documentation_validator.sh
deleted file mode 100644
index 70972e17e..000000000
--- a/.github/workflows/documentation_validator.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-# List all of the Grid LUA API function in text.txt
-touch "test.txt"
-grep -i "GRID_LUA_FNC_.*_human" "./grid-protocol/src/grid_protocol_bot.json" > test.txt
-
-# Regexpr to only keep the human readable fnc names
-sed -r -i 's/ *".*"://g' test.txt
-sed -r -i 's/ "//g' test.txt
-sed -r -i 's/",//g' test.txt
-
-# Search function in documentation
-file=$(cat test.txt)
-
-pass=0
-fail=0
-
-for line in $file
-do
-
- if ls | grep -q -ir "$line" "./grid-documentation"; then pass=$((pass+1)); else fail=$((fail+1)); fi
-
-done
-
-echo -n "Coverage: $((100*$pass/($pass+$fail)))% ($pass Passed, $fail Failed)\\n"
-
-for line in $file
-do
-
- if ls | grep -q -ir "$line" "./grid-documentation"; then pass=0; else echo -n "Missing: $line\\n"; fi
-
-done
diff --git a/.github/workflows/firmware_build_only.yml b/.github/workflows/firmware_build_only.yml
deleted file mode 100644
index 34b440a16..000000000
--- a/.github/workflows/firmware_build_only.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-name: "Firmware Build and Test"
-
-on:
- workflow_call:
- outputs:
- artifact_name:
- description: "Name of the uploaded nightly artifact"
- value: ${{ jobs.build.outputs.artifact_name }}
- release_artifact_name:
- description: "Name of the uploaded release artifact"
- value: ${{ jobs.build.outputs.release_artifact_name }}
- action_date:
- description: "Build date timestamp"
- value: ${{ jobs.build.outputs.action_date }}
- release_version:
- description: "Git tag version if exists"
- value: ${{ jobs.build.outputs.release_version }}
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: ubuntu-latest
- outputs:
- artifact_name: nightly_firmware
- release_artifact_name: release_firmware
- action_date: ${{ steps.set_env.outputs.action_date }}
- release_version: ${{ steps.set_env.outputs.release_version }}
- steps:
- - name: Checkout repo and submodules
- uses: actions/checkout@v2
- with:
- ref: ${{ github.ref }}
-
- - name: Build Docker image containing both IDF and PICOSDK
- run: docker build -t my-image .
-
- - name: Run script in Docker container
- run: docker run -v $PWD:/project -w /project/ my-image sh -c "arm-none-eabi-gcc -v && ./lua_build.sh && ./d51_build_firmware.sh"
-
- - name: Run script in Docker container
- run: docker run -v $PWD:/project -w /project/ my-image sh -c "./lua_build.sh && ./pico_build_firmware.sh && ./esp_build_firmware.sh && ./gui_build.sh"
-
- - name: Set env
- id: set_env
- shell: bash
- run: |
- ACTION_DATE=$(date +'%Y-%m-%d-%H%M')
- RELEASE_VERSION=$(git tag --contains ${{ github.sha }})
- echo "ACTION_DATE=$ACTION_DATE" >> $GITHUB_ENV
- echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV
- echo "action_date=$ACTION_DATE" >> $GITHUB_OUTPUT
- echo "release_version=$RELEASE_VERSION" >> $GITHUB_OUTPUT
-
- - name: Copy and rename the artifacts
- run: |
- ls
- cp grid_esp/build/grid_fw.bin grid_fw.bin
- cp binary/grid_release.uf2 grid_d51_release_${{ env.ACTION_DATE }}.uf2
- cp binary/grid_fw.uf2 grid_esp32_release_${{ env.ACTION_DATE }}.uf2
- cp binary/grid_release.uf2 grid_d51_nightly_${{ env.ACTION_DATE }}.uf2
- cp binary/grid_release.uf2 grid_d51_nightly.uf2
- cp binary/grid_fw.uf2 grid_esp32_nightly_${{ env.ACTION_DATE }}.uf2
- cp binary/grid_fw.uf2 grid_esp32_nightly.uf2
- cp .github/workflows/INSTRUCTIONS.txt INSTRUCTIONS__USE_D51_VERSION_IF_UNSURE.txt
- cp grid_gui/build/index.html index.html
- cp grid_gui/build/index.js index.js
- cp grid_gui/build/index.wasm index.wasm
-
- - name: Upload nightly artifacts
- uses: actions/upload-artifact@v4
- with:
- name: nightly_firmware
- path: |
- grid_esp32_nightly_${{ env.ACTION_DATE }}.uf2
- grid_d51_nightly_${{ env.ACTION_DATE }}.uf2
- grid_esp32_nightly.uf2
- grid_d51_nightly.uf2
- grid_fw.bin
- index.html
- index.js
- index.wasm
-
- - name: Upload release artifacts
- uses: actions/upload-artifact@v4
- with:
- name: release_firmware
- path: |
- grid_d51_release_${{ env.ACTION_DATE }}.uf2
- grid_esp32_release_${{ env.ACTION_DATE }}.uf2
- INSTRUCTIONS__USE_D51_VERSION_IF_UNSURE.txt
diff --git a/.github/workflows/firmware_release_nightly.yml b/.github/workflows/firmware_release_nightly.yml
deleted file mode 100644
index e1f52ef7f..000000000
--- a/.github/workflows/firmware_release_nightly.yml
+++ /dev/null
@@ -1,113 +0,0 @@
-name: "Firmware Nightly Release"
-
-on:
- workflow_call:
- inputs:
- product_name:
- description: "Product name for release naming"
- required: true
- type: string
- workflow_dispatch:
- inputs:
- product_name:
- description: "Product name for release naming"
- required: true
- type: string
-
-jobs:
- publish-nightly-release:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v3
- with:
- fetch-tags: true
- fetch-depth: 0
-
- - name: Generate tag name
- id: get_version
- run: |
- tag_name="nightly"
- echo "Tag name: $tag_name"
- echo "tag_name=$tag_name" >> $GITHUB_OUTPUT
-
- - name: Delete all releases by name
- id: delete_releases_by_name
- run: |
- release_name="Nightly Firmware" # Replace with the release name you want to delete
- echo "Deleting all releases with the name: $release_name"
-
- # Fetch all releases
- releases=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
- "https://api.github.com/repos/${{ github.repository }}/releases")
-
- # Find and delete all releases matching the given name
- echo "$releases" | jq -c --arg release_name "$release_name" '.[] | select(.name == $release_name) | .id' | while read release_id; do
- echo "Deleting release with ID: $release_id"
-
- # Delete the release by ID
- curl -s -X DELETE -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
- "https://api.github.com/repos/${{ github.repository }}/releases/$release_id"
-
- echo "Deleted release with ID: $release_id"
- done
-
- - name: Remove Nightly Tags
- run: |
- # Configure Git
- echo "Configuring Git..."
- git config --global user.name "github-actions[bot]"
- git config --global user.email "github-actions[bot]@users.noreply.github.com"
-
- # Get all tags containing "nightly"
- echo "Retrieving all tags containing 'nightly'..."
- nightly_tags=$(git tag -l "*nightly")
- echo "Nightly tags found: $nightly_tags"
-
- # Loop through each nightly tag and delete it locally and remotely
- if [ -z "$nightly_tags" ]; then
- echo "No nightly tags found. Exiting..."
- else
- for tag in $nightly_tags; do
- echo "Deleting tag: $tag"
- git tag -d "$tag" # Delete tag locally
- git push origin ":refs/tags/$tag"
- done
- fi
- echo "Tag deletion process completed."
-
- - name: Download nightly artifacts
- uses: actions/download-artifact@v4
- with:
- name: nightly_firmware
- path: build/
-
- - name: Remove duplicate file (the one that does not have date in the name)
- run: |
- rm build/*nightly.uf2
-
- - name: Zip nightly artifacts
- uses: vimtor/action-zip@v1
- with:
- files: build/
- dest: ${{ inputs.product_name }}_nightly.zip
-
- - name: Build Changelog
- id: github_release
- uses: mikepenz/release-changelog-builder-action@v5
- with:
- toTag: ${{ github.ref }}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Release Nightly
- uses: softprops/action-gh-release@v1
- with:
- name: Nightly Firmware
- tag_name: ${{ steps.get_version.outputs.tag_name }}
- files: ${{ inputs.product_name }}_nightly.zip
- draft: false
- prerelease: true
- body: ${{steps.github_release.outputs.changelog}}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/firmware_workflow.yml b/.github/workflows/firmware_workflow.yml
deleted file mode 100644
index 69ffa26e3..000000000
--- a/.github/workflows/firmware_workflow.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: "Firmware Workflow"
-
-on:
- workflow_dispatch:
- push:
-
-permissions:
- contents: write
- pages: write
- id-token: write
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- build:
- name: Build Firmware
- uses: ./.github/workflows/firmware_build_only.yml
-
- publish-production:
- name: Publish Production Release
- if: needs.build.outputs.release_version != ''
- needs: build
- uses: ./.github/workflows/firmware_release_production.yml
- with:
- product_name: "grid"
- release_version: ${{ needs.build.outputs.release_version }}
- action_date: ${{ needs.build.outputs.action_date }}
- secrets: inherit
-
- publish-nightly:
- name: Publish Nightly Release
- # Run on master branch OR when a tag exists to ensure nightly is never behind production releases
- if: github.ref == 'refs/heads/master' || needs.build.outputs.release_version != ''
- needs: build
- uses: ./.github/workflows/firmware_release_nightly.yml
- with:
- product_name: "grid"
- secrets: inherit
-
- deploy-simulator:
- name: Deploy Simulator to GitHub Pages
- if: github.ref == 'refs/heads/master'
- needs: build
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
- runs-on: ubuntu-latest
- steps:
- - name: Setup Pages
- uses: actions/configure-pages@v4
- - name: Download reports' artifacts
- uses: actions/download-artifact@v4
- with:
- path: download
-
- - name: Collecting files
- run: |
- cd download
- ls
-
- - name: Upload artifact
- uses: actions/upload-pages-artifact@v3
- with:
- path: './download/nightly_firmware/'
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v4
diff --git a/.github/workflows/host_based_tests.yml b/.github/workflows/host_based_tests.yml
deleted file mode 100644
index 41e3a12a4..000000000
--- a/.github/workflows/host_based_tests.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: Host Based Testing
-
-on:
- push:
-
-jobs:
- # First Job: Unit Tests
- unit_tests:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Set up Clang
- uses: egor-tensin/setup-clang@v1
- with:
- version: latest
- platform: x64
-
- - name: Run host based tests
- run: |
- ./lua_build.sh && ./host_test.sh
-
- # Second Job: Fuzzing
- fuzzing:
- runs-on: ubuntu-latest
- needs: unit_tests # This ensures that fuzzing runs only after unit_tests completes successfully
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Set up Clang
- uses: egor-tensin/setup-clang@v1
- with:
- version: latest
- platform: x64
-
- - name: Build and run fuzz test
- run: |
- ./host_fuzz.sh
-
- - uses: actions/upload-artifact@v4
- if: always()
- with:
- name: Fuzzing Binary
- path: |
- fuzzer_test
- input.bin
diff --git a/.github/workflows/idf-repository-package-update.yml b/.github/workflows/idf-repository-package-update.yml
new file mode 100644
index 000000000..e914b63f4
--- /dev/null
+++ b/.github/workflows/idf-repository-package-update.yml
@@ -0,0 +1,46 @@
+name: Push components to espressif registry
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - master
+ - main
+ paths:
+ - 'common/src/**'
+ - 'esp32s3/components/**'
+ - '.github/workflows/idf-repository-package-update.yml'
+
+jobs:
+ upload_components:
+ runs-on: ubuntu-latest
+ env:
+ esp-path: esp32s3
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Set Date
+ run: echo "action_date=$(date +v%Y.%-m.%-d%H%M)" >> $GITHUB_ENV
+
+ - name: Check Date
+ run: echo ${{ env.action_date }}
+
+ - name: Convert native lua sources to C headers
+ run: ./lua_build.sh
+
+ - name: Replace symbolic link in grid_common with a recursive copy
+ run: |
+ rm ${{ env.esp-path }}/components/grid_common/common
+ cp -r common ${{ env.esp-path }}/components/grid_common
+
+ - name: Upload components to the component registry
+ uses: espressif/upload-components-ci-action@v2
+ with:
+ components: |
+ grid_common:${{ env.esp-path }}/components/grid_common
+ grid_esp32_led:${{ env.esp-path }}/components/grid_esp32_led
+ grid_esp32_nvm:${{ env.esp-path }}/components/grid_esp32_nvm
+ grid_esp32_littlefs:${{ env.esp-path }}/components/grid_esp32_littlefs
+ namespace: "sukuwc"
+ version: ${{ env.action_date }}
+ api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }}
diff --git a/.github/workflows/idf_repository_package_update.yml b/.github/workflows/idf_repository_package_update.yml
deleted file mode 100644
index 19d2e6f37..000000000
--- a/.github/workflows/idf_repository_package_update.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-name: Push components to https://components.espressif.com
-on:
- workflow_dispatch:
- push:
- branches:
- - master
- paths:
- - 'grid_common/**'
- - 'grid_esp/components/**'
- - '.github/workflows/idf_repository_package_update.yml'
-jobs:
- upload_components:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Set Date
- run: echo "action_date=$(date +v%Y.%-m.%-d%H%M)" >> $GITHUB_ENV
-
- - name: Check Date
- run: echo ${{ env.action_date }}
-
- - name: Convert native lua source to C header
- run: ./lua_build.sh
-
- - name: Upload components to the component registry
- uses: espressif/upload-components-ci-action@v1
- with:
- directories: "grid_common"
- namespace: "sukuwc"
- name: "grid_common"
- version: ${{ env.action_date }}
- api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }}
-
- - name: Upload components to the component registry
- uses: espressif/upload-components-ci-action@v1
- with:
- directories: "grid_esp/components/grid_esp32_led"
- namespace: "sukuwc"
- name: "grid_esp32_led"
- version: ${{ env.action_date }}
- api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }}
-
- - name: Upload components to the component registry
- uses: espressif/upload-components-ci-action@v1
- with:
- directories: "grid_esp/components/grid_esp32_nvm"
- namespace: "sukuwc"
- name: "grid_esp32_nvm"
- version: ${{ env.action_date }}
- api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }}
-
- - name: Upload components to the component registry
- uses: espressif/upload-components-ci-action@v1
- with:
- directories: "grid_esp/components/grid_esp32_littlefs"
- namespace: "sukuwc"
- name: "grid_esp32_littlefs"
- version: ${{ env.action_date }}
- api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }}
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index f24457b50..9b8ae2c92 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -5,21 +5,17 @@ on:
push:
pull_request:
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Checkout code
- uses: actions/checkout@v3
+ uses: actions/checkout@v6
- name: Run pre-commit
- uses: pre-commit/action@v3.0.0
+ uses: pre-commit/action@v3.0.1
diff --git a/.github/workflows/protocol-converter.yml b/.github/workflows/protocol-converter.yml
new file mode 100644
index 000000000..f729a1ad7
--- /dev/null
+++ b/.github/workflows/protocol-converter.yml
@@ -0,0 +1,62 @@
+name: Protocol converter
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - master
+ - main
+ paths:
+ - 'common/src/c/grid_protocol.h'
+ - 'common/src/c/grid_ui_system.h'
+ - 'common/src/c/grid_ui_button.h'
+ - 'common/src/c/grid_ui_encoder.h'
+ - 'common/src/c/grid_ui_endless.h'
+ - 'common/src/c/grid_ui_potmeter.h'
+ - 'common/src/c/grid_ui_lcd.h'
+ - 'common/src/c/lua_source_collection.h'
+ - '.github/workflows/protocol-converter.yml'
+ - '.github/workflows/protocol_converter.py'
+ - '.github/workflows/documentation_validator.sh'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ env:
+ protocol-repo: intechstudio/grid-protocol.git
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Clone protocol repository
+ run: git clone https://github.com/${{ env.protocol-repo }}
+
+ - name: Setup python
+ uses: actions/setup-python@v6
+
+ - name: Run protocol converter
+ run: "python ./.github/workflows/protocol_converter.py \
+ ./common/src/c/grid_protocol.h,\
+ ./common/src/c/grid_ui_system.h,\
+ ./common/src/c/grid_ui_button.h,\
+ ./common/src/c/grid_ui_encoder.h,\
+ ./common/src/c/grid_ui_endless.h,\
+ ./common/src/c/grid_ui_potmeter.h,\
+ ./common/src/c/grid_ui_lcd.h,\
+ ./common/src/c/lua_source_collection.h \
+ grid-protocol/src/grid_protocol_bot.json \
+ grid-protocol/grid-protocol/lists.py"
+
+ - name: Push file to protocol repository
+ run: |
+ cd grid-protocol
+ cat -v src/grid_protocol_bot.json
+ if [ -n "$(git status --porcelain)" ] ; then
+ git add --all
+ git config --global user.email "bot@intech.studio"
+ git config --global user.name "Intech Bot"
+ git commit -m "BOT protocol file synced from grid-fw repo"
+ git remote set-url origin \
+ https://${{ secrets.PERSONALACCESSTOKEN }}@github.com/${{ env.protocol-repo }}
+ git push
+ fi
diff --git a/.github/workflows/protocol_converter.yml b/.github/workflows/protocol_converter.yml
deleted file mode 100644
index d110b41cb..000000000
--- a/.github/workflows/protocol_converter.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-# This is a basic workflow that is manually triggered
-
-name: Protocol converter workflow
-
-# Controls when the action will run. Workflow runs when manually triggered using the UI
-# or API.
-on:
- workflow_dispatch:
- push:
- paths:
- - 'grid_common/grid_protocol.h'
- - 'grid_common/grid_ui_system.h'
- - 'grid_common/grid_ui_button.h'
- - 'grid_common/grid_ui_encoder.h'
- - 'grid_common/grid_ui_endless.h'
- - 'grid_common/grid_ui_potmeter.h'
- - 'grid_common/grid_ui_lcd.h'
- - 'grid_common/lua_src/lua_source_collection.h'
- - '.github/workflows/protocol_converter.yml'
- - '.github/workflows/protocol_converter.py'
- - '.github/workflows/documentation_validator.sh'
-
-# A workflow run is made up of one or more jobs that can run sequentially or in parallel
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Checkout repository
- run: |
- git --version
- git config --global user.email "bot@intech.studio"
- git config --global user.name "Intech Bot"
- git clone https://${{ secrets.PERSONALACCESSTOKEN }}@github.com/intechstudio/grid-protocol.git
- ls
-
- - uses: actions/setup-python@v2
- - name: Setup python
- run: |
- python ./.github/workflows/protocol_converter.py ./grid_common/grid_protocol.h,./grid_common/lua_src/lua_source_collection.h,./grid_common/grid_ui_system.h,./grid_common/grid_ui_button.h,./grid_common/grid_ui_encoder.h,./grid_common/grid_ui_endless.h,./grid_common/grid_ui_potmeter.h,./grid_common/grid_ui_lcd.h grid-protocol/src/grid_protocol_bot.json grid-protocol/grid-protocol/lists.py
-
- - name: Check file
- if: github.ref == 'refs/heads/master'
- run: |
- cd grid-protocol
- cat -v src/grid_protocol_bot.json
- if [[ `git status --porcelain` ]]; then
- git add -A
- git commit -m "BOT protocol file synced from grid-fw repo"
- git push
- fi
-
- - name: Clone documentation
- if: github.ref == 'refs/heads/master'
- run: |
- git clone https://github.com/intechstudio/grid-documentation.git
- sh ./.github/workflows/documentation_validator.sh >> report.txt
- cat report.txt
diff --git a/.github/workflows/publish-firmware.yml b/.github/workflows/publish-firmware.yml
new file mode 100644
index 000000000..fbf834b35
--- /dev/null
+++ b/.github/workflows/publish-firmware.yml
@@ -0,0 +1,39 @@
+name: Publish firmware
+
+on:
+ push:
+ workflow_dispatch:
+
+permissions:
+ contents: write
+ packages: write
+
+jobs:
+ build-firmware:
+ name: Build firmware
+ uses: ./.github/workflows/build-and-push-firmware.yml
+
+ publish-stable:
+ name: Publish stable release
+ needs: build-firmware
+ if: github.ref_type == 'tag'
+ uses: ./.github/workflows/publish-stable-firmware.yml
+ with:
+ product_name: "grid"
+ version_tag: ${{ github.ref_name }}
+ timestamp: ${{ needs.build-firmware.outputs.timestamp }}
+ secrets: inherit
+
+ publish-nightly:
+ name: Publish nightly release
+ needs: build-firmware
+ # Also run when the ref is a tag so nightly does not lag stable
+ if: github.ref_name == 'main' || github.ref_name == 'master' || github.ref_type == 'tag'
+ uses: ./.github/workflows/publish-nightly-firmware.yml
+ with:
+ product_name: "grid"
+ secrets: inherit
+
+ unit-testing:
+ name: Build and run unit tests
+ uses: ./.github/workflows/build-and-run-unit-tests.yml
diff --git a/.github/workflows/publish-nightly-firmware.yml b/.github/workflows/publish-nightly-firmware.yml
new file mode 100644
index 000000000..ee868c8c8
--- /dev/null
+++ b/.github/workflows/publish-nightly-firmware.yml
@@ -0,0 +1,54 @@
+name: Publish nightly release
+
+on:
+ workflow_call:
+ inputs:
+ product_name:
+ description: "Product name for release naming"
+ required: true
+ type: string
+ workflow_dispatch:
+ inputs:
+ product_name:
+ description: "Product name for release naming"
+ required: true
+ type: string
+
+jobs:
+ publish-stable:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Download nightly artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: nightly_firmware
+ path: nightly/
+
+ - name: Remove duplicate binary (the one without a timestamp)
+ run: rm nightly/*nightly.uf2
+
+ - name: Zip artifacts for github release
+ uses: vimtor/action-zip@v1
+ with:
+ files: nightly/
+ dest: ${{ inputs.product_name }}_nightly.zip
+
+ - name: Build changelog
+ id: release_changelog
+ uses: mikepenz/release-changelog-builder-action@v5
+ with:
+ toTag: ${{ github.ref }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Update nightly release
+ uses: softprops/action-gh-release@v1
+ with:
+ name: ${{ inputs.product_name }} nightly
+ tag_name: nightly
+ files: ${{ inputs.product_name }}_nightly.zip
+ draft: false
+ prerelease: true
+ body: ${{steps.github_release.outputs.changelog}}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/firmware_release_production.yml b/.github/workflows/publish-stable-firmware.yml
similarity index 75%
rename from .github/workflows/firmware_release_production.yml
rename to .github/workflows/publish-stable-firmware.yml
index b957595e0..2e99ec8f6 100644
--- a/.github/workflows/firmware_release_production.yml
+++ b/.github/workflows/publish-stable-firmware.yml
@@ -1,4 +1,4 @@
-name: "Firmware Production Release"
+name: Publish stable release
on:
workflow_call:
@@ -7,11 +7,11 @@ on:
description: "Product name for release naming"
required: true
type: string
- release_version:
+ version_tag:
description: "Git tag version for the release"
required: true
type: string
- action_date:
+ timestamp:
description: "Build date timestamp"
required: true
type: string
@@ -21,17 +21,17 @@ on:
description: "Product name for release naming"
required: true
type: string
- release_version:
+ version_tag:
description: "Git tag version for the release"
required: true
type: string
- action_date:
+ timestamp:
description: "Build date timestamp"
required: true
type: string
jobs:
- create-production-release:
+ publish-stable:
runs-on: ubuntu-latest
steps:
- name: Download release artifacts
@@ -40,17 +40,17 @@ jobs:
name: release_firmware
path: release/
- - name: Zip artifacts for Github Release
+ - name: Zip artifacts for github release
uses: vimtor/action-zip@v1
with:
files: release/
dest: ${{ inputs.product_name }}_release.zip
- - name: Create Production Release
+ - name: Create stable release
uses: softprops/action-gh-release@v1
with:
- tag_name: ${{ inputs.release_version }}
- name: ${{ inputs.product_name }} ${{ inputs.release_version }} (${{ inputs.action_date }})
+ tag_name: ${{ inputs.version_tag }}
+ name: ${{ inputs.product_name }} ${{ inputs.version_tag }} (${{ inputs.timestamp }})
files: ${{ inputs.product_name }}_release.zip
draft: true
env:
diff --git a/.gitignore b/.gitignore
index 70f356933..6b846ca36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,63 @@
-binary
-grid_esp/dependencies.lock
-lists.py
-out.json
-iperf
-vmp/build
-tags
-
-# Ignore vim files:
+# block everything by default
+*
+
+# ignore vim files
*~
*.swp
*.swo
-# Ignore compiler dependency files:
+# ignore dependency files
*.d
+
+!.archive
+!.archive/**
+
+!.github
+!.github/workflows
+!.github/workflows/*.yml
+!.github/workflows/*.py
+!.github/workflows/INSTRUCTIONS.txt
+!.github/actions
+!.github/actions/prepare-image
+!.github/actions/prepare-image/action.yml
+
+!.clang-format
+!.codespellrc
+!.gitignore
+!.pre-commit-config.yaml
+
+!common
+!d51n20a
+!d51n20a/**
+!esp32s3
+!grid_gui
+!rp2040
+!test
+!tools
+
+!d51_build.sh
+!docker_clean.sh
+!docker_build.sh
+!docker_start.sh
+!Dockerfile
+!esp_build.sh
+!esp_burn_bootloader.sh
+!esp_debug.sh
+!esp_flash.sh
+!esp_monitor.sh
+!exclude-file.txt
+!gui_build.sh
+!gui_server.py
+!gui_start.sh
+!host_test.sh
+!ignore-words.txt
+!LICENSE
+!lua_build.sh
+!merged_stream.sh
+!patch_esp_efuse_startup.sh
+!patch_esp_trace_include.sh
+!pico_build.sh
+!pre_commit.sh
+!README.md
+!stylua.toml
+!test.sh
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 33e31c805..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,6 +0,0 @@
-[submodule "grid_pico/pico-sdk"]
- path = grid_pico/pico-sdk
- url = https://github.com/raspberrypi/pico-sdk
-[submodule "grid_esp/esp-idf"]
- path = grid_esp/esp-idf
- url = https://github.com/espressif/esp-idf.git
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index c7b6718be..5d09f3cd6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,77 +1,42 @@
-# SPDX-FileCopyrightText: 2020 Diego Elio Pettenò
-#
-# SPDX-License-Identifier: Unlicense
+exclude: |
+ (?x)^(
+ common/dep/|
+ d51n20a/armcc/|
+ d51n20a/CMSIS/|
+ d51n20a/config/|
+ d51n20a/examples/|
+ d51n20a/gcc/|
+ d51n20a/hal/|
+ d51n20a/hpl/|
+ d51n20a/hri/|
+ d51n20a/samd51a/|
+ d51n20a/stdio_redirect/|
+ d51n20a/thirdparty/|
+ d51n20a/usb/|
+ esp32s3/bootloader/|
+ tools/
+ )
repos:
-- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.4.0
- hooks:
- - id: check-yaml
- - id: trailing-whitespace
- exclude: |
- (?x)^(
- grid_common/lua-5.4.3/|
- grid_esp/bootloader/|
- grid_make/thirdparty/|
- grid_make/samd51a/|
- grid_make/hal/|
- grid_make/hpl/|
- grid_make/hri/|
- grid_make/stdio_redirect/|
- grid_make/CMSIS/
- )
- - id: end-of-file-fixer
- exclude: |
- (?x)^(
- grid_common/lua-5.4.3/|
- grid_esp/bootloader/|
- grid_make/thirdparty/|
- grid_make/samd51a/|
- grid_make/hal/|
- grid_make/hpl/|
- grid_make/hri/|
- grid_make/stdio_redirect/|
- grid_make/CMSIS/
- )
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v6.0.0
+ hooks:
+ - id: check-yaml
+ - id: trailing-whitespace
+ - id: end-of-file-fixer
-- repo: https://github.com/codespell-project/codespell
- rev: v2.2.4
- hooks:
- - id: codespell
- args: [-w]
- exclude: |
- (?x)^(
- grid_common/lua-5.4.3/|
- grid_esp/bootloader/|
- grid_make/thirdparty/|
- grid_make/samd51a/|
- grid_make/hal/|
- grid_make/hpl/|
- grid_make/hri/|
- grid_make/stdio_redirect/|
- grid_make/CMSIS/
- )
-- repo: https://github.com/pre-commit/mirrors-clang-format
- rev: v17.0.6
- hooks:
- - id: clang-format
- exclude: |
- (?x)^(
- grid_common/lua-5.4.3/|
- grid_esp/bootloader/|
- grid_make/thirdparty/|
- grid_make/samd51a/|
- grid_make/hal/|
- grid_make/hpl/|
- grid_make/hri/|
- grid_make/stdio_redirect/|
- grid_make/CMSIS/|
- grid_make/usb/|
- grid_make/config/|
- grid_make/examples/
- )
+ - repo: https://github.com/codespell-project/codespell
+ rev: v2.2.4
+ hooks:
+ - id: codespell
+ args: [-w]
-- repo: https://github.com/JohnnyMorganz/StyLua
- rev: v2.1.0
- hooks:
- - id: stylua-github # or stylua-system / stylua-github
+ - repo: https://github.com/pre-commit/mirrors-clang-format
+ rev: v17.0.6
+ hooks:
+ - id: clang-format
+
+ - repo: https://github.com/JohnnyMorganz/StyLua
+ rev: v2.1.0
+ hooks:
+ - id: stylua-github # or stylua-system for a local binary
diff --git a/Dockerfile b/Dockerfile
old mode 100755
new mode 100644
index 9a0954e1d..4881e6a4e
--- a/Dockerfile
+++ b/Dockerfile
@@ -74,5 +74,4 @@ RUN ./patch_esp_efuse_startup.sh
COPY ./patch_esp_trace_include.sh /
RUN ./patch_esp_trace_include.sh
-# Define default command
CMD ["bash"]
diff --git a/Documentation/FW_state_diagram.drawio b/Documentation/FW_state_diagram.drawio
deleted file mode 100644
index 4380277bf..000000000
--- a/Documentation/FW_state_diagram.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
diff --git a/Documentation/FirmwareFlow.drawio b/Documentation/FirmwareFlow.drawio
deleted file mode 100644
index f6c99940f..000000000
--- a/Documentation/FirmwareFlow.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
diff --git a/Documentation/WebDebugger.drawio b/Documentation/WebDebugger.drawio
deleted file mode 100644
index d4efd1e4f..000000000
--- a/Documentation/WebDebugger.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
diff --git a/Documentation/actionstring_crud.drawio b/Documentation/actionstring_crud.drawio
deleted file mode 100644
index b6e4621ef..000000000
--- a/Documentation/actionstring_crud.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7V1tc5s4EP41/nIzyfAO/hjbyXXuml4vae/aTzfUyLZajDxCbuz8+hNYMiDx5tq8JUlnUrSRBNI+u1rtrmCkT9e737G7Wd0jD/gjTfF2I3020jRVVW36X0TZc4rCKEsMPUZLCI/wGTCiwqhb6IEwU5Eg5BO4yRLnKAjAnGRoLsboKVttgfzsXTfuEkiEx7nry9R/oUdWfBjWOPnDOwCXK3ZrR2PjW7u8MhtJuHI99JQi6bcjfYoRIoer9W4K/Gj2+Lwc2t0V/PX4YBgEpE6Ddwvbn1p/3gV/O/h2+bz7w0Dfrxw2jJ+uv2UjZk9L9nwK6INvoktCWQyeUdTfZAMwXAMCcJr+MSFOnlaQgMeNO49aPtEalLYia5+WVHq5gDvAuR2VPYgp9yAKaDlE22jqaB3f/4v2AEkEHlVRKC0kGP0AEvXQkRlf/wBkvmLdHqpzxqms00c2NndLECNNkY9wPFz9xon+RXQUkDt3Df3oRlO0xZCOTFM+AMrECZs2gAnYFTJEPbKZCghAdG7wnlZhDSyHIYPLhs3KTymg8TqrFMZMhRFdBu7lse+E//SCQeAEOIzVajgAjwoIKyJMVmiJAte/TaiThPoeoQ2b+O+AkD3jOJv4FB4yXJtv8U/gcYZVcyF6onIe0AHQlnNQMnSTKRcXLwEpqWfl8xQD3yXwZ/Y5Ls4fU2IP1XsLuJSYVCF+meluGucCzHVNhnkeyo2mQK7q7WAa7CD5krr+Sq+Va5OVZtHsKLyw54WAjvBLupBqFRWTZnGJt+tefqya8qNqXQqQJQnQFAOXgFEEyjv6+/PGi4s9lidN6ZlAyTbEIp6OPk8iNRyys2gYXaslQ5rGOwwOyKQjVu5d30fz4akurf+6S9VqKi/NKQUVHezYYDetrc9Ybx8RpI997OoIRy7kjoC7w7OyVgn0bjB296lqm6hCWHIfUZkYwi6iqr6eqU8vDk8gtOaPgxaLEJCRKCvHqTxDfDRJfKLfzIZNSwxeofW3bVi9SWlVIelqtVa32tRHujyht9gN5bWx9xpoAAqo7u5DG1coIEszf0X/nKw27Cxa+Za0UG2U1+9Obeh6wao7NJDbLwnlVcusNdb0DJ6uuPZsGPbaibAX6utmT2Cvyp6EGfDBwHY+htO1zS7vJ2EASa8nUdr5mF3vH1WnS3WrvVijwq6pbgtsinY8Muq4S+bbr575aqcObf6YKQX6AFyv1wrUcXq2Cmna8MzV/kvQMdxcKUFmlxLEO05JEMjdpvdKhHomQYbZrgSlrI6vqT+9OBFyaoqQYZwpQvnbL9MUtl+2AKACJ+qldlmm/aaYO0SVpTeCKlt1rm11fPxxshgzlGvLUI4/aquIszrdStVFXAKyrxmMDR9x9iUQd6pXyha9TBUxHLG+VlHfUUrrZ71Yl0Iyn/OUXePGGWL/hQTDYPlbrw0cU2RJjo9F1do0cUxrCJphcGvRuKZmsAtc2ueuRQUO6bbWG7tlw/kNVdnpb8bCETNTDdFuPozg7OQDW81Hb+HCJdQ3yqKIF1uI5PQmEuXh0Ftb7jpaZJYkZn+2pHz4535QS1TeJrzdJcoYoPGq9l6ZGHX9WJfZhJ+bgMRDpnUTkFrRAY4c5/uE4XIZcSwHse/db8DPYs714TI63DCn/IsPSESyC+euf8P+sIaeFwMagxA+u9/i/iIEsQmknZuTkTm7jJpgx2XYbUbHQyppgJXIaElo3rH17Ib4Mvlwx/yufW4HzUXKDdm/GhKEh+VfVWTV3q5/VQ7zTH3g4hFPbr3ZbEDgDUL9awNzXhhGTf1flFvWThzD6DQOXJv79tBW/9rcv8gG9dTVX/TQG3r56m+JO4Cy9OOLufEVSXsV5gi+5KW/PPf0iqpGhUvxMS3vIos/PxrBe9XbW/3lQxkS2wmGbrCMGVhhA+Sdcm13z6cXnCpIGQZGm4aB+eY/auIsq1ZT6TsFcDk7Qja+TgXIhAiZ6SjXYyvbZ9OB2GEYFwOzLWrD7Owzn79kW1iWIuKu3LYQ61eExXSjtH5DtogmLUiz27ubz+8/SQjv04ZUdDaaVtfORsvor0roXrQbSp0QUyfrhqtOFX1HPD1ZFeEWRbkNp6IlHz06w7ZsVZztGu90aNWO5K/jSZ9Bd/22Dysmcn1KVt/QsmGsuqnlRUok2TDqOj9/96uKpfktoN1yEp9ywkLxCkB0doj7LL3iyI7rVxr4sQtS25IzmaZ6WedP86JtydyF4Ydt1FBgbj/fGWALp6q1HKu61XcG2G/LcGsa1K4b1y9KPRvWMuy0/Nau17EM1wbRZTyFJyeICS4ZoyqzWXThVISTxMxms41wkiNnNr9Sm8Ip3yBQm0J1zlRMPF3EyLZocLsg54sM2qYwcrb27doUg0hcH5zi1+taDw2FiIpSlCpSjC8mpgN2vvUtiMvv328JzcjnAIK4dt1DZ2onh86cE98AVlG/GVPLlk2twUh5jTPy7Uq5PHW9kfLupbWhTIquAmZVsfJOAmaObFoPVZrz4t+tSvNYfgHcSLP86OzSig7Fik8xzfbB9OHzLLp/+ugtLa8PX/o4NKAPkLThxI1IoLUk2tbPqSUTa/XlQ06ZUP0Ss28N1ijmwpZAn+6D49S7pIukhdzHFAUh8mH0MnCPdjCb5Ay6rP0D8LbzuOnjw839KPryCCIbHAtRbgcijsGOCHiNv2XBP1QRoCDCePrbFYwURh/HoEzSZ2ZS+hQr3ytNKZALRNG98OPPk6yg54GA0jw3XB31aJfHF9ScLaied37hWPEEcaHF5BssB02VfMpGv/0f
diff --git a/Documentation/nvic_priorities.drawio b/Documentation/nvic_priorities.drawio
deleted file mode 100644
index 45e689459..000000000
--- a/Documentation/nvic_priorities.drawio
+++ /dev/null
@@ -1 +0,0 @@
-5ZnbbqMwEIafBqm96CpAc+hlSNPdSNs0DWl7iUgYwKrBCJwm7dPvmBhCYip1V21AXSkH+O3x4ZuxGSeaOYq2P1M3CW+ZB1QzOt5WM681w+gPDPwUwqsU+t2dEKTE20n6XrDJG0ixI9U18SA7qMgZo5wkh+KKxTGs+IHmpinbHFbzGT3sNXEDUAR75VJVfSIeD6Wq9672Bb+ABKHsemD0dwWRW1SWM8lC12ObimSONXOUMsZ3V9F2BFSwK7js7G7eKS0HlkLMP2IwHd4HvnX1dj/svd0v6OPdeB5cyFZeXLqWE35haGB0HCcD7lhDezybT87WJOam4XAsWLoZzFJyrhk9zTDRTaaliZ7lq1LTcYJKE6Ldc0mCvxZ4OWxx8NYmJBzsxF0JeYOBhFrII4p3Ol5mz8BXobyRI4YUbd9FoZeAMTCBRcDTV6wiDQbSJTImy/vN3sPGpdTCinMLzZVBFZQt77njhUT/F24wFDdIbChe4NtC6PiF3FlKuJjJrZs949ccApJxSP8RrM9ibkujE4DWjaZBmwroRSjIrjPBsEMy/EghS1ickSWFfMcQBRR8nq9h4hNO4kBsQ7nhknBhsxSTPhtIdznO9HEyctB/d441WdjnYsohpFBTVvQar6NlPgbmCylKKERIGcRiTPZ+l/2hX9FP0tQDn8R5RRKXA/Pghawg5+p6ecM+ofCjnStQ730wMAZfFRiXSmAMV5yp6wp38URcriO6q2BaAgTBJ8Zvdwl0xjIMEBZjlSXjnEWVCkNKAlHA2RFdtuYUPTgqn2GdL0Budo+Y1+x6vRrk5aL9dOZdhfl8gS11FiSq2dFOHKFd4whXX8VVoqny+jJcPQXXlKVc7AIPw/mibbzKDK4xXn2F19jNeFtxdZvGNVBw2bgvtTa8rprmdaXweoLWhpdpNo2r2A4qvB5scXSYTFtHS2+elnow29Gy727aRqvxlairx6ff42sBazZpGyyz8TRCV89ATUPqm4eQLptff2qydX07VDgVp4EQtm4gkn4rgRSzV3EiL9VZIRkfOJCTLRS/gimkM6l3Pod67/hnkJqMbXBS6GrG9v2h1+R9p4Wu5n3fH3rNI+u00NXk8dtDr0tBTwq9aPi/gl6TbnwSdLzd/3mRl1X+ATLHfwA=
diff --git a/Documentation/nvm_defrag.drawio b/Documentation/nvm_defrag.drawio
deleted file mode 100644
index 2b41b829c..000000000
--- a/Documentation/nvm_defrag.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
diff --git a/Documentation/nvm_user_page.ods b/Documentation/nvm_user_page.ods
deleted file mode 100644
index 8123fd904..000000000
Binary files a/Documentation/nvm_user_page.ods and /dev/null differ
diff --git a/TOOLCHAIN.md b/TOOLCHAIN.md
deleted file mode 100644
index 7fc367915..000000000
--- a/TOOLCHAIN.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Install podman
-
-sudo apt-get -y install podman
-
-Edit container registries
-
-sudo nano /etc/containers/registries.conf
-
-Add docker hub to the end of the file
-
-[registries.search]
-registries = ['docker.io']
-
-Login to dockerhub using
-
-podman login docker.io
-
-Pull the arm-none-eabi-gcc image
-
-podman pull srzzumix/arm-none-eabi:focal-9-2019q4
-
-Pull the esp-idf image
-
-podman pull espressif/idf:latest
-
-Pull the RP2040 SDK image
-
-podman pull atoktoto/pico-builder:latest
diff --git a/common/.gitignore b/common/.gitignore
new file mode 100644
index 000000000..8e33f72ff
--- /dev/null
+++ b/common/.gitignore
@@ -0,0 +1,28 @@
+!src
+
+!src/c
+!src/c/*.h
+!src/c/*.c
+
+!src/lua
+!src/lua/*.lua
+
+!dep
+
+!dep/littlefs
+!dep/littlefs/**
+
+!dep/lua-5.4.3
+!dep/lua-5.4.3/**
+
+!dep/proto
+!dep/proto/**
+
+!dep/tomlc99
+!dep/tomlc99/**
+
+!dep/vmp
+!dep/vmp/**
+
+!test/tests.h
+!test/*.c
diff --git a/grid_common/littlefs/LICENSE.md b/common/dep/littlefs/LICENSE.md
similarity index 100%
rename from grid_common/littlefs/LICENSE.md
rename to common/dep/littlefs/LICENSE.md
diff --git a/grid_common/littlefs/lfs.c b/common/dep/littlefs/lfs.c
similarity index 100%
rename from grid_common/littlefs/lfs.c
rename to common/dep/littlefs/lfs.c
diff --git a/grid_common/littlefs/lfs.h b/common/dep/littlefs/lfs.h
similarity index 100%
rename from grid_common/littlefs/lfs.h
rename to common/dep/littlefs/lfs.h
diff --git a/grid_common/littlefs/lfs_util.c b/common/dep/littlefs/lfs_util.c
similarity index 100%
rename from grid_common/littlefs/lfs_util.c
rename to common/dep/littlefs/lfs_util.c
diff --git a/grid_common/littlefs/lfs_util.h b/common/dep/littlefs/lfs_util.h
similarity index 100%
rename from grid_common/littlefs/lfs_util.h
rename to common/dep/littlefs/lfs_util.h
diff --git a/grid_common/lua-5.4.3/README b/common/dep/lua-5.4.3/README
similarity index 100%
rename from grid_common/lua-5.4.3/README
rename to common/dep/lua-5.4.3/README
diff --git a/grid_common/lua-5.4.3/src/Makefile b/common/dep/lua-5.4.3/src/Makefile
similarity index 100%
rename from grid_common/lua-5.4.3/src/Makefile
rename to common/dep/lua-5.4.3/src/Makefile
diff --git a/grid_common/lua-5.4.3/src/dirent.c b/common/dep/lua-5.4.3/src/dirent.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/dirent.c
rename to common/dep/lua-5.4.3/src/dirent.c
diff --git a/grid_common/lua-5.4.3/src/lapi.c b/common/dep/lua-5.4.3/src/lapi.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lapi.c
rename to common/dep/lua-5.4.3/src/lapi.c
diff --git a/grid_common/lua-5.4.3/src/lapi.h b/common/dep/lua-5.4.3/src/lapi.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lapi.h
rename to common/dep/lua-5.4.3/src/lapi.h
diff --git a/grid_common/lua-5.4.3/src/lauxlib.c b/common/dep/lua-5.4.3/src/lauxlib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lauxlib.c
rename to common/dep/lua-5.4.3/src/lauxlib.c
diff --git a/grid_common/lua-5.4.3/src/lauxlib.h b/common/dep/lua-5.4.3/src/lauxlib.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lauxlib.h
rename to common/dep/lua-5.4.3/src/lauxlib.h
diff --git a/grid_common/lua-5.4.3/src/lbaselib.c b/common/dep/lua-5.4.3/src/lbaselib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lbaselib.c
rename to common/dep/lua-5.4.3/src/lbaselib.c
diff --git a/grid_common/lua-5.4.3/src/lcode.c b/common/dep/lua-5.4.3/src/lcode.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lcode.c
rename to common/dep/lua-5.4.3/src/lcode.c
diff --git a/grid_common/lua-5.4.3/src/lcode.h b/common/dep/lua-5.4.3/src/lcode.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lcode.h
rename to common/dep/lua-5.4.3/src/lcode.h
diff --git a/grid_common/lua-5.4.3/src/lcorolib.c b/common/dep/lua-5.4.3/src/lcorolib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lcorolib.c
rename to common/dep/lua-5.4.3/src/lcorolib.c
diff --git a/grid_common/lua-5.4.3/src/lctype.c b/common/dep/lua-5.4.3/src/lctype.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lctype.c
rename to common/dep/lua-5.4.3/src/lctype.c
diff --git a/grid_common/lua-5.4.3/src/lctype.h b/common/dep/lua-5.4.3/src/lctype.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lctype.h
rename to common/dep/lua-5.4.3/src/lctype.h
diff --git a/grid_common/lua-5.4.3/src/ldblib.c b/common/dep/lua-5.4.3/src/ldblib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ldblib.c
rename to common/dep/lua-5.4.3/src/ldblib.c
diff --git a/grid_common/lua-5.4.3/src/ldebug.c b/common/dep/lua-5.4.3/src/ldebug.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ldebug.c
rename to common/dep/lua-5.4.3/src/ldebug.c
diff --git a/grid_common/lua-5.4.3/src/ldebug.h b/common/dep/lua-5.4.3/src/ldebug.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/ldebug.h
rename to common/dep/lua-5.4.3/src/ldebug.h
diff --git a/grid_common/lua-5.4.3/src/ldo.c b/common/dep/lua-5.4.3/src/ldo.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ldo.c
rename to common/dep/lua-5.4.3/src/ldo.c
diff --git a/grid_common/lua-5.4.3/src/ldo.h b/common/dep/lua-5.4.3/src/ldo.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/ldo.h
rename to common/dep/lua-5.4.3/src/ldo.h
diff --git a/grid_common/lua-5.4.3/src/ldump.c b/common/dep/lua-5.4.3/src/ldump.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ldump.c
rename to common/dep/lua-5.4.3/src/ldump.c
diff --git a/grid_common/lua-5.4.3/src/lfunc.c b/common/dep/lua-5.4.3/src/lfunc.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lfunc.c
rename to common/dep/lua-5.4.3/src/lfunc.c
diff --git a/grid_common/lua-5.4.3/src/lfunc.h b/common/dep/lua-5.4.3/src/lfunc.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lfunc.h
rename to common/dep/lua-5.4.3/src/lfunc.h
diff --git a/grid_common/lua-5.4.3/src/lgc.c b/common/dep/lua-5.4.3/src/lgc.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lgc.c
rename to common/dep/lua-5.4.3/src/lgc.c
diff --git a/grid_common/lua-5.4.3/src/lgc.h b/common/dep/lua-5.4.3/src/lgc.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lgc.h
rename to common/dep/lua-5.4.3/src/lgc.h
diff --git a/grid_common/lua-5.4.3/src/linit.c b/common/dep/lua-5.4.3/src/linit.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/linit.c
rename to common/dep/lua-5.4.3/src/linit.c
diff --git a/grid_common/lua-5.4.3/src/liolib.c b/common/dep/lua-5.4.3/src/liolib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/liolib.c
rename to common/dep/lua-5.4.3/src/liolib.c
diff --git a/grid_common/lua-5.4.3/src/ljumptab.h b/common/dep/lua-5.4.3/src/ljumptab.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/ljumptab.h
rename to common/dep/lua-5.4.3/src/ljumptab.h
diff --git a/grid_common/lua-5.4.3/src/llex.c b/common/dep/lua-5.4.3/src/llex.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/llex.c
rename to common/dep/lua-5.4.3/src/llex.c
diff --git a/grid_common/lua-5.4.3/src/llex.h b/common/dep/lua-5.4.3/src/llex.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/llex.h
rename to common/dep/lua-5.4.3/src/llex.h
diff --git a/grid_common/lua-5.4.3/src/llimits.h b/common/dep/lua-5.4.3/src/llimits.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/llimits.h
rename to common/dep/lua-5.4.3/src/llimits.h
diff --git a/grid_common/lua-5.4.3/src/lmathlib.c b/common/dep/lua-5.4.3/src/lmathlib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lmathlib.c
rename to common/dep/lua-5.4.3/src/lmathlib.c
diff --git a/grid_common/lua-5.4.3/src/lmem.c b/common/dep/lua-5.4.3/src/lmem.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lmem.c
rename to common/dep/lua-5.4.3/src/lmem.c
diff --git a/grid_common/lua-5.4.3/src/lmem.h b/common/dep/lua-5.4.3/src/lmem.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lmem.h
rename to common/dep/lua-5.4.3/src/lmem.h
diff --git a/grid_common/lua-5.4.3/src/loadlib.c b/common/dep/lua-5.4.3/src/loadlib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/loadlib.c
rename to common/dep/lua-5.4.3/src/loadlib.c
diff --git a/grid_common/lua-5.4.3/src/lobject.c b/common/dep/lua-5.4.3/src/lobject.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lobject.c
rename to common/dep/lua-5.4.3/src/lobject.c
diff --git a/grid_common/lua-5.4.3/src/lobject.h b/common/dep/lua-5.4.3/src/lobject.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lobject.h
rename to common/dep/lua-5.4.3/src/lobject.h
diff --git a/grid_common/lua-5.4.3/src/lopcodes.c b/common/dep/lua-5.4.3/src/lopcodes.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lopcodes.c
rename to common/dep/lua-5.4.3/src/lopcodes.c
diff --git a/grid_common/lua-5.4.3/src/lopcodes.h b/common/dep/lua-5.4.3/src/lopcodes.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lopcodes.h
rename to common/dep/lua-5.4.3/src/lopcodes.h
diff --git a/grid_common/lua-5.4.3/src/lopnames.h b/common/dep/lua-5.4.3/src/lopnames.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lopnames.h
rename to common/dep/lua-5.4.3/src/lopnames.h
diff --git a/grid_common/lua-5.4.3/src/loslib.c b/common/dep/lua-5.4.3/src/loslib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/loslib.c
rename to common/dep/lua-5.4.3/src/loslib.c
diff --git a/grid_common/lua-5.4.3/src/lparser.c b/common/dep/lua-5.4.3/src/lparser.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lparser.c
rename to common/dep/lua-5.4.3/src/lparser.c
diff --git a/grid_common/lua-5.4.3/src/lparser.h b/common/dep/lua-5.4.3/src/lparser.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lparser.h
rename to common/dep/lua-5.4.3/src/lparser.h
diff --git a/grid_common/lua-5.4.3/src/lprefix.h b/common/dep/lua-5.4.3/src/lprefix.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lprefix.h
rename to common/dep/lua-5.4.3/src/lprefix.h
diff --git a/grid_common/lua-5.4.3/src/lstate.c b/common/dep/lua-5.4.3/src/lstate.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lstate.c
rename to common/dep/lua-5.4.3/src/lstate.c
diff --git a/grid_common/lua-5.4.3/src/lstate.h b/common/dep/lua-5.4.3/src/lstate.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lstate.h
rename to common/dep/lua-5.4.3/src/lstate.h
diff --git a/grid_common/lua-5.4.3/src/lstring.c b/common/dep/lua-5.4.3/src/lstring.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lstring.c
rename to common/dep/lua-5.4.3/src/lstring.c
diff --git a/grid_common/lua-5.4.3/src/lstring.h b/common/dep/lua-5.4.3/src/lstring.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lstring.h
rename to common/dep/lua-5.4.3/src/lstring.h
diff --git a/grid_common/lua-5.4.3/src/lstrlib.c b/common/dep/lua-5.4.3/src/lstrlib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lstrlib.c
rename to common/dep/lua-5.4.3/src/lstrlib.c
diff --git a/grid_common/lua-5.4.3/src/ltable.c b/common/dep/lua-5.4.3/src/ltable.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ltable.c
rename to common/dep/lua-5.4.3/src/ltable.c
diff --git a/grid_common/lua-5.4.3/src/ltable.h b/common/dep/lua-5.4.3/src/ltable.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/ltable.h
rename to common/dep/lua-5.4.3/src/ltable.h
diff --git a/grid_common/lua-5.4.3/src/ltablib.c b/common/dep/lua-5.4.3/src/ltablib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ltablib.c
rename to common/dep/lua-5.4.3/src/ltablib.c
diff --git a/grid_common/lua-5.4.3/src/ltm.c b/common/dep/lua-5.4.3/src/ltm.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/ltm.c
rename to common/dep/lua-5.4.3/src/ltm.c
diff --git a/grid_common/lua-5.4.3/src/ltm.h b/common/dep/lua-5.4.3/src/ltm.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/ltm.h
rename to common/dep/lua-5.4.3/src/ltm.h
diff --git a/grid_common/lua-5.4.3/src/lua.c b/common/dep/lua-5.4.3/src/lua.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lua.c
rename to common/dep/lua-5.4.3/src/lua.c
diff --git a/grid_common/lua-5.4.3/src/lua.h b/common/dep/lua-5.4.3/src/lua.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lua.h
rename to common/dep/lua-5.4.3/src/lua.h
diff --git a/grid_common/lua-5.4.3/src/lua.hpp b/common/dep/lua-5.4.3/src/lua.hpp
similarity index 100%
rename from grid_common/lua-5.4.3/src/lua.hpp
rename to common/dep/lua-5.4.3/src/lua.hpp
diff --git a/grid_common/lua-5.4.3/src/luac.c b/common/dep/lua-5.4.3/src/luac.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/luac.c
rename to common/dep/lua-5.4.3/src/luac.c
diff --git a/grid_common/lua-5.4.3/src/luaconf.h b/common/dep/lua-5.4.3/src/luaconf.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/luaconf.h
rename to common/dep/lua-5.4.3/src/luaconf.h
diff --git a/grid_common/lua-5.4.3/src/lualib.h b/common/dep/lua-5.4.3/src/lualib.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lualib.h
rename to common/dep/lua-5.4.3/src/lualib.h
diff --git a/grid_common/lua-5.4.3/src/lundump.c b/common/dep/lua-5.4.3/src/lundump.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lundump.c
rename to common/dep/lua-5.4.3/src/lundump.c
diff --git a/grid_common/lua-5.4.3/src/lundump.h b/common/dep/lua-5.4.3/src/lundump.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lundump.h
rename to common/dep/lua-5.4.3/src/lundump.h
diff --git a/grid_common/lua-5.4.3/src/lutf8lib.c b/common/dep/lua-5.4.3/src/lutf8lib.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lutf8lib.c
rename to common/dep/lua-5.4.3/src/lutf8lib.c
diff --git a/grid_common/lua-5.4.3/src/lvm.c b/common/dep/lua-5.4.3/src/lvm.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lvm.c
rename to common/dep/lua-5.4.3/src/lvm.c
diff --git a/grid_common/lua-5.4.3/src/lvm.h b/common/dep/lua-5.4.3/src/lvm.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lvm.h
rename to common/dep/lua-5.4.3/src/lvm.h
diff --git a/grid_common/lua-5.4.3/src/lzio.c b/common/dep/lua-5.4.3/src/lzio.c
similarity index 100%
rename from grid_common/lua-5.4.3/src/lzio.c
rename to common/dep/lua-5.4.3/src/lzio.c
diff --git a/grid_common/lua-5.4.3/src/lzio.h b/common/dep/lua-5.4.3/src/lzio.h
similarity index 100%
rename from grid_common/lua-5.4.3/src/lzio.h
rename to common/dep/lua-5.4.3/src/lzio.h
diff --git a/grid_common/proto/proto.h b/common/dep/proto/proto.h
similarity index 100%
rename from grid_common/proto/proto.h
rename to common/dep/proto/proto.h
diff --git a/grid_common/tomlc99/toml.c b/common/dep/tomlc99/toml.c
similarity index 100%
rename from grid_common/tomlc99/toml.c
rename to common/dep/tomlc99/toml.c
diff --git a/grid_common/tomlc99/toml.h b/common/dep/tomlc99/toml.h
similarity index 100%
rename from grid_common/tomlc99/toml.h
rename to common/dep/tomlc99/toml.h
diff --git a/common/dep/vmp/.gitignore b/common/dep/vmp/.gitignore
new file mode 100644
index 000000000..378eac25d
--- /dev/null
+++ b/common/dep/vmp/.gitignore
@@ -0,0 +1 @@
+build
diff --git a/vmp/build.sh b/common/dep/vmp/build.sh
similarity index 100%
rename from vmp/build.sh
rename to common/dep/vmp/build.sh
diff --git a/vmp/recv.c b/common/dep/vmp/recv.c
similarity index 100%
rename from vmp/recv.c
rename to common/dep/vmp/recv.c
diff --git a/vmp/vmp.c b/common/dep/vmp/vmp.c
similarity index 100%
rename from vmp/vmp.c
rename to common/dep/vmp/vmp.c
diff --git a/vmp/vmp.h b/common/dep/vmp/vmp.h
similarity index 100%
rename from vmp/vmp.h
rename to common/dep/vmp/vmp.h
diff --git a/grid_common/grid_ain.c b/common/src/c/grid_ain.c
similarity index 100%
rename from grid_common/grid_ain.c
rename to common/src/c/grid_ain.c
diff --git a/grid_common/grid_ain.h b/common/src/c/grid_ain.h
similarity index 100%
rename from grid_common/grid_ain.h
rename to common/src/c/grid_ain.h
diff --git a/grid_common/grid_allocator.c b/common/src/c/grid_allocator.c
similarity index 100%
rename from grid_common/grid_allocator.c
rename to common/src/c/grid_allocator.c
diff --git a/grid_common/grid_allocator.h b/common/src/c/grid_allocator.h
similarity index 100%
rename from grid_common/grid_allocator.h
rename to common/src/c/grid_allocator.h
diff --git a/grid_common/grid_asc.c b/common/src/c/grid_asc.c
similarity index 100%
rename from grid_common/grid_asc.c
rename to common/src/c/grid_asc.c
diff --git a/grid_common/grid_asc.h b/common/src/c/grid_asc.h
similarity index 100%
rename from grid_common/grid_asc.h
rename to common/src/c/grid_asc.h
diff --git a/grid_common/grid_cal.c b/common/src/c/grid_cal.c
similarity index 100%
rename from grid_common/grid_cal.c
rename to common/src/c/grid_cal.c
diff --git a/grid_common/grid_cal.h b/common/src/c/grid_cal.h
similarity index 100%
rename from grid_common/grid_cal.h
rename to common/src/c/grid_cal.h
diff --git a/grid_common/grid_config.c b/common/src/c/grid_config.c
similarity index 100%
rename from grid_common/grid_config.c
rename to common/src/c/grid_config.c
diff --git a/grid_common/grid_config.h b/common/src/c/grid_config.h
similarity index 100%
rename from grid_common/grid_config.h
rename to common/src/c/grid_config.h
diff --git a/grid_common/grid_decode.c b/common/src/c/grid_decode.c
similarity index 100%
rename from grid_common/grid_decode.c
rename to common/src/c/grid_decode.c
diff --git a/grid_common/grid_decode.h b/common/src/c/grid_decode.h
similarity index 100%
rename from grid_common/grid_decode.h
rename to common/src/c/grid_decode.h
diff --git a/grid_common/grid_led.c b/common/src/c/grid_led.c
similarity index 100%
rename from grid_common/grid_led.c
rename to common/src/c/grid_led.c
diff --git a/grid_common/grid_led.h b/common/src/c/grid_led.h
similarity index 100%
rename from grid_common/grid_led.h
rename to common/src/c/grid_led.h
diff --git a/grid_common/grid_littlefs.c b/common/src/c/grid_littlefs.c
similarity index 100%
rename from grid_common/grid_littlefs.c
rename to common/src/c/grid_littlefs.c
diff --git a/grid_common/grid_littlefs.h b/common/src/c/grid_littlefs.h
similarity index 100%
rename from grid_common/grid_littlefs.h
rename to common/src/c/grid_littlefs.h
diff --git a/grid_common/grid_lua.c b/common/src/c/grid_lua.c
similarity index 100%
rename from grid_common/grid_lua.c
rename to common/src/c/grid_lua.c
diff --git a/grid_common/grid_lua.h b/common/src/c/grid_lua.h
similarity index 99%
rename from grid_common/grid_lua.h
rename to common/src/c/grid_lua.h
index fe75ccafe..829a93e73 100644
--- a/grid_common/grid_lua.h
+++ b/common/src/c/grid_lua.h
@@ -8,7 +8,7 @@
#include "lua-5.4.3/src/lua.h"
#include "lua-5.4.3/src/lualib.h"
-#include "lua_src/lua_source_collection.h"
+#include "lua_source_collection.h"
extern void grid_platform_printf(char const* fmt, ...);
extern void grid_platform_delay_ms(uint32_t delay_milliseconds);
diff --git a/grid_common/grid_lua_api.c b/common/src/c/grid_lua_api.c
similarity index 100%
rename from grid_common/grid_lua_api.c
rename to common/src/c/grid_lua_api.c
diff --git a/grid_common/grid_lua_api.h b/common/src/c/grid_lua_api.h
similarity index 100%
rename from grid_common/grid_lua_api.h
rename to common/src/c/grid_lua_api.h
diff --git a/grid_common/grid_math.c b/common/src/c/grid_math.c
similarity index 100%
rename from grid_common/grid_math.c
rename to common/src/c/grid_math.c
diff --git a/grid_common/grid_math.h b/common/src/c/grid_math.h
similarity index 100%
rename from grid_common/grid_math.h
rename to common/src/c/grid_math.h
diff --git a/grid_common/grid_module.c b/common/src/c/grid_module.c
similarity index 100%
rename from grid_common/grid_module.c
rename to common/src/c/grid_module.c
diff --git a/grid_common/grid_module.h b/common/src/c/grid_module.h
similarity index 100%
rename from grid_common/grid_module.h
rename to common/src/c/grid_module.h
diff --git a/grid_common/grid_msg.c b/common/src/c/grid_msg.c
similarity index 100%
rename from grid_common/grid_msg.c
rename to common/src/c/grid_msg.c
diff --git a/grid_common/grid_msg.h b/common/src/c/grid_msg.h
similarity index 100%
rename from grid_common/grid_msg.h
rename to common/src/c/grid_msg.h
diff --git a/grid_common/grid_noflash.c b/common/src/c/grid_noflash.c
similarity index 100%
rename from grid_common/grid_noflash.c
rename to common/src/c/grid_noflash.c
diff --git a/grid_common/grid_noflash.h b/common/src/c/grid_noflash.h
similarity index 100%
rename from grid_common/grid_noflash.h
rename to common/src/c/grid_noflash.h
diff --git a/grid_common/grid_platform.c b/common/src/c/grid_platform.c
similarity index 100%
rename from grid_common/grid_platform.c
rename to common/src/c/grid_platform.c
diff --git a/grid_common/grid_platform.h b/common/src/c/grid_platform.h
similarity index 100%
rename from grid_common/grid_platform.h
rename to common/src/c/grid_platform.h
diff --git a/grid_common/grid_port.c b/common/src/c/grid_port.c
similarity index 100%
rename from grid_common/grid_port.c
rename to common/src/c/grid_port.c
diff --git a/grid_common/grid_port.h b/common/src/c/grid_port.h
similarity index 100%
rename from grid_common/grid_port.h
rename to common/src/c/grid_port.h
diff --git a/grid_common/grid_protocol.c b/common/src/c/grid_protocol.c
similarity index 100%
rename from grid_common/grid_protocol.c
rename to common/src/c/grid_protocol.c
diff --git a/grid_common/grid_protocol.h b/common/src/c/grid_protocol.h
similarity index 100%
rename from grid_common/grid_protocol.h
rename to common/src/c/grid_protocol.h
diff --git a/grid_common/grid_rollid.c b/common/src/c/grid_rollid.c
similarity index 100%
rename from grid_common/grid_rollid.c
rename to common/src/c/grid_rollid.c
diff --git a/grid_common/grid_rollid.h b/common/src/c/grid_rollid.h
similarity index 100%
rename from grid_common/grid_rollid.h
rename to common/src/c/grid_rollid.h
diff --git a/grid_common/grid_swsr.c b/common/src/c/grid_swsr.c
similarity index 100%
rename from grid_common/grid_swsr.c
rename to common/src/c/grid_swsr.c
diff --git a/grid_common/grid_swsr.h b/common/src/c/grid_swsr.h
similarity index 100%
rename from grid_common/grid_swsr.h
rename to common/src/c/grid_swsr.h
diff --git a/grid_common/grid_sys.c b/common/src/c/grid_sys.c
similarity index 100%
rename from grid_common/grid_sys.c
rename to common/src/c/grid_sys.c
diff --git a/grid_common/grid_sys.h b/common/src/c/grid_sys.h
similarity index 100%
rename from grid_common/grid_sys.h
rename to common/src/c/grid_sys.h
diff --git a/grid_common/grid_transport.c b/common/src/c/grid_transport.c
similarity index 100%
rename from grid_common/grid_transport.c
rename to common/src/c/grid_transport.c
diff --git a/grid_common/grid_transport.h b/common/src/c/grid_transport.h
similarity index 100%
rename from grid_common/grid_transport.h
rename to common/src/c/grid_transport.h
diff --git a/grid_common/grid_ui.c b/common/src/c/grid_ui.c
similarity index 100%
rename from grid_common/grid_ui.c
rename to common/src/c/grid_ui.c
diff --git a/grid_common/grid_ui.h b/common/src/c/grid_ui.h
similarity index 100%
rename from grid_common/grid_ui.h
rename to common/src/c/grid_ui.h
diff --git a/grid_common/grid_ui_button.c b/common/src/c/grid_ui_button.c
similarity index 100%
rename from grid_common/grid_ui_button.c
rename to common/src/c/grid_ui_button.c
diff --git a/grid_common/grid_ui_button.h b/common/src/c/grid_ui_button.h
similarity index 100%
rename from grid_common/grid_ui_button.h
rename to common/src/c/grid_ui_button.h
diff --git a/grid_common/grid_ui_encoder.c b/common/src/c/grid_ui_encoder.c
similarity index 100%
rename from grid_common/grid_ui_encoder.c
rename to common/src/c/grid_ui_encoder.c
diff --git a/grid_common/grid_ui_encoder.h b/common/src/c/grid_ui_encoder.h
similarity index 100%
rename from grid_common/grid_ui_encoder.h
rename to common/src/c/grid_ui_encoder.h
diff --git a/grid_common/grid_ui_endless.c b/common/src/c/grid_ui_endless.c
similarity index 100%
rename from grid_common/grid_ui_endless.c
rename to common/src/c/grid_ui_endless.c
diff --git a/grid_common/grid_ui_endless.h b/common/src/c/grid_ui_endless.h
similarity index 100%
rename from grid_common/grid_ui_endless.h
rename to common/src/c/grid_ui_endless.h
diff --git a/grid_common/grid_ui_lcd.c b/common/src/c/grid_ui_lcd.c
similarity index 100%
rename from grid_common/grid_ui_lcd.c
rename to common/src/c/grid_ui_lcd.c
diff --git a/grid_common/grid_ui_lcd.h b/common/src/c/grid_ui_lcd.h
similarity index 100%
rename from grid_common/grid_ui_lcd.h
rename to common/src/c/grid_ui_lcd.h
diff --git a/grid_common/grid_ui_potmeter.c b/common/src/c/grid_ui_potmeter.c
similarity index 100%
rename from grid_common/grid_ui_potmeter.c
rename to common/src/c/grid_ui_potmeter.c
diff --git a/grid_common/grid_ui_potmeter.h b/common/src/c/grid_ui_potmeter.h
similarity index 100%
rename from grid_common/grid_ui_potmeter.h
rename to common/src/c/grid_ui_potmeter.h
diff --git a/grid_common/grid_ui_system.c b/common/src/c/grid_ui_system.c
similarity index 100%
rename from grid_common/grid_ui_system.c
rename to common/src/c/grid_ui_system.c
diff --git a/grid_common/grid_ui_system.h b/common/src/c/grid_ui_system.h
similarity index 100%
rename from grid_common/grid_ui_system.h
rename to common/src/c/grid_ui_system.h
diff --git a/grid_common/grid_usb.c b/common/src/c/grid_usb.c
similarity index 100%
rename from grid_common/grid_usb.c
rename to common/src/c/grid_usb.c
diff --git a/grid_common/grid_usb.h b/common/src/c/grid_usb.h
similarity index 100%
rename from grid_common/grid_usb.h
rename to common/src/c/grid_usb.h
diff --git a/grid_common/grid_utask.c b/common/src/c/grid_utask.c
similarity index 100%
rename from grid_common/grid_utask.c
rename to common/src/c/grid_utask.c
diff --git a/grid_common/grid_utask.h b/common/src/c/grid_utask.h
similarity index 100%
rename from grid_common/grid_utask.h
rename to common/src/c/grid_utask.h
diff --git a/grid_common/lua_src/lua_source_collection.h b/common/src/c/lua_source_collection.h
similarity index 81%
rename from grid_common/lua_src/lua_source_collection.h
rename to common/src/c/lua_source_collection.h
index 8e3ddd22c..eace00bd2 100644
--- a/grid_common/lua_src/lua_source_collection.h
+++ b/common/src/c/lua_source_collection.h
@@ -4,48 +4,48 @@
// clang-format off
#include "decode.h"
-#define GRID_LUA_FNC_G_DECODE_source grid_lua_src_decode_lua
+#define GRID_LUA_FNC_G_DECODE_source common_src_lua_decode_lua
#define GRID_LUA_FNC_G_DECODE_short "gdec"
#define GRID_LUA_FNC_G_DECODE_human "decode"
#include "lookup.h"
-#define GRID_LUA_FNC_G_LOOKUP_source grid_lua_src_lookup_lua
+#define GRID_LUA_FNC_G_LOOKUP_source common_src_lua_lookup_lua
#define GRID_LUA_FNC_G_LOOKUP_short "glut"
#define GRID_LUA_FNC_G_LOOKUP_human "lookup"
#include "elementname.h"
-#define GRID_LUA_FNC_G_ELEMENTNAME_source grid_lua_src_elementname_lua
+#define GRID_LUA_FNC_G_ELEMENTNAME_source common_src_lua_elementname_lua
#define GRID_LUA_FNC_G_ELEMENTNAME_short "gen"
#define GRID_LUA_FNC_G_ELEMENTNAME_human "element_name"
#include "eventfname.h"
-#define GRID_LUA_FNC_G_EVENTFNAME_source grid_lua_src_eventfname_lua
+#define GRID_LUA_FNC_G_EVENTFNAME_source common_src_lua_eventfname_lua
#include "limit.h"
-#define GRID_LUA_FNC_G_LIMIT_source grid_lua_src_limit_lua
+#define GRID_LUA_FNC_G_LIMIT_source common_src_lua_limit_lua
#define GRID_LUA_FNC_G_LIMIT_short "glim"
#define GRID_LUA_FNC_G_LIMIT_human "limit"
#include "mapsat.h"
-#define GRID_LUA_FNC_G_MAPSAT_source grid_lua_src_mapsat_lua
+#define GRID_LUA_FNC_G_MAPSAT_source common_src_lua_mapsat_lua
#define GRID_LUA_FNC_G_MAPSAT_short "gmaps"
#define GRID_LUA_FNC_G_MAPSAT_human "map_saturate"
#include "sign.h"
-#define GRID_LUA_FNC_G_SIGN_source grid_lua_src_sign_lua
+#define GRID_LUA_FNC_G_SIGN_source common_src_lua_sign_lua
#define GRID_LUA_FNC_G_SIGN_short "sgn"
#define GRID_LUA_FNC_G_SIGN_human "sign"
#include "segmentcalc.h"
-#define GRID_LUA_FNC_G_SEGCALC_source grid_lua_src_segmentcalc_lua
+#define GRID_LUA_FNC_G_SEGCALC_source common_src_lua_segmentcalc_lua
#define GRID_LUA_FNC_G_SEGCALC_short "gsc"
#define GRID_LUA_FNC_G_SEGCALC_human "segment_calculate"
#include "toml.h"
-#define GRID_LUA_FNC_G_TOML_source grid_lua_src_toml_lua
+#define GRID_LUA_FNC_G_TOML_source common_src_lua_toml_lua
#include "simplecolor.h"
-#define GRID_LUA_FNC_G_SIMPLECOLOR_source grid_lua_src_simplecolor_lua
+#define GRID_LUA_FNC_G_SIMPLECOLOR_source common_src_lua_simplecolor_lua
#define GRID_LUA_FNC_G_COLOR_CURVE_short "color_curve"
#define GRID_LUA_FNC_G_COLOR_CURVE_human "color_curve"
@@ -60,7 +60,7 @@
#define GRID_LUA_FNC_G_COLOR_AUTO_VALUE_usage "color_auto_value(element self, int segment_index) Calculates LED intensity value based on element type and state. For endless encoders, returns segment-specific value. For other elements, returns mapped value 0-255. User overridable."
#include "simplemidi.h"
-#define GRID_LUA_FNC_G_SIMPLEMIDI_source grid_lua_src_simplemidi_lua
+#define GRID_LUA_FNC_G_SIMPLEMIDI_source common_src_lua_simplemidi_lua
#define GRID_LUA_FNC_G_MIDI_AUTO_CH_short "midi_auto_ch"
#define GRID_LUA_FNC_G_MIDI_AUTO_CH_human "midi_auto_ch"
@@ -79,6 +79,6 @@
#define GRID_LUA_FNC_G_MIDI_AUTO_P2_usage "midi_auto_p2(element self) Calculates default MIDI parameter 2 (value) from element state. Returns value based on event type (button, encoder, potentiometer). User overridable."
#include "autovalue.h"
-#define GRID_LUA_FNC_G_AUTOVALUE_source grid_lua_src_autovalue_lua
+#define GRID_LUA_FNC_G_AUTOVALUE_source common_src_lua_autovalue_lua
#endif
diff --git a/grid_common/lua_src/autovalue.lua b/common/src/lua/autovalue.lua
similarity index 100%
rename from grid_common/lua_src/autovalue.lua
rename to common/src/lua/autovalue.lua
diff --git a/grid_common/lua_src/decode.lua b/common/src/lua/decode.lua
similarity index 100%
rename from grid_common/lua_src/decode.lua
rename to common/src/lua/decode.lua
diff --git a/grid_common/lua_src/elementname.lua b/common/src/lua/elementname.lua
similarity index 100%
rename from grid_common/lua_src/elementname.lua
rename to common/src/lua/elementname.lua
diff --git a/grid_common/lua_src/eventfname.lua b/common/src/lua/eventfname.lua
similarity index 100%
rename from grid_common/lua_src/eventfname.lua
rename to common/src/lua/eventfname.lua
diff --git a/grid_common/lua_src/limit.lua b/common/src/lua/limit.lua
similarity index 100%
rename from grid_common/lua_src/limit.lua
rename to common/src/lua/limit.lua
diff --git a/grid_common/lua_src/lookup.lua b/common/src/lua/lookup.lua
similarity index 100%
rename from grid_common/lua_src/lookup.lua
rename to common/src/lua/lookup.lua
diff --git a/grid_common/lua_src/mapsat.lua b/common/src/lua/mapsat.lua
similarity index 100%
rename from grid_common/lua_src/mapsat.lua
rename to common/src/lua/mapsat.lua
diff --git a/grid_common/lua_src/segmentcalc.lua b/common/src/lua/segmentcalc.lua
similarity index 100%
rename from grid_common/lua_src/segmentcalc.lua
rename to common/src/lua/segmentcalc.lua
diff --git a/grid_common/lua_src/sign.lua b/common/src/lua/sign.lua
similarity index 100%
rename from grid_common/lua_src/sign.lua
rename to common/src/lua/sign.lua
diff --git a/grid_common/lua_src/simplecolor.lua b/common/src/lua/simplecolor.lua
similarity index 100%
rename from grid_common/lua_src/simplecolor.lua
rename to common/src/lua/simplecolor.lua
diff --git a/grid_common/lua_src/simplemidi.lua b/common/src/lua/simplemidi.lua
similarity index 100%
rename from grid_common/lua_src/simplemidi.lua
rename to common/src/lua/simplemidi.lua
diff --git a/grid_common/lua_src/toml.lua b/common/src/lua/toml.lua
similarity index 100%
rename from grid_common/lua_src/toml.lua
rename to common/src/lua/toml.lua
diff --git a/common/test/grid_ui_encoder_test.c b/common/test/grid_ui_encoder_test.c
new file mode 100644
index 000000000..20673be25
--- /dev/null
+++ b/common/test/grid_ui_encoder_test.c
@@ -0,0 +1,62 @@
+#include "test.h"
+
+#include "grid_ui.h"
+#include "grid_ui_encoder.h"
+
+TEST_DECL(grid_ui_encoder_relative) {
+
+ struct grid_ui_model* ui = &grid_ui_state;
+ grid_ui_model_init(ui, 1);
+
+ struct grid_ui_element* ele = grid_ui_element_find(ui, 0);
+ TEST_ASSERT(ele);
+
+ grid_ui_element_encoder_init(ele);
+
+ struct grid_ui_event* eve = grid_ui_event_find(ele, GRID_PARAMETER_EVENT_ENCODER);
+ TEST_ASSERT(eve);
+
+ TEST_ASSERT(grid_ui_template_buffer_create(ele));
+ grid_ui_page_clear_template_parameters(ui, 0);
+ ele->template_parameter_list = ele->template_buffer_list_head->template_parameter_list;
+
+ if (ele->page_change_cb) {
+ ele->page_change_cb(ele, 0, 0);
+ }
+
+ // Set encoder to relative mode
+ grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MODE_index, 1);
+
+ grid_ui_event_state_set(eve, GRID_EVE_STATE_INIT);
+ if (eve->parent->event_clear_cb) {
+ eve->parent->event_clear_cb(eve);
+ }
+
+ // In relative mode, value should be 64 after event reset
+ TEST_ASSERT(64 == grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
+ grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MODE_index, 1);
+
+ // In relative mode, in a range of [-100, 100], value should be 0 after reset
+ grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MIN_index, -100);
+ grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MAX_index, 100);
+ grid_ui_event_state_set(eve, GRID_EVE_STATE_INIT);
+ if (eve->parent->event_clear_cb) {
+ eve->parent->event_clear_cb(eve);
+ }
+ TEST_ASSERT(0 == grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
+
+ // In relative mode, in a range of [100, 200], value should be 150 after reset
+ grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MIN_index, 100);
+ grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MAX_index, 200);
+ grid_ui_event_state_set(eve, GRID_EVE_STATE_INIT);
+ if (eve->parent->event_clear_cb) {
+ eve->parent->event_clear_cb(eve);
+ }
+ TEST_ASSERT(150 == grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
+
+ uint64_t last_real_time = 0;
+ grid_ui_encoder_update_trigger(ele, &last_real_time, 1);
+ TEST_ASSERT(200 != grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
+
+ return TEST_SUCCESS;
+}
diff --git a/common/test/tests.h b/common/test/tests.h
new file mode 100644
index 000000000..3042e562b
--- /dev/null
+++ b/common/test/tests.h
@@ -0,0 +1,6 @@
+#ifndef COMMON_TEST_H
+#define COMMON_TEST_H
+
+TEST_DECL(grid_ui_encoder_relative);
+
+#endif /* COMMON_TEST_H */
diff --git a/d51_build.sh b/d51_build.sh
new file mode 100755
index 000000000..b3d2628d0
--- /dev/null
+++ b/d51_build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make -C d51n20a/gcc release
diff --git a/d51_build_firmware.sh b/d51_build_firmware.sh
deleted file mode 100755
index 429904b8b..000000000
--- a/d51_build_firmware.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-mkdir -p ./grid_make/gcc/build
-make -C "./grid_make/gcc" release
diff --git a/d51n20a/.gitignore b/d51n20a/.gitignore
new file mode 100644
index 000000000..20cfbf11e
--- /dev/null
+++ b/d51n20a/.gitignore
@@ -0,0 +1,2 @@
+build
+grid/vmp/build
diff --git a/grid_make/AtmelStart.env_conf b/d51n20a/AtmelStart.env_conf
similarity index 100%
rename from grid_make/AtmelStart.env_conf
rename to d51n20a/AtmelStart.env_conf
diff --git a/grid_make/AtmelStart.gpdsc b/d51n20a/AtmelStart.gpdsc
similarity index 100%
rename from grid_make/AtmelStart.gpdsc
rename to d51n20a/AtmelStart.gpdsc
diff --git a/grid_make/CMSIS/Core/Include/cmsis_armcc.h b/d51n20a/CMSIS/Core/Include/cmsis_armcc.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/cmsis_armcc.h
rename to d51n20a/CMSIS/Core/Include/cmsis_armcc.h
diff --git a/grid_make/CMSIS/Core/Include/cmsis_armclang.h b/d51n20a/CMSIS/Core/Include/cmsis_armclang.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/cmsis_armclang.h
rename to d51n20a/CMSIS/Core/Include/cmsis_armclang.h
diff --git a/grid_make/CMSIS/Core/Include/cmsis_compiler.h b/d51n20a/CMSIS/Core/Include/cmsis_compiler.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/cmsis_compiler.h
rename to d51n20a/CMSIS/Core/Include/cmsis_compiler.h
diff --git a/grid_make/CMSIS/Core/Include/cmsis_gcc.h b/d51n20a/CMSIS/Core/Include/cmsis_gcc.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/cmsis_gcc.h
rename to d51n20a/CMSIS/Core/Include/cmsis_gcc.h
diff --git a/grid_make/CMSIS/Core/Include/cmsis_iccarm.h b/d51n20a/CMSIS/Core/Include/cmsis_iccarm.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/cmsis_iccarm.h
rename to d51n20a/CMSIS/Core/Include/cmsis_iccarm.h
diff --git a/grid_make/CMSIS/Core/Include/cmsis_version.h b/d51n20a/CMSIS/Core/Include/cmsis_version.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/cmsis_version.h
rename to d51n20a/CMSIS/Core/Include/cmsis_version.h
diff --git a/grid_make/CMSIS/Core/Include/core_armv8mbl.h b/d51n20a/CMSIS/Core/Include/core_armv8mbl.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_armv8mbl.h
rename to d51n20a/CMSIS/Core/Include/core_armv8mbl.h
diff --git a/grid_make/CMSIS/Core/Include/core_armv8mml.h b/d51n20a/CMSIS/Core/Include/core_armv8mml.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_armv8mml.h
rename to d51n20a/CMSIS/Core/Include/core_armv8mml.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm0.h b/d51n20a/CMSIS/Core/Include/core_cm0.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm0.h
rename to d51n20a/CMSIS/Core/Include/core_cm0.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm0plus.h b/d51n20a/CMSIS/Core/Include/core_cm0plus.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm0plus.h
rename to d51n20a/CMSIS/Core/Include/core_cm0plus.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm1.h b/d51n20a/CMSIS/Core/Include/core_cm1.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm1.h
rename to d51n20a/CMSIS/Core/Include/core_cm1.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm23.h b/d51n20a/CMSIS/Core/Include/core_cm23.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm23.h
rename to d51n20a/CMSIS/Core/Include/core_cm23.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm3.h b/d51n20a/CMSIS/Core/Include/core_cm3.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm3.h
rename to d51n20a/CMSIS/Core/Include/core_cm3.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm33.h b/d51n20a/CMSIS/Core/Include/core_cm33.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm33.h
rename to d51n20a/CMSIS/Core/Include/core_cm33.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm4.h b/d51n20a/CMSIS/Core/Include/core_cm4.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm4.h
rename to d51n20a/CMSIS/Core/Include/core_cm4.h
diff --git a/grid_make/CMSIS/Core/Include/core_cm7.h b/d51n20a/CMSIS/Core/Include/core_cm7.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_cm7.h
rename to d51n20a/CMSIS/Core/Include/core_cm7.h
diff --git a/grid_make/CMSIS/Core/Include/core_sc000.h b/d51n20a/CMSIS/Core/Include/core_sc000.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_sc000.h
rename to d51n20a/CMSIS/Core/Include/core_sc000.h
diff --git a/grid_make/CMSIS/Core/Include/core_sc300.h b/d51n20a/CMSIS/Core/Include/core_sc300.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/core_sc300.h
rename to d51n20a/CMSIS/Core/Include/core_sc300.h
diff --git a/grid_make/CMSIS/Core/Include/mpu_armv7.h b/d51n20a/CMSIS/Core/Include/mpu_armv7.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/mpu_armv7.h
rename to d51n20a/CMSIS/Core/Include/mpu_armv7.h
diff --git a/grid_make/CMSIS/Core/Include/mpu_armv8.h b/d51n20a/CMSIS/Core/Include/mpu_armv8.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/mpu_armv8.h
rename to d51n20a/CMSIS/Core/Include/mpu_armv8.h
diff --git a/grid_make/CMSIS/Core/Include/tz_context.h b/d51n20a/CMSIS/Core/Include/tz_context.h
similarity index 100%
rename from grid_make/CMSIS/Core/Include/tz_context.h
rename to d51n20a/CMSIS/Core/Include/tz_context.h
diff --git a/grid_make/CMSIS/Documentation/Core/html/index.html b/d51n20a/CMSIS/Documentation/Core/html/index.html
similarity index 100%
rename from grid_make/CMSIS/Documentation/Core/html/index.html
rename to d51n20a/CMSIS/Documentation/Core/html/index.html
diff --git a/grid_make/armcc/Makefile b/d51n20a/armcc/Makefile
similarity index 100%
rename from grid_make/armcc/Makefile
rename to d51n20a/armcc/Makefile
diff --git a/grid_make/atmel_start.c b/d51n20a/atmel_start.c
similarity index 100%
rename from grid_make/atmel_start.c
rename to d51n20a/atmel_start.c
diff --git a/grid_make/atmel_start.h b/d51n20a/atmel_start.h
similarity index 100%
rename from grid_make/atmel_start.h
rename to d51n20a/atmel_start.h
diff --git a/grid_make/atmel_start_config.atstart b/d51n20a/atmel_start_config.atstart
similarity index 100%
rename from grid_make/atmel_start_config.atstart
rename to d51n20a/atmel_start_config.atstart
diff --git a/grid_make/atmel_start_pins.h b/d51n20a/atmel_start_pins.h
similarity index 100%
rename from grid_make/atmel_start_pins.h
rename to d51n20a/atmel_start_pins.h
diff --git a/grid_make/config/FreeRTOSConfig.h b/d51n20a/config/FreeRTOSConfig.h
similarity index 100%
rename from grid_make/config/FreeRTOSConfig.h
rename to d51n20a/config/FreeRTOSConfig.h
diff --git a/grid_make/config/hpl_adc_config.h b/d51n20a/config/hpl_adc_config.h
similarity index 100%
rename from grid_make/config/hpl_adc_config.h
rename to d51n20a/config/hpl_adc_config.h
diff --git a/grid_make/config/hpl_cmcc_config.h b/d51n20a/config/hpl_cmcc_config.h
similarity index 100%
rename from grid_make/config/hpl_cmcc_config.h
rename to d51n20a/config/hpl_cmcc_config.h
diff --git a/grid_make/config/hpl_dmac_config.h b/d51n20a/config/hpl_dmac_config.h
similarity index 100%
rename from grid_make/config/hpl_dmac_config.h
rename to d51n20a/config/hpl_dmac_config.h
diff --git a/grid_make/config/hpl_eic_config.h b/d51n20a/config/hpl_eic_config.h
similarity index 100%
rename from grid_make/config/hpl_eic_config.h
rename to d51n20a/config/hpl_eic_config.h
diff --git a/grid_make/config/hpl_evsys_config.h b/d51n20a/config/hpl_evsys_config.h
similarity index 100%
rename from grid_make/config/hpl_evsys_config.h
rename to d51n20a/config/hpl_evsys_config.h
diff --git a/grid_make/config/hpl_gclk_config.h b/d51n20a/config/hpl_gclk_config.h
similarity index 100%
rename from grid_make/config/hpl_gclk_config.h
rename to d51n20a/config/hpl_gclk_config.h
diff --git a/grid_make/config/hpl_mclk_config.h b/d51n20a/config/hpl_mclk_config.h
similarity index 100%
rename from grid_make/config/hpl_mclk_config.h
rename to d51n20a/config/hpl_mclk_config.h
diff --git a/grid_make/config/hpl_nvmctrl_config.h b/d51n20a/config/hpl_nvmctrl_config.h
similarity index 100%
rename from grid_make/config/hpl_nvmctrl_config.h
rename to d51n20a/config/hpl_nvmctrl_config.h
diff --git a/grid_make/config/hpl_osc32kctrl_config.h b/d51n20a/config/hpl_osc32kctrl_config.h
similarity index 100%
rename from grid_make/config/hpl_osc32kctrl_config.h
rename to d51n20a/config/hpl_osc32kctrl_config.h
diff --git a/grid_make/config/hpl_oscctrl_config.h b/d51n20a/config/hpl_oscctrl_config.h
similarity index 100%
rename from grid_make/config/hpl_oscctrl_config.h
rename to d51n20a/config/hpl_oscctrl_config.h
diff --git a/grid_make/config/hpl_port_config.h b/d51n20a/config/hpl_port_config.h
similarity index 100%
rename from grid_make/config/hpl_port_config.h
rename to d51n20a/config/hpl_port_config.h
diff --git a/grid_make/config/hpl_qspi_config.h b/d51n20a/config/hpl_qspi_config.h
similarity index 100%
rename from grid_make/config/hpl_qspi_config.h
rename to d51n20a/config/hpl_qspi_config.h
diff --git a/grid_make/config/hpl_rtc_config.h b/d51n20a/config/hpl_rtc_config.h
similarity index 100%
rename from grid_make/config/hpl_rtc_config.h
rename to d51n20a/config/hpl_rtc_config.h
diff --git a/grid_make/config/hpl_sercom_config.h b/d51n20a/config/hpl_sercom_config.h
similarity index 100%
rename from grid_make/config/hpl_sercom_config.h
rename to d51n20a/config/hpl_sercom_config.h
diff --git a/grid_make/config/hpl_systick_config.h b/d51n20a/config/hpl_systick_config.h
similarity index 100%
rename from grid_make/config/hpl_systick_config.h
rename to d51n20a/config/hpl_systick_config.h
diff --git a/grid_make/config/hpl_tc_config.h b/d51n20a/config/hpl_tc_config.h
similarity index 100%
rename from grid_make/config/hpl_tc_config.h
rename to d51n20a/config/hpl_tc_config.h
diff --git a/grid_make/config/hpl_trng_config.h b/d51n20a/config/hpl_trng_config.h
similarity index 100%
rename from grid_make/config/hpl_trng_config.h
rename to d51n20a/config/hpl_trng_config.h
diff --git a/grid_make/config/hpl_usb_config.h b/d51n20a/config/hpl_usb_config.h
similarity index 100%
rename from grid_make/config/hpl_usb_config.h
rename to d51n20a/config/hpl_usb_config.h
diff --git a/grid_make/config/hpl_wdt_config.h b/d51n20a/config/hpl_wdt_config.h
similarity index 100%
rename from grid_make/config/hpl_wdt_config.h
rename to d51n20a/config/hpl_wdt_config.h
diff --git a/grid_make/config/peripheral_clk_config.h b/d51n20a/config/peripheral_clk_config.h
similarity index 100%
rename from grid_make/config/peripheral_clk_config.h
rename to d51n20a/config/peripheral_clk_config.h
diff --git a/grid_make/config/stdio_redirect_config.h b/d51n20a/config/stdio_redirect_config.h
similarity index 100%
rename from grid_make/config/stdio_redirect_config.h
rename to d51n20a/config/stdio_redirect_config.h
diff --git a/grid_make/config/usbd_config.h b/d51n20a/config/usbd_config.h
similarity index 100%
rename from grid_make/config/usbd_config.h
rename to d51n20a/config/usbd_config.h
diff --git a/grid_make/driver_init.c b/d51n20a/driver_init.c
similarity index 100%
rename from grid_make/driver_init.c
rename to d51n20a/driver_init.c
diff --git a/grid_make/driver_init.h b/d51n20a/driver_init.h
similarity index 100%
rename from grid_make/driver_init.h
rename to d51n20a/driver_init.h
diff --git a/grid_make/examples/driver_examples.c b/d51n20a/examples/driver_examples.c
similarity index 100%
rename from grid_make/examples/driver_examples.c
rename to d51n20a/examples/driver_examples.c
diff --git a/grid_make/examples/driver_examples.h b/d51n20a/examples/driver_examples.h
similarity index 100%
rename from grid_make/examples/driver_examples.h
rename to d51n20a/examples/driver_examples.h
diff --git a/d51n20a/gcc/.gitignore b/d51n20a/gcc/.gitignore
new file mode 100644
index 000000000..ca72fb1f6
--- /dev/null
+++ b/d51n20a/gcc/.gitignore
@@ -0,0 +1,5 @@
+# block everything by default
+*
+
+!.gitignore
+!Makefile
diff --git a/grid_make/gcc/Makefile b/d51n20a/gcc/Makefile
similarity index 57%
rename from grid_make/gcc/Makefile
rename to d51n20a/gcc/Makefile
index 5c0ae1790..da2f7a84a 100644
--- a/grid_make/gcc/Makefile
+++ b/d51n20a/gcc/Makefile
@@ -1,315 +1,188 @@
-GRID_DEFINES = -DGRID
-
-SUB_DIRS += \
-\
-usb/class/midi/device \
-usb/class/midi \
-grid/lua \
-grid \
-grid/d51 \
-grid/vmp \
-../vmp \
-../grid_common/lua-5.4.3/src \
-../grid_common/littlefs \
-../grid_common/tomlc99 \
-\
-
-OBJS += \
-\
-usb/class/midi/device/audiodf_midi.o \
-usb/class/midi/usb_protocol_midi.o \
-../grid_common/grid_config.o \
-../grid_common/grid_cal.o \
-../grid_common/grid_ain.o \
-../grid_common/grid_asc.o \
-../grid_common/grid_math.o \
-../grid_common/grid_sys.o \
-../grid_common/grid_swsr.o \
-../grid_common/grid_allocator.o \
-../grid_common/grid_msg.o \
-../grid_common/grid_noflash.o \
-../grid_common/grid_platform.o \
-../grid_common/grid_decode.o \
-../grid_common/grid_port.o \
-../grid_common/grid_usb.o \
-../grid_common/grid_ui.o \
-../grid_common/grid_ui_button.o \
-../grid_common/grid_ui_encoder.o \
-../grid_common/grid_ui_endless.o \
-../grid_common/grid_ui_potmeter.o \
-../grid_common/grid_ui_system.o \
-../grid_common/grid_ui_lcd.o \
-../grid_common/grid_module.o \
-../grid_common/grid_lua.o \
-../grid_common/grid_lua_api.o \
-../grid_common/grid_transport.o \
-../grid_common/grid_rollid.o \
-../grid_common/grid_utask.o \
-grid/d51/grid_d51.o \
-grid/d51/grid_d51_led.o \
-grid/d51/grid_d51_littlefs.o \
-grid/d51/grid_d51_littlefs_api.o \
-grid/d51/grid_d51_uart.o \
-grid/d51/grid_d51_usb.o \
-grid/d51/grid_d51_nvm.o \
-../grid_common/grid_led.o \
-../grid_common/grid_littlefs.o \
-grid/d51/grid_d51_module.o \
-grid/d51/grid_d51_adc.o \
-grid/d51/grid_d51_encoder.o \
-grid/grid_d51_module_bu16.o \
-grid/grid_d51_module_en16.o \
-grid/grid_d51_module_pbf4.o \
-grid/grid_d51_module_po16.o \
-grid/grid_d51_module_ef44.o \
-../grid_common/grid_protocol.o \
-grid/d51/grid_d51_lua.o \
-../grid_common/lua-5.4.3/src/dirent.o \
-../grid_common/lua-5.4.3/src/lapi.o \
-../grid_common/lua-5.4.3/src/lctype.o \
-../grid_common/lua-5.4.3/src/lfunc.o \
-../grid_common/lua-5.4.3/src/lmathlib.o \
-../grid_common/lua-5.4.3/src/loslib.o \
-../grid_common/lua-5.4.3/src/ltable.o \
-../grid_common/lua-5.4.3/src/lundump.o \
-../grid_common/lua-5.4.3/src/lauxlib.o \
-../grid_common/lua-5.4.3/src/ldblib.o \
-../grid_common/lua-5.4.3/src/lgc.o \
-../grid_common/lua-5.4.3/src/lmem.o \
-../grid_common/lua-5.4.3/src/lparser.o \
-../grid_common/lua-5.4.3/src/ltablib.o \
-../grid_common/lua-5.4.3/src/lutf8lib.o \
-../grid_common/lua-5.4.3/src/lbaselib.o \
-../grid_common/lua-5.4.3/src/ldebug.o \
-../grid_common/lua-5.4.3/src/linit.o \
-../grid_common/lua-5.4.3/src/loadlib.o \
-../grid_common/lua-5.4.3/src/lstate.o \
-../grid_common/lua-5.4.3/src/ltm.o \
-../grid_common/lua-5.4.3/src/lvm.o \
-../grid_common/lua-5.4.3/src/lcode.o \
-../grid_common/lua-5.4.3/src/ldo.o \
-../grid_common/lua-5.4.3/src/liolib.o \
-../grid_common/lua-5.4.3/src/lobject.o \
-../grid_common/lua-5.4.3/src/lstring.o \
-../grid_common/lua-5.4.3/src/lzio.o \
-../grid_common/lua-5.4.3/src/llex.o \
-../grid_common/lua-5.4.3/src/lopcodes.o \
-../grid_common/lua-5.4.3/src/ldump.o \
-../grid_common/lua-5.4.3/src/lstrlib.o \
-../grid_common/lua-5.4.3/src/lcorolib.o \
-../grid_common/littlefs/lfs.o \
-../grid_common/littlefs/lfs_util.o \
-../grid_common/tomlc99/toml.o \
-grid/vmp/vmp_def.o \
-../vmp/vmp.o \
-
-# ../grid_common/lua-5.4.3/src/luac.o \
-# ../grid_common/lua-5.4.3/src/lua.o \
-
-
-
-OBJS_AS_ARGS += \
-\
-"usb/class/midi/device/audiodf_midi.o" \
-"usb/class/midi/usb_protocol_midi.o" \
-"../grid_common/grid_config.o" \
-"../grid_common/grid_cal.o" \
-"../grid_common/grid_ain.o" \
-"../grid_common/grid_asc.o" \
-"../grid_common/grid_math.o" \
-"../grid_common/grid_sys.o" \
-"../grid_common/grid_swsr.o" \
-"../grid_common/grid_allocator.o" \
-"../grid_common/grid_msg.o" \
-"../grid_common/grid_noflash.o" \
-"../grid_common/grid_platform.o" \
-"../grid_common/grid_decode.o" \
-"../grid_common/grid_port.o" \
-"../grid_common/grid_usb.o" \
-"../grid_common/grid_ui.o" \
-"../grid_common/grid_ui_button.o" \
-"../grid_common/grid_ui_encoder.o" \
-"../grid_common/grid_ui_endless.o" \
-"../grid_common/grid_ui_potmeter.o" \
-"../grid_common/grid_ui_system.o" \
-"../grid_common/grid_ui_lcd.o" \
-"../grid_common/grid_module.o" \
-"../grid_common/grid_lua.o" \
-"../grid_common/grid_lua_api.o" \
-"../grid_common/grid_transport.o" \
-"../grid_common/grid_rollid.o" \
-"../grid_common/grid_utask.o" \
-"grid/d51/grid_d51.o" \
-"grid/d51/grid_d51_led.o" \
-"grid/d51/grid_d51_littlefs.o" \
-"grid/d51/grid_d51_littlefs_api.o" \
-"grid/d51/grid_d51_uart.o" \
-"grid/d51/grid_d51_usb.o" \
-"grid/d51/grid_d51_nvm.o" \
-"../grid_common/grid_led.o" \
-"../grid_common/grid_littlefs.o" \
-"grid/d51/grid_d51_module.o" \
-"grid/d51/grid_d51_adc.o" \
-"grid/d51/grid_d51_encoder.o" \
-"grid/grid_d51_module_bu16.o" \
-"grid/grid_d51_module_en16.o" \
-"grid/grid_d51_module_pbf4.o" \
-"grid/grid_d51_module_po16.o" \
-"grid/grid_d51_module_ef44.o" \
-"../grid_common/grid_protocol.o" \
-"grid/d51/grid_d51_lua.o" \
-"../grid_common/lua-5.4.3/src/dirent.o" \
-"../grid_common/lua-5.4.3/src/lapi.o" \
-"../grid_common/lua-5.4.3/src/lctype.o" \
-"../grid_common/lua-5.4.3/src/lfunc.o" \
-"../grid_common/lua-5.4.3/src/lmathlib.o" \
-"../grid_common/lua-5.4.3/src/loslib.o" \
-"../grid_common/lua-5.4.3/src/ltable.o" \
-"../grid_common/lua-5.4.3/src/lundump.o" \
-"../grid_common/lua-5.4.3/src/lauxlib.o" \
-"../grid_common/lua-5.4.3/src/ldblib.o" \
-"../grid_common/lua-5.4.3/src/lgc.o" \
-"../grid_common/lua-5.4.3/src/lmem.o" \
-"../grid_common/lua-5.4.3/src/lparser.o" \
-"../grid_common/lua-5.4.3/src/ltablib.o" \
-"../grid_common/lua-5.4.3/src/lutf8lib.o" \
-"../grid_common/lua-5.4.3/src/lbaselib.o" \
-"../grid_common/lua-5.4.3/src/ldebug.o" \
-"../grid_common/lua-5.4.3/src/linit.o" \
-"../grid_common/lua-5.4.3/src/loadlib.o" \
-"../grid_common/lua-5.4.3/src/lstate.o" \
-"../grid_common/lua-5.4.3/src/ltm.o" \
-"../grid_common/lua-5.4.3/src/lvm.o" \
-"../grid_common/lua-5.4.3/src/lcode.o" \
-"../grid_common/lua-5.4.3/src/ldo.o" \
-"../grid_common/lua-5.4.3/src/liolib.o" \
-"../grid_common/lua-5.4.3/src/lobject.o" \
-"../grid_common/lua-5.4.3/src/lstring.o" \
-"../grid_common/lua-5.4.3/src/lzio.o" \
-"../grid_common/lua-5.4.3/src/llex.o" \
-"../grid_common/lua-5.4.3/src/lopcodes.o" \
-"../grid_common/lua-5.4.3/src/ldump.o" \
-"../grid_common/lua-5.4.3/src/lstrlib.o" \
-"../grid_common/lua-5.4.3/src/lcorolib.o" \
-"../grid_common/littlefs/lfs.o" \
-"../grid_common/littlefs/lfs_util.o" \
-"../grid_common/tomlc99/toml.o" \
-"grid/vmp/vmp_def.o" \
-"../vmp/vmp.o" \
-
-# "../grid_common/lua-5.4.3/src/luac.o" \
-# "../grid_common/lua-5.4.3/src/lua.o" \
-
-
-
-DIR_INCLUDES += \
--I"../" \
--I"../grid" \
--I"../grid/d51" \
--I"../grid/vmp" \
--I"../../vmp" \
--I"../usb/class/midi/" \
--I"../usb/class/midi/device" \
--I"../../grid_common" \
--I"../../grid_common" \
--I"../../grid_common/lua-5.4.3/src" \
--I"../../grid_common/littlefs" \
--I"../../grid_common/proto" \
--I"../../grid_common/tomlc99" \
-
+CC = arm-none-eabi-gcc
+GRID_DEFINES = -DGRID
-DEPS_AS_ARGS += \
-\
-"usb/class/midi/device/audiodf_midi.d" \
-"usb/class/midi/usb_protocol_midi.d" \
-"../grid_common/grid_config.d" \
-"../grid_common/grid_cal.d" \
-"../grid_common/grid_ain.d" \
-"../grid_common/grid_asc.d" \
-"../grid_common/grid_math.d" \
-"../grid_common/grid_sys.d" \
-"../grid_common/grid_swsr.d" \
-"../grid_common/grid_allocator.d" \
-"../grid_common/grid_msg.d" \
-"../grid_common/grid_noflash.d" \
-"../grid_common/grid_platform.d" \
-"../grid_common/grid_decode.d" \
-"../grid_common/grid_port.d" \
-"../grid_common/grid_usb.d" \
-"../grid_common/grid_ui.d" \
-"../grid_common/grid_ui_button.d" \
-"../grid_common/grid_ui_encoder.d" \
-"../grid_common/grid_ui_endless.d" \
-"../grid_common/grid_ui_potmeter.d" \
-"../grid_common/grid_ui_system.d" \
-"../grid_common/grid_ui_lcd.d" \
-"../grid_common/grid_module.d" \
-"../grid_common/grid_lua.d" \
-"../grid_common/grid_lua_api.d" \
-"../grid_common/grid_transport.d" \
-"../grid_common/grid_rollid.d" \
-"../grid_common/grid_utask.d" \
-"grid/d51/grid_d51.d" \
-"grid/d51/grid_d51_led.d" \
-"grid/d51/grid_d51_littlefs.d" \
-"grid/d51/grid_d51_littlefs_api.d" \
-"grid/d51/grid_d51_uart.d" \
-"grid/d51/grid_d51_usb.d" \
-"grid/d51/grid_d51_nvm.d" \
-"../grid_common/grid_led.d" \
-"../grid_common/grid_littlefs.d" \
-"grid/d51/grid_d51_module.d" \
-"grid/d51/grid_d51_adc.d" \
-"grid/d51/grid_d51_encoder.d" \
-"grid/grid_d51_module_bu16.d" \
-"grid/grid_d51_module_en16.d" \
-"grid/grid_d51_module_pbf4.d" \
-"grid/grid_d51_module_po16.d" \
-"grid/grid_d51_module_ef44.d" \
-"../grid_common/grid_protocol.d" \
-"grid/d51/grid_d51_lua.d" \
-"../grid_common/lua-5.4.3/src/dirent.d" \
-"../grid_common/lua-5.4.3/src/lapi.d" \
-"../grid_common/lua-5.4.3/src/lctype.d" \
-"../grid_common/lua-5.4.3/src/lfunc.d" \
-"../grid_common/lua-5.4.3/src/lmathlib.d" \
-"../grid_common/lua-5.4.3/src/loslib.d" \
-"../grid_common/lua-5.4.3/src/ltable.d" \
-"../grid_common/lua-5.4.3/src/lundump.d" \
-"../grid_common/lua-5.4.3/src/lauxlib.d" \
-"../grid_common/lua-5.4.3/src/ldblib.d" \
-"../grid_common/lua-5.4.3/src/lgc.d" \
-"../grid_common/lua-5.4.3/src/lmem.d" \
-"../grid_common/lua-5.4.3/src/lparser.d" \
-"../grid_common/lua-5.4.3/src/ltablib.d" \
-"../grid_common/lua-5.4.3/src/lutf8lib.d" \
-"../grid_common/lua-5.4.3/src/lbaselib.d" \
-"../grid_common/lua-5.4.3/src/ldebug.d" \
-"../grid_common/lua-5.4.3/src/linit.d" \
-"../grid_common/lua-5.4.3/src/loadlib.d" \
-"../grid_common/lua-5.4.3/src/lstate.d" \
-"../grid_common/lua-5.4.3/src/ltm.d" \
-"../grid_common/lua-5.4.3/src/lvm.d" \
-"../grid_common/lua-5.4.3/src/lcode.d" \
-"../grid_common/lua-5.4.3/src/ldo.d" \
-"../grid_common/lua-5.4.3/src/liolib.d" \
-"../grid_common/lua-5.4.3/src/lobject.d" \
-"../grid_common/lua-5.4.3/src/lstring.d" \
-"../grid_common/lua-5.4.3/src/lzio.d" \
-"../grid_common/lua-5.4.3/src/llex.d" \
-"../grid_common/lua-5.4.3/src/lopcodes.d" \
-"../grid_common/lua-5.4.3/src/ldump.d" \
-"../grid_common/lua-5.4.3/src/lstrlib.d" \
-"../grid_common/lua-5.4.3/src/lcorolib.d" \
-"../grid_common/littlefs/lfs.d" \
-"../grid_common/littlefs/lfs_util.d" \
-"../grid_common/tomlc99/toml.d" \
-"grid/vmp/vmp_def.d" \
-"../vmp/vmp.d" \
-
-# "../grid_common/lua-5.4.3/src/luac.d" \
-# "../grid_common/lua-5.4.3/src/lua.d" \
+###################################
+# Platform-specific code for GRID #
+###################################
+
+D51_INC_DIR = \
+-I "../grid" \
+-I "../grid/d51" \
+-I "../grid/vmp" \
+-I "../grid/usb/class/midi" \
+-I "../grid/usb/class/midi/device" \
+
+D51_SRC_DIR = ../grid
+D51_SRCS = \
+d51/grid_d51.c \
+d51/grid_d51_adc.c \
+d51/grid_d51_encoder.c \
+d51/grid_d51_led.c \
+d51/grid_d51_littlefs.c \
+d51/grid_d51_littlefs_api.c \
+d51/grid_d51_lua.c \
+d51/grid_d51_module.c \
+d51/grid_d51_nvm.c \
+d51/grid_d51_uart.c \
+d51/grid_d51_usb.c \
+grid_d51_module_bu16.c \
+grid_d51_module_en16.c \
+grid_d51_module_pbf4.c \
+grid_d51_module_po16.c \
+grid_d51_module_ef44.c \
+vmp/vmp_def.c \
+usb/class/midi/usb_protocol_midi.c \
+usb/class/midi/device/audiodf_midi.c \
+
+D51_OBJ_DIRS = \
+build/grid/d51 \
+build/grid/vmp \
+build/grid/usb/class/midi \
+build/grid/usb/class/midi/device \
+
+$(D51_OBJ_DIRS): ; mkdir -p $@
+
+D51_OBJ_DIR = build/grid
+$(D51_OBJ_DIR): $(D51_OBJ_DIRS)
+D51_OBJS = $(D51_SRCS:%.c=$(D51_OBJ_DIR)/%.o)
+
+$(D51_OBJ_DIR)/%.d: $(D51_SRC_DIR)/%.c | $(D51_OBJ_DIR)
+ $(CC) -x c -mthumb \
+ $(GRID_DEFINES) \
+ -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
+ -D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
+ $(D51_INC_DIR) \
+ -MD -MP -MF "$(@:%.c=%.d)" -MT"$(@:%.c=%.d)" -MT"$(@:%.c=%.o)" "$<"
+
+$(D51_OBJ_DIR)/%.o: $(D51_SRC_DIR)/%.c $(D51_OBJ_DIR)/%.d | $(D51_OBJ_DIR)
+ $(CC) -x c -mthumb \
+ $(GRID_DEFINES) \
+ -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
+ -D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
+ $(D51_INC_DIR) \
+ -o "$@" "$<"
+
+OBJS += $(D51_SRCS:%.c=$(D51_OBJ_DIR)/%.o)
+OBJS_AS_ARGS += $(D51_SRCS:%.c=$(D51_OBJ_DIR)/%.o)
+
+COM_INC_DIR = \
+-I "../../common/src/c" \
+-I "../../common/dep" \
+-I "../../common/dep/littlefs" \
+-I "../../common/dep/lua-5.4.3" \
+-I "../../common/dep/proto" \
+-I "../../common/dep/tomlc99" \
+-I "../../common/dep/vmp" \
+-I "../../common/build/lua" \
+
+D51_INC_DIR += $(COM_INC_DIR)
+
+######################################
+# Platform-independent code for GRID #
+######################################
+
+COM_SRC_DIR = ../../common
+COM_SRCS = \
+src/c/grid_ain.c \
+src/c/grid_allocator.c \
+src/c/grid_asc.c \
+src/c/grid_cal.c \
+src/c/grid_config.c \
+src/c/grid_decode.c \
+src/c/grid_led.c \
+src/c/grid_littlefs.c \
+src/c/grid_lua.c \
+src/c/grid_lua_api.c \
+src/c/grid_math.c \
+src/c/grid_module.c \
+src/c/grid_msg.c \
+src/c/grid_noflash.c \
+src/c/grid_platform.c \
+src/c/grid_port.c \
+src/c/grid_protocol.c \
+src/c/grid_rollid.c \
+src/c/grid_swsr.c \
+src/c/grid_sys.c \
+src/c/grid_transport.c \
+src/c/grid_ui.c \
+src/c/grid_ui_button.c \
+src/c/grid_ui_encoder.c \
+src/c/grid_ui_endless.c \
+src/c/grid_ui_lcd.c \
+src/c/grid_ui_potmeter.c \
+src/c/grid_ui_system.c \
+src/c/grid_usb.c \
+src/c/grid_utask.c \
+dep/lua-5.4.3/src/dirent.c \
+dep/lua-5.4.3/src/lapi.c \
+dep/lua-5.4.3/src/lauxlib.c \
+dep/lua-5.4.3/src/lbaselib.c \
+dep/lua-5.4.3/src/lcode.c \
+dep/lua-5.4.3/src/lcorolib.c \
+dep/lua-5.4.3/src/lctype.c \
+dep/lua-5.4.3/src/ldblib.c \
+dep/lua-5.4.3/src/ldebug.c \
+dep/lua-5.4.3/src/ldo.c \
+dep/lua-5.4.3/src/ldump.c \
+dep/lua-5.4.3/src/lfunc.c \
+dep/lua-5.4.3/src/lgc.c \
+dep/lua-5.4.3/src/linit.c \
+dep/lua-5.4.3/src/liolib.c \
+dep/lua-5.4.3/src/llex.c \
+dep/lua-5.4.3/src/lmathlib.c \
+dep/lua-5.4.3/src/lmem.c \
+dep/lua-5.4.3/src/loadlib.c \
+dep/lua-5.4.3/src/lobject.c \
+dep/lua-5.4.3/src/lopcodes.c \
+dep/lua-5.4.3/src/loslib.c \
+dep/lua-5.4.3/src/lparser.c \
+dep/lua-5.4.3/src/lstate.c \
+dep/lua-5.4.3/src/lstring.c \
+dep/lua-5.4.3/src/lstrlib.c \
+dep/lua-5.4.3/src/ltable.c \
+dep/lua-5.4.3/src/ltablib.c \
+dep/lua-5.4.3/src/ltm.c \
+dep/lua-5.4.3/src/lundump.c \
+dep/lua-5.4.3/src/lutf8lib.c \
+dep/lua-5.4.3/src/lvm.c \
+dep/lua-5.4.3/src/lzio.c \
+dep/littlefs/lfs.c \
+dep/littlefs/lfs_util.c \
+dep/tomlc99/toml.c \
+dep/vmp/vmp.c \
+
+COM_OBJ_DIRS = \
+build/common/src/c \
+build/common/dep/littlefs \
+build/common/dep/lua-5.4.3/src \
+build/common/dep/tomlc99 \
+build/common/dep/vmp \
+
+$(COM_OBJ_DIRS): ; mkdir -p $@
+
+COM_OBJ_DIR = build/common
+$(COM_OBJ_DIR): $(COM_OBJ_DIRS)
+COM_OBJS = $(COM_SRCS:%.c=$(COM_OBJ_DIR)/%.o)
+
+$(COM_OBJ_DIR)/%.d: $(COM_SRC_DIR)/%.c | $(COM_OBJ_DIR)
+ $(CC) -x c -mthumb \
+ $(GRID_DEFINES) \
+ -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
+ -D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
+ $(COM_INC_DIR) \
+ -MD -MP -MF "$(@:%.c=%.d)" -MT"$(@:%.c=%.d)" -MT"$(@:%.c=%.o)" "$<"
+
+$(COM_OBJ_DIR)/%.o: $(COM_SRC_DIR)/%.c $(COM_OBJ_DIR)/%.d | $(COM_OBJ_DIR)
+ $(CC) -x c -mthumb \
+ $(GRID_DEFINES) \
+ -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
+ -D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
+ $(COM_INC_DIR) \
+ -o "$@" "$<"
+
+OBJS += $(COM_SRCS:%.c=$(COM_OBJ_DIR)/%.o)
+OBJS_AS_ARGS += $(COM_SRCS:%.c=$(COM_OBJ_DIR)/%.o)
################################################################################
# Automatically-generated file. Do not edit!
@@ -342,7 +215,6 @@ endif
# List the subdirectories for creating object files
SUB_DIRS += \
- \
hpl/adc \
usb/class/cdc/device \
hpl/ramecc \
@@ -607,6 +479,8 @@ DIR_INCLUDES += \
-I"../CMSIS/Core/Include" \
-I"../samd51a/include"
+D51_INC_DIR += $(DIR_INCLUDES)
+
# List the dependency files
DEPS := $(OBJS:%.o=%.d)
@@ -706,7 +580,7 @@ all: $(SUB_DIRS) $(OUTPUT_FILE_PATH)
# Linker target
-$(OUTPUT_FILE_PATH): $(OBJS)
+$(OUTPUT_FILE_PATH): $(COM_OBJS) $(D51_OBJS) $(OBJS) | $(COM_OBJ_DIR) $(D51_OBJ_DIR)
@echo Building target: $@
@echo Invoking: ARM/GNU Linker
$(QUOTE)arm-none-eabi-gcc$(QUOTE) -o $(OUTPUT_FILE_NAME).elf $(OBJS_AS_ARGS) -Wl,--start-group -lm -Wl,--end-group -mthumb \
@@ -730,15 +604,12 @@ $(OUTPUT_FILE_PATH): $(OBJS)
# Compiler targets
-
-
-
%.o: %.c
@echo Building file: $<
@echo ARM/GNU C Compiler
$(QUOTE)arm-none-eabi-gcc$(QUOTE) -x c -mthumb $(GRID_DEFINES) -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
-D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
-$(DIR_INCLUDES) \
+$(DIR_INCLUDES) $(COM_INC_DIR) $(D51_INC_DIR) \
-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
@@ -747,7 +618,7 @@ $(DIR_INCLUDES) \
@echo ARM/GNU Assembler
$(QUOTE)arm-none-eabi-as$(QUOTE) -x c -mthumb $(GRID_DEFINES) -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
-D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
-$(DIR_INCLUDES) \
+$(DIR_INCLUDES) $(COM_INC_DIR) $(D51_INC_DIR) \
-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
@@ -756,7 +627,7 @@ $(DIR_INCLUDES) \
@echo ARM/GNU Preprocessing Assembler
$(QUOTE)arm-none-eabi-gcc$(QUOTE) -x c -mthumb $(GRID_DEFINES) -DDEBUG -Os -ffunction-sections -mlong-calls -g3 -Wall -c -std=gnu99 \
-D__SAMD51N20A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16 \
-$(DIR_INCLUDES) \
+$(DIR_INCLUDES) $(COM_INC_DIR) $(D51_INC_DIR) \
-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
@@ -789,5 +660,4 @@ debug_post:
release: clean $(SUB_DIRS) $(OUTPUT_FILE_PATH) release_post
release: GRID_DEFINES = -DGRID_BUILD_RELEASE
release_post:
- mkdir -p ./../../binary
- python3 ./uf2conv.py -c -b 0x4000 -o ./../../binary/grid_release.uf2 ./$(OUTPUT_FILE_NAME).bin
+ python3 ../../tools/uf2conv/uf2conv.py -c -b 0x4000 -o ./grid_fw.uf2 ./$(OUTPUT_FILE_NAME).bin
diff --git a/grid_make/grid/d51/grid_d51.c b/d51n20a/grid/d51/grid_d51.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51.c
rename to d51n20a/grid/d51/grid_d51.c
diff --git a/grid_make/grid/d51/grid_d51.h b/d51n20a/grid/d51/grid_d51.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51.h
rename to d51n20a/grid/d51/grid_d51.h
diff --git a/grid_make/grid/d51/grid_d51_adc.c b/d51n20a/grid/d51/grid_d51_adc.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_adc.c
rename to d51n20a/grid/d51/grid_d51_adc.c
diff --git a/grid_make/grid/d51/grid_d51_adc.h b/d51n20a/grid/d51/grid_d51_adc.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_adc.h
rename to d51n20a/grid/d51/grid_d51_adc.h
diff --git a/grid_make/grid/d51/grid_d51_encoder.c b/d51n20a/grid/d51/grid_d51_encoder.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_encoder.c
rename to d51n20a/grid/d51/grid_d51_encoder.c
diff --git a/grid_make/grid/d51/grid_d51_encoder.h b/d51n20a/grid/d51/grid_d51_encoder.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_encoder.h
rename to d51n20a/grid/d51/grid_d51_encoder.h
diff --git a/grid_make/grid/d51/grid_d51_led.c b/d51n20a/grid/d51/grid_d51_led.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_led.c
rename to d51n20a/grid/d51/grid_d51_led.c
diff --git a/grid_make/grid/d51/grid_d51_led.h b/d51n20a/grid/d51/grid_d51_led.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_led.h
rename to d51n20a/grid/d51/grid_d51_led.h
diff --git a/grid_make/grid/d51/grid_d51_littlefs.c b/d51n20a/grid/d51/grid_d51_littlefs.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_littlefs.c
rename to d51n20a/grid/d51/grid_d51_littlefs.c
diff --git a/grid_make/grid/d51/grid_d51_littlefs.h b/d51n20a/grid/d51/grid_d51_littlefs.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_littlefs.h
rename to d51n20a/grid/d51/grid_d51_littlefs.h
diff --git a/grid_make/grid/d51/grid_d51_littlefs_api.c b/d51n20a/grid/d51/grid_d51_littlefs_api.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_littlefs_api.c
rename to d51n20a/grid/d51/grid_d51_littlefs_api.c
diff --git a/grid_make/grid/d51/grid_d51_littlefs_api.h b/d51n20a/grid/d51/grid_d51_littlefs_api.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_littlefs_api.h
rename to d51n20a/grid/d51/grid_d51_littlefs_api.h
diff --git a/grid_make/grid/d51/grid_d51_lua.c b/d51n20a/grid/d51/grid_d51_lua.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_lua.c
rename to d51n20a/grid/d51/grid_d51_lua.c
diff --git a/grid_make/grid/d51/grid_d51_lua.h b/d51n20a/grid/d51/grid_d51_lua.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_lua.h
rename to d51n20a/grid/d51/grid_d51_lua.h
diff --git a/grid_make/grid/d51/grid_d51_module.c b/d51n20a/grid/d51/grid_d51_module.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_module.c
rename to d51n20a/grid/d51/grid_d51_module.c
diff --git a/grid_make/grid/d51/grid_d51_module.h b/d51n20a/grid/d51/grid_d51_module.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_module.h
rename to d51n20a/grid/d51/grid_d51_module.h
diff --git a/grid_make/grid/d51/grid_d51_nvm.c b/d51n20a/grid/d51/grid_d51_nvm.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_nvm.c
rename to d51n20a/grid/d51/grid_d51_nvm.c
diff --git a/grid_make/grid/d51/grid_d51_nvm.h b/d51n20a/grid/d51/grid_d51_nvm.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_nvm.h
rename to d51n20a/grid/d51/grid_d51_nvm.h
diff --git a/grid_make/grid/d51/grid_d51_uart.c b/d51n20a/grid/d51/grid_d51_uart.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_uart.c
rename to d51n20a/grid/d51/grid_d51_uart.c
diff --git a/grid_make/grid/d51/grid_d51_uart.h b/d51n20a/grid/d51/grid_d51_uart.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_uart.h
rename to d51n20a/grid/d51/grid_d51_uart.h
diff --git a/grid_make/grid/d51/grid_d51_usb.c b/d51n20a/grid/d51/grid_d51_usb.c
similarity index 100%
rename from grid_make/grid/d51/grid_d51_usb.c
rename to d51n20a/grid/d51/grid_d51_usb.c
diff --git a/grid_make/grid/d51/grid_d51_usb.h b/d51n20a/grid/d51/grid_d51_usb.h
similarity index 100%
rename from grid_make/grid/d51/grid_d51_usb.h
rename to d51n20a/grid/d51/grid_d51_usb.h
diff --git a/grid_make/grid/grid_d51_module_bu16.c b/d51n20a/grid/grid_d51_module_bu16.c
similarity index 100%
rename from grid_make/grid/grid_d51_module_bu16.c
rename to d51n20a/grid/grid_d51_module_bu16.c
diff --git a/grid_make/grid/grid_d51_module_bu16.h b/d51n20a/grid/grid_d51_module_bu16.h
similarity index 100%
rename from grid_make/grid/grid_d51_module_bu16.h
rename to d51n20a/grid/grid_d51_module_bu16.h
diff --git a/grid_make/grid/grid_d51_module_ef44.c b/d51n20a/grid/grid_d51_module_ef44.c
similarity index 100%
rename from grid_make/grid/grid_d51_module_ef44.c
rename to d51n20a/grid/grid_d51_module_ef44.c
diff --git a/grid_make/grid/grid_d51_module_ef44.h b/d51n20a/grid/grid_d51_module_ef44.h
similarity index 100%
rename from grid_make/grid/grid_d51_module_ef44.h
rename to d51n20a/grid/grid_d51_module_ef44.h
diff --git a/grid_make/grid/grid_d51_module_en16.c b/d51n20a/grid/grid_d51_module_en16.c
similarity index 100%
rename from grid_make/grid/grid_d51_module_en16.c
rename to d51n20a/grid/grid_d51_module_en16.c
diff --git a/grid_make/grid/grid_d51_module_en16.h b/d51n20a/grid/grid_d51_module_en16.h
similarity index 100%
rename from grid_make/grid/grid_d51_module_en16.h
rename to d51n20a/grid/grid_d51_module_en16.h
diff --git a/grid_make/grid/grid_d51_module_pbf4.c b/d51n20a/grid/grid_d51_module_pbf4.c
similarity index 100%
rename from grid_make/grid/grid_d51_module_pbf4.c
rename to d51n20a/grid/grid_d51_module_pbf4.c
diff --git a/grid_make/grid/grid_d51_module_pbf4.h b/d51n20a/grid/grid_d51_module_pbf4.h
similarity index 100%
rename from grid_make/grid/grid_d51_module_pbf4.h
rename to d51n20a/grid/grid_d51_module_pbf4.h
diff --git a/grid_make/grid/grid_d51_module_po16.c b/d51n20a/grid/grid_d51_module_po16.c
similarity index 100%
rename from grid_make/grid/grid_d51_module_po16.c
rename to d51n20a/grid/grid_d51_module_po16.c
diff --git a/grid_make/grid/grid_d51_module_po16.h b/d51n20a/grid/grid_d51_module_po16.h
similarity index 100%
rename from grid_make/grid/grid_d51_module_po16.h
rename to d51n20a/grid/grid_d51_module_po16.h
diff --git a/grid_make/grid/samd51n20a_flash_bootloader.ld b/d51n20a/grid/samd51n20a_flash_bootloader.ld
similarity index 100%
rename from grid_make/grid/samd51n20a_flash_bootloader.ld
rename to d51n20a/grid/samd51n20a_flash_bootloader.ld
diff --git a/d51n20a/grid/usb/class/midi/device/audiodf_midi.c b/d51n20a/grid/usb/class/midi/device/audiodf_midi.c
new file mode 100644
index 000000000..cf7398bf4
--- /dev/null
+++ b/d51n20a/grid/usb/class/midi/device/audiodf_midi.c
@@ -0,0 +1,325 @@
+#include "audiodf_midi.h"
+#include
+
+#define AUDIODF_MIDI_VERSION 0x00000001u
+
+/** USB Device Audio Midi Function Specific Data */
+
+struct audiodf_midi_func_data {
+ /* AUDIO descriptor */
+ uint8_t* audio_desc;
+
+ uint8_t func_iface[2];
+ uint8_t func_ep_in;
+ uint8_t func_ep_out;
+ uint8_t protocol; //????
+
+ uint8_t midi_report[4]; //????
+
+ uint8_t midi_report_inbound[4]; //????
+
+ bool enabled;
+};
+
+/* USB Device Audio Midi Function Instance */
+static struct usbdf_driver _audiodf_midi;
+
+/* USB Device Audio Midi Function Data Instance */
+static struct audiodf_midi_func_data _audiodf_midi_funcd;
+
+volatile uint8_t usb_debug2[10];
+
+// Define the function pointer type
+typedef bool (*midi_xfer_cb_t)(const uint8_t, const enum usb_xfer_code, const uint32_t);
+
+// Global function pointer
+static midi_xfer_cb_t midi_in_cb = NULL;
+static midi_xfer_cb_t midi_out_cb = NULL;
+static midi_xfer_cb_t midi_installed_cb = NULL;
+
+/**
+ * \brief Enable Audio Midi Function
+ * \param[in] drv Pointer to USB device function driver
+ * \param[in] desc Pointer to USB interface descriptor
+ * \return Operation status.
+ */
+static int32_t audio_midi_enable(struct usbdf_driver* drv, struct usbd_descriptors* desc) {
+
+ printf("MIDI ENABLE\n");
+
+ struct audiodf_midi_func_data* func_data = (struct audiodf_midi_func_data*)(drv->func_data);
+
+ usb_iface_desc_t ifc_desc;
+ volatile usb_ep_desc_t ep_desc;
+ uint8_t *ifc, *ep;
+ uint8_t i;
+
+ ifc = desc->sod;
+
+#define AUDIO_CLASS 0x01 // Audio Class
+#define AUDIO_AC_SUBCLASS 0x01 // Audio Control Subclass
+#define AUDIO_MS_SUBCLASS 0x03 // MidiStreaming Subclass
+
+ for (i = 0; i < 2; i++) {
+
+ if (NULL == ifc) {
+ return ERR_NOT_FOUND;
+ }
+
+ ifc_desc.bInterfaceNumber = ifc[2];
+ ifc_desc.bInterfaceClass = ifc[5];
+
+ if (AUDIO_AC_SUBCLASS == ifc_desc.bInterfaceClass || AUDIO_MS_SUBCLASS == ifc_desc.bInterfaceClass) {
+ if (func_data->func_iface[i] == ifc_desc.bInterfaceNumber) { // Initialized
+ return ERR_ALREADY_INITIALIZED;
+ } else if (func_data->func_iface[i] != 0xFF) { // Occupied
+ return ERR_NO_RESOURCE;
+ } else {
+ func_data->func_iface[i] = ifc_desc.bInterfaceNumber;
+ }
+ } else { // Not supported by this function driver
+ return ERR_NOT_FOUND;
+ }
+
+ // #define USB_DT_AUDIO 0x24
+ // Install AUDIO descriptor
+ //_audiodf_midi_funcd.audio_desc = usb_find_desc(usb_desc_next(desc->sod), desc->eod, USB_DT_AUDIO);
+
+ // Install endpoints
+ if (i == 1) { // i==1 because only the second interface has endpoint descriptors
+ ep = usb_find_desc(ifc, desc->eod, USB_DT_ENDPOINT);
+ while (NULL != ep) {
+ ep_desc.bEndpointAddress = ep[2];
+ ep_desc.bmAttributes = ep[3];
+ ep_desc.wMaxPacketSize = usb_get_u16(ep + 4);
+
+ usb_debug2[4] = ep_desc.wMaxPacketSize;
+
+ usb_debug2[0] = i;
+
+ if (usb_d_ep_init(ep_desc.bEndpointAddress, ep_desc.bmAttributes, ep_desc.wMaxPacketSize)) {
+ return ERR_NOT_INITIALIZED;
+ }
+ if (ep_desc.bEndpointAddress & USB_EP_DIR_IN) {
+ func_data->func_ep_in = ep_desc.bEndpointAddress;
+ usb_d_ep_enable(func_data->func_ep_in);
+ } else {
+ func_data->func_ep_out = ep_desc.bEndpointAddress;
+ usb_d_ep_enable(func_data->func_ep_out);
+ }
+ desc->sod = ep;
+ ep = usb_find_ep_desc(usb_desc_next(desc->sod), desc->eod);
+ }
+ }
+
+ ifc = usb_find_desc(usb_desc_next(desc->sod), desc->eod, USB_DT_INTERFACE);
+ }
+
+ printf("MIDI TEST %d %d \r\n", _audiodf_midi_funcd.func_ep_in, _audiodf_midi_funcd.func_ep_out);
+
+ usb_d_ep_register_callback(_audiodf_midi_funcd.func_ep_in, USB_D_EP_CB_XFER, (FUNC_PTR)midi_in_cb);
+ usb_d_ep_register_callback(_audiodf_midi_funcd.func_ep_out, USB_D_EP_CB_XFER, (FUNC_PTR)midi_out_cb);
+
+ if (midi_installed_cb) {
+ midi_installed_cb(0, 0, 0);
+ }
+
+ _audiodf_midi_funcd.enabled = true;
+ return ERR_NONE;
+}
+
+/**
+ * \brief Disable Audio Midi Function
+ * \param[in] drv Pointer to USB device function driver
+ * \param[in] desc Pointer to USB device descriptor
+ * \return Operation status.
+ */
+static int32_t audio_midi_disable(struct usbdf_driver* drv, struct usbd_descriptors* desc) {
+
+ struct audiodf_midi_func_data* func_data = (struct audiodf_midi_func_data*)(drv->func_data);
+
+ usb_iface_desc_t ifc_desc;
+
+ if (desc) {
+ ifc_desc.bInterfaceClass = desc->sod[5];
+ // Check interface
+ if ((AUDIO_AC_SUBCLASS != ifc_desc.bInterfaceClass) && (AUDIO_MS_SUBCLASS != ifc_desc.bInterfaceClass)) {
+ return ERR_NOT_FOUND;
+ }
+ }
+
+ if (func_data->func_iface[0] != 0xFF) {
+ func_data->func_iface[0] = 0xFF;
+ }
+
+ if (func_data->func_iface[1] != 0xFF) {
+ func_data->func_iface[1] = 0xFF;
+ }
+
+ if (func_data->func_ep_in != 0xFF) {
+ usb_d_ep_deinit(func_data->func_ep_in);
+ func_data->func_ep_in = 0xFF;
+ }
+
+ if (func_data->func_ep_out != 0xFF) {
+ usb_d_ep_deinit(func_data->func_ep_out);
+ func_data->func_ep_out = 0xFF;
+ }
+
+ _audiodf_midi_funcd.enabled = false;
+ return ERR_NONE;
+}
+
+static int32_t audio_midi_ctrl(struct usbdf_driver* drv, enum usbdf_control ctrl, void* param) {
+
+ switch (ctrl) {
+ case USBDF_ENABLE:
+ return audio_midi_enable(drv, (struct usbd_descriptors*)param);
+
+ case USBDF_DISABLE:
+ return audio_midi_disable(drv, (struct usbd_descriptors*)param);
+
+ case USBDF_GET_IFACE:
+ return ERR_UNSUPPORTED_OP;
+
+ default:
+ return ERR_INVALID_ARG;
+ }
+}
+
+static int32_t audio_midi_get_desc(uint8_t ep, struct usb_req* req) {
+ return usbdc_xfer(ep, _audiodf_midi_funcd.audio_desc, _audiodf_midi_funcd.audio_desc[0], false);
+
+ // return ERR_INVALID_ARG;
+}
+/**
+ * \brief Process the Audio class request
+ * \param[in] ep Endpoint address.
+ * \param[in] req Pointer to the request.
+ * \return Operation status.
+ */
+
+static int32_t audio_midi_req(uint8_t ep, struct usb_req* req, enum usb_ctrl_stage stage) {
+
+ // return ERR_NOT_FOUND;
+
+ if ((0x81 == req->bmRequestType) && (req->wIndex == _audiodf_midi_funcd.func_iface[0] || req->wIndex == _audiodf_midi_funcd.func_iface[1])) {
+ return audio_midi_get_desc(ep, req); // Never hit breakpoint here
+
+ } else {
+
+ if (0x01 != ((req->bmRequestType >> 5) & 0x03)) { // class request
+ return ERR_NOT_FOUND; // Never hit breakpoint here
+ }
+ if (req->wIndex == _audiodf_midi_funcd.func_iface[0] || req->wIndex == _audiodf_midi_funcd.func_iface[1]) {
+
+ // Copied from Hid
+ // Never hit breakpoint here
+ switch (req->bRequest) {
+ case 0x03: /* Get Protocol */
+ return usbdc_xfer(ep, &_audiodf_midi_funcd.protocol, 1, 0);
+ case 0x0B: /* Set Protocol */
+ _audiodf_midi_funcd.protocol = req->wValue;
+ return usbdc_xfer(ep, NULL, 0, 0);
+ default:
+ return ERR_INVALID_ARG;
+ }
+
+ } else {
+ return ERR_NOT_FOUND;
+ }
+ }
+ (void)stage;
+}
+
+/** USB Device Audio Midi Handler Struct */
+static struct usbdc_handler audio_midi_req_h = {NULL, (FUNC_PTR)audio_midi_req};
+
+/**
+ * \brief Initialize the USB Audio Midi Function Driver
+ */
+int32_t audiodf_midi_init(void) {
+
+ if (usbdc_get_state() > USBD_S_POWER) {
+ return ERR_DENIED;
+ }
+
+ _audiodf_midi.ctrl = audio_midi_ctrl;
+ _audiodf_midi.func_data = &_audiodf_midi_funcd;
+
+ usbdc_register_function(&_audiodf_midi);
+ usbdc_register_handler(USBDC_HDL_REQ, &audio_midi_req_h);
+ return ERR_NONE;
+}
+
+/**
+ * \brief Deinitialize the USB Audio Midi Function Driver
+ */
+int32_t audiodf_midi_deinit(void) {
+ if (usbdc_get_state() > USBD_S_POWER) {
+ return ERR_DENIED;
+ }
+
+ _audiodf_midi.ctrl = NULL;
+ _audiodf_midi.func_data = NULL;
+
+ usbdc_unregister_function(&_audiodf_midi);
+ usbdc_unregister_handler(USBDC_HDL_REQ, &audio_midi_req_h);
+ return ERR_NONE;
+}
+
+/**
+ * \brief Check whether Audio Midi Function is enabled
+ */
+bool audiodf_midi_is_enabled(void) { return true; }
+
+int32_t audiodf_midi_write(uint8_t byte0, uint8_t byte1, uint8_t byte2, uint8_t byte3) {
+ if (!audiodf_midi_is_enabled()) {
+ return ERR_DENIED;
+ }
+
+ // if previous xfer is completed
+
+ _audiodf_midi_funcd.midi_report[0] = byte0;
+ _audiodf_midi_funcd.midi_report[1] = byte1;
+ _audiodf_midi_funcd.midi_report[2] = byte2;
+ _audiodf_midi_funcd.midi_report[3] = byte3;
+
+ return usbdc_xfer(_audiodf_midi_funcd.func_ep_in, _audiodf_midi_funcd.midi_report, 4, false);
+}
+
+int32_t audiodf_midi_write_status() {
+
+ struct usb_d_ep_status epstat;
+ return usb_d_ep_get_status(_audiodf_midi_funcd.func_ep_in, &epstat);
+}
+
+int32_t audiodf_midi_read(uint8_t* buf, uint32_t size) {
+ if (!audiodf_midi_is_enabled()) {
+ return ERR_DENIED;
+ }
+
+ return usbdc_xfer(_audiodf_midi_funcd.func_ep_out, buf, size, false);
+}
+
+int32_t audiodf_midi_register_callback(enum audiodf_midi_cb_type cb_type, FUNC_PTR func) {
+ switch (cb_type) {
+ case AUDIODF_MIDI_CB_READ:
+ midi_in_cb = (midi_xfer_cb_t)func;
+ break;
+ case AUDIODF_MIDI_CB_WRITE:
+ midi_out_cb = (midi_xfer_cb_t)func;
+ break;
+ case AUDIODF_MIDI_CB_INSTALLED:
+ midi_installed_cb = (midi_xfer_cb_t)func;
+ break;
+ default:
+ return ERR_INVALID_ARG;
+ }
+ return ERR_NONE;
+}
+
+/**
+ * \brief Return version
+ */
+uint32_t audiodf_midi_get_version(void) { return AUDIODF_MIDI_VERSION; }
diff --git a/grid_make/usb/class/midi/device/audiodf_midi.h b/d51n20a/grid/usb/class/midi/device/audiodf_midi.h
similarity index 91%
rename from grid_make/usb/class/midi/device/audiodf_midi.h
rename to d51n20a/grid/usb/class/midi/device/audiodf_midi.h
index d723fe46d..8a90fd911 100644
--- a/grid_make/usb/class/midi/device/audiodf_midi.h
+++ b/d51n20a/grid/usb/class/midi/device/audiodf_midi.h
@@ -3,8 +3,6 @@
#include "usbdc.h"
-
-
/**
* \brief Initialize the USB Audio Midi Function Driver
* \return Operation status.
@@ -26,12 +24,11 @@ int32_t audiodf_midi_deinit(void);
bool audiodf_midi_is_enabled(void);
/** AUDIO MIDI Class Callback Type */
-enum audiodf_midi_cb_type { AUDIODF_MIDI_CB_READ, AUDIODF_MIDI_CB_WRITE, AUDIODF_MIDI_CB_INSTALLED};
+enum audiodf_midi_cb_type { AUDIODF_MIDI_CB_READ, AUDIODF_MIDI_CB_WRITE, AUDIODF_MIDI_CB_INSTALLED };
int32_t audiodf_midi_write_status();
int32_t audiodf_midi_write(uint8_t byte0, uint8_t byte1, uint8_t byte2, uint8_t byte3);
-int32_t audiodf_midi_read(uint8_t *buf, uint32_t size);
-
+int32_t audiodf_midi_read(uint8_t* buf, uint32_t size);
int32_t audiodf_midi_register_callback(enum audiodf_midi_cb_type cb_type, FUNC_PTR func);
diff --git a/grid_make/usb/class/midi/usb_protocol_midi.c b/d51n20a/grid/usb/class/midi/usb_protocol_midi.c
similarity index 70%
rename from grid_make/usb/class/midi/usb_protocol_midi.c
rename to d51n20a/grid/usb/class/midi/usb_protocol_midi.c
index 201efa947..096a28e65 100644
--- a/grid_make/usb/class/midi/usb_protocol_midi.c
+++ b/d51n20a/grid/usb/class/midi/usb_protocol_midi.c
@@ -9,17 +9,11 @@
#include "usb_includes.h"
-
-
-typedef struct
-{
- uint8_t header;
- uint8_t byte1;
- uint8_t byte2;
- uint8_t byte3;
+typedef struct {
+ uint8_t header;
+ uint8_t byte1;
+ uint8_t byte2;
+ uint8_t byte3;
} midiEventPacket_t;
-
-
-
#endif
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/build.sh b/d51n20a/grid/vmp/build.sh
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/build.sh
rename to d51n20a/grid/vmp/build.sh
diff --git a/grid_make/grid/vmp/execute.sh b/d51n20a/grid/vmp/execute.sh
similarity index 100%
rename from grid_make/grid/vmp/execute.sh
rename to d51n20a/grid/vmp/execute.sh
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/proc.c b/d51n20a/grid/vmp/proc.c
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/proc.c
rename to d51n20a/grid/vmp/proc.c
diff --git a/grid_make/grid/vmp/vmp_def.c b/d51n20a/grid/vmp/vmp_def.c
similarity index 100%
rename from grid_make/grid/vmp/vmp_def.c
rename to d51n20a/grid/vmp/vmp_def.c
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/vmp_def.h b/d51n20a/grid/vmp/vmp_def.h
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/vmp_def.h
rename to d51n20a/grid/vmp/vmp_def.h
diff --git a/grid_make/grid/vmp/vmp_tag.h b/d51n20a/grid/vmp/vmp_tag.h
similarity index 100%
rename from grid_make/grid/vmp/vmp_tag.h
rename to d51n20a/grid/vmp/vmp_tag.h
diff --git a/grid_make/hal/documentation/adc_async.rst b/d51n20a/hal/documentation/adc_async.rst
similarity index 100%
rename from grid_make/hal/documentation/adc_async.rst
rename to d51n20a/hal/documentation/adc_async.rst
diff --git a/grid_make/hal/documentation/crc_sync.rst b/d51n20a/hal/documentation/crc_sync.rst
similarity index 100%
rename from grid_make/hal/documentation/crc_sync.rst
rename to d51n20a/hal/documentation/crc_sync.rst
diff --git a/grid_make/hal/documentation/evsys.rst b/d51n20a/hal/documentation/evsys.rst
similarity index 100%
rename from grid_make/hal/documentation/evsys.rst
rename to d51n20a/hal/documentation/evsys.rst
diff --git a/grid_make/hal/documentation/flash.rst b/d51n20a/hal/documentation/flash.rst
similarity index 100%
rename from grid_make/hal/documentation/flash.rst
rename to d51n20a/hal/documentation/flash.rst
diff --git a/grid_make/hal/documentation/i2c_master_async.rst b/d51n20a/hal/documentation/i2c_master_async.rst
similarity index 100%
rename from grid_make/hal/documentation/i2c_master_async.rst
rename to d51n20a/hal/documentation/i2c_master_async.rst
diff --git a/grid_make/hal/documentation/quad_spi_dma.rst b/d51n20a/hal/documentation/quad_spi_dma.rst
similarity index 100%
rename from grid_make/hal/documentation/quad_spi_dma.rst
rename to d51n20a/hal/documentation/quad_spi_dma.rst
diff --git a/grid_make/hal/documentation/rand_sync.rst b/d51n20a/hal/documentation/rand_sync.rst
similarity index 100%
rename from grid_make/hal/documentation/rand_sync.rst
rename to d51n20a/hal/documentation/rand_sync.rst
diff --git a/grid_make/hal/documentation/spi_master_async.rst b/d51n20a/hal/documentation/spi_master_async.rst
similarity index 100%
rename from grid_make/hal/documentation/spi_master_async.rst
rename to d51n20a/hal/documentation/spi_master_async.rst
diff --git a/grid_make/hal/documentation/spi_master_dma.rst b/d51n20a/hal/documentation/spi_master_dma.rst
similarity index 100%
rename from grid_make/hal/documentation/spi_master_dma.rst
rename to d51n20a/hal/documentation/spi_master_dma.rst
diff --git a/grid_make/hal/documentation/timer.rst b/d51n20a/hal/documentation/timer.rst
similarity index 100%
rename from grid_make/hal/documentation/timer.rst
rename to d51n20a/hal/documentation/timer.rst
diff --git a/grid_make/hal/documentation/usart_async.rst b/d51n20a/hal/documentation/usart_async.rst
similarity index 100%
rename from grid_make/hal/documentation/usart_async.rst
rename to d51n20a/hal/documentation/usart_async.rst
diff --git a/grid_make/hal/documentation/usart_sync.rst b/d51n20a/hal/documentation/usart_sync.rst
similarity index 100%
rename from grid_make/hal/documentation/usart_sync.rst
rename to d51n20a/hal/documentation/usart_sync.rst
diff --git a/grid_make/hal/documentation/usb_device_async.rst b/d51n20a/hal/documentation/usb_device_async.rst
similarity index 100%
rename from grid_make/hal/documentation/usb_device_async.rst
rename to d51n20a/hal/documentation/usb_device_async.rst
diff --git a/grid_make/hal/documentation/wdt.rst b/d51n20a/hal/documentation/wdt.rst
similarity index 100%
rename from grid_make/hal/documentation/wdt.rst
rename to d51n20a/hal/documentation/wdt.rst
diff --git a/grid_make/hal/include/hal_adc_async.h b/d51n20a/hal/include/hal_adc_async.h
similarity index 100%
rename from grid_make/hal/include/hal_adc_async.h
rename to d51n20a/hal/include/hal_adc_async.h
diff --git a/grid_make/hal/include/hal_atomic.h b/d51n20a/hal/include/hal_atomic.h
similarity index 100%
rename from grid_make/hal/include/hal_atomic.h
rename to d51n20a/hal/include/hal_atomic.h
diff --git a/grid_make/hal/include/hal_cache.h b/d51n20a/hal/include/hal_cache.h
similarity index 100%
rename from grid_make/hal/include/hal_cache.h
rename to d51n20a/hal/include/hal_cache.h
diff --git a/grid_make/hal/include/hal_crc_sync.h b/d51n20a/hal/include/hal_crc_sync.h
similarity index 100%
rename from grid_make/hal/include/hal_crc_sync.h
rename to d51n20a/hal/include/hal_crc_sync.h
diff --git a/grid_make/hal/include/hal_delay.h b/d51n20a/hal/include/hal_delay.h
similarity index 100%
rename from grid_make/hal/include/hal_delay.h
rename to d51n20a/hal/include/hal_delay.h
diff --git a/grid_make/hal/include/hal_evsys.h b/d51n20a/hal/include/hal_evsys.h
similarity index 100%
rename from grid_make/hal/include/hal_evsys.h
rename to d51n20a/hal/include/hal_evsys.h
diff --git a/grid_make/hal/include/hal_ext_irq.h b/d51n20a/hal/include/hal_ext_irq.h
similarity index 100%
rename from grid_make/hal/include/hal_ext_irq.h
rename to d51n20a/hal/include/hal_ext_irq.h
diff --git a/grid_make/hal/include/hal_flash.h b/d51n20a/hal/include/hal_flash.h
similarity index 100%
rename from grid_make/hal/include/hal_flash.h
rename to d51n20a/hal/include/hal_flash.h
diff --git a/grid_make/hal/include/hal_gpio.h b/d51n20a/hal/include/hal_gpio.h
similarity index 100%
rename from grid_make/hal/include/hal_gpio.h
rename to d51n20a/hal/include/hal_gpio.h
diff --git a/grid_make/hal/include/hal_i2c_m_async.h b/d51n20a/hal/include/hal_i2c_m_async.h
similarity index 100%
rename from grid_make/hal/include/hal_i2c_m_async.h
rename to d51n20a/hal/include/hal_i2c_m_async.h
diff --git a/grid_make/hal/include/hal_init.h b/d51n20a/hal/include/hal_init.h
similarity index 100%
rename from grid_make/hal/include/hal_init.h
rename to d51n20a/hal/include/hal_init.h
diff --git a/grid_make/hal/include/hal_io.h b/d51n20a/hal/include/hal_io.h
similarity index 100%
rename from grid_make/hal/include/hal_io.h
rename to d51n20a/hal/include/hal_io.h
diff --git a/grid_make/hal/include/hal_qspi_dma.h b/d51n20a/hal/include/hal_qspi_dma.h
similarity index 100%
rename from grid_make/hal/include/hal_qspi_dma.h
rename to d51n20a/hal/include/hal_qspi_dma.h
diff --git a/grid_make/hal/include/hal_rand_sync.h b/d51n20a/hal/include/hal_rand_sync.h
similarity index 100%
rename from grid_make/hal/include/hal_rand_sync.h
rename to d51n20a/hal/include/hal_rand_sync.h
diff --git a/grid_make/hal/include/hal_sleep.h b/d51n20a/hal/include/hal_sleep.h
similarity index 100%
rename from grid_make/hal/include/hal_sleep.h
rename to d51n20a/hal/include/hal_sleep.h
diff --git a/grid_make/hal/include/hal_spi_m_async.h b/d51n20a/hal/include/hal_spi_m_async.h
similarity index 100%
rename from grid_make/hal/include/hal_spi_m_async.h
rename to d51n20a/hal/include/hal_spi_m_async.h
diff --git a/grid_make/hal/include/hal_spi_m_dma.h b/d51n20a/hal/include/hal_spi_m_dma.h
similarity index 100%
rename from grid_make/hal/include/hal_spi_m_dma.h
rename to d51n20a/hal/include/hal_spi_m_dma.h
diff --git a/grid_make/hal/include/hal_timer.h b/d51n20a/hal/include/hal_timer.h
similarity index 100%
rename from grid_make/hal/include/hal_timer.h
rename to d51n20a/hal/include/hal_timer.h
diff --git a/grid_make/hal/include/hal_usart_async.h b/d51n20a/hal/include/hal_usart_async.h
similarity index 100%
rename from grid_make/hal/include/hal_usart_async.h
rename to d51n20a/hal/include/hal_usart_async.h
diff --git a/grid_make/hal/include/hal_usart_sync.h b/d51n20a/hal/include/hal_usart_sync.h
similarity index 100%
rename from grid_make/hal/include/hal_usart_sync.h
rename to d51n20a/hal/include/hal_usart_sync.h
diff --git a/grid_make/hal/include/hal_usb_device.h b/d51n20a/hal/include/hal_usb_device.h
similarity index 100%
rename from grid_make/hal/include/hal_usb_device.h
rename to d51n20a/hal/include/hal_usb_device.h
diff --git a/grid_make/hal/include/hal_wdt.h b/d51n20a/hal/include/hal_wdt.h
similarity index 100%
rename from grid_make/hal/include/hal_wdt.h
rename to d51n20a/hal/include/hal_wdt.h
diff --git a/grid_make/hal/include/hpl_adc_async.h b/d51n20a/hal/include/hpl_adc_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_adc_async.h
rename to d51n20a/hal/include/hpl_adc_async.h
diff --git a/grid_make/hal/include/hpl_adc_dma.h b/d51n20a/hal/include/hpl_adc_dma.h
similarity index 100%
rename from grid_make/hal/include/hpl_adc_dma.h
rename to d51n20a/hal/include/hpl_adc_dma.h
diff --git a/grid_make/hal/include/hpl_adc_sync.h b/d51n20a/hal/include/hpl_adc_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_adc_sync.h
rename to d51n20a/hal/include/hpl_adc_sync.h
diff --git a/grid_make/hal/include/hpl_calendar.h b/d51n20a/hal/include/hpl_calendar.h
similarity index 100%
rename from grid_make/hal/include/hpl_calendar.h
rename to d51n20a/hal/include/hpl_calendar.h
diff --git a/grid_make/hal/include/hpl_cmcc.h b/d51n20a/hal/include/hpl_cmcc.h
similarity index 100%
rename from grid_make/hal/include/hpl_cmcc.h
rename to d51n20a/hal/include/hpl_cmcc.h
diff --git a/grid_make/hal/include/hpl_core.h b/d51n20a/hal/include/hpl_core.h
similarity index 100%
rename from grid_make/hal/include/hpl_core.h
rename to d51n20a/hal/include/hpl_core.h
diff --git a/grid_make/hal/include/hpl_crc_sync.h b/d51n20a/hal/include/hpl_crc_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_crc_sync.h
rename to d51n20a/hal/include/hpl_crc_sync.h
diff --git a/grid_make/hal/include/hpl_delay.h b/d51n20a/hal/include/hpl_delay.h
similarity index 100%
rename from grid_make/hal/include/hpl_delay.h
rename to d51n20a/hal/include/hpl_delay.h
diff --git a/grid_make/hal/include/hpl_dma.h b/d51n20a/hal/include/hpl_dma.h
similarity index 100%
rename from grid_make/hal/include/hpl_dma.h
rename to d51n20a/hal/include/hpl_dma.h
diff --git a/grid_make/hal/include/hpl_evsys.h b/d51n20a/hal/include/hpl_evsys.h
similarity index 100%
rename from grid_make/hal/include/hpl_evsys.h
rename to d51n20a/hal/include/hpl_evsys.h
diff --git a/grid_make/hal/include/hpl_ext_irq.h b/d51n20a/hal/include/hpl_ext_irq.h
similarity index 100%
rename from grid_make/hal/include/hpl_ext_irq.h
rename to d51n20a/hal/include/hpl_ext_irq.h
diff --git a/grid_make/hal/include/hpl_flash.h b/d51n20a/hal/include/hpl_flash.h
similarity index 100%
rename from grid_make/hal/include/hpl_flash.h
rename to d51n20a/hal/include/hpl_flash.h
diff --git a/grid_make/hal/include/hpl_gpio.h b/d51n20a/hal/include/hpl_gpio.h
similarity index 100%
rename from grid_make/hal/include/hpl_gpio.h
rename to d51n20a/hal/include/hpl_gpio.h
diff --git a/grid_make/hal/include/hpl_i2c_m_async.h b/d51n20a/hal/include/hpl_i2c_m_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_i2c_m_async.h
rename to d51n20a/hal/include/hpl_i2c_m_async.h
diff --git a/grid_make/hal/include/hpl_i2c_m_sync.h b/d51n20a/hal/include/hpl_i2c_m_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_i2c_m_sync.h
rename to d51n20a/hal/include/hpl_i2c_m_sync.h
diff --git a/grid_make/hal/include/hpl_i2c_s_async.h b/d51n20a/hal/include/hpl_i2c_s_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_i2c_s_async.h
rename to d51n20a/hal/include/hpl_i2c_s_async.h
diff --git a/grid_make/hal/include/hpl_i2c_s_sync.h b/d51n20a/hal/include/hpl_i2c_s_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_i2c_s_sync.h
rename to d51n20a/hal/include/hpl_i2c_s_sync.h
diff --git a/grid_make/hal/include/hpl_init.h b/d51n20a/hal/include/hpl_init.h
similarity index 100%
rename from grid_make/hal/include/hpl_init.h
rename to d51n20a/hal/include/hpl_init.h
diff --git a/grid_make/hal/include/hpl_irq.h b/d51n20a/hal/include/hpl_irq.h
similarity index 100%
rename from grid_make/hal/include/hpl_irq.h
rename to d51n20a/hal/include/hpl_irq.h
diff --git a/grid_make/hal/include/hpl_missing_features.h b/d51n20a/hal/include/hpl_missing_features.h
similarity index 100%
rename from grid_make/hal/include/hpl_missing_features.h
rename to d51n20a/hal/include/hpl_missing_features.h
diff --git a/grid_make/hal/include/hpl_pac.h b/d51n20a/hal/include/hpl_pac.h
similarity index 100%
rename from grid_make/hal/include/hpl_pac.h
rename to d51n20a/hal/include/hpl_pac.h
diff --git a/grid_make/hal/include/hpl_pwm.h b/d51n20a/hal/include/hpl_pwm.h
similarity index 100%
rename from grid_make/hal/include/hpl_pwm.h
rename to d51n20a/hal/include/hpl_pwm.h
diff --git a/grid_make/hal/include/hpl_qspi.h b/d51n20a/hal/include/hpl_qspi.h
similarity index 100%
rename from grid_make/hal/include/hpl_qspi.h
rename to d51n20a/hal/include/hpl_qspi.h
diff --git a/grid_make/hal/include/hpl_qspi_dma.h b/d51n20a/hal/include/hpl_qspi_dma.h
similarity index 100%
rename from grid_make/hal/include/hpl_qspi_dma.h
rename to d51n20a/hal/include/hpl_qspi_dma.h
diff --git a/grid_make/hal/include/hpl_qspi_sync.h b/d51n20a/hal/include/hpl_qspi_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_qspi_sync.h
rename to d51n20a/hal/include/hpl_qspi_sync.h
diff --git a/grid_make/hal/include/hpl_ramecc.h b/d51n20a/hal/include/hpl_ramecc.h
similarity index 100%
rename from grid_make/hal/include/hpl_ramecc.h
rename to d51n20a/hal/include/hpl_ramecc.h
diff --git a/grid_make/hal/include/hpl_rand_sync.h b/d51n20a/hal/include/hpl_rand_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_rand_sync.h
rename to d51n20a/hal/include/hpl_rand_sync.h
diff --git a/grid_make/hal/include/hpl_reset.h b/d51n20a/hal/include/hpl_reset.h
similarity index 100%
rename from grid_make/hal/include/hpl_reset.h
rename to d51n20a/hal/include/hpl_reset.h
diff --git a/grid_make/hal/include/hpl_sleep.h b/d51n20a/hal/include/hpl_sleep.h
similarity index 100%
rename from grid_make/hal/include/hpl_sleep.h
rename to d51n20a/hal/include/hpl_sleep.h
diff --git a/grid_make/hal/include/hpl_spi.h b/d51n20a/hal/include/hpl_spi.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi.h
rename to d51n20a/hal/include/hpl_spi.h
diff --git a/grid_make/hal/include/hpl_spi_async.h b/d51n20a/hal/include/hpl_spi_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_async.h
rename to d51n20a/hal/include/hpl_spi_async.h
diff --git a/grid_make/hal/include/hpl_spi_dma.h b/d51n20a/hal/include/hpl_spi_dma.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_dma.h
rename to d51n20a/hal/include/hpl_spi_dma.h
diff --git a/grid_make/hal/include/hpl_spi_m_async.h b/d51n20a/hal/include/hpl_spi_m_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_m_async.h
rename to d51n20a/hal/include/hpl_spi_m_async.h
diff --git a/grid_make/hal/include/hpl_spi_m_dma.h b/d51n20a/hal/include/hpl_spi_m_dma.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_m_dma.h
rename to d51n20a/hal/include/hpl_spi_m_dma.h
diff --git a/grid_make/hal/include/hpl_spi_m_sync.h b/d51n20a/hal/include/hpl_spi_m_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_m_sync.h
rename to d51n20a/hal/include/hpl_spi_m_sync.h
diff --git a/grid_make/hal/include/hpl_spi_s_async.h b/d51n20a/hal/include/hpl_spi_s_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_s_async.h
rename to d51n20a/hal/include/hpl_spi_s_async.h
diff --git a/grid_make/hal/include/hpl_spi_s_sync.h b/d51n20a/hal/include/hpl_spi_s_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_s_sync.h
rename to d51n20a/hal/include/hpl_spi_s_sync.h
diff --git a/grid_make/hal/include/hpl_spi_sync.h b/d51n20a/hal/include/hpl_spi_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_spi_sync.h
rename to d51n20a/hal/include/hpl_spi_sync.h
diff --git a/grid_make/hal/include/hpl_time_measure.h b/d51n20a/hal/include/hpl_time_measure.h
similarity index 100%
rename from grid_make/hal/include/hpl_time_measure.h
rename to d51n20a/hal/include/hpl_time_measure.h
diff --git a/grid_make/hal/include/hpl_timer.h b/d51n20a/hal/include/hpl_timer.h
similarity index 100%
rename from grid_make/hal/include/hpl_timer.h
rename to d51n20a/hal/include/hpl_timer.h
diff --git a/grid_make/hal/include/hpl_usart.h b/d51n20a/hal/include/hpl_usart.h
similarity index 100%
rename from grid_make/hal/include/hpl_usart.h
rename to d51n20a/hal/include/hpl_usart.h
diff --git a/grid_make/hal/include/hpl_usart_async.h b/d51n20a/hal/include/hpl_usart_async.h
similarity index 100%
rename from grid_make/hal/include/hpl_usart_async.h
rename to d51n20a/hal/include/hpl_usart_async.h
diff --git a/grid_make/hal/include/hpl_usart_sync.h b/d51n20a/hal/include/hpl_usart_sync.h
similarity index 100%
rename from grid_make/hal/include/hpl_usart_sync.h
rename to d51n20a/hal/include/hpl_usart_sync.h
diff --git a/grid_make/hal/include/hpl_usb.h b/d51n20a/hal/include/hpl_usb.h
similarity index 100%
rename from grid_make/hal/include/hpl_usb.h
rename to d51n20a/hal/include/hpl_usb.h
diff --git a/grid_make/hal/include/hpl_usb_device.h b/d51n20a/hal/include/hpl_usb_device.h
similarity index 100%
rename from grid_make/hal/include/hpl_usb_device.h
rename to d51n20a/hal/include/hpl_usb_device.h
diff --git a/grid_make/hal/include/hpl_usb_host.h b/d51n20a/hal/include/hpl_usb_host.h
similarity index 100%
rename from grid_make/hal/include/hpl_usb_host.h
rename to d51n20a/hal/include/hpl_usb_host.h
diff --git a/grid_make/hal/include/hpl_user_area.h b/d51n20a/hal/include/hpl_user_area.h
similarity index 100%
rename from grid_make/hal/include/hpl_user_area.h
rename to d51n20a/hal/include/hpl_user_area.h
diff --git a/grid_make/hal/include/hpl_wdt.h b/d51n20a/hal/include/hpl_wdt.h
similarity index 100%
rename from grid_make/hal/include/hpl_wdt.h
rename to d51n20a/hal/include/hpl_wdt.h
diff --git a/grid_make/hal/src/hal_adc_async.c b/d51n20a/hal/src/hal_adc_async.c
similarity index 100%
rename from grid_make/hal/src/hal_adc_async.c
rename to d51n20a/hal/src/hal_adc_async.c
diff --git a/grid_make/hal/src/hal_atomic.c b/d51n20a/hal/src/hal_atomic.c
similarity index 100%
rename from grid_make/hal/src/hal_atomic.c
rename to d51n20a/hal/src/hal_atomic.c
diff --git a/grid_make/hal/src/hal_cache.c b/d51n20a/hal/src/hal_cache.c
similarity index 100%
rename from grid_make/hal/src/hal_cache.c
rename to d51n20a/hal/src/hal_cache.c
diff --git a/grid_make/hal/src/hal_crc_sync.c b/d51n20a/hal/src/hal_crc_sync.c
similarity index 100%
rename from grid_make/hal/src/hal_crc_sync.c
rename to d51n20a/hal/src/hal_crc_sync.c
diff --git a/grid_make/hal/src/hal_delay.c b/d51n20a/hal/src/hal_delay.c
similarity index 100%
rename from grid_make/hal/src/hal_delay.c
rename to d51n20a/hal/src/hal_delay.c
diff --git a/grid_make/hal/src/hal_evsys.c b/d51n20a/hal/src/hal_evsys.c
similarity index 100%
rename from grid_make/hal/src/hal_evsys.c
rename to d51n20a/hal/src/hal_evsys.c
diff --git a/grid_make/hal/src/hal_ext_irq.c b/d51n20a/hal/src/hal_ext_irq.c
similarity index 100%
rename from grid_make/hal/src/hal_ext_irq.c
rename to d51n20a/hal/src/hal_ext_irq.c
diff --git a/grid_make/hal/src/hal_flash.c b/d51n20a/hal/src/hal_flash.c
similarity index 100%
rename from grid_make/hal/src/hal_flash.c
rename to d51n20a/hal/src/hal_flash.c
diff --git a/grid_make/hal/src/hal_gpio.c b/d51n20a/hal/src/hal_gpio.c
similarity index 100%
rename from grid_make/hal/src/hal_gpio.c
rename to d51n20a/hal/src/hal_gpio.c
diff --git a/grid_make/hal/src/hal_i2c_m_async.c b/d51n20a/hal/src/hal_i2c_m_async.c
similarity index 100%
rename from grid_make/hal/src/hal_i2c_m_async.c
rename to d51n20a/hal/src/hal_i2c_m_async.c
diff --git a/grid_make/hal/src/hal_init.c b/d51n20a/hal/src/hal_init.c
similarity index 100%
rename from grid_make/hal/src/hal_init.c
rename to d51n20a/hal/src/hal_init.c
diff --git a/grid_make/hal/src/hal_io.c b/d51n20a/hal/src/hal_io.c
similarity index 100%
rename from grid_make/hal/src/hal_io.c
rename to d51n20a/hal/src/hal_io.c
diff --git a/grid_make/hal/src/hal_qspi_dma.c b/d51n20a/hal/src/hal_qspi_dma.c
similarity index 100%
rename from grid_make/hal/src/hal_qspi_dma.c
rename to d51n20a/hal/src/hal_qspi_dma.c
diff --git a/grid_make/hal/src/hal_rand_sync.c b/d51n20a/hal/src/hal_rand_sync.c
similarity index 100%
rename from grid_make/hal/src/hal_rand_sync.c
rename to d51n20a/hal/src/hal_rand_sync.c
diff --git a/grid_make/hal/src/hal_sleep.c b/d51n20a/hal/src/hal_sleep.c
similarity index 100%
rename from grid_make/hal/src/hal_sleep.c
rename to d51n20a/hal/src/hal_sleep.c
diff --git a/grid_make/hal/src/hal_spi_m_async.c b/d51n20a/hal/src/hal_spi_m_async.c
similarity index 100%
rename from grid_make/hal/src/hal_spi_m_async.c
rename to d51n20a/hal/src/hal_spi_m_async.c
diff --git a/grid_make/hal/src/hal_spi_m_dma.c b/d51n20a/hal/src/hal_spi_m_dma.c
similarity index 100%
rename from grid_make/hal/src/hal_spi_m_dma.c
rename to d51n20a/hal/src/hal_spi_m_dma.c
diff --git a/grid_make/hal/src/hal_timer.c b/d51n20a/hal/src/hal_timer.c
similarity index 100%
rename from grid_make/hal/src/hal_timer.c
rename to d51n20a/hal/src/hal_timer.c
diff --git a/grid_make/hal/src/hal_usart_async.c b/d51n20a/hal/src/hal_usart_async.c
similarity index 100%
rename from grid_make/hal/src/hal_usart_async.c
rename to d51n20a/hal/src/hal_usart_async.c
diff --git a/grid_make/hal/src/hal_usart_sync.c b/d51n20a/hal/src/hal_usart_sync.c
similarity index 100%
rename from grid_make/hal/src/hal_usart_sync.c
rename to d51n20a/hal/src/hal_usart_sync.c
diff --git a/grid_make/hal/src/hal_usb_device.c b/d51n20a/hal/src/hal_usb_device.c
similarity index 100%
rename from grid_make/hal/src/hal_usb_device.c
rename to d51n20a/hal/src/hal_usb_device.c
diff --git a/grid_make/hal/src/hal_wdt.c b/d51n20a/hal/src/hal_wdt.c
similarity index 100%
rename from grid_make/hal/src/hal_wdt.c
rename to d51n20a/hal/src/hal_wdt.c
diff --git a/grid_make/hal/utils/include/compiler.h b/d51n20a/hal/utils/include/compiler.h
similarity index 100%
rename from grid_make/hal/utils/include/compiler.h
rename to d51n20a/hal/utils/include/compiler.h
diff --git a/grid_make/hal/utils/include/err_codes.h b/d51n20a/hal/utils/include/err_codes.h
similarity index 100%
rename from grid_make/hal/utils/include/err_codes.h
rename to d51n20a/hal/utils/include/err_codes.h
diff --git a/grid_make/hal/utils/include/events.h b/d51n20a/hal/utils/include/events.h
similarity index 100%
rename from grid_make/hal/utils/include/events.h
rename to d51n20a/hal/utils/include/events.h
diff --git a/grid_make/hal/utils/include/parts.h b/d51n20a/hal/utils/include/parts.h
similarity index 100%
rename from grid_make/hal/utils/include/parts.h
rename to d51n20a/hal/utils/include/parts.h
diff --git a/grid_make/hal/utils/include/utils.h b/d51n20a/hal/utils/include/utils.h
similarity index 100%
rename from grid_make/hal/utils/include/utils.h
rename to d51n20a/hal/utils/include/utils.h
diff --git a/grid_make/hal/utils/include/utils_assert.h b/d51n20a/hal/utils/include/utils_assert.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_assert.h
rename to d51n20a/hal/utils/include/utils_assert.h
diff --git a/grid_make/hal/utils/include/utils_decrement_macro.h b/d51n20a/hal/utils/include/utils_decrement_macro.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_decrement_macro.h
rename to d51n20a/hal/utils/include/utils_decrement_macro.h
diff --git a/grid_make/hal/utils/include/utils_event.h b/d51n20a/hal/utils/include/utils_event.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_event.h
rename to d51n20a/hal/utils/include/utils_event.h
diff --git a/grid_make/hal/utils/include/utils_increment_macro.h b/d51n20a/hal/utils/include/utils_increment_macro.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_increment_macro.h
rename to d51n20a/hal/utils/include/utils_increment_macro.h
diff --git a/grid_make/hal/utils/include/utils_list.h b/d51n20a/hal/utils/include/utils_list.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_list.h
rename to d51n20a/hal/utils/include/utils_list.h
diff --git a/grid_make/hal/utils/include/utils_recursion_macro.h b/d51n20a/hal/utils/include/utils_recursion_macro.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_recursion_macro.h
rename to d51n20a/hal/utils/include/utils_recursion_macro.h
diff --git a/grid_make/hal/utils/include/utils_repeat_macro.h b/d51n20a/hal/utils/include/utils_repeat_macro.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_repeat_macro.h
rename to d51n20a/hal/utils/include/utils_repeat_macro.h
diff --git a/grid_make/hal/utils/include/utils_ringbuffer.h b/d51n20a/hal/utils/include/utils_ringbuffer.h
similarity index 100%
rename from grid_make/hal/utils/include/utils_ringbuffer.h
rename to d51n20a/hal/utils/include/utils_ringbuffer.h
diff --git a/grid_make/hal/utils/src/utils_assert.c b/d51n20a/hal/utils/src/utils_assert.c
similarity index 100%
rename from grid_make/hal/utils/src/utils_assert.c
rename to d51n20a/hal/utils/src/utils_assert.c
diff --git a/grid_make/hal/utils/src/utils_event.c b/d51n20a/hal/utils/src/utils_event.c
similarity index 100%
rename from grid_make/hal/utils/src/utils_event.c
rename to d51n20a/hal/utils/src/utils_event.c
diff --git a/grid_make/hal/utils/src/utils_list.c b/d51n20a/hal/utils/src/utils_list.c
similarity index 100%
rename from grid_make/hal/utils/src/utils_list.c
rename to d51n20a/hal/utils/src/utils_list.c
diff --git a/grid_make/hal/utils/src/utils_ringbuffer.c b/d51n20a/hal/utils/src/utils_ringbuffer.c
similarity index 100%
rename from grid_make/hal/utils/src/utils_ringbuffer.c
rename to d51n20a/hal/utils/src/utils_ringbuffer.c
diff --git a/grid_make/hal/utils/src/utils_syscalls.c b/d51n20a/hal/utils/src/utils_syscalls.c
similarity index 100%
rename from grid_make/hal/utils/src/utils_syscalls.c
rename to d51n20a/hal/utils/src/utils_syscalls.c
diff --git a/grid_make/hpl/adc/hpl_adc.c b/d51n20a/hpl/adc/hpl_adc.c
similarity index 100%
rename from grid_make/hpl/adc/hpl_adc.c
rename to d51n20a/hpl/adc/hpl_adc.c
diff --git a/grid_make/hpl/adc/hpl_adc_base.h b/d51n20a/hpl/adc/hpl_adc_base.h
similarity index 100%
rename from grid_make/hpl/adc/hpl_adc_base.h
rename to d51n20a/hpl/adc/hpl_adc_base.h
diff --git a/grid_make/hpl/cmcc/hpl_cmcc.c b/d51n20a/hpl/cmcc/hpl_cmcc.c
similarity index 100%
rename from grid_make/hpl/cmcc/hpl_cmcc.c
rename to d51n20a/hpl/cmcc/hpl_cmcc.c
diff --git a/grid_make/hpl/core/hpl_core_m4.c b/d51n20a/hpl/core/hpl_core_m4.c
similarity index 100%
rename from grid_make/hpl/core/hpl_core_m4.c
rename to d51n20a/hpl/core/hpl_core_m4.c
diff --git a/grid_make/hpl/core/hpl_core_port.h b/d51n20a/hpl/core/hpl_core_port.h
similarity index 100%
rename from grid_make/hpl/core/hpl_core_port.h
rename to d51n20a/hpl/core/hpl_core_port.h
diff --git a/grid_make/hpl/core/hpl_init.c b/d51n20a/hpl/core/hpl_init.c
similarity index 100%
rename from grid_make/hpl/core/hpl_init.c
rename to d51n20a/hpl/core/hpl_init.c
diff --git a/grid_make/hpl/dmac/hpl_dmac.c b/d51n20a/hpl/dmac/hpl_dmac.c
similarity index 100%
rename from grid_make/hpl/dmac/hpl_dmac.c
rename to d51n20a/hpl/dmac/hpl_dmac.c
diff --git a/grid_make/hpl/dsu/hpl_dsu.c b/d51n20a/hpl/dsu/hpl_dsu.c
similarity index 100%
rename from grid_make/hpl/dsu/hpl_dsu.c
rename to d51n20a/hpl/dsu/hpl_dsu.c
diff --git a/grid_make/hpl/eic/hpl_eic.c b/d51n20a/hpl/eic/hpl_eic.c
similarity index 100%
rename from grid_make/hpl/eic/hpl_eic.c
rename to d51n20a/hpl/eic/hpl_eic.c
diff --git a/grid_make/hpl/evsys/hpl_evsys.c b/d51n20a/hpl/evsys/hpl_evsys.c
similarity index 100%
rename from grid_make/hpl/evsys/hpl_evsys.c
rename to d51n20a/hpl/evsys/hpl_evsys.c
diff --git a/grid_make/hpl/gclk/hpl_gclk.c b/d51n20a/hpl/gclk/hpl_gclk.c
similarity index 100%
rename from grid_make/hpl/gclk/hpl_gclk.c
rename to d51n20a/hpl/gclk/hpl_gclk.c
diff --git a/grid_make/hpl/gclk/hpl_gclk_base.h b/d51n20a/hpl/gclk/hpl_gclk_base.h
similarity index 100%
rename from grid_make/hpl/gclk/hpl_gclk_base.h
rename to d51n20a/hpl/gclk/hpl_gclk_base.h
diff --git a/grid_make/hpl/mclk/hpl_mclk.c b/d51n20a/hpl/mclk/hpl_mclk.c
similarity index 100%
rename from grid_make/hpl/mclk/hpl_mclk.c
rename to d51n20a/hpl/mclk/hpl_mclk.c
diff --git a/grid_make/hpl/nvmctrl/hpl_nvmctrl.c b/d51n20a/hpl/nvmctrl/hpl_nvmctrl.c
similarity index 100%
rename from grid_make/hpl/nvmctrl/hpl_nvmctrl.c
rename to d51n20a/hpl/nvmctrl/hpl_nvmctrl.c
diff --git a/grid_make/hpl/osc32kctrl/hpl_osc32kctrl.c b/d51n20a/hpl/osc32kctrl/hpl_osc32kctrl.c
similarity index 100%
rename from grid_make/hpl/osc32kctrl/hpl_osc32kctrl.c
rename to d51n20a/hpl/osc32kctrl/hpl_osc32kctrl.c
diff --git a/grid_make/hpl/oscctrl/hpl_oscctrl.c b/d51n20a/hpl/oscctrl/hpl_oscctrl.c
similarity index 100%
rename from grid_make/hpl/oscctrl/hpl_oscctrl.c
rename to d51n20a/hpl/oscctrl/hpl_oscctrl.c
diff --git a/grid_make/hpl/pac/hpl_pac.c b/d51n20a/hpl/pac/hpl_pac.c
similarity index 100%
rename from grid_make/hpl/pac/hpl_pac.c
rename to d51n20a/hpl/pac/hpl_pac.c
diff --git a/grid_make/hpl/pm/hpl_pm.c b/d51n20a/hpl/pm/hpl_pm.c
similarity index 100%
rename from grid_make/hpl/pm/hpl_pm.c
rename to d51n20a/hpl/pm/hpl_pm.c
diff --git a/grid_make/hpl/pm/hpl_pm_base.h b/d51n20a/hpl/pm/hpl_pm_base.h
similarity index 100%
rename from grid_make/hpl/pm/hpl_pm_base.h
rename to d51n20a/hpl/pm/hpl_pm_base.h
diff --git a/grid_make/hpl/port/hpl_gpio_base.h b/d51n20a/hpl/port/hpl_gpio_base.h
similarity index 100%
rename from grid_make/hpl/port/hpl_gpio_base.h
rename to d51n20a/hpl/port/hpl_gpio_base.h
diff --git a/grid_make/hpl/qspi/hpl_qspi.c b/d51n20a/hpl/qspi/hpl_qspi.c
similarity index 100%
rename from grid_make/hpl/qspi/hpl_qspi.c
rename to d51n20a/hpl/qspi/hpl_qspi.c
diff --git a/grid_make/hpl/ramecc/hpl_ramecc.c b/d51n20a/hpl/ramecc/hpl_ramecc.c
similarity index 100%
rename from grid_make/hpl/ramecc/hpl_ramecc.c
rename to d51n20a/hpl/ramecc/hpl_ramecc.c
diff --git a/grid_make/hpl/rtc/hpl_rtc.c b/d51n20a/hpl/rtc/hpl_rtc.c
similarity index 100%
rename from grid_make/hpl/rtc/hpl_rtc.c
rename to d51n20a/hpl/rtc/hpl_rtc.c
diff --git a/grid_make/hpl/rtc/hpl_rtc_base.h b/d51n20a/hpl/rtc/hpl_rtc_base.h
similarity index 100%
rename from grid_make/hpl/rtc/hpl_rtc_base.h
rename to d51n20a/hpl/rtc/hpl_rtc_base.h
diff --git a/grid_make/hpl/sercom/hpl_sercom.c b/d51n20a/hpl/sercom/hpl_sercom.c
similarity index 100%
rename from grid_make/hpl/sercom/hpl_sercom.c
rename to d51n20a/hpl/sercom/hpl_sercom.c
diff --git a/grid_make/hpl/systick/hpl_systick.c b/d51n20a/hpl/systick/hpl_systick.c
similarity index 100%
rename from grid_make/hpl/systick/hpl_systick.c
rename to d51n20a/hpl/systick/hpl_systick.c
diff --git a/grid_make/hpl/tc/hpl_tc.c b/d51n20a/hpl/tc/hpl_tc.c
similarity index 100%
rename from grid_make/hpl/tc/hpl_tc.c
rename to d51n20a/hpl/tc/hpl_tc.c
diff --git a/grid_make/hpl/tc/hpl_tc_base.h b/d51n20a/hpl/tc/hpl_tc_base.h
similarity index 100%
rename from grid_make/hpl/tc/hpl_tc_base.h
rename to d51n20a/hpl/tc/hpl_tc_base.h
diff --git a/grid_make/hpl/trng/hpl_trng.c b/d51n20a/hpl/trng/hpl_trng.c
similarity index 100%
rename from grid_make/hpl/trng/hpl_trng.c
rename to d51n20a/hpl/trng/hpl_trng.c
diff --git a/grid_make/hpl/usb/hpl_usb.c b/d51n20a/hpl/usb/hpl_usb.c
similarity index 100%
rename from grid_make/hpl/usb/hpl_usb.c
rename to d51n20a/hpl/usb/hpl_usb.c
diff --git a/grid_make/hpl/wdt/hpl_wdt.c b/d51n20a/hpl/wdt/hpl_wdt.c
similarity index 100%
rename from grid_make/hpl/wdt/hpl_wdt.c
rename to d51n20a/hpl/wdt/hpl_wdt.c
diff --git a/grid_make/hpl/wdt/hpl_wdt_base.h b/d51n20a/hpl/wdt/hpl_wdt_base.h
similarity index 100%
rename from grid_make/hpl/wdt/hpl_wdt_base.h
rename to d51n20a/hpl/wdt/hpl_wdt_base.h
diff --git a/grid_make/hri/hri_ac_d51.h b/d51n20a/hri/hri_ac_d51.h
similarity index 100%
rename from grid_make/hri/hri_ac_d51.h
rename to d51n20a/hri/hri_ac_d51.h
diff --git a/grid_make/hri/hri_adc_d51.h b/d51n20a/hri/hri_adc_d51.h
similarity index 100%
rename from grid_make/hri/hri_adc_d51.h
rename to d51n20a/hri/hri_adc_d51.h
diff --git a/grid_make/hri/hri_aes_d51.h b/d51n20a/hri/hri_aes_d51.h
similarity index 100%
rename from grid_make/hri/hri_aes_d51.h
rename to d51n20a/hri/hri_aes_d51.h
diff --git a/grid_make/hri/hri_ccl_d51.h b/d51n20a/hri/hri_ccl_d51.h
similarity index 100%
rename from grid_make/hri/hri_ccl_d51.h
rename to d51n20a/hri/hri_ccl_d51.h
diff --git a/grid_make/hri/hri_cmcc_d51.h b/d51n20a/hri/hri_cmcc_d51.h
similarity index 100%
rename from grid_make/hri/hri_cmcc_d51.h
rename to d51n20a/hri/hri_cmcc_d51.h
diff --git a/grid_make/hri/hri_d51.h b/d51n20a/hri/hri_d51.h
similarity index 100%
rename from grid_make/hri/hri_d51.h
rename to d51n20a/hri/hri_d51.h
diff --git a/grid_make/hri/hri_dac_d51.h b/d51n20a/hri/hri_dac_d51.h
similarity index 100%
rename from grid_make/hri/hri_dac_d51.h
rename to d51n20a/hri/hri_dac_d51.h
diff --git a/grid_make/hri/hri_dmac_d51.h b/d51n20a/hri/hri_dmac_d51.h
similarity index 100%
rename from grid_make/hri/hri_dmac_d51.h
rename to d51n20a/hri/hri_dmac_d51.h
diff --git a/grid_make/hri/hri_dsu_d51.h b/d51n20a/hri/hri_dsu_d51.h
similarity index 100%
rename from grid_make/hri/hri_dsu_d51.h
rename to d51n20a/hri/hri_dsu_d51.h
diff --git a/grid_make/hri/hri_eic_d51.h b/d51n20a/hri/hri_eic_d51.h
similarity index 100%
rename from grid_make/hri/hri_eic_d51.h
rename to d51n20a/hri/hri_eic_d51.h
diff --git a/grid_make/hri/hri_evsys_d51.h b/d51n20a/hri/hri_evsys_d51.h
similarity index 100%
rename from grid_make/hri/hri_evsys_d51.h
rename to d51n20a/hri/hri_evsys_d51.h
diff --git a/grid_make/hri/hri_freqm_d51.h b/d51n20a/hri/hri_freqm_d51.h
similarity index 100%
rename from grid_make/hri/hri_freqm_d51.h
rename to d51n20a/hri/hri_freqm_d51.h
diff --git a/grid_make/hri/hri_gclk_d51.h b/d51n20a/hri/hri_gclk_d51.h
similarity index 100%
rename from grid_make/hri/hri_gclk_d51.h
rename to d51n20a/hri/hri_gclk_d51.h
diff --git a/grid_make/hri/hri_hmatrixb_d51.h b/d51n20a/hri/hri_hmatrixb_d51.h
similarity index 100%
rename from grid_make/hri/hri_hmatrixb_d51.h
rename to d51n20a/hri/hri_hmatrixb_d51.h
diff --git a/grid_make/hri/hri_i2s_d51.h b/d51n20a/hri/hri_i2s_d51.h
similarity index 100%
rename from grid_make/hri/hri_i2s_d51.h
rename to d51n20a/hri/hri_i2s_d51.h
diff --git a/grid_make/hri/hri_icm_d51.h b/d51n20a/hri/hri_icm_d51.h
similarity index 100%
rename from grid_make/hri/hri_icm_d51.h
rename to d51n20a/hri/hri_icm_d51.h
diff --git a/grid_make/hri/hri_mclk_d51.h b/d51n20a/hri/hri_mclk_d51.h
similarity index 100%
rename from grid_make/hri/hri_mclk_d51.h
rename to d51n20a/hri/hri_mclk_d51.h
diff --git a/grid_make/hri/hri_nvmctrl_d51.h b/d51n20a/hri/hri_nvmctrl_d51.h
similarity index 100%
rename from grid_make/hri/hri_nvmctrl_d51.h
rename to d51n20a/hri/hri_nvmctrl_d51.h
diff --git a/grid_make/hri/hri_osc32kctrl_d51.h b/d51n20a/hri/hri_osc32kctrl_d51.h
similarity index 100%
rename from grid_make/hri/hri_osc32kctrl_d51.h
rename to d51n20a/hri/hri_osc32kctrl_d51.h
diff --git a/grid_make/hri/hri_oscctrl_d51.h b/d51n20a/hri/hri_oscctrl_d51.h
similarity index 100%
rename from grid_make/hri/hri_oscctrl_d51.h
rename to d51n20a/hri/hri_oscctrl_d51.h
diff --git a/grid_make/hri/hri_pac_d51.h b/d51n20a/hri/hri_pac_d51.h
similarity index 100%
rename from grid_make/hri/hri_pac_d51.h
rename to d51n20a/hri/hri_pac_d51.h
diff --git a/grid_make/hri/hri_pcc_d51.h b/d51n20a/hri/hri_pcc_d51.h
similarity index 100%
rename from grid_make/hri/hri_pcc_d51.h
rename to d51n20a/hri/hri_pcc_d51.h
diff --git a/grid_make/hri/hri_pdec_d51.h b/d51n20a/hri/hri_pdec_d51.h
similarity index 100%
rename from grid_make/hri/hri_pdec_d51.h
rename to d51n20a/hri/hri_pdec_d51.h
diff --git a/grid_make/hri/hri_pm_d51.h b/d51n20a/hri/hri_pm_d51.h
similarity index 100%
rename from grid_make/hri/hri_pm_d51.h
rename to d51n20a/hri/hri_pm_d51.h
diff --git a/grid_make/hri/hri_port_d51.h b/d51n20a/hri/hri_port_d51.h
similarity index 100%
rename from grid_make/hri/hri_port_d51.h
rename to d51n20a/hri/hri_port_d51.h
diff --git a/grid_make/hri/hri_qspi_d51.h b/d51n20a/hri/hri_qspi_d51.h
similarity index 100%
rename from grid_make/hri/hri_qspi_d51.h
rename to d51n20a/hri/hri_qspi_d51.h
diff --git a/grid_make/hri/hri_ramecc_d51.h b/d51n20a/hri/hri_ramecc_d51.h
similarity index 100%
rename from grid_make/hri/hri_ramecc_d51.h
rename to d51n20a/hri/hri_ramecc_d51.h
diff --git a/grid_make/hri/hri_rstc_d51.h b/d51n20a/hri/hri_rstc_d51.h
similarity index 100%
rename from grid_make/hri/hri_rstc_d51.h
rename to d51n20a/hri/hri_rstc_d51.h
diff --git a/grid_make/hri/hri_rtc_d51.h b/d51n20a/hri/hri_rtc_d51.h
similarity index 100%
rename from grid_make/hri/hri_rtc_d51.h
rename to d51n20a/hri/hri_rtc_d51.h
diff --git a/grid_make/hri/hri_sdhc_d51.h b/d51n20a/hri/hri_sdhc_d51.h
similarity index 100%
rename from grid_make/hri/hri_sdhc_d51.h
rename to d51n20a/hri/hri_sdhc_d51.h
diff --git a/grid_make/hri/hri_sercom_d51.h b/d51n20a/hri/hri_sercom_d51.h
similarity index 100%
rename from grid_make/hri/hri_sercom_d51.h
rename to d51n20a/hri/hri_sercom_d51.h
diff --git a/grid_make/hri/hri_supc_d51.h b/d51n20a/hri/hri_supc_d51.h
similarity index 100%
rename from grid_make/hri/hri_supc_d51.h
rename to d51n20a/hri/hri_supc_d51.h
diff --git a/grid_make/hri/hri_tc_d51.h b/d51n20a/hri/hri_tc_d51.h
similarity index 100%
rename from grid_make/hri/hri_tc_d51.h
rename to d51n20a/hri/hri_tc_d51.h
diff --git a/grid_make/hri/hri_tcc_d51.h b/d51n20a/hri/hri_tcc_d51.h
similarity index 100%
rename from grid_make/hri/hri_tcc_d51.h
rename to d51n20a/hri/hri_tcc_d51.h
diff --git a/grid_make/hri/hri_trng_d51.h b/d51n20a/hri/hri_trng_d51.h
similarity index 100%
rename from grid_make/hri/hri_trng_d51.h
rename to d51n20a/hri/hri_trng_d51.h
diff --git a/grid_make/hri/hri_usb_d51.h b/d51n20a/hri/hri_usb_d51.h
similarity index 100%
rename from grid_make/hri/hri_usb_d51.h
rename to d51n20a/hri/hri_usb_d51.h
diff --git a/grid_make/hri/hri_wdt_d51.h b/d51n20a/hri/hri_wdt_d51.h
similarity index 100%
rename from grid_make/hri/hri_wdt_d51.h
rename to d51n20a/hri/hri_wdt_d51.h
diff --git a/grid_make/main.c b/d51n20a/main.c
similarity index 100%
rename from grid_make/main.c
rename to d51n20a/main.c
diff --git a/grid_make/rtos_start.c b/d51n20a/rtos_start.c
similarity index 100%
rename from grid_make/rtos_start.c
rename to d51n20a/rtos_start.c
diff --git a/grid_make/rtos_start.h b/d51n20a/rtos_start.h
similarity index 100%
rename from grid_make/rtos_start.h
rename to d51n20a/rtos_start.h
diff --git a/grid_make/samd51a/armcc/Device/SAMD51/Source/ARM/startup_samd51.s b/d51n20a/samd51a/armcc/Device/SAMD51/Source/ARM/startup_samd51.s
similarity index 100%
rename from grid_make/samd51a/armcc/Device/SAMD51/Source/ARM/startup_samd51.s
rename to d51n20a/samd51a/armcc/Device/SAMD51/Source/ARM/startup_samd51.s
diff --git a/grid_make/samd51a/armcc/Device/SAMD51/Source/system_samd51.c b/d51n20a/samd51a/armcc/Device/SAMD51/Source/system_samd51.c
similarity index 100%
rename from grid_make/samd51a/armcc/Device/SAMD51/Source/system_samd51.c
rename to d51n20a/samd51a/armcc/Device/SAMD51/Source/system_samd51.c
diff --git a/grid_make/samd51a/gcc/gcc/samd51n20a_flash.ld b/d51n20a/samd51a/gcc/gcc/samd51n20a_flash.ld
similarity index 100%
rename from grid_make/samd51a/gcc/gcc/samd51n20a_flash.ld
rename to d51n20a/samd51a/gcc/gcc/samd51n20a_flash.ld
diff --git a/grid_make/samd51a/gcc/gcc/samd51n20a_sram.ld b/d51n20a/samd51a/gcc/gcc/samd51n20a_sram.ld
similarity index 100%
rename from grid_make/samd51a/gcc/gcc/samd51n20a_sram.ld
rename to d51n20a/samd51a/gcc/gcc/samd51n20a_sram.ld
diff --git a/grid_make/samd51a/gcc/gcc/startup_samd51.c b/d51n20a/samd51a/gcc/gcc/startup_samd51.c
similarity index 100%
rename from grid_make/samd51a/gcc/gcc/startup_samd51.c
rename to d51n20a/samd51a/gcc/gcc/startup_samd51.c
diff --git a/grid_make/samd51a/gcc/system_samd51.c b/d51n20a/samd51a/gcc/system_samd51.c
similarity index 100%
rename from grid_make/samd51a/gcc/system_samd51.c
rename to d51n20a/samd51a/gcc/system_samd51.c
diff --git a/grid_make/samd51a/include/component-version.h b/d51n20a/samd51a/include/component-version.h
similarity index 100%
rename from grid_make/samd51a/include/component-version.h
rename to d51n20a/samd51a/include/component-version.h
diff --git a/grid_make/samd51a/include/component/ac.h b/d51n20a/samd51a/include/component/ac.h
similarity index 100%
rename from grid_make/samd51a/include/component/ac.h
rename to d51n20a/samd51a/include/component/ac.h
diff --git a/grid_make/samd51a/include/component/adc.h b/d51n20a/samd51a/include/component/adc.h
similarity index 100%
rename from grid_make/samd51a/include/component/adc.h
rename to d51n20a/samd51a/include/component/adc.h
diff --git a/grid_make/samd51a/include/component/aes.h b/d51n20a/samd51a/include/component/aes.h
similarity index 100%
rename from grid_make/samd51a/include/component/aes.h
rename to d51n20a/samd51a/include/component/aes.h
diff --git a/grid_make/samd51a/include/component/can.h b/d51n20a/samd51a/include/component/can.h
similarity index 100%
rename from grid_make/samd51a/include/component/can.h
rename to d51n20a/samd51a/include/component/can.h
diff --git a/grid_make/samd51a/include/component/ccl.h b/d51n20a/samd51a/include/component/ccl.h
similarity index 100%
rename from grid_make/samd51a/include/component/ccl.h
rename to d51n20a/samd51a/include/component/ccl.h
diff --git a/grid_make/samd51a/include/component/cmcc.h b/d51n20a/samd51a/include/component/cmcc.h
similarity index 100%
rename from grid_make/samd51a/include/component/cmcc.h
rename to d51n20a/samd51a/include/component/cmcc.h
diff --git a/grid_make/samd51a/include/component/dac.h b/d51n20a/samd51a/include/component/dac.h
similarity index 100%
rename from grid_make/samd51a/include/component/dac.h
rename to d51n20a/samd51a/include/component/dac.h
diff --git a/grid_make/samd51a/include/component/dmac.h b/d51n20a/samd51a/include/component/dmac.h
similarity index 100%
rename from grid_make/samd51a/include/component/dmac.h
rename to d51n20a/samd51a/include/component/dmac.h
diff --git a/grid_make/samd51a/include/component/dsu.h b/d51n20a/samd51a/include/component/dsu.h
similarity index 100%
rename from grid_make/samd51a/include/component/dsu.h
rename to d51n20a/samd51a/include/component/dsu.h
diff --git a/grid_make/samd51a/include/component/eic.h b/d51n20a/samd51a/include/component/eic.h
similarity index 100%
rename from grid_make/samd51a/include/component/eic.h
rename to d51n20a/samd51a/include/component/eic.h
diff --git a/grid_make/samd51a/include/component/evsys.h b/d51n20a/samd51a/include/component/evsys.h
similarity index 100%
rename from grid_make/samd51a/include/component/evsys.h
rename to d51n20a/samd51a/include/component/evsys.h
diff --git a/grid_make/samd51a/include/component/freqm.h b/d51n20a/samd51a/include/component/freqm.h
similarity index 100%
rename from grid_make/samd51a/include/component/freqm.h
rename to d51n20a/samd51a/include/component/freqm.h
diff --git a/grid_make/samd51a/include/component/gclk.h b/d51n20a/samd51a/include/component/gclk.h
similarity index 100%
rename from grid_make/samd51a/include/component/gclk.h
rename to d51n20a/samd51a/include/component/gclk.h
diff --git a/grid_make/samd51a/include/component/hmatrixb.h b/d51n20a/samd51a/include/component/hmatrixb.h
similarity index 100%
rename from grid_make/samd51a/include/component/hmatrixb.h
rename to d51n20a/samd51a/include/component/hmatrixb.h
diff --git a/grid_make/samd51a/include/component/i2s.h b/d51n20a/samd51a/include/component/i2s.h
similarity index 100%
rename from grid_make/samd51a/include/component/i2s.h
rename to d51n20a/samd51a/include/component/i2s.h
diff --git a/grid_make/samd51a/include/component/icm.h b/d51n20a/samd51a/include/component/icm.h
similarity index 100%
rename from grid_make/samd51a/include/component/icm.h
rename to d51n20a/samd51a/include/component/icm.h
diff --git a/grid_make/samd51a/include/component/mclk.h b/d51n20a/samd51a/include/component/mclk.h
similarity index 100%
rename from grid_make/samd51a/include/component/mclk.h
rename to d51n20a/samd51a/include/component/mclk.h
diff --git a/grid_make/samd51a/include/component/nvmctrl.h b/d51n20a/samd51a/include/component/nvmctrl.h
similarity index 100%
rename from grid_make/samd51a/include/component/nvmctrl.h
rename to d51n20a/samd51a/include/component/nvmctrl.h
diff --git a/grid_make/samd51a/include/component/osc32kctrl.h b/d51n20a/samd51a/include/component/osc32kctrl.h
similarity index 100%
rename from grid_make/samd51a/include/component/osc32kctrl.h
rename to d51n20a/samd51a/include/component/osc32kctrl.h
diff --git a/grid_make/samd51a/include/component/oscctrl.h b/d51n20a/samd51a/include/component/oscctrl.h
similarity index 100%
rename from grid_make/samd51a/include/component/oscctrl.h
rename to d51n20a/samd51a/include/component/oscctrl.h
diff --git a/grid_make/samd51a/include/component/pac.h b/d51n20a/samd51a/include/component/pac.h
similarity index 100%
rename from grid_make/samd51a/include/component/pac.h
rename to d51n20a/samd51a/include/component/pac.h
diff --git a/grid_make/samd51a/include/component/pcc.h b/d51n20a/samd51a/include/component/pcc.h
similarity index 100%
rename from grid_make/samd51a/include/component/pcc.h
rename to d51n20a/samd51a/include/component/pcc.h
diff --git a/grid_make/samd51a/include/component/pdec.h b/d51n20a/samd51a/include/component/pdec.h
similarity index 100%
rename from grid_make/samd51a/include/component/pdec.h
rename to d51n20a/samd51a/include/component/pdec.h
diff --git a/grid_make/samd51a/include/component/pm.h b/d51n20a/samd51a/include/component/pm.h
similarity index 100%
rename from grid_make/samd51a/include/component/pm.h
rename to d51n20a/samd51a/include/component/pm.h
diff --git a/grid_make/samd51a/include/component/port.h b/d51n20a/samd51a/include/component/port.h
similarity index 100%
rename from grid_make/samd51a/include/component/port.h
rename to d51n20a/samd51a/include/component/port.h
diff --git a/grid_make/samd51a/include/component/qspi.h b/d51n20a/samd51a/include/component/qspi.h
similarity index 100%
rename from grid_make/samd51a/include/component/qspi.h
rename to d51n20a/samd51a/include/component/qspi.h
diff --git a/grid_make/samd51a/include/component/ramecc.h b/d51n20a/samd51a/include/component/ramecc.h
similarity index 100%
rename from grid_make/samd51a/include/component/ramecc.h
rename to d51n20a/samd51a/include/component/ramecc.h
diff --git a/grid_make/samd51a/include/component/rstc.h b/d51n20a/samd51a/include/component/rstc.h
similarity index 100%
rename from grid_make/samd51a/include/component/rstc.h
rename to d51n20a/samd51a/include/component/rstc.h
diff --git a/grid_make/samd51a/include/component/rtc.h b/d51n20a/samd51a/include/component/rtc.h
similarity index 100%
rename from grid_make/samd51a/include/component/rtc.h
rename to d51n20a/samd51a/include/component/rtc.h
diff --git a/grid_make/samd51a/include/component/sdhc.h b/d51n20a/samd51a/include/component/sdhc.h
similarity index 100%
rename from grid_make/samd51a/include/component/sdhc.h
rename to d51n20a/samd51a/include/component/sdhc.h
diff --git a/grid_make/samd51a/include/component/sercom.h b/d51n20a/samd51a/include/component/sercom.h
similarity index 100%
rename from grid_make/samd51a/include/component/sercom.h
rename to d51n20a/samd51a/include/component/sercom.h
diff --git a/grid_make/samd51a/include/component/supc.h b/d51n20a/samd51a/include/component/supc.h
similarity index 100%
rename from grid_make/samd51a/include/component/supc.h
rename to d51n20a/samd51a/include/component/supc.h
diff --git a/grid_make/samd51a/include/component/tc.h b/d51n20a/samd51a/include/component/tc.h
similarity index 100%
rename from grid_make/samd51a/include/component/tc.h
rename to d51n20a/samd51a/include/component/tc.h
diff --git a/grid_make/samd51a/include/component/tcc.h b/d51n20a/samd51a/include/component/tcc.h
similarity index 100%
rename from grid_make/samd51a/include/component/tcc.h
rename to d51n20a/samd51a/include/component/tcc.h
diff --git a/grid_make/samd51a/include/component/trng.h b/d51n20a/samd51a/include/component/trng.h
similarity index 100%
rename from grid_make/samd51a/include/component/trng.h
rename to d51n20a/samd51a/include/component/trng.h
diff --git a/grid_make/samd51a/include/component/usb.h b/d51n20a/samd51a/include/component/usb.h
similarity index 100%
rename from grid_make/samd51a/include/component/usb.h
rename to d51n20a/samd51a/include/component/usb.h
diff --git a/grid_make/samd51a/include/component/wdt.h b/d51n20a/samd51a/include/component/wdt.h
similarity index 100%
rename from grid_make/samd51a/include/component/wdt.h
rename to d51n20a/samd51a/include/component/wdt.h
diff --git a/grid_make/samd51a/include/instance/ac.h b/d51n20a/samd51a/include/instance/ac.h
similarity index 100%
rename from grid_make/samd51a/include/instance/ac.h
rename to d51n20a/samd51a/include/instance/ac.h
diff --git a/grid_make/samd51a/include/instance/adc0.h b/d51n20a/samd51a/include/instance/adc0.h
similarity index 100%
rename from grid_make/samd51a/include/instance/adc0.h
rename to d51n20a/samd51a/include/instance/adc0.h
diff --git a/grid_make/samd51a/include/instance/adc1.h b/d51n20a/samd51a/include/instance/adc1.h
similarity index 100%
rename from grid_make/samd51a/include/instance/adc1.h
rename to d51n20a/samd51a/include/instance/adc1.h
diff --git a/grid_make/samd51a/include/instance/aes.h b/d51n20a/samd51a/include/instance/aes.h
similarity index 100%
rename from grid_make/samd51a/include/instance/aes.h
rename to d51n20a/samd51a/include/instance/aes.h
diff --git a/grid_make/samd51a/include/instance/can0.h b/d51n20a/samd51a/include/instance/can0.h
similarity index 100%
rename from grid_make/samd51a/include/instance/can0.h
rename to d51n20a/samd51a/include/instance/can0.h
diff --git a/grid_make/samd51a/include/instance/can1.h b/d51n20a/samd51a/include/instance/can1.h
similarity index 100%
rename from grid_make/samd51a/include/instance/can1.h
rename to d51n20a/samd51a/include/instance/can1.h
diff --git a/grid_make/samd51a/include/instance/ccl.h b/d51n20a/samd51a/include/instance/ccl.h
similarity index 100%
rename from grid_make/samd51a/include/instance/ccl.h
rename to d51n20a/samd51a/include/instance/ccl.h
diff --git a/grid_make/samd51a/include/instance/cmcc.h b/d51n20a/samd51a/include/instance/cmcc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/cmcc.h
rename to d51n20a/samd51a/include/instance/cmcc.h
diff --git a/grid_make/samd51a/include/instance/dac.h b/d51n20a/samd51a/include/instance/dac.h
similarity index 100%
rename from grid_make/samd51a/include/instance/dac.h
rename to d51n20a/samd51a/include/instance/dac.h
diff --git a/grid_make/samd51a/include/instance/dmac.h b/d51n20a/samd51a/include/instance/dmac.h
similarity index 100%
rename from grid_make/samd51a/include/instance/dmac.h
rename to d51n20a/samd51a/include/instance/dmac.h
diff --git a/grid_make/samd51a/include/instance/dsu.h b/d51n20a/samd51a/include/instance/dsu.h
similarity index 100%
rename from grid_make/samd51a/include/instance/dsu.h
rename to d51n20a/samd51a/include/instance/dsu.h
diff --git a/grid_make/samd51a/include/instance/eic.h b/d51n20a/samd51a/include/instance/eic.h
similarity index 100%
rename from grid_make/samd51a/include/instance/eic.h
rename to d51n20a/samd51a/include/instance/eic.h
diff --git a/grid_make/samd51a/include/instance/evsys.h b/d51n20a/samd51a/include/instance/evsys.h
similarity index 100%
rename from grid_make/samd51a/include/instance/evsys.h
rename to d51n20a/samd51a/include/instance/evsys.h
diff --git a/grid_make/samd51a/include/instance/freqm.h b/d51n20a/samd51a/include/instance/freqm.h
similarity index 100%
rename from grid_make/samd51a/include/instance/freqm.h
rename to d51n20a/samd51a/include/instance/freqm.h
diff --git a/grid_make/samd51a/include/instance/gclk.h b/d51n20a/samd51a/include/instance/gclk.h
similarity index 100%
rename from grid_make/samd51a/include/instance/gclk.h
rename to d51n20a/samd51a/include/instance/gclk.h
diff --git a/grid_make/samd51a/include/instance/hmatrix.h b/d51n20a/samd51a/include/instance/hmatrix.h
similarity index 100%
rename from grid_make/samd51a/include/instance/hmatrix.h
rename to d51n20a/samd51a/include/instance/hmatrix.h
diff --git a/grid_make/samd51a/include/instance/i2s.h b/d51n20a/samd51a/include/instance/i2s.h
similarity index 100%
rename from grid_make/samd51a/include/instance/i2s.h
rename to d51n20a/samd51a/include/instance/i2s.h
diff --git a/grid_make/samd51a/include/instance/icm.h b/d51n20a/samd51a/include/instance/icm.h
similarity index 100%
rename from grid_make/samd51a/include/instance/icm.h
rename to d51n20a/samd51a/include/instance/icm.h
diff --git a/grid_make/samd51a/include/instance/mclk.h b/d51n20a/samd51a/include/instance/mclk.h
similarity index 100%
rename from grid_make/samd51a/include/instance/mclk.h
rename to d51n20a/samd51a/include/instance/mclk.h
diff --git a/grid_make/samd51a/include/instance/nvmctrl.h b/d51n20a/samd51a/include/instance/nvmctrl.h
similarity index 100%
rename from grid_make/samd51a/include/instance/nvmctrl.h
rename to d51n20a/samd51a/include/instance/nvmctrl.h
diff --git a/grid_make/samd51a/include/instance/osc32kctrl.h b/d51n20a/samd51a/include/instance/osc32kctrl.h
similarity index 100%
rename from grid_make/samd51a/include/instance/osc32kctrl.h
rename to d51n20a/samd51a/include/instance/osc32kctrl.h
diff --git a/grid_make/samd51a/include/instance/oscctrl.h b/d51n20a/samd51a/include/instance/oscctrl.h
similarity index 100%
rename from grid_make/samd51a/include/instance/oscctrl.h
rename to d51n20a/samd51a/include/instance/oscctrl.h
diff --git a/grid_make/samd51a/include/instance/pac.h b/d51n20a/samd51a/include/instance/pac.h
similarity index 100%
rename from grid_make/samd51a/include/instance/pac.h
rename to d51n20a/samd51a/include/instance/pac.h
diff --git a/grid_make/samd51a/include/instance/pcc.h b/d51n20a/samd51a/include/instance/pcc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/pcc.h
rename to d51n20a/samd51a/include/instance/pcc.h
diff --git a/grid_make/samd51a/include/instance/pdec.h b/d51n20a/samd51a/include/instance/pdec.h
similarity index 100%
rename from grid_make/samd51a/include/instance/pdec.h
rename to d51n20a/samd51a/include/instance/pdec.h
diff --git a/grid_make/samd51a/include/instance/pm.h b/d51n20a/samd51a/include/instance/pm.h
similarity index 100%
rename from grid_make/samd51a/include/instance/pm.h
rename to d51n20a/samd51a/include/instance/pm.h
diff --git a/grid_make/samd51a/include/instance/port.h b/d51n20a/samd51a/include/instance/port.h
similarity index 100%
rename from grid_make/samd51a/include/instance/port.h
rename to d51n20a/samd51a/include/instance/port.h
diff --git a/grid_make/samd51a/include/instance/pukcc.h b/d51n20a/samd51a/include/instance/pukcc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/pukcc.h
rename to d51n20a/samd51a/include/instance/pukcc.h
diff --git a/grid_make/samd51a/include/instance/qspi.h b/d51n20a/samd51a/include/instance/qspi.h
similarity index 100%
rename from grid_make/samd51a/include/instance/qspi.h
rename to d51n20a/samd51a/include/instance/qspi.h
diff --git a/grid_make/samd51a/include/instance/ramecc.h b/d51n20a/samd51a/include/instance/ramecc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/ramecc.h
rename to d51n20a/samd51a/include/instance/ramecc.h
diff --git a/grid_make/samd51a/include/instance/rstc.h b/d51n20a/samd51a/include/instance/rstc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/rstc.h
rename to d51n20a/samd51a/include/instance/rstc.h
diff --git a/grid_make/samd51a/include/instance/rtc.h b/d51n20a/samd51a/include/instance/rtc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/rtc.h
rename to d51n20a/samd51a/include/instance/rtc.h
diff --git a/grid_make/samd51a/include/instance/sdhc0.h b/d51n20a/samd51a/include/instance/sdhc0.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sdhc0.h
rename to d51n20a/samd51a/include/instance/sdhc0.h
diff --git a/grid_make/samd51a/include/instance/sdhc1.h b/d51n20a/samd51a/include/instance/sdhc1.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sdhc1.h
rename to d51n20a/samd51a/include/instance/sdhc1.h
diff --git a/grid_make/samd51a/include/instance/sercom0.h b/d51n20a/samd51a/include/instance/sercom0.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom0.h
rename to d51n20a/samd51a/include/instance/sercom0.h
diff --git a/grid_make/samd51a/include/instance/sercom1.h b/d51n20a/samd51a/include/instance/sercom1.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom1.h
rename to d51n20a/samd51a/include/instance/sercom1.h
diff --git a/grid_make/samd51a/include/instance/sercom2.h b/d51n20a/samd51a/include/instance/sercom2.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom2.h
rename to d51n20a/samd51a/include/instance/sercom2.h
diff --git a/grid_make/samd51a/include/instance/sercom3.h b/d51n20a/samd51a/include/instance/sercom3.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom3.h
rename to d51n20a/samd51a/include/instance/sercom3.h
diff --git a/grid_make/samd51a/include/instance/sercom4.h b/d51n20a/samd51a/include/instance/sercom4.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom4.h
rename to d51n20a/samd51a/include/instance/sercom4.h
diff --git a/grid_make/samd51a/include/instance/sercom5.h b/d51n20a/samd51a/include/instance/sercom5.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom5.h
rename to d51n20a/samd51a/include/instance/sercom5.h
diff --git a/grid_make/samd51a/include/instance/sercom6.h b/d51n20a/samd51a/include/instance/sercom6.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom6.h
rename to d51n20a/samd51a/include/instance/sercom6.h
diff --git a/grid_make/samd51a/include/instance/sercom7.h b/d51n20a/samd51a/include/instance/sercom7.h
similarity index 100%
rename from grid_make/samd51a/include/instance/sercom7.h
rename to d51n20a/samd51a/include/instance/sercom7.h
diff --git a/grid_make/samd51a/include/instance/supc.h b/d51n20a/samd51a/include/instance/supc.h
similarity index 100%
rename from grid_make/samd51a/include/instance/supc.h
rename to d51n20a/samd51a/include/instance/supc.h
diff --git a/grid_make/samd51a/include/instance/tc0.h b/d51n20a/samd51a/include/instance/tc0.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc0.h
rename to d51n20a/samd51a/include/instance/tc0.h
diff --git a/grid_make/samd51a/include/instance/tc1.h b/d51n20a/samd51a/include/instance/tc1.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc1.h
rename to d51n20a/samd51a/include/instance/tc1.h
diff --git a/grid_make/samd51a/include/instance/tc2.h b/d51n20a/samd51a/include/instance/tc2.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc2.h
rename to d51n20a/samd51a/include/instance/tc2.h
diff --git a/grid_make/samd51a/include/instance/tc3.h b/d51n20a/samd51a/include/instance/tc3.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc3.h
rename to d51n20a/samd51a/include/instance/tc3.h
diff --git a/grid_make/samd51a/include/instance/tc4.h b/d51n20a/samd51a/include/instance/tc4.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc4.h
rename to d51n20a/samd51a/include/instance/tc4.h
diff --git a/grid_make/samd51a/include/instance/tc5.h b/d51n20a/samd51a/include/instance/tc5.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc5.h
rename to d51n20a/samd51a/include/instance/tc5.h
diff --git a/grid_make/samd51a/include/instance/tc6.h b/d51n20a/samd51a/include/instance/tc6.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc6.h
rename to d51n20a/samd51a/include/instance/tc6.h
diff --git a/grid_make/samd51a/include/instance/tc7.h b/d51n20a/samd51a/include/instance/tc7.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tc7.h
rename to d51n20a/samd51a/include/instance/tc7.h
diff --git a/grid_make/samd51a/include/instance/tcc0.h b/d51n20a/samd51a/include/instance/tcc0.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tcc0.h
rename to d51n20a/samd51a/include/instance/tcc0.h
diff --git a/grid_make/samd51a/include/instance/tcc1.h b/d51n20a/samd51a/include/instance/tcc1.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tcc1.h
rename to d51n20a/samd51a/include/instance/tcc1.h
diff --git a/grid_make/samd51a/include/instance/tcc2.h b/d51n20a/samd51a/include/instance/tcc2.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tcc2.h
rename to d51n20a/samd51a/include/instance/tcc2.h
diff --git a/grid_make/samd51a/include/instance/tcc3.h b/d51n20a/samd51a/include/instance/tcc3.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tcc3.h
rename to d51n20a/samd51a/include/instance/tcc3.h
diff --git a/grid_make/samd51a/include/instance/tcc4.h b/d51n20a/samd51a/include/instance/tcc4.h
similarity index 100%
rename from grid_make/samd51a/include/instance/tcc4.h
rename to d51n20a/samd51a/include/instance/tcc4.h
diff --git a/grid_make/samd51a/include/instance/trng.h b/d51n20a/samd51a/include/instance/trng.h
similarity index 100%
rename from grid_make/samd51a/include/instance/trng.h
rename to d51n20a/samd51a/include/instance/trng.h
diff --git a/grid_make/samd51a/include/instance/usb.h b/d51n20a/samd51a/include/instance/usb.h
similarity index 100%
rename from grid_make/samd51a/include/instance/usb.h
rename to d51n20a/samd51a/include/instance/usb.h
diff --git a/grid_make/samd51a/include/instance/wdt.h b/d51n20a/samd51a/include/instance/wdt.h
similarity index 100%
rename from grid_make/samd51a/include/instance/wdt.h
rename to d51n20a/samd51a/include/instance/wdt.h
diff --git a/grid_make/samd51a/include/pio/samd51g18a.h b/d51n20a/samd51a/include/pio/samd51g18a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51g18a.h
rename to d51n20a/samd51a/include/pio/samd51g18a.h
diff --git a/grid_make/samd51a/include/pio/samd51g19a.h b/d51n20a/samd51a/include/pio/samd51g19a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51g19a.h
rename to d51n20a/samd51a/include/pio/samd51g19a.h
diff --git a/grid_make/samd51a/include/pio/samd51j18a.h b/d51n20a/samd51a/include/pio/samd51j18a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51j18a.h
rename to d51n20a/samd51a/include/pio/samd51j18a.h
diff --git a/grid_make/samd51a/include/pio/samd51j19a.h b/d51n20a/samd51a/include/pio/samd51j19a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51j19a.h
rename to d51n20a/samd51a/include/pio/samd51j19a.h
diff --git a/grid_make/samd51a/include/pio/samd51j20a.h b/d51n20a/samd51a/include/pio/samd51j20a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51j20a.h
rename to d51n20a/samd51a/include/pio/samd51j20a.h
diff --git a/grid_make/samd51a/include/pio/samd51n19a.h b/d51n20a/samd51a/include/pio/samd51n19a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51n19a.h
rename to d51n20a/samd51a/include/pio/samd51n19a.h
diff --git a/grid_make/samd51a/include/pio/samd51n20a.h b/d51n20a/samd51a/include/pio/samd51n20a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51n20a.h
rename to d51n20a/samd51a/include/pio/samd51n20a.h
diff --git a/grid_make/samd51a/include/pio/samd51p19a.h b/d51n20a/samd51a/include/pio/samd51p19a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51p19a.h
rename to d51n20a/samd51a/include/pio/samd51p19a.h
diff --git a/grid_make/samd51a/include/pio/samd51p20a.h b/d51n20a/samd51a/include/pio/samd51p20a.h
similarity index 100%
rename from grid_make/samd51a/include/pio/samd51p20a.h
rename to d51n20a/samd51a/include/pio/samd51p20a.h
diff --git a/grid_make/samd51a/include/sam.h b/d51n20a/samd51a/include/sam.h
similarity index 100%
rename from grid_make/samd51a/include/sam.h
rename to d51n20a/samd51a/include/sam.h
diff --git a/grid_make/samd51a/include/samd51.h b/d51n20a/samd51a/include/samd51.h
similarity index 100%
rename from grid_make/samd51a/include/samd51.h
rename to d51n20a/samd51a/include/samd51.h
diff --git a/grid_make/samd51a/include/samd51g18a.h b/d51n20a/samd51a/include/samd51g18a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51g18a.h
rename to d51n20a/samd51a/include/samd51g18a.h
diff --git a/grid_make/samd51a/include/samd51g19a.h b/d51n20a/samd51a/include/samd51g19a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51g19a.h
rename to d51n20a/samd51a/include/samd51g19a.h
diff --git a/grid_make/samd51a/include/samd51j18a.h b/d51n20a/samd51a/include/samd51j18a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51j18a.h
rename to d51n20a/samd51a/include/samd51j18a.h
diff --git a/grid_make/samd51a/include/samd51j19a.h b/d51n20a/samd51a/include/samd51j19a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51j19a.h
rename to d51n20a/samd51a/include/samd51j19a.h
diff --git a/grid_make/samd51a/include/samd51j20a.h b/d51n20a/samd51a/include/samd51j20a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51j20a.h
rename to d51n20a/samd51a/include/samd51j20a.h
diff --git a/grid_make/samd51a/include/samd51n19a.h b/d51n20a/samd51a/include/samd51n19a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51n19a.h
rename to d51n20a/samd51a/include/samd51n19a.h
diff --git a/grid_make/samd51a/include/samd51n20a.h b/d51n20a/samd51a/include/samd51n20a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51n20a.h
rename to d51n20a/samd51a/include/samd51n20a.h
diff --git a/grid_make/samd51a/include/samd51p19a.h b/d51n20a/samd51a/include/samd51p19a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51p19a.h
rename to d51n20a/samd51a/include/samd51p19a.h
diff --git a/grid_make/samd51a/include/samd51p20a.h b/d51n20a/samd51a/include/samd51p20a.h
similarity index 100%
rename from grid_make/samd51a/include/samd51p20a.h
rename to d51n20a/samd51a/include/samd51p20a.h
diff --git a/grid_make/samd51a/include/system_samd51.h b/d51n20a/samd51a/include/system_samd51.h
similarity index 100%
rename from grid_make/samd51a/include/system_samd51.h
rename to d51n20a/samd51a/include/system_samd51.h
diff --git a/grid_make/stdio_redirect/gcc/read.c b/d51n20a/stdio_redirect/gcc/read.c
similarity index 100%
rename from grid_make/stdio_redirect/gcc/read.c
rename to d51n20a/stdio_redirect/gcc/read.c
diff --git a/grid_make/stdio_redirect/gcc/write.c b/d51n20a/stdio_redirect/gcc/write.c
similarity index 100%
rename from grid_make/stdio_redirect/gcc/write.c
rename to d51n20a/stdio_redirect/gcc/write.c
diff --git a/grid_make/stdio_redirect/iar/read.c b/d51n20a/stdio_redirect/iar/read.c
similarity index 100%
rename from grid_make/stdio_redirect/iar/read.c
rename to d51n20a/stdio_redirect/iar/read.c
diff --git a/grid_make/stdio_redirect/iar/write.c b/d51n20a/stdio_redirect/iar/write.c
similarity index 100%
rename from grid_make/stdio_redirect/iar/write.c
rename to d51n20a/stdio_redirect/iar/write.c
diff --git a/grid_make/stdio_redirect/keil/Retarget.c b/d51n20a/stdio_redirect/keil/Retarget.c
similarity index 100%
rename from grid_make/stdio_redirect/keil/Retarget.c
rename to d51n20a/stdio_redirect/keil/Retarget.c
diff --git a/grid_make/stdio_redirect/stdio_io.c b/d51n20a/stdio_redirect/stdio_io.c
similarity index 100%
rename from grid_make/stdio_redirect/stdio_io.c
rename to d51n20a/stdio_redirect/stdio_io.c
diff --git a/grid_make/stdio_redirect/stdio_io.h b/d51n20a/stdio_redirect/stdio_io.h
similarity index 100%
rename from grid_make/stdio_redirect/stdio_io.h
rename to d51n20a/stdio_redirect/stdio_io.h
diff --git a/grid_make/stdio_start.c b/d51n20a/stdio_start.c
similarity index 100%
rename from grid_make/stdio_start.c
rename to d51n20a/stdio_start.c
diff --git a/grid_make/stdio_start.h b/d51n20a/stdio_start.h
similarity index 100%
rename from grid_make/stdio_start.h
rename to d51n20a/stdio_start.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/License/license.txt b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/License/license.txt
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/License/license.txt
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/License/license.txt
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/croutine.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/croutine.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/croutine.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/croutine.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/event_groups.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/event_groups.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/event_groups.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/event_groups.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/FreeRTOS.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/FreeRTOS.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/FreeRTOS.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/FreeRTOS.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/StackMacros.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/StackMacros.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/StackMacros.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/StackMacros.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/croutine.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/croutine.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/croutine.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/croutine.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/deprecated_definitions.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/deprecated_definitions.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/deprecated_definitions.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/deprecated_definitions.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/event_groups.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/event_groups.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/event_groups.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/event_groups.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/list.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/list.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/list.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/list.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/message_buffer.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/message_buffer.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/message_buffer.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/message_buffer.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/mpu_wrappers.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/mpu_wrappers.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/mpu_wrappers.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/mpu_wrappers.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/portable.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/portable.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/portable.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/portable.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/projdefs.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/projdefs.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/projdefs.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/projdefs.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/queue.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/queue.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/queue.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/queue.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/semphr.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/semphr.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/semphr.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/semphr.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stack_macros.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stack_macros.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stack_macros.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stack_macros.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stdint.readme b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stdint.readme
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stdint.readme
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stdint.readme
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stream_buffer.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stream_buffer.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stream_buffer.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/stream_buffer.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/task.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/task.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/task.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/task.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/timers.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/timers.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/timers.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/include/timers.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/list.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/list.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/list.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/list.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/port.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/port.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/port.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/port.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/portmacro.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/portmacro.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/portmacro.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/GCC/ARM_CM4F/portmacro.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/port.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/port.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/port.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/port.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portasm.s b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portasm.s
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portasm.s
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portasm.s
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portmacro.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portmacro.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portmacro.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/IAR/ARM_CM4F/portmacro.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/MemMang/heap_4.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/MemMang/heap_4.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/MemMang/heap_4.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/MemMang/heap_4.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/port.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/port.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/port.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/port.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/portmacro.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/portmacro.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/portmacro.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/RVDS/ARM_CM4F/portmacro.h
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/readme.txt b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/readme.txt
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/readme.txt
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/portable/readme.txt
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/queue.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/queue.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/queue.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/queue.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/readme.txt b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/readme.txt
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/readme.txt
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/readme.txt
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/stream_buffer.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/stream_buffer.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/stream_buffer.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/stream_buffer.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/tasks.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/tasks.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/tasks.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/tasks.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/timers.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/timers.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/timers.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/Source/timers.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/readme.txt b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/readme.txt
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/readme.txt
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/readme.txt
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.c b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.c
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.c
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.c
diff --git a/grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.h b/d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.h
rename to d51n20a/thirdparty/RTOS/freertos/FreeRTOSV10.0.0/rtos_port.h
diff --git a/grid_make/thirdparty/RTOS/hal_rtos.h b/d51n20a/thirdparty/RTOS/hal_rtos.h
similarity index 100%
rename from grid_make/thirdparty/RTOS/hal_rtos.h
rename to d51n20a/thirdparty/RTOS/hal_rtos.h
diff --git a/grid_make/usb/class/cdc/device/cdcdf_acm.c b/d51n20a/usb/class/cdc/device/cdcdf_acm.c
similarity index 100%
rename from grid_make/usb/class/cdc/device/cdcdf_acm.c
rename to d51n20a/usb/class/cdc/device/cdcdf_acm.c
diff --git a/grid_make/usb/class/cdc/device/cdcdf_acm.h b/d51n20a/usb/class/cdc/device/cdcdf_acm.h
similarity index 100%
rename from grid_make/usb/class/cdc/device/cdcdf_acm.h
rename to d51n20a/usb/class/cdc/device/cdcdf_acm.h
diff --git a/grid_make/usb/class/cdc/usb_protocol_cdc.h b/d51n20a/usb/class/cdc/usb_protocol_cdc.h
similarity index 100%
rename from grid_make/usb/class/cdc/usb_protocol_cdc.h
rename to d51n20a/usb/class/cdc/usb_protocol_cdc.h
diff --git a/grid_make/usb/class/composite/device/composite_desc.h b/d51n20a/usb/class/composite/device/composite_desc.h
similarity index 100%
rename from grid_make/usb/class/composite/device/composite_desc.h
rename to d51n20a/usb/class/composite/device/composite_desc.h
diff --git a/grid_make/usb/class/composite/device/composite_desc_suku.h b/d51n20a/usb/class/composite/device/composite_desc_suku.h
similarity index 100%
rename from grid_make/usb/class/composite/device/composite_desc_suku.h
rename to d51n20a/usb/class/composite/device/composite_desc_suku.h
diff --git a/grid_make/usb/class/hid/device/hiddf_generic.c b/d51n20a/usb/class/hid/device/hiddf_generic.c
similarity index 100%
rename from grid_make/usb/class/hid/device/hiddf_generic.c
rename to d51n20a/usb/class/hid/device/hiddf_generic.c
diff --git a/grid_make/usb/class/hid/device/hiddf_generic.h b/d51n20a/usb/class/hid/device/hiddf_generic.h
similarity index 100%
rename from grid_make/usb/class/hid/device/hiddf_generic.h
rename to d51n20a/usb/class/hid/device/hiddf_generic.h
diff --git a/grid_make/usb/class/hid/device/hiddf_keyboard.c b/d51n20a/usb/class/hid/device/hiddf_keyboard.c
similarity index 100%
rename from grid_make/usb/class/hid/device/hiddf_keyboard.c
rename to d51n20a/usb/class/hid/device/hiddf_keyboard.c
diff --git a/grid_make/usb/class/hid/device/hiddf_keyboard.h b/d51n20a/usb/class/hid/device/hiddf_keyboard.h
similarity index 100%
rename from grid_make/usb/class/hid/device/hiddf_keyboard.h
rename to d51n20a/usb/class/hid/device/hiddf_keyboard.h
diff --git a/grid_make/usb/class/hid/device/hiddf_mouse.c b/d51n20a/usb/class/hid/device/hiddf_mouse.c
similarity index 100%
rename from grid_make/usb/class/hid/device/hiddf_mouse.c
rename to d51n20a/usb/class/hid/device/hiddf_mouse.c
diff --git a/grid_make/usb/class/hid/device/hiddf_mouse.h b/d51n20a/usb/class/hid/device/hiddf_mouse.h
similarity index 100%
rename from grid_make/usb/class/hid/device/hiddf_mouse.h
rename to d51n20a/usb/class/hid/device/hiddf_mouse.h
diff --git a/grid_make/usb/class/hid/usb_protocol_hid.h b/d51n20a/usb/class/hid/usb_protocol_hid.h
similarity index 100%
rename from grid_make/usb/class/hid/usb_protocol_hid.h
rename to d51n20a/usb/class/hid/usb_protocol_hid.h
diff --git a/grid_make/usb/class/hub/usb_protocol_hub.h b/d51n20a/usb/class/hub/usb_protocol_hub.h
similarity index 100%
rename from grid_make/usb/class/hub/usb_protocol_hub.h
rename to d51n20a/usb/class/hub/usb_protocol_hub.h
diff --git a/grid_make/usb/class/msc/device/mscdf.c b/d51n20a/usb/class/msc/device/mscdf.c
similarity index 100%
rename from grid_make/usb/class/msc/device/mscdf.c
rename to d51n20a/usb/class/msc/device/mscdf.c
diff --git a/grid_make/usb/class/msc/device/mscdf.h b/d51n20a/usb/class/msc/device/mscdf.h
similarity index 100%
rename from grid_make/usb/class/msc/device/mscdf.h
rename to d51n20a/usb/class/msc/device/mscdf.h
diff --git a/grid_make/usb/class/msc/sbc_protocol.h b/d51n20a/usb/class/msc/sbc_protocol.h
similarity index 100%
rename from grid_make/usb/class/msc/sbc_protocol.h
rename to d51n20a/usb/class/msc/sbc_protocol.h
diff --git a/grid_make/usb/class/msc/spc_protocol.h b/d51n20a/usb/class/msc/spc_protocol.h
similarity index 100%
rename from grid_make/usb/class/msc/spc_protocol.h
rename to d51n20a/usb/class/msc/spc_protocol.h
diff --git a/grid_make/usb/class/msc/usb_protocol_msc.h b/d51n20a/usb/class/msc/usb_protocol_msc.h
similarity index 100%
rename from grid_make/usb/class/msc/usb_protocol_msc.h
rename to d51n20a/usb/class/msc/usb_protocol_msc.h
diff --git a/grid_make/usb/class/vendor/usb_protocol_vendor.h b/d51n20a/usb/class/vendor/usb_protocol_vendor.h
similarity index 100%
rename from grid_make/usb/class/vendor/usb_protocol_vendor.h
rename to d51n20a/usb/class/vendor/usb_protocol_vendor.h
diff --git a/grid_make/usb/device/usbdc.c b/d51n20a/usb/device/usbdc.c
similarity index 100%
rename from grid_make/usb/device/usbdc.c
rename to d51n20a/usb/device/usbdc.c
diff --git a/grid_make/usb/device/usbdc.h b/d51n20a/usb/device/usbdc.h
similarity index 100%
rename from grid_make/usb/device/usbdc.h
rename to d51n20a/usb/device/usbdc.h
diff --git a/grid_make/usb/usb_atmel.h b/d51n20a/usb/usb_atmel.h
similarity index 100%
rename from grid_make/usb/usb_atmel.h
rename to d51n20a/usb/usb_atmel.h
diff --git a/grid_make/usb/usb_debug.h b/d51n20a/usb/usb_debug.h
similarity index 100%
rename from grid_make/usb/usb_debug.h
rename to d51n20a/usb/usb_debug.h
diff --git a/grid_make/usb/usb_includes.h b/d51n20a/usb/usb_includes.h
similarity index 100%
rename from grid_make/usb/usb_includes.h
rename to d51n20a/usb/usb_includes.h
diff --git a/grid_make/usb/usb_protocol.c b/d51n20a/usb/usb_protocol.c
similarity index 100%
rename from grid_make/usb/usb_protocol.c
rename to d51n20a/usb/usb_protocol.c
diff --git a/grid_make/usb/usb_protocol.h b/d51n20a/usb/usb_protocol.h
similarity index 100%
rename from grid_make/usb/usb_protocol.h
rename to d51n20a/usb/usb_protocol.h
diff --git a/grid_make/usb_start.c b/d51n20a/usb_start.c
similarity index 100%
rename from grid_make/usb_start.c
rename to d51n20a/usb_start.c
diff --git a/grid_make/usb_start.h b/d51n20a/usb_start.h
similarity index 100%
rename from grid_make/usb_start.h
rename to d51n20a/usb_start.h
diff --git a/diagram.svg b/diagram.svg
deleted file mode 100644
index 5a5ed8537..000000000
--- a/diagram.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docker_build.sh b/docker_build.sh
index b5344f81b..e7e9b19f8 100755
--- a/docker_build.sh
+++ b/docker_build.sh
@@ -1,14 +1,12 @@
-#!/bin/bash
+#!/bin/sh
-# Check if Docker is installed
if command -v docker &> /dev/null; then
- CONTAINER_TOOL="docker"
-# Check if Podman is installed
+ CONTAINER_CMD="docker"
elif command -v podman &> /dev/null; then
- CONTAINER_TOOL="podman"
+ CONTAINER_CMD="podman"
else
- echo "Neither Docker nor Podman found. Please install one of them to proceed."
- exit 1
+ echo "Neither docker nor podman found. Please install either to proceed."
+ exit 1
fi
-$CONTAINER_TOOL build --squash -t idf-pico-merged .
+$CONTAINER_CMD build --squash -t grid-fw-build .
diff --git a/docker_clean.sh b/docker_clean.sh
index 29848c6ba..b1db25ca6 100755
--- a/docker_clean.sh
+++ b/docker_clean.sh
@@ -1,3 +1,28 @@
-#!/bin/bash
-CONTAINER_TOOL=$(command -v docker || command -v podman)
-$CONTAINER_TOOL rm -f $($CONTAINER_TOOL ps -a -q --filter ancestor=idf-pico-merged) 2>/dev/null; $CONTAINER_TOOL rmi idf-pico-merged
+#!/bin/sh
+
+if command -v docker 1> /dev/null; then
+ CONTAINER_CMD="docker"
+elif command -v podman 1> /dev/null; then
+ CONTAINER_CMD="podman"
+else
+ echo "Neither docker nor podman found. Please install either to proceed."
+ exit 1
+fi
+
+IMAGE=${IMAGE:-grid-fw-build}
+
+# Check that the image exists
+if [ -z "$(sudo docker images -q "$IMAGE")" ] ; then
+ echo "Image does not seem to exist."
+ exit 1
+fi
+
+# Remove containers that share the image as an ancestor
+CONTAINER_IDS="$($CONTAINER_CMD ps -a -q --filter ancestor="$IMAGE")"
+if [ -n "$CONTAINER_IDS" ] ; then
+ echo "$CONTAINER_IDS"
+ $CONTAINER_CMD rm -f $CONTAINER_IDS
+fi
+
+# Remove image
+$CONTAINER_CMD rmi "$IMAGE"
diff --git a/docker_start.sh b/docker_start.sh
index 563b39aea..fe2dde66e 100755
--- a/docker_start.sh
+++ b/docker_start.sh
@@ -1,16 +1,14 @@
-#!/bin/bash
+#!/bin/sh
-# Check if Docker is installed
if command -v docker &> /dev/null; then
- CONTAINER_TOOL="docker"
- ARGS="--privileged"
-# Check if Podman is installed
+ CONTAINER_CMD="docker"
+ ARGS="--privileged"
elif command -v podman &> /dev/null; then
- CONTAINER_TOOL="podman"
- ARGS="--group-add keep-groups --security-opt label=disable"
+ CONTAINER_CMD="podman"
+ ARGS="--group-add keep-groups --security-opt label=disable"
else
- echo "Neither Docker nor Podman found. Please install one of them to proceed."
- exit 1
+ echo "Neither docker nor podman found. Please install either to proceed."
+ exit 1
fi
-$CONTAINER_TOOL run $ARGS --network=host -it -v /dev:/dev -v $PWD:/project -w /project/ idf-pico-merged
+$CONTAINER_CMD run $ARGS --network=host -it -v /dev:/dev -v $PWD:/project -w /project/ grid-fw-build
diff --git a/esp32s3/.gitignore b/esp32s3/.gitignore
new file mode 100644
index 000000000..94c962fbe
--- /dev/null
+++ b/esp32s3/.gitignore
@@ -0,0 +1,13 @@
+!CMakeLists.txt
+!sdkconfig
+
+!bootloader
+!bootloader/**
+
+!components
+!components/**
+
+!main
+!main/CMakeLists.txt
+!main/grid_fw.c
+!main/idf_component.yml
diff --git a/grid_esp/CMakeLists.txt b/esp32s3/CMakeLists.txt
similarity index 100%
rename from grid_esp/CMakeLists.txt
rename to esp32s3/CMakeLists.txt
diff --git a/grid_esp/bootloader/Guide for production testing on Windows V2.pdf b/esp32s3/bootloader/Guide for production testing on Windows V2.pdf
similarity index 100%
rename from grid_esp/bootloader/Guide for production testing on Windows V2.pdf
rename to esp32s3/bootloader/Guide for production testing on Windows V2.pdf
diff --git a/grid_esp/bootloader/README.md b/esp32s3/bootloader/README.md
similarity index 100%
rename from grid_esp/bootloader/README.md
rename to esp32s3/bootloader/README.md
diff --git a/grid_esp/bootloader/apps/blinky.uf2 b/esp32s3/bootloader/apps/blinky.uf2
similarity index 100%
rename from grid_esp/bootloader/apps/blinky.uf2
rename to esp32s3/bootloader/apps/blinky.uf2
diff --git a/grid_esp/bootloader/apps/update-tinyuf2.uf2 b/esp32s3/bootloader/apps/update-tinyuf2.uf2
similarity index 100%
rename from grid_esp/bootloader/apps/update-tinyuf2.uf2
rename to esp32s3/bootloader/apps/update-tinyuf2.uf2
diff --git a/grid_esp/bootloader/bootloader.bin b/esp32s3/bootloader/bootloader.bin
similarity index 100%
rename from grid_esp/bootloader/bootloader.bin
rename to esp32s3/bootloader/bootloader.bin
diff --git a/grid_esp/bootloader/burn_test_firmware.sh b/esp32s3/bootloader/burn_test_firmware.sh
similarity index 100%
rename from grid_esp/bootloader/burn_test_firmware.sh
rename to esp32s3/bootloader/burn_test_firmware.sh
diff --git a/grid_esp/bootloader/combined.bin b/esp32s3/bootloader/combined.bin
similarity index 100%
rename from grid_esp/bootloader/combined.bin
rename to esp32s3/bootloader/combined.bin
diff --git a/grid_esp/bootloader/esptool.exe b/esp32s3/bootloader/esptool.exe
similarity index 100%
rename from grid_esp/bootloader/esptool.exe
rename to esp32s3/bootloader/esptool.exe
diff --git a/grid_esp/bootloader/flash_args b/esp32s3/bootloader/flash_args
similarity index 100%
rename from grid_esp/bootloader/flash_args
rename to esp32s3/bootloader/flash_args
diff --git a/grid_esp/bootloader/grid_esp32_release_2024-04-23-1133.uf2 b/esp32s3/bootloader/grid_esp32_release_2024-04-23-1133.uf2
similarity index 100%
rename from grid_esp/bootloader/grid_esp32_release_2024-04-23-1133.uf2
rename to esp32s3/bootloader/grid_esp32_release_2024-04-23-1133.uf2
diff --git a/grid_esp/bootloader/grid_fw_1_2_36.bin b/esp32s3/bootloader/grid_fw_1_2_36.bin
similarity index 100%
rename from grid_esp/bootloader/grid_fw_1_2_36.bin
rename to esp32s3/bootloader/grid_fw_1_2_36.bin
diff --git a/grid_esp/bootloader/grid_fw_1_3_1.bin b/esp32s3/bootloader/grid_fw_1_3_1.bin
similarity index 100%
rename from grid_esp/bootloader/grid_fw_1_3_1.bin
rename to esp32s3/bootloader/grid_fw_1_3_1.bin
diff --git a/grid_esp/bootloader/grid_fw_1_3_6.bin b/esp32s3/bootloader/grid_fw_1_3_6.bin
similarity index 100%
rename from grid_esp/bootloader/grid_fw_1_3_6.bin
rename to esp32s3/bootloader/grid_fw_1_3_6.bin
diff --git a/grid_esp/bootloader/ota_data_initial.bin b/esp32s3/bootloader/ota_data_initial.bin
similarity index 100%
rename from grid_esp/bootloader/ota_data_initial.bin
rename to esp32s3/bootloader/ota_data_initial.bin
diff --git a/grid_esp/bootloader/otadata_boot_from_ota0.bin b/esp32s3/bootloader/otadata_boot_from_ota0.bin
similarity index 100%
rename from grid_esp/bootloader/otadata_boot_from_ota0.bin
rename to esp32s3/bootloader/otadata_boot_from_ota0.bin
diff --git a/grid_esp/bootloader/partition-table.bin b/esp32s3/bootloader/partition-table.bin
similarity index 100%
rename from grid_esp/bootloader/partition-table.bin
rename to esp32s3/bootloader/partition-table.bin
diff --git a/grid_esp/bootloader/partitions-8MB.csv b/esp32s3/bootloader/partitions-8MB.csv
similarity index 100%
rename from grid_esp/bootloader/partitions-8MB.csv
rename to esp32s3/bootloader/partitions-8MB.csv
diff --git a/grid_esp/bootloader/program.bat b/esp32s3/bootloader/program.bat
similarity index 100%
rename from grid_esp/bootloader/program.bat
rename to esp32s3/bootloader/program.bat
diff --git a/grid_esp/bootloader/tinyuf2.bin b/esp32s3/bootloader/tinyuf2.bin
similarity index 100%
rename from grid_esp/bootloader/tinyuf2.bin
rename to esp32s3/bootloader/tinyuf2.bin
diff --git a/grid_esp/bootloader/uf2_autoupload.sh b/esp32s3/bootloader/uf2_autoupload.sh
similarity index 100%
rename from grid_esp/bootloader/uf2_autoupload.sh
rename to esp32s3/bootloader/uf2_autoupload.sh
diff --git a/esp32s3/components/grid_common/CMakeLists.txt b/esp32s3/components/grid_common/CMakeLists.txt
new file mode 100644
index 000000000..f53fd8c26
--- /dev/null
+++ b/esp32s3/components/grid_common/CMakeLists.txt
@@ -0,0 +1,20 @@
+idf_component_register(
+
+ LDFRAGMENTS
+ "linker_fragment.lf"
+
+ SRC_DIRS
+ "common/src/c"
+ "common/dep/littlefs"
+ "common/dep/lua-5.4.3/src"
+ "common/dep/tomlc99"
+
+ INCLUDE_DIRS
+ "."
+ "common/src/c"
+ "common/dep"
+ "common/dep/littlefs"
+ "common/dep/lua-5.4.3/src"
+ "common/dep/proto"
+ "common/build/lua"
+)
diff --git a/grid_common/LICENSE b/esp32s3/components/grid_common/LICENSE
similarity index 100%
rename from grid_common/LICENSE
rename to esp32s3/components/grid_common/LICENSE
diff --git a/esp32s3/components/grid_common/common b/esp32s3/components/grid_common/common
new file mode 120000
index 000000000..f74dff0e4
--- /dev/null
+++ b/esp32s3/components/grid_common/common
@@ -0,0 +1 @@
+../../../common
\ No newline at end of file
diff --git a/grid_common/idf_component.yml b/esp32s3/components/grid_common/idf_component.yml
similarity index 67%
rename from grid_common/idf_component.yml
rename to esp32s3/components/grid_common/idf_component.yml
index 23e0b7e90..e30bac77c 100644
--- a/grid_common/idf_component.yml
+++ b/esp32s3/components/grid_common/idf_component.yml
@@ -3,3 +3,7 @@ description: Grid Common library
url: https://github.com/intechstudio/grid-fw
dependencies:
idf: ">=5.0"
+files:
+ use_gitignore: true
+ include:
+ - "build/lua/**"
diff --git a/grid_esp/components/grid_common/linker_fragment.lf b/esp32s3/components/grid_common/linker_fragment.lf
similarity index 100%
rename from grid_esp/components/grid_common/linker_fragment.lf
rename to esp32s3/components/grid_common/linker_fragment.lf
diff --git a/grid_esp/components/grid_esp32_adc/CMakeLists.txt b/esp32s3/components/grid_esp32_adc/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_adc/CMakeLists.txt
rename to esp32s3/components/grid_esp32_adc/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_adc/grid_esp32_adc.c b/esp32s3/components/grid_esp32_adc/grid_esp32_adc.c
similarity index 100%
rename from grid_esp/components/grid_esp32_adc/grid_esp32_adc.c
rename to esp32s3/components/grid_esp32_adc/grid_esp32_adc.c
diff --git a/grid_esp/components/grid_esp32_adc/grid_esp32_adc.h b/esp32s3/components/grid_esp32_adc/grid_esp32_adc.h
similarity index 100%
rename from grid_esp/components/grid_esp32_adc/grid_esp32_adc.h
rename to esp32s3/components/grid_esp32_adc/grid_esp32_adc.h
diff --git a/grid_esp/components/grid_esp32_adc/ulp/main.c b/esp32s3/components/grid_esp32_adc/ulp/main.c
similarity index 100%
rename from grid_esp/components/grid_esp32_adc/ulp/main.c
rename to esp32s3/components/grid_esp32_adc/ulp/main.c
diff --git a/grid_esp/components/grid_esp32_encoder/CMakeLists.txt b/esp32s3/components/grid_esp32_encoder/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_encoder/CMakeLists.txt
rename to esp32s3/components/grid_esp32_encoder/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_encoder/LICENSE b/esp32s3/components/grid_esp32_encoder/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_encoder/LICENSE
rename to esp32s3/components/grid_esp32_encoder/LICENSE
diff --git a/grid_esp/components/grid_esp32_encoder/grid_esp32_encoder.c b/esp32s3/components/grid_esp32_encoder/grid_esp32_encoder.c
similarity index 100%
rename from grid_esp/components/grid_esp32_encoder/grid_esp32_encoder.c
rename to esp32s3/components/grid_esp32_encoder/grid_esp32_encoder.c
diff --git a/grid_esp/components/grid_esp32_encoder/grid_esp32_encoder.h b/esp32s3/components/grid_esp32_encoder/grid_esp32_encoder.h
similarity index 100%
rename from grid_esp/components/grid_esp32_encoder/grid_esp32_encoder.h
rename to esp32s3/components/grid_esp32_encoder/grid_esp32_encoder.h
diff --git a/grid_esp/components/grid_esp32_lcd/CMakeLists.txt b/esp32s3/components/grid_esp32_lcd/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/CMakeLists.txt
rename to esp32s3/components/grid_esp32_lcd/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_lcd/LICENSE b/esp32s3/components/grid_esp32_lcd/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/LICENSE
rename to esp32s3/components/grid_esp32_lcd/LICENSE
diff --git a/grid_esp/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.c b/esp32s3/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.c
rename to esp32s3/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.c
diff --git a/grid_esp/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.ttf b/esp32s3/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.ttf
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.ttf
rename to esp32s3/components/grid_esp32_lcd/generated_fonts/interdisplay_regular.ttf
diff --git a/grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_bold.c b/esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_bold.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_bold.c
rename to esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_bold.c
diff --git a/grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_bold.ttf b/esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_bold.ttf
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_bold.ttf
rename to esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_bold.ttf
diff --git a/grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_regular.c b/esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_regular.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_regular.c
rename to esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_regular.c
diff --git a/grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_regular.ttf b/esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_regular.ttf
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/generated_fonts/spacemono_regular.ttf
rename to esp32s3/components/grid_esp32_lcd/generated_fonts/spacemono_regular.ttf
diff --git a/grid_esp/components/grid_esp32_lcd/grid_esp32_lcd.c b/esp32s3/components/grid_esp32_lcd/grid_esp32_lcd.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_esp32_lcd.c
rename to esp32s3/components/grid_esp32_lcd/grid_esp32_lcd.c
diff --git a/grid_esp/components/grid_esp32_lcd/grid_esp32_lcd.h b/esp32s3/components/grid_esp32_lcd/grid_esp32_lcd.h
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_esp32_lcd.h
rename to esp32s3/components/grid_esp32_lcd/grid_esp32_lcd.h
diff --git a/grid_esp/components/grid_esp32_lcd/grid_font.c b/esp32s3/components/grid_esp32_lcd/grid_font.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_font.c
rename to esp32s3/components/grid_esp32_lcd/grid_font.c
diff --git a/grid_esp/components/grid_esp32_lcd/grid_font.h b/esp32s3/components/grid_esp32_lcd/grid_font.h
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_font.h
rename to esp32s3/components/grid_esp32_lcd/grid_font.h
diff --git a/grid_esp/components/grid_esp32_lcd/grid_gui.c b/esp32s3/components/grid_esp32_lcd/grid_gui.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_gui.c
rename to esp32s3/components/grid_esp32_lcd/grid_gui.c
diff --git a/grid_esp/components/grid_esp32_lcd/grid_gui.h b/esp32s3/components/grid_esp32_lcd/grid_gui.h
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_gui.h
rename to esp32s3/components/grid_esp32_lcd/grid_gui.h
diff --git a/grid_esp/components/grid_esp32_lcd/grid_lua_api_gui.c b/esp32s3/components/grid_esp32_lcd/grid_lua_api_gui.c
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_lua_api_gui.c
rename to esp32s3/components/grid_esp32_lcd/grid_lua_api_gui.c
diff --git a/grid_esp/components/grid_esp32_lcd/grid_lua_api_gui.h b/esp32s3/components/grid_esp32_lcd/grid_lua_api_gui.h
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/grid_lua_api_gui.h
rename to esp32s3/components/grid_esp32_lcd/grid_lua_api_gui.h
diff --git a/grid_esp/components/grid_esp32_lcd/remove_non_ascii.sh b/esp32s3/components/grid_esp32_lcd/remove_non_ascii.sh
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/remove_non_ascii.sh
rename to esp32s3/components/grid_esp32_lcd/remove_non_ascii.sh
diff --git a/grid_esp/components/grid_esp32_lcd/remove_non_ascii_glyphs.py b/esp32s3/components/grid_esp32_lcd/remove_non_ascii_glyphs.py
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/remove_non_ascii_glyphs.py
rename to esp32s3/components/grid_esp32_lcd/remove_non_ascii_glyphs.py
diff --git a/grid_esp/components/grid_esp32_lcd/source_fonts/SpaceMono-Bold.ttf b/esp32s3/components/grid_esp32_lcd/source_fonts/SpaceMono-Bold.ttf
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/source_fonts/SpaceMono-Bold.ttf
rename to esp32s3/components/grid_esp32_lcd/source_fonts/SpaceMono-Bold.ttf
diff --git a/grid_esp/components/grid_esp32_lcd/source_fonts/SpaceMono-Regular.ttf b/esp32s3/components/grid_esp32_lcd/source_fonts/SpaceMono-Regular.ttf
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/source_fonts/SpaceMono-Regular.ttf
rename to esp32s3/components/grid_esp32_lcd/source_fonts/SpaceMono-Regular.ttf
diff --git a/grid_esp/components/grid_esp32_lcd/stb_truetype.h b/esp32s3/components/grid_esp32_lcd/stb_truetype.h
similarity index 100%
rename from grid_esp/components/grid_esp32_lcd/stb_truetype.h
rename to esp32s3/components/grid_esp32_lcd/stb_truetype.h
diff --git a/grid_esp/components/grid_esp32_led/CMakeLists.txt b/esp32s3/components/grid_esp32_led/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_led/CMakeLists.txt
rename to esp32s3/components/grid_esp32_led/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_led/LICENSE b/esp32s3/components/grid_esp32_led/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_led/LICENSE
rename to esp32s3/components/grid_esp32_led/LICENSE
diff --git a/grid_esp/components/grid_esp32_led/grid_esp32_led.c b/esp32s3/components/grid_esp32_led/grid_esp32_led.c
similarity index 100%
rename from grid_esp/components/grid_esp32_led/grid_esp32_led.c
rename to esp32s3/components/grid_esp32_led/grid_esp32_led.c
diff --git a/grid_esp/components/grid_esp32_led/grid_esp32_led.h b/esp32s3/components/grid_esp32_led/grid_esp32_led.h
similarity index 100%
rename from grid_esp/components/grid_esp32_led/grid_esp32_led.h
rename to esp32s3/components/grid_esp32_led/grid_esp32_led.h
diff --git a/grid_esp/components/grid_esp32_led/idf_component.yml b/esp32s3/components/grid_esp32_led/idf_component.yml
similarity index 100%
rename from grid_esp/components/grid_esp32_led/idf_component.yml
rename to esp32s3/components/grid_esp32_led/idf_component.yml
diff --git a/grid_esp/components/grid_esp32_led/led_strip_encoder.c b/esp32s3/components/grid_esp32_led/led_strip_encoder.c
similarity index 100%
rename from grid_esp/components/grid_esp32_led/led_strip_encoder.c
rename to esp32s3/components/grid_esp32_led/led_strip_encoder.c
diff --git a/grid_esp/components/grid_esp32_led/led_strip_encoder.h b/esp32s3/components/grid_esp32_led/led_strip_encoder.h
similarity index 100%
rename from grid_esp/components/grid_esp32_led/led_strip_encoder.h
rename to esp32s3/components/grid_esp32_led/led_strip_encoder.h
diff --git a/grid_esp/components/grid_esp32_littlefs/CMakeLists.txt b/esp32s3/components/grid_esp32_littlefs/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/CMakeLists.txt
rename to esp32s3/components/grid_esp32_littlefs/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_littlefs/LICENSE b/esp32s3/components/grid_esp32_littlefs/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/LICENSE
rename to esp32s3/components/grid_esp32_littlefs/LICENSE
diff --git a/grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs.c b/esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs.c
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs.c
rename to esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs.c
diff --git a/grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs.h b/esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs.h
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs.h
rename to esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs.h
diff --git a/grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs_api.c b/esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs_api.c
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs_api.c
rename to esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs_api.c
diff --git a/grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs_api.h b/esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs_api.h
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/grid_esp32_littlefs_api.h
rename to esp32s3/components/grid_esp32_littlefs/grid_esp32_littlefs_api.h
diff --git a/grid_esp/components/grid_esp32_littlefs/idf_component.yml b/esp32s3/components/grid_esp32_littlefs/idf_component.yml
similarity index 100%
rename from grid_esp/components/grid_esp32_littlefs/idf_component.yml
rename to esp32s3/components/grid_esp32_littlefs/idf_component.yml
diff --git a/grid_esp/components/grid_esp32_module_bu16/CMakeLists.txt b/esp32s3/components/grid_esp32_module_bu16/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_bu16/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_bu16/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_bu16/LICENSE b/esp32s3/components/grid_esp32_module_bu16/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_module_bu16/LICENSE
rename to esp32s3/components/grid_esp32_module_bu16/LICENSE
diff --git a/grid_esp/components/grid_esp32_module_bu16/grid_esp32_module_bu16.c b/esp32s3/components/grid_esp32_module_bu16/grid_esp32_module_bu16.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_bu16/grid_esp32_module_bu16.c
rename to esp32s3/components/grid_esp32_module_bu16/grid_esp32_module_bu16.c
diff --git a/grid_esp/components/grid_esp32_module_bu16/grid_esp32_module_bu16.h b/esp32s3/components/grid_esp32_module_bu16/grid_esp32_module_bu16.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_bu16/grid_esp32_module_bu16.h
rename to esp32s3/components/grid_esp32_module_bu16/grid_esp32_module_bu16.h
diff --git a/grid_esp/components/grid_esp32_module_ef44/CMakeLists.txt b/esp32s3/components/grid_esp32_module_ef44/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_ef44/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_ef44/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_ef44/LICENSE b/esp32s3/components/grid_esp32_module_ef44/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_module_ef44/LICENSE
rename to esp32s3/components/grid_esp32_module_ef44/LICENSE
diff --git a/grid_esp/components/grid_esp32_module_ef44/grid_esp32_module_ef44.c b/esp32s3/components/grid_esp32_module_ef44/grid_esp32_module_ef44.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_ef44/grid_esp32_module_ef44.c
rename to esp32s3/components/grid_esp32_module_ef44/grid_esp32_module_ef44.c
diff --git a/grid_esp/components/grid_esp32_module_ef44/grid_esp32_module_ef44.h b/esp32s3/components/grid_esp32_module_ef44/grid_esp32_module_ef44.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_ef44/grid_esp32_module_ef44.h
rename to esp32s3/components/grid_esp32_module_ef44/grid_esp32_module_ef44.h
diff --git a/grid_esp/components/grid_esp32_module_en16/CMakeLists.txt b/esp32s3/components/grid_esp32_module_en16/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_en16/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_en16/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_en16/LICENSE b/esp32s3/components/grid_esp32_module_en16/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_module_en16/LICENSE
rename to esp32s3/components/grid_esp32_module_en16/LICENSE
diff --git a/grid_esp/components/grid_esp32_module_en16/grid_esp32_module_en16.c b/esp32s3/components/grid_esp32_module_en16/grid_esp32_module_en16.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_en16/grid_esp32_module_en16.c
rename to esp32s3/components/grid_esp32_module_en16/grid_esp32_module_en16.c
diff --git a/grid_esp/components/grid_esp32_module_en16/grid_esp32_module_en16.h b/esp32s3/components/grid_esp32_module_en16/grid_esp32_module_en16.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_en16/grid_esp32_module_en16.h
rename to esp32s3/components/grid_esp32_module_en16/grid_esp32_module_en16.h
diff --git a/grid_esp/components/grid_esp32_module_octv/CMakeLists.txt b/esp32s3/components/grid_esp32_module_octv/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_octv/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_octv/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_octv/grid_esp32_module_octv.c b/esp32s3/components/grid_esp32_module_octv/grid_esp32_module_octv.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_octv/grid_esp32_module_octv.c
rename to esp32s3/components/grid_esp32_module_octv/grid_esp32_module_octv.c
diff --git a/grid_esp/components/grid_esp32_module_octv/grid_esp32_module_octv.h b/esp32s3/components/grid_esp32_module_octv/grid_esp32_module_octv.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_octv/grid_esp32_module_octv.h
rename to esp32s3/components/grid_esp32_module_octv/grid_esp32_module_octv.h
diff --git a/grid_esp/components/grid_esp32_module_pbf4/CMakeLists.txt b/esp32s3/components/grid_esp32_module_pbf4/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_pbf4/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_pbf4/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_pbf4/LICENSE b/esp32s3/components/grid_esp32_module_pbf4/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_module_pbf4/LICENSE
rename to esp32s3/components/grid_esp32_module_pbf4/LICENSE
diff --git a/grid_esp/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.c b/esp32s3/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.c
rename to esp32s3/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.c
diff --git a/grid_esp/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.h b/esp32s3/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.h
rename to esp32s3/components/grid_esp32_module_pbf4/grid_esp32_module_pbf4.h
diff --git a/grid_esp/components/grid_esp32_module_po16/CMakeLists.txt b/esp32s3/components/grid_esp32_module_po16/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_po16/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_po16/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_po16/LICENSE b/esp32s3/components/grid_esp32_module_po16/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_module_po16/LICENSE
rename to esp32s3/components/grid_esp32_module_po16/LICENSE
diff --git a/grid_esp/components/grid_esp32_module_po16/grid_esp32_module_po16.c b/esp32s3/components/grid_esp32_module_po16/grid_esp32_module_po16.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_po16/grid_esp32_module_po16.c
rename to esp32s3/components/grid_esp32_module_po16/grid_esp32_module_po16.c
diff --git a/grid_esp/components/grid_esp32_module_po16/grid_esp32_module_po16.h b/esp32s3/components/grid_esp32_module_po16/grid_esp32_module_po16.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_po16/grid_esp32_module_po16.h
rename to esp32s3/components/grid_esp32_module_po16/grid_esp32_module_po16.h
diff --git a/grid_esp/components/grid_esp32_module_vsnx/CMakeLists.txt b/esp32s3/components/grid_esp32_module_vsnx/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_module_vsnx/CMakeLists.txt
rename to esp32s3/components/grid_esp32_module_vsnx/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_module_vsnx/LICENSE b/esp32s3/components/grid_esp32_module_vsnx/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_module_vsnx/LICENSE
rename to esp32s3/components/grid_esp32_module_vsnx/LICENSE
diff --git a/grid_esp/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.c b/esp32s3/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.c
similarity index 100%
rename from grid_esp/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.c
rename to esp32s3/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.c
diff --git a/grid_esp/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.h b/esp32s3/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.h
similarity index 100%
rename from grid_esp/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.h
rename to esp32s3/components/grid_esp32_module_vsnx/grid_esp32_module_vsnx.h
diff --git a/grid_esp/components/grid_esp32_nvm/CMakeLists.txt b/esp32s3/components/grid_esp32_nvm/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_nvm/CMakeLists.txt
rename to esp32s3/components/grid_esp32_nvm/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_nvm/LICENSE b/esp32s3/components/grid_esp32_nvm/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_nvm/LICENSE
rename to esp32s3/components/grid_esp32_nvm/LICENSE
diff --git a/grid_esp/components/grid_esp32_nvm/grid_esp32_nvm.c b/esp32s3/components/grid_esp32_nvm/grid_esp32_nvm.c
similarity index 100%
rename from grid_esp/components/grid_esp32_nvm/grid_esp32_nvm.c
rename to esp32s3/components/grid_esp32_nvm/grid_esp32_nvm.c
diff --git a/grid_esp/components/grid_esp32_nvm/grid_esp32_nvm.h b/esp32s3/components/grid_esp32_nvm/grid_esp32_nvm.h
similarity index 100%
rename from grid_esp/components/grid_esp32_nvm/grid_esp32_nvm.h
rename to esp32s3/components/grid_esp32_nvm/grid_esp32_nvm.h
diff --git a/grid_esp/components/grid_esp32_nvm/idf_component.yml b/esp32s3/components/grid_esp32_nvm/idf_component.yml
similarity index 100%
rename from grid_esp/components/grid_esp32_nvm/idf_component.yml
rename to esp32s3/components/grid_esp32_nvm/idf_component.yml
diff --git a/grid_esp/components/grid_esp32_pins/CMakeLists.txt b/esp32s3/components/grid_esp32_pins/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_pins/CMakeLists.txt
rename to esp32s3/components/grid_esp32_pins/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_pins/grid_esp32_pins.h b/esp32s3/components/grid_esp32_pins/grid_esp32_pins.h
similarity index 100%
rename from grid_esp/components/grid_esp32_pins/grid_esp32_pins.h
rename to esp32s3/components/grid_esp32_pins/grid_esp32_pins.h
diff --git a/grid_esp/components/grid_esp32_platform/CMakeLists.txt b/esp32s3/components/grid_esp32_platform/CMakeLists.txt
similarity index 64%
rename from grid_esp/components/grid_esp32_platform/CMakeLists.txt
rename to esp32s3/components/grid_esp32_platform/CMakeLists.txt
index edd0db0cc..dd364b32c 100644
--- a/grid_esp/components/grid_esp32_platform/CMakeLists.txt
+++ b/esp32s3/components/grid_esp32_platform/CMakeLists.txt
@@ -4,5 +4,5 @@ idf_component_register(
INCLUDE_DIRS
"."
REQUIRES
- "driver"
+ "driver" "efuse" "grid_esp32_adc" "grid_esp32_pins"
)
diff --git a/grid_esp/components/grid_esp32_platform/LICENSE b/esp32s3/components/grid_esp32_platform/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_platform/LICENSE
rename to esp32s3/components/grid_esp32_platform/LICENSE
diff --git a/esp32s3/components/grid_esp32_platform/grid_esp32_platform.c b/esp32s3/components/grid_esp32_platform/grid_esp32_platform.c
new file mode 100644
index 000000000..774095b59
--- /dev/null
+++ b/esp32s3/components/grid_esp32_platform/grid_esp32_platform.c
@@ -0,0 +1,242 @@
+/*
+ * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include "grid_esp32_platform.h"
+
+#include "esp_heap_caps.h"
+
+#include "rom/ets_sys.h" // For ets_printf
+
+#include "esp_timer.h"
+
+// #include "hal/cpu_hal.h"
+
+#include "esp_cpu.h"
+#include "esp_efuse.h"
+#include "esp_log.h"
+#include "esp_random.h"
+
+#include "driver/gpio.h"
+
+#include "grid_esp32_adc.h"
+#include "grid_esp32_pins.h"
+
+static const char* TAG = "grid_esp32_platform";
+
+void* grid_platform_allocate_volatile(size_t size) {
+
+ void* handle = heap_caps_malloc(size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
+
+ // ets_printf("ADDRESS: %lx\r\n", handle);
+
+ if (handle == NULL) {
+
+ ets_printf("MALLOC FAILED");
+
+ while (1) {
+ }
+ }
+
+ return handle;
+}
+
+uint64_t IRAM_ATTR grid_platform_rtc_get_micros(void) { return esp_timer_get_time(); }
+
+uint64_t IRAM_ATTR grid_platform_rtc_get_diff(uint64_t t1, uint64_t t2) { return ((t1 << 1) - (t2 << 1)) >> 1; }
+
+uint64_t IRAM_ATTR grid_platform_rtc_get_elapsed_time(uint64_t told) { return grid_platform_rtc_get_diff(grid_platform_rtc_get_micros(), told); }
+
+uint32_t IRAM_ATTR grid_platform_get_cycles() { return esp_cpu_get_cycle_count(); }
+
+uint32_t IRAM_ATTR grid_platform_get_cycles_per_us() { return CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ; }
+
+static char uint4_to_hex[16] = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
+};
+
+static void uint8_to_hex(uint8_t u, char h[2]) {
+ h[0] = uint4_to_hex[u >> 4];
+ h[1] = uint4_to_hex[u & 0xf];
+}
+
+void IRAM_ATTR grid_platform_printf_nonprint(const uint8_t* src, size_t size) {
+
+ for (size_t i = 0; i < size; ++i) {
+
+ if (src[i] < 32) {
+
+ char hex[2];
+ uint8_to_hex(src[i], hex);
+ ets_printf("[%c%c]", hex[0], hex[1]);
+
+ } else {
+
+ ets_printf("%c", src[i]);
+ }
+ }
+}
+
+uint32_t grid_platform_get_hwcfg_bit(uint8_t n) {
+
+ gpio_set_direction(GRID_ESP32_PINS_HWCFG_SHIFT, GPIO_MODE_OUTPUT);
+ gpio_set_direction(GRID_ESP32_PINS_HWCFG_CLOCK, GPIO_MODE_OUTPUT);
+ gpio_set_direction(GRID_ESP32_PINS_HWCFG_DATA, GPIO_MODE_INPUT);
+
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 0);
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
+
+ ets_delay_us(40);
+
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 1);
+
+ ets_delay_us(10);
+
+ uint8_t level = 0;
+ for (uint8_t i = 0; i < n + 1; ++i) {
+
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 0);
+
+ level = gpio_get_level(GRID_ESP32_PINS_HWCFG_DATA);
+
+ ets_delay_us(10);
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
+ ets_delay_us(10);
+ }
+
+ return level > 0;
+}
+
+uint32_t grid_platform_get_hwcfg() {
+
+ gpio_set_direction(GRID_ESP32_PINS_HWCFG_SHIFT, GPIO_MODE_OUTPUT);
+ gpio_set_direction(GRID_ESP32_PINS_HWCFG_CLOCK, GPIO_MODE_OUTPUT);
+ gpio_set_direction(GRID_ESP32_PINS_HWCFG_DATA, GPIO_MODE_INPUT);
+
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 0);
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
+
+ ets_delay_us(40);
+
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 1);
+
+ ets_delay_us(10);
+
+ uint8_t hwcfg = 0;
+ for (uint8_t i = 0; i < 8; ++i) {
+
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 0);
+
+ uint8_t level = gpio_get_level(GRID_ESP32_PINS_HWCFG_DATA);
+ hwcfg |= ((level > 0) << i);
+
+ ets_delay_us(10);
+ gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
+ ets_delay_us(10);
+ }
+
+ ESP_LOGI(TAG, "HWCFG value: %d", hwcfg);
+ return hwcfg;
+}
+
+uint32_t grid_platform_get_id(uint32_t* return_array) {
+
+ /*
+
+ struct ESP_FUSE3
+ {
+ uint8_t crc;
+ uint8_t macAddr[6];
+ uint8_t reserved[8];
+ uint8_t version;
+ };
+ */
+
+ uint8_t block[32] = {0};
+
+ if (ESP_OK == esp_efuse_read_block(EFUSE_BLK1, block, 0, 6 * 8)) {
+ ESP_LOGI(TAG, "CPUID OK");
+ }
+
+ uint8_t* mac_address = &block[0];
+
+ ESP_LOGI(TAG, "MAC: %02x:%02x:%02x:%02x:%02x:%02x", mac_address[0], mac_address[1], mac_address[2], mac_address[3], mac_address[4], mac_address[5]);
+
+ uint64_t cpuid = 0;
+
+ for (uint8_t i = 0; i < 6; i++) {
+
+ // ESP_LOGI(TAG, "CPUID: %016llx",cpuid);
+ cpuid |= ((uint64_t)mac_address[i]) << ((5 - i) * 8);
+ }
+
+ ESP_LOGI(TAG, "CPUID: %016llx", cpuid);
+
+ uint8_t* array = (uint8_t*)return_array;
+ array[0] = mac_address[0];
+ array[1] = mac_address[1];
+ array[2] = mac_address[2];
+ array[3] = mac_address[3];
+ array[4] = mac_address[4];
+ array[5] = mac_address[5];
+
+ return 0;
+}
+
+uint8_t grid_platform_get_random_8() {
+ uint32_t random_number = esp_random();
+ return random_number % 256;
+}
+
+void grid_platform_delay_ms(uint32_t delay_milliseconds) { ets_delay_us(delay_milliseconds * 1000); }
+
+void grid_platform_delay_us(uint32_t delay_microseconds) { ets_delay_us(delay_microseconds); }
+
+uint8_t grid_platform_get_reset_cause() { return 0; }
+
+void grid_platform_printf(char const* fmt, ...) {
+
+ va_list ap;
+
+ char temp[1012] = {0};
+
+ va_start(ap, fmt);
+
+ vsnprintf(temp, 1012, fmt, ap);
+
+ va_end(ap);
+
+ ets_printf(temp);
+}
+
+uint8_t grid_platform_disable_grid_transmitter(uint8_t direction) {
+
+ ets_printf("grid_platform_disable_grid_transmitter NOT IMPLEMENTED!!!\r\n");
+ return 1;
+}
+
+uint8_t grid_platform_reset_grid_transmitter(uint8_t direction) {
+
+ // ets_printf("grid_platform_reset_grid_transmitter NOT IMPLEMENTED!!!\r\n");
+ return 1;
+}
+
+uint8_t grid_platform_enable_grid_transmitter(uint8_t direction) {
+
+ ets_printf("grid_platform_enable_grid_transmitter NOT IMPLEMENTED!!!\r\n");
+ return 1;
+}
+
+void grid_platform_system_reset() { ets_printf("grid_platform_system_reset NOT IMPLEMENTED!!!\r\n"); }
+
+uint8_t IRAM_ATTR grid_platform_get_adc_bit_depth() { return 12; }
+
+void grid_platform_mux_init(uint8_t mux_positions_bm) { grid_esp32_adc_mux_init(&grid_esp32_adc_state, mux_positions_bm); }
+
+void IRAM_ATTR grid_platform_mux_write(uint8_t index) {
+
+ grid_esp32_adc_state.mux_index = index;
+ grid_esp32_adc_mux_update(&grid_esp32_adc_state);
+}
diff --git a/grid_esp/components/grid_esp32_platform/grid_esp32_platform.h b/esp32s3/components/grid_esp32_platform/grid_esp32_platform.h
similarity index 100%
rename from grid_esp/components/grid_esp32_platform/grid_esp32_platform.h
rename to esp32s3/components/grid_esp32_platform/grid_esp32_platform.h
diff --git a/grid_esp/components/grid_esp32_port/CMakeLists.txt b/esp32s3/components/grid_esp32_port/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_port/CMakeLists.txt
rename to esp32s3/components/grid_esp32_port/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_port/LICENSE b/esp32s3/components/grid_esp32_port/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_port/LICENSE
rename to esp32s3/components/grid_esp32_port/LICENSE
diff --git a/grid_esp/components/grid_esp32_port/grid_esp32_port.c b/esp32s3/components/grid_esp32_port/grid_esp32_port.c
similarity index 100%
rename from grid_esp/components/grid_esp32_port/grid_esp32_port.c
rename to esp32s3/components/grid_esp32_port/grid_esp32_port.c
diff --git a/grid_esp/components/grid_esp32_port/grid_esp32_port.h b/esp32s3/components/grid_esp32_port/grid_esp32_port.h
similarity index 100%
rename from grid_esp/components/grid_esp32_port/grid_esp32_port.h
rename to esp32s3/components/grid_esp32_port/grid_esp32_port.h
diff --git a/grid_esp/components/grid_esp32_swd/CMakeLists.txt b/esp32s3/components/grid_esp32_swd/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_swd/CMakeLists.txt
rename to esp32s3/components/grid_esp32_swd/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_swd/LICENSE b/esp32s3/components/grid_esp32_swd/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_swd/LICENSE
rename to esp32s3/components/grid_esp32_swd/LICENSE
diff --git a/grid_esp/components/grid_esp32_swd/grid_esp32_swd.c b/esp32s3/components/grid_esp32_swd/grid_esp32_swd.c
similarity index 100%
rename from grid_esp/components/grid_esp32_swd/grid_esp32_swd.c
rename to esp32s3/components/grid_esp32_swd/grid_esp32_swd.c
diff --git a/grid_esp/components/grid_esp32_swd/grid_esp32_swd.h b/esp32s3/components/grid_esp32_swd/grid_esp32_swd.h
similarity index 100%
rename from grid_esp/components/grid_esp32_swd/grid_esp32_swd.h
rename to esp32s3/components/grid_esp32_swd/grid_esp32_swd.h
diff --git a/grid_esp/components/grid_esp32_trace/CMakeLists.txt b/esp32s3/components/grid_esp32_trace/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_trace/CMakeLists.txt
rename to esp32s3/components/grid_esp32_trace/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_trace/LICENSE b/esp32s3/components/grid_esp32_trace/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_trace/LICENSE
rename to esp32s3/components/grid_esp32_trace/LICENSE
diff --git a/grid_esp/components/grid_esp32_trace/grid_esp32_trace.c b/esp32s3/components/grid_esp32_trace/grid_esp32_trace.c
similarity index 100%
rename from grid_esp/components/grid_esp32_trace/grid_esp32_trace.c
rename to esp32s3/components/grid_esp32_trace/grid_esp32_trace.c
diff --git a/grid_esp/components/grid_esp32_trace/grid_esp32_trace.h b/esp32s3/components/grid_esp32_trace/grid_esp32_trace.h
similarity index 100%
rename from grid_esp/components/grid_esp32_trace/grid_esp32_trace.h
rename to esp32s3/components/grid_esp32_trace/grid_esp32_trace.h
diff --git a/grid_esp/components/grid_esp32_trace/idf_component.yml b/esp32s3/components/grid_esp32_trace/idf_component.yml
similarity index 100%
rename from grid_esp/components/grid_esp32_trace/idf_component.yml
rename to esp32s3/components/grid_esp32_trace/idf_component.yml
diff --git a/grid_esp/components/grid_esp32_trace/trace_hooks.h b/esp32s3/components/grid_esp32_trace/trace_hooks.h
similarity index 100%
rename from grid_esp/components/grid_esp32_trace/trace_hooks.h
rename to esp32s3/components/grid_esp32_trace/trace_hooks.h
diff --git a/grid_esp/components/grid_esp32_usb/CMakeLists.txt b/esp32s3/components/grid_esp32_usb/CMakeLists.txt
similarity index 100%
rename from grid_esp/components/grid_esp32_usb/CMakeLists.txt
rename to esp32s3/components/grid_esp32_usb/CMakeLists.txt
diff --git a/grid_esp/components/grid_esp32_usb/LICENSE b/esp32s3/components/grid_esp32_usb/LICENSE
similarity index 100%
rename from grid_esp/components/grid_esp32_usb/LICENSE
rename to esp32s3/components/grid_esp32_usb/LICENSE
diff --git a/grid_esp/components/grid_esp32_usb/grid_esp32_usb.c b/esp32s3/components/grid_esp32_usb/grid_esp32_usb.c
similarity index 100%
rename from grid_esp/components/grid_esp32_usb/grid_esp32_usb.c
rename to esp32s3/components/grid_esp32_usb/grid_esp32_usb.c
diff --git a/grid_esp/components/grid_esp32_usb/grid_esp32_usb.h b/esp32s3/components/grid_esp32_usb/grid_esp32_usb.h
similarity index 100%
rename from grid_esp/components/grid_esp32_usb/grid_esp32_usb.h
rename to esp32s3/components/grid_esp32_usb/grid_esp32_usb.h
diff --git a/grid_esp/components/grid_esp32_vmp/CMakeLists.txt b/esp32s3/components/grid_esp32_vmp/CMakeLists.txt
similarity index 60%
rename from grid_esp/components/grid_esp32_vmp/CMakeLists.txt
rename to esp32s3/components/grid_esp32_vmp/CMakeLists.txt
index 599eaf11a..4b5d9940c 100644
--- a/grid_esp/components/grid_esp32_vmp/CMakeLists.txt
+++ b/esp32s3/components/grid_esp32_vmp/CMakeLists.txt
@@ -2,8 +2,8 @@ idf_component_register(
SRCS
"vmp/vmp_def.c"
"vmp/vmp_tag.c"
- "../../../vmp/vmp.c"
+ "../../../common/dep/vmp/vmp.c"
INCLUDE_DIRS
"vmp"
- "../../../vmp"
+ "../../../common/dep/vmp"
)
diff --git a/esp32s3/components/grid_esp32_vmp/vmp/.gitignore b/esp32s3/components/grid_esp32_vmp/vmp/.gitignore
new file mode 100644
index 000000000..378eac25d
--- /dev/null
+++ b/esp32s3/components/grid_esp32_vmp/vmp/.gitignore
@@ -0,0 +1 @@
+build
diff --git a/grid_make/grid/vmp/build.sh b/esp32s3/components/grid_esp32_vmp/vmp/build.sh
similarity index 100%
rename from grid_make/grid/vmp/build.sh
rename to esp32s3/components/grid_esp32_vmp/vmp/build.sh
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/execute.sh b/esp32s3/components/grid_esp32_vmp/vmp/execute.sh
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/execute.sh
rename to esp32s3/components/grid_esp32_vmp/vmp/execute.sh
diff --git a/grid_make/grid/vmp/proc.c b/esp32s3/components/grid_esp32_vmp/vmp/proc.c
similarity index 100%
rename from grid_make/grid/vmp/proc.c
rename to esp32s3/components/grid_esp32_vmp/vmp/proc.c
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/vmp_def.c b/esp32s3/components/grid_esp32_vmp/vmp/vmp_def.c
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/vmp_def.c
rename to esp32s3/components/grid_esp32_vmp/vmp/vmp_def.c
diff --git a/grid_make/grid/vmp/vmp_def.h b/esp32s3/components/grid_esp32_vmp/vmp/vmp_def.h
similarity index 100%
rename from grid_make/grid/vmp/vmp_def.h
rename to esp32s3/components/grid_esp32_vmp/vmp/vmp_def.h
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/vmp_tag.c b/esp32s3/components/grid_esp32_vmp/vmp/vmp_tag.c
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/vmp_tag.c
rename to esp32s3/components/grid_esp32_vmp/vmp/vmp_tag.c
diff --git a/grid_esp/components/grid_esp32_vmp/vmp/vmp_tag.h b/esp32s3/components/grid_esp32_vmp/vmp/vmp_tag.h
similarity index 100%
rename from grid_esp/components/grid_esp32_vmp/vmp/vmp_tag.h
rename to esp32s3/components/grid_esp32_vmp/vmp/vmp_tag.h
diff --git a/esp32s3/dependencies.lock b/esp32s3/dependencies.lock
new file mode 100644
index 000000000..51cdfa61b
--- /dev/null
+++ b/esp32s3/dependencies.lock
@@ -0,0 +1,45 @@
+dependencies:
+ espressif/esp_tinyusb:
+ component_hash: 6cc731885fb4415c1dfc63e660ee5629077c3b7352e7a5eccd035586f65bca11
+ dependencies:
+ - name: idf
+ require: private
+ version: '>=5.0'
+ - name: espressif/tinyusb
+ registry_url: https://components.espressif.com
+ require: public
+ version: '>=0.17.0~2'
+ source:
+ registry_url: https://components.espressif.com/
+ type: service
+ targets:
+ - esp32s2
+ - esp32s3
+ - esp32p4
+ - esp32h4
+ version: 2.1.0
+ espressif/tinyusb:
+ component_hash: 5ea9d3b6d6b0734a0a0b3491967aa0e1bece2974132294dbda5dd2839b247bfa
+ dependencies:
+ - name: idf
+ require: private
+ version: '>=5.0'
+ source:
+ registry_url: https://components.espressif.com
+ type: service
+ targets:
+ - esp32s2
+ - esp32s3
+ - esp32p4
+ - esp32h4
+ version: 0.19.0~2
+ idf:
+ source:
+ type: idf
+ version: 5.5.0
+direct_dependencies:
+- espressif/esp_tinyusb
+- idf
+manifest_hash: f80ba44aef4c1cb908dfca5a46351d0119cc73e304df93824e46355abc8f7e24
+target: esp32s3
+version: 2.0.0
diff --git a/grid_esp/main/CMakeLists.txt b/esp32s3/main/CMakeLists.txt
similarity index 63%
rename from grid_esp/main/CMakeLists.txt
rename to esp32s3/main/CMakeLists.txt
index de8f0276a..facf46ae3 100644
--- a/grid_esp/main/CMakeLists.txt
+++ b/esp32s3/main/CMakeLists.txt
@@ -1,9 +1,8 @@
idf_component_register(
SRCS
"grid_fw.c"
- "grid_esp32.c"
- "pico_firmware.h"
INCLUDE_DIRS
"."
+ "../../rp2040/build/main"
)
diff --git a/grid_esp/main/grid_fw.c b/esp32s3/main/grid_fw.c
similarity index 96%
rename from grid_esp/main/grid_fw.c
rename to esp32s3/main/grid_fw.c
index 313ded2ba..b30e8a6c0 100644
--- a/grid_esp/main/grid_fw.c
+++ b/esp32s3/main/grid_fw.c
@@ -66,7 +66,6 @@
#include "esp_check.h"
#include "esp_log.h"
#include "esp_psram.h"
-#include "grid_esp32.h"
#include "grid_esp32_lcd.h"
#include "grid_esp32_nvm.h"
#include "grid_esp32_port.h"
@@ -74,21 +73,21 @@
#include "grid_esp32_usb.h"
#include "rom/ets_sys.h" // For ets_printf
-#include "../../grid_common/grid_ain.h"
-#include "../../grid_common/grid_led.h"
-#include "../../grid_common/grid_module.h"
-#include "../../grid_common/grid_msg.h"
-#include "../../grid_common/grid_port.h"
-#include "../../grid_common/grid_protocol.h"
-#include "../../grid_common/grid_sys.h"
-#include "../../grid_common/grid_usb.h"
-
-#include "../../grid_common/grid_lua_api.h"
-#include "../../grid_common/grid_ui.h"
-
-#include "../../grid_common/lua-5.4.3/src/lauxlib.h"
-#include "../../grid_common/lua-5.4.3/src/lua.h"
-#include "../../grid_common/lua-5.4.3/src/lualib.h"
+#include "grid_ain.h"
+#include "grid_led.h"
+#include "grid_module.h"
+#include "grid_msg.h"
+#include "grid_port.h"
+#include "grid_protocol.h"
+#include "grid_sys.h"
+#include "grid_usb.h"
+
+#include "grid_lua_api.h"
+#include "grid_ui.h"
+
+#include "lua-5.4.3/src/lauxlib.h"
+#include "lua-5.4.3/src/lua.h"
+#include "lua-5.4.3/src/lualib.h"
#include "vmp_def.h"
#include "vmp_tag.h"
diff --git a/grid_esp/main/idf_component.yml b/esp32s3/main/idf_component.yml
similarity index 100%
rename from grid_esp/main/idf_component.yml
rename to esp32s3/main/idf_component.yml
diff --git a/grid_esp/sdkconfig b/esp32s3/sdkconfig
similarity index 99%
rename from grid_esp/sdkconfig
rename to esp32s3/sdkconfig
index afa870f50..75b4cd9a4 100644
--- a/grid_esp/sdkconfig
+++ b/esp32s3/sdkconfig
@@ -592,13 +592,6 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000
CONFIG_PARTITION_TABLE_MD5=y
# end of Partition Table
-#
-# Example Configuration
-#
-# CONFIG_EXAMPLE_USE_FTDI is not set
-CONFIG_EXAMPLE_USE_CP210X=y
-# end of Example Configuration
-
#
# Compiler options
#
@@ -2304,6 +2297,13 @@ CONFIG_TINYUSB_DEBUG_LEVEL=1
CONFIG_TINYUSB_MODE_DMA=y
# end of TinyUSB DCD
+#
+# TinyUSB callbacks
+#
+# CONFIG_TINYUSB_SUSPEND_CALLBACK is not set
+# CONFIG_TINYUSB_RESUME_CALLBACK is not set
+# end of TinyUSB callbacks
+
#
# Descriptor configuration
#
@@ -2323,10 +2323,10 @@ CONFIG_TINYUSB_DESC_CDC_STRING="Intech Grid CDC Device"
# end of Descriptor configuration
#
-# Massive Storage Class (MSC)
+# Mass Storage Class (MSC)
#
# CONFIG_TINYUSB_MSC_ENABLED is not set
-# end of Massive Storage Class (MSC)
+# end of Mass Storage Class (MSC)
#
# Communication Device Class (CDC)
diff --git a/esp_build.sh b/esp_build.sh
new file mode 100755
index 000000000..062ca0ed1
--- /dev/null
+++ b/esp_build.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+SRC_DIR=esp32s3
+
+if ! idf.py -C "$SRC_DIR" build ; then
+ exit 1
+fi
+
+python3 tools/uf2conv/uf2conv.py -f ESP32S3 "$SRC_DIR"/build/grid_fw.bin -b 0x0 -c -o "$SRC_DIR"/build/grid_fw.uf2
diff --git a/esp_build_firmware.sh b/esp_build_firmware.sh
deleted file mode 100755
index d8506befb..000000000
--- a/esp_build_firmware.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-idf.py -C "./grid_esp" build
-
-mkdir -p ./binary
-
-python3 ./grid_esp/tools/uf2conv.py -f ESP32S3 ./grid_esp/build/grid_fw.bin -b 0x0 -c -o ./binary/grid_fw.uf2
diff --git a/esp_burn_bootloader.sh b/esp_burn_bootloader.sh
index c7bc78022..12de8e934 100755
--- a/esp_burn_bootloader.sh
+++ b/esp_burn_bootloader.sh
@@ -1,9 +1,10 @@
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
+SRC_DIR=esp32s3
PORT=${PORT:-/dev/ttyUSB0}
esptool.py --chip esp32s3 -p $PORT -b 2000000 --before=default_reset \
--after=no_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m \
-0x0 $SCRIPT_DIR/grid_esp/bootloader/bootloader.bin \
-0x8000 $SCRIPT_DIR/grid_esp/bootloader/partition-table.bin \
-0xe000 $SCRIPT_DIR/grid_esp/bootloader/ota_data_initial.bin \
-0x410000 $SCRIPT_DIR/grid_esp/bootloader/tinyuf2.bin
+0x0 $SCRIPT_DIR/"$SRC_DIR"/bootloader/bootloader.bin \
+0x8000 $SCRIPT_DIR/"$SRC_DIR"/bootloader/partition-table.bin \
+0xe000 $SCRIPT_DIR/"$SRC_DIR"/bootloader/ota_data_initial.bin \
+0x410000 $SCRIPT_DIR/"$SRC_DIR"/bootloader/tinyuf2.bin
diff --git a/esp_burn_firmware.sh b/esp_burn_firmware.sh
deleted file mode 100755
index 01e0971c1..000000000
--- a/esp_burn_firmware.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
-PORT=${PORT:-/dev/ttyUSB0}
-OTA=${OTA:-yes}
-
-esptool.py --chip esp32s3 -p $(ls $PORT | head -n 1) -b 2000000 --before=default_reset --after=no_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x10000 $SCRIPT_DIR/grid_esp/build/grid_fw.bin
-
-if [ "$OTA" = "yes" ]; then
- otatool.py -p $(ls $PORT | head -n 1) switch_ota_partition --slot 0
-fi
diff --git a/esp_convert_uf2.sh b/esp_convert_uf2.sh
deleted file mode 100755
index d90cd7509..000000000
--- a/esp_convert_uf2.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-
-mkdir -p ./grid_esp/output
-
-python3 ./grid_esp/tools/uf2conv.py -f ESP32S3 ./grid_esp/build/grid_fw.bin -b 0x0 -c -o ./grid_esp/output/grid_fw.uf2
diff --git a/esp_debug.sh b/esp_debug.sh
deleted file mode 100755
index 408d00dd4..000000000
--- a/esp_debug.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
-PORT=${PORT:-/dev/ttyUSB0}
-OTA=${OTA:-yes}
-
-esptool.py --chip esp32s3 -p $(ls $PORT | head -n 1) -b 2000000 --before=default_reset --after=no_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x10000 $SCRIPT_DIR/grid_esp/build/grid_fw.bin
-
-if [ "$OTA" = "yes" ]; then
- otatool.py -p $(ls $PORT | head -n 1) --esptool-args="after=no_reset" switch_ota_partition --slot 0
-fi
-
-idf.py -C "./grid_esp" -b 2000000 -p $(ls $PORT | head -n 1) monitor
diff --git a/esp_flash.sh b/esp_flash.sh
new file mode 100755
index 000000000..663a725fd
--- /dev/null
+++ b/esp_flash.sh
@@ -0,0 +1,10 @@
+SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
+SRC_DIR=esp32s3
+PORT=${PORT:-/dev/ttyUSB0}
+OTA=${OTA:-yes}
+
+esptool.py --chip esp32s3 -p "$PORT" -b 2000000 --before=default_reset --after=no_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x10000 $SCRIPT_DIR/"$SRC_DIR"/build/grid_fw.bin
+
+if [ "$OTA" = "yes" ]; then
+ otatool.py -p "$PORT" switch_ota_partition --slot 0
+fi
diff --git a/esp_monitor.sh b/esp_monitor.sh
index 967c9f186..1edbfde41 100755
--- a/esp_monitor.sh
+++ b/esp_monitor.sh
@@ -1,2 +1,2 @@
PORT=${PORT:-/dev/ttyUSB0}
-idf.py -C "./grid_esp" -b 2000000 -p $PORT monitor
+idf.py -C esp32s3 -b 2000000 -p $PORT monitor
diff --git a/grid_common/CMakeLists.txt b/grid_common/CMakeLists.txt
deleted file mode 100644
index 5a812dad0..000000000
--- a/grid_common/CMakeLists.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-
-idf_component_register(
- SRCS
- "grid_protocol.c"
- "grid_config.c"
- "grid_cal.c"
- "grid_ain.c"
- "grid_asc.c"
- "grid_led.c"
- "grid_littlefs.c"
- "grid_math.c"
- "grid_sys.c"
- "grid_swsr.c"
- "grid_msg.c"
- "grid_noflash.c"
- "grid_platform.c"
- "grid_decode.c"
- "grid_port.c"
- "grid_usb.c"
- "grid_ui.c"
- "grid_ui_button.c"
- "grid_ui_encoder.c"
- "grid_ui_endless.c"
- "grid_ui_potmeter.c"
- "grid_ui_system.c"
- "grid_ui_lcd.c"
- "grid_module.c"
- "grid_lua_api.c"
- "grid_lua.c"
- "grid_transport.c"
- "grid_rollid.c"
- "grid_utask.c"
-
- "littlefs/lfs.c"
- "littlefs/lfs_util.c"
-
- "lua-5.4.3/src/dirent.c"
- "lua-5.4.3/src/lapi.c"
- "lua-5.4.3/src/lauxlib.c"
- "lua-5.4.3/src/lbaselib.c"
- "lua-5.4.3/src/lcode.c"
- "lua-5.4.3/src/lcorolib.c"
- "lua-5.4.3/src/lctype.c"
- "lua-5.4.3/src/ldblib.c"
- "lua-5.4.3/src/ldebug.c"
- "lua-5.4.3/src/ldo.c"
- "lua-5.4.3/src/ldump.c"
- "lua-5.4.3/src/lfunc.c"
- "lua-5.4.3/src/lgc.c"
- "lua-5.4.3/src/linit.c"
- "lua-5.4.3/src/liolib.c"
- "lua-5.4.3/src/llex.c"
- "lua-5.4.3/src/lmathlib.c"
- "lua-5.4.3/src/lmem.c"
- "lua-5.4.3/src/loadlib.c"
- "lua-5.4.3/src/lobject.c"
- "lua-5.4.3/src/lopcodes.c"
- "lua-5.4.3/src/loslib.c"
- "lua-5.4.3/src/lparser.c"
- "lua-5.4.3/src/lstate.c"
- "lua-5.4.3/src/lstring.c"
- "lua-5.4.3/src/lstrlib.c"
- "lua-5.4.3/src/ltable.c"
- "lua-5.4.3/src/ltablib.c"
- "lua-5.4.3/src/ltm.c"
- "lua-5.4.3/src/lundump.c"
- "lua-5.4.3/src/lutf8lib.c"
- "lua-5.4.3/src/lvm.c"
- "lua-5.4.3/src/lzio.c"
-
- "tomlc99/toml.c"
-
- INCLUDE_DIRS
- "."
- "littlefs"
- "lua-5.4.3/src"
- "proto"
-)
diff --git a/grid_common/host_test/.gitignore b/grid_common/host_test/.gitignore
deleted file mode 100644
index 56d3102e1..000000000
--- a/grid_common/host_test/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-build
-CMakeCache.txt
-CMakeFiles
diff --git a/grid_common/host_test/CMakeLists.txt b/grid_common/host_test/CMakeLists.txt
deleted file mode 100755
index 2da07006e..000000000
--- a/grid_common/host_test/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-
-# set the project name and version
-project(UnitTest VERSION 1.0)
-
-# Add linker flags to ignore undefined references
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--unresolved-symbols=ignore-in-object-files")
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") # If you're using C++
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") # If using C++
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie")
-
-# add the executable
-add_executable(${PROJECT_NAME} main.c unity.c ../grid_ui_encoder.c ../grid_ui.c ../grid_math.c ../grid_noflash.c ../grid_swsr.c)
-target_include_directories(${PROJECT_NAME} PRIVATE "../proto")
diff --git a/grid_common/host_test/main.c b/grid_common/host_test/main.c
deleted file mode 100644
index 65f32a082..000000000
--- a/grid_common/host_test/main.c
+++ /dev/null
@@ -1,98 +0,0 @@
-#include "../grid_ui.h"
-#include "../grid_ui_encoder.h"
-#include "unity.h"
-
-#include
-#include
-#include
-
-void setUp(void) {
- // set stuff up here
-}
-
-void tearDown(void) {
- // clean stuff up here
-}
-
-uint64_t grid_platform_rtc_get_micros(void) { return 0; }
-
-uint64_t grid_platform_rtc_get_diff(uint64_t t1, uint64_t t2) { return 0; }
-
-uint64_t grid_platform_rtc_get_elapsed_time(uint64_t told) { return 10 - told; }
-
-void* grid_platform_allocate_volatile(size_t size) { return malloc(size); }
-
-void test_function_should_calculateRelativeMode(void) {
-
- struct grid_ui_model* ui = &grid_ui_state;
-
- grid_ui_model_init(ui, 1);
- struct grid_ui_element* ele = &ui->element_list[0];
- grid_ui_element_encoder_init(ele);
-
- struct grid_ui_event* eve = grid_ui_event_find(ele, GRID_PARAMETER_EVENT_ENCODER);
-
- grid_ui_template_buffer_create(ele);
- grid_ui_page_clear_template_parameters(ui, 0);
- ele->template_parameter_list = ele->template_buffer_list_head->template_parameter_list;
- int32_t* template_parameter_list = ele->template_parameter_list;
-
- if (ele->page_change_cb != NULL) {
-
- ele->page_change_cb(ele, 0, 0);
- }
-
- grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MODE_index, 1); // set to relative mode
- grid_ui_event_state_set(eve, GRID_EVE_STATE_INIT);
- if (eve->parent->event_clear_cb != NULL) {
- eve->parent->event_clear_cb(eve);
- }
-
- // in relative mode value should be 64 after event reset
- TEST_ASSERT_EQUAL_UINT8(64, grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
-
- // in relative mode value should be 0 after event reset when min max is set to -100 ... 100
- grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MIN_index, -100); // set min to -100
- grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MAX_index, 100); // set max to 100
- grid_ui_event_state_set(eve, GRID_EVE_STATE_INIT);
- if (eve->parent->event_clear_cb != NULL) {
- eve->parent->event_clear_cb(eve);
- }
- TEST_ASSERT_EQUAL_UINT8(0, grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
-
- // in relative mode value should be 0 after event reset when min max is set to 200 ... 100
- grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MIN_index, 200);
- grid_ui_element_set_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_MAX_index, 100);
- grid_ui_event_state_set(eve, GRID_EVE_STATE_INIT);
- if (eve->parent->event_clear_cb != NULL) {
- eve->parent->event_clear_cb(eve);
- }
- TEST_ASSERT_EQUAL_UINT8(150, grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
-
- uint64_t last_real_time = 0;
- int16_t delta = 1;
-
- for (uint8_t i = 0; i < ele->template_parameter_list_length; i++) {
- printf("template_parameter_list[%d] = %d\n", i, template_parameter_list[i]);
- }
-
- grid_ui_encoder_update_trigger(ele, &last_real_time, delta);
-
- for (uint8_t i = 0; i < ele->template_parameter_list_length; i++) {
- printf("template_parameter_list[%d] = %d\n", i, template_parameter_list[i]);
- }
-
- printf("test_function_should_calculateRelativeMode: %d\n", grid_ui_event_istriggered(eve));
-
- TEST_ASSERT_NOT_EQUAL_INT32(200, grid_ui_element_get_template_parameter(ele, GRID_LUA_FNC_E_ENCODER_VALUE_index));
-
- // ....
-}
-
-// not needed when using generate_test_runner.rb
-int main(void) {
- UNITY_BEGIN();
- RUN_TEST(test_function_should_calculateRelativeMode);
-
- return UNITY_END();
-}
diff --git a/grid_common/host_test/unity.c b/grid_common/host_test/unity.c
deleted file mode 100644
index aee6a4275..000000000
--- a/grid_common/host_test/unity.c
+++ /dev/null
@@ -1,1795 +0,0 @@
-/* =========================================================================
- Unity Project - A Test Framework for C
- Copyright (c) 2007-21 Mike Karlesky, Mark VanderVoord, Greg Williams
- [Released under MIT License. Please refer to license.txt for details]
-============================================================================ */
-
-#include "unity.h"
-#include
-
-#ifdef AVR
-#include
-#else
-#define PROGMEM
-#endif
-
-/* If omitted from header, declare overridable prototypes here so they're ready for use */
-#ifdef UNITY_OMIT_OUTPUT_CHAR_HEADER_DECLARATION
-void UNITY_OUTPUT_CHAR(int);
-#endif
-
-/* Helpful macros for us to use here in Assert functions */
-#define UNITY_FAIL_AND_BAIL \
- { \
- Unity.CurrentTestFailed = 1; \
- UNITY_OUTPUT_FLUSH(); \
- TEST_ABORT(); \
- }
-#define UNITY_IGNORE_AND_BAIL \
- { \
- Unity.CurrentTestIgnored = 1; \
- UNITY_OUTPUT_FLUSH(); \
- TEST_ABORT(); \
- }
-#define RETURN_IF_FAIL_OR_IGNORE \
- if (Unity.CurrentTestFailed || Unity.CurrentTestIgnored) \
- TEST_ABORT()
-
-struct UNITY_STORAGE_T Unity;
-
-#ifdef UNITY_OUTPUT_COLOR
-const char PROGMEM UnityStrOk[] = "\033[42mOK\033[00m";
-const char PROGMEM UnityStrPass[] = "\033[42mPASS\033[00m";
-const char PROGMEM UnityStrFail[] = "\033[41mFAIL\033[00m";
-const char PROGMEM UnityStrIgnore[] = "\033[43mIGNORE\033[00m";
-#else
-const char PROGMEM UnityStrOk[] = "OK";
-const char PROGMEM UnityStrPass[] = "PASS";
-const char PROGMEM UnityStrFail[] = "FAIL";
-const char PROGMEM UnityStrIgnore[] = "IGNORE";
-#endif
-static const char PROGMEM UnityStrNull[] = "NULL";
-static const char PROGMEM UnityStrSpacer[] = ". ";
-static const char PROGMEM UnityStrExpected[] = " Expected ";
-static const char PROGMEM UnityStrWas[] = " Was ";
-static const char PROGMEM UnityStrGt[] = " to be greater than ";
-static const char PROGMEM UnityStrLt[] = " to be less than ";
-static const char PROGMEM UnityStrOrEqual[] = "or equal to ";
-static const char PROGMEM UnityStrNotEqual[] = " to be not equal to ";
-static const char PROGMEM UnityStrElement[] = " Element ";
-static const char PROGMEM UnityStrByte[] = " Byte ";
-static const char PROGMEM UnityStrMemory[] = " Memory Mismatch.";
-static const char PROGMEM UnityStrDelta[] = " Values Not Within Delta ";
-static const char PROGMEM UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless.";
-static const char PROGMEM UnityStrNullPointerForExpected[] = " Expected pointer to be NULL";
-static const char PROGMEM UnityStrNullPointerForActual[] = " Actual pointer was NULL";
-#ifndef UNITY_EXCLUDE_FLOAT
-static const char PROGMEM UnityStrNot[] = "Not ";
-static const char PROGMEM UnityStrInf[] = "Infinity";
-static const char PROGMEM UnityStrNegInf[] = "Negative Infinity";
-static const char PROGMEM UnityStrNaN[] = "NaN";
-static const char PROGMEM UnityStrDet[] = "Determinate";
-static const char PROGMEM UnityStrInvalidFloatTrait[] = "Invalid Float Trait";
-#endif
-const char PROGMEM UnityStrErrShorthand[] = "Unity Shorthand Support Disabled";
-const char PROGMEM UnityStrErrFloat[] = "Unity Floating Point Disabled";
-const char PROGMEM UnityStrErrDouble[] = "Unity Double Precision Disabled";
-const char PROGMEM UnityStrErr64[] = "Unity 64-bit Support Disabled";
-static const char PROGMEM UnityStrBreaker[] = "-----------------------";
-static const char PROGMEM UnityStrResultsTests[] = " Tests ";
-static const char PROGMEM UnityStrResultsFailures[] = " Failures ";
-static const char PROGMEM UnityStrResultsIgnored[] = " Ignored ";
-#ifndef UNITY_EXCLUDE_DETAILS
-static const char PROGMEM UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " ";
-static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " ";
-#endif
-/*-----------------------------------------------
- * Pretty Printers & Test Result Output Handlers
- *-----------------------------------------------*/
-
-/*-----------------------------------------------*/
-/* Local helper function to print characters. */
-static void UnityPrintChar(const char* pch) {
- /* printable characters plus CR & LF are printed */
- if ((*pch <= 126) && (*pch >= 32)) {
- UNITY_OUTPUT_CHAR(*pch);
- }
- /* write escaped carriage returns */
- else if (*pch == 13) {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('r');
- }
- /* write escaped line feeds */
- else if (*pch == 10) {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('n');
- }
- /* unprintable characters are shown as codes */
- else {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('x');
- UnityPrintNumberHex((UNITY_UINT)*pch, 2);
- }
-}
-
-/*-----------------------------------------------*/
-/* Local helper function to print ANSI escape strings e.g. "\033[42m". */
-#ifdef UNITY_OUTPUT_COLOR
-static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) {
- const char* pch = string;
- UNITY_UINT count = 0;
-
- while (*pch && (*pch != 'm')) {
- UNITY_OUTPUT_CHAR(*pch);
- pch++;
- count++;
- }
- UNITY_OUTPUT_CHAR('m');
- count++;
-
- return count;
-}
-#endif
-
-/*-----------------------------------------------*/
-void UnityPrint(const char* string) {
- const char* pch = string;
-
- if (pch != NULL) {
- while (*pch) {
-#ifdef UNITY_OUTPUT_COLOR
- /* print ANSI escape code */
- if ((*pch == 27) && (*(pch + 1) == '[')) {
- pch += UnityPrintAnsiEscapeString(pch);
- continue;
- }
-#endif
- UnityPrintChar(pch);
- pch++;
- }
- }
-}
-/*-----------------------------------------------*/
-void UnityPrintLen(const char* string, const UNITY_UINT32 length) {
- const char* pch = string;
-
- if (pch != NULL) {
- while (*pch && ((UNITY_UINT32)(pch - string) < length)) {
- /* printable characters plus CR & LF are printed */
- if ((*pch <= 126) && (*pch >= 32)) {
- UNITY_OUTPUT_CHAR(*pch);
- }
- /* write escaped carriage returns */
- else if (*pch == 13) {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('r');
- }
- /* write escaped line feeds */
- else if (*pch == 10) {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('n');
- }
- /* unprintable characters are shown as codes */
- else {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('x');
- UnityPrintNumberHex((UNITY_UINT)*pch, 2);
- }
- pch++;
- }
- }
-}
-
-/*-----------------------------------------------*/
-void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style) {
- if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) {
- if (style == UNITY_DISPLAY_STYLE_CHAR) {
- /* printable characters plus CR & LF are printed */
- UNITY_OUTPUT_CHAR('\'');
- if ((number <= 126) && (number >= 32)) {
- UNITY_OUTPUT_CHAR((int)number);
- }
- /* write escaped carriage returns */
- else if (number == 13) {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('r');
- }
- /* write escaped line feeds */
- else if (number == 10) {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('n');
- }
- /* unprintable characters are shown as codes */
- else {
- UNITY_OUTPUT_CHAR('\\');
- UNITY_OUTPUT_CHAR('x');
- UnityPrintNumberHex((UNITY_UINT)number, 2);
- }
- UNITY_OUTPUT_CHAR('\'');
- } else {
- UnityPrintNumber(number);
- }
- } else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) {
- UnityPrintNumberUnsigned((UNITY_UINT)number);
- } else {
- UNITY_OUTPUT_CHAR('0');
- UNITY_OUTPUT_CHAR('x');
- UnityPrintNumberHex((UNITY_UINT)number, (char)((style & 0xF) * 2));
- }
-}
-
-/*-----------------------------------------------*/
-void UnityPrintNumber(const UNITY_INT number_to_print) {
- UNITY_UINT number = (UNITY_UINT)number_to_print;
-
- if (number_to_print < 0) {
- /* A negative number, including MIN negative */
- UNITY_OUTPUT_CHAR('-');
- number = (~number) + 1;
- }
- UnityPrintNumberUnsigned(number);
-}
-
-/*-----------------------------------------------
- * basically do an itoa using as little ram as possible */
-void UnityPrintNumberUnsigned(const UNITY_UINT number) {
- UNITY_UINT divisor = 1;
-
- /* figure out initial divisor */
- while (number / divisor > 9) {
- divisor *= 10;
- }
-
- /* now mod and print, then divide divisor */
- do {
- UNITY_OUTPUT_CHAR((char)('0' + (number / divisor % 10)));
- divisor /= 10;
- } while (divisor > 0);
-}
-
-/*-----------------------------------------------*/
-void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print) {
- int nibble;
- char nibbles = nibbles_to_print;
-
- if ((unsigned)nibbles > UNITY_MAX_NIBBLES) {
- nibbles = UNITY_MAX_NIBBLES;
- }
-
- while (nibbles > 0) {
- nibbles--;
- nibble = (int)(number >> (nibbles * 4)) & 0x0F;
- if (nibble <= 9) {
- UNITY_OUTPUT_CHAR((char)('0' + nibble));
- } else {
- UNITY_OUTPUT_CHAR((char)('A' - 10 + nibble));
- }
- }
-}
-
-/*-----------------------------------------------*/
-void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) {
- UNITY_UINT current_bit = (UNITY_UINT)1 << (UNITY_INT_WIDTH - 1);
- UNITY_INT32 i;
-
- for (i = 0; i < UNITY_INT_WIDTH; i++) {
- if (current_bit & mask) {
- if (current_bit & number) {
- UNITY_OUTPUT_CHAR('1');
- } else {
- UNITY_OUTPUT_CHAR('0');
- }
- } else {
- UNITY_OUTPUT_CHAR('X');
- }
- current_bit = current_bit >> 1;
- }
-}
-
-/*-----------------------------------------------*/
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
-/*
- * This function prints a floating-point value in a format similar to
- * printf("%.7g") on a single-precision machine or printf("%.9g") on a
- * double-precision machine. The 7th digit won't always be totally correct
- * in single-precision operation (for that level of accuracy, a more
- * complicated algorithm would be needed).
- */
-void UnityPrintFloat(const UNITY_DOUBLE input_number) {
-#ifdef UNITY_INCLUDE_DOUBLE
- static const int sig_digits = 9;
- static const UNITY_INT32 min_scaled = 100000000;
- static const UNITY_INT32 max_scaled = 1000000000;
-#else
- static const int sig_digits = 7;
- static const UNITY_INT32 min_scaled = 1000000;
- static const UNITY_INT32 max_scaled = 10000000;
-#endif
-
- UNITY_DOUBLE number = input_number;
-
- /* print minus sign (does not handle negative zero) */
- if (number < 0.0f) {
- UNITY_OUTPUT_CHAR('-');
- number = -number;
- }
-
- /* handle zero, NaN, and +/- infinity */
- if (number == 0.0f) {
- UnityPrint("0");
- } else if (isnan(number)) {
- UnityPrint("nan");
- } else if (isinf(number)) {
- UnityPrint("inf");
- } else {
- UNITY_INT32 n_int = 0, n;
- int exponent = 0;
- int decimals, digits;
- char buf[16] = {0};
-
- /*
- * Scale up or down by powers of 10. To minimize rounding error,
- * start with a factor/divisor of 10^10, which is the largest
- * power of 10 that can be represented exactly. Finally, compute
- * (exactly) the remaining power of 10 and perform one more
- * multiplication or division.
- */
- if (number < 1.0f) {
- UNITY_DOUBLE factor = 1.0f;
-
- while (number < (UNITY_DOUBLE)max_scaled / 1e10f) {
- number *= 1e10f;
- exponent -= 10;
- }
- while (number * factor < (UNITY_DOUBLE)min_scaled) {
- factor *= 10.0f;
- exponent--;
- }
-
- number *= factor;
- } else if (number > (UNITY_DOUBLE)max_scaled) {
- UNITY_DOUBLE divisor = 1.0f;
-
- while (number > (UNITY_DOUBLE)min_scaled * 1e10f) {
- number /= 1e10f;
- exponent += 10;
- }
- while (number / divisor > (UNITY_DOUBLE)max_scaled) {
- divisor *= 10.0f;
- exponent++;
- }
-
- number /= divisor;
- } else {
- /*
- * In this range, we can split off the integer part before
- * doing any multiplications. This reduces rounding error by
- * freeing up significant bits in the fractional part.
- */
- UNITY_DOUBLE factor = 1.0f;
- n_int = (UNITY_INT32)number;
- number -= (UNITY_DOUBLE)n_int;
-
- while (n_int < min_scaled) {
- n_int *= 10;
- factor *= 10.0f;
- exponent--;
- }
-
- number *= factor;
- }
-
- /* round to nearest integer */
- n = ((UNITY_INT32)(number + number) + 1) / 2;
-
-#ifndef UNITY_ROUND_TIES_AWAY_FROM_ZERO
- /* round to even if exactly between two integers */
- if ((n & 1) && (((UNITY_DOUBLE)n - number) == 0.5f))
- n--;
-#endif
-
- n += n_int;
-
- if (n >= max_scaled) {
- n = min_scaled;
- exponent++;
- }
-
- /* determine where to place decimal point */
- decimals = ((exponent <= 0) && (exponent >= -(sig_digits + 3))) ? (-exponent) : (sig_digits - 1);
- exponent += decimals;
-
- /* truncate trailing zeroes after decimal point */
- while ((decimals > 0) && ((n % 10) == 0)) {
- n /= 10;
- decimals--;
- }
-
- /* build up buffer in reverse order */
- digits = 0;
- while ((n != 0) || (digits < (decimals + 1))) {
- buf[digits++] = (char)('0' + n % 10);
- n /= 10;
- }
- while (digits > 0) {
- if (digits == decimals) {
- UNITY_OUTPUT_CHAR('.');
- }
- UNITY_OUTPUT_CHAR(buf[--digits]);
- }
-
- /* print exponent if needed */
- if (exponent != 0) {
- UNITY_OUTPUT_CHAR('e');
-
- if (exponent < 0) {
- UNITY_OUTPUT_CHAR('-');
- exponent = -exponent;
- } else {
- UNITY_OUTPUT_CHAR('+');
- }
-
- digits = 0;
- while ((exponent != 0) || (digits < 2)) {
- buf[digits++] = (char)('0' + exponent % 10);
- exponent /= 10;
- }
- while (digits > 0) {
- UNITY_OUTPUT_CHAR(buf[--digits]);
- }
- }
- }
-}
-#endif /* ! UNITY_EXCLUDE_FLOAT_PRINT */
-
-/*-----------------------------------------------*/
-static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) {
-#ifdef UNITY_OUTPUT_FOR_ECLIPSE
- UNITY_OUTPUT_CHAR('(');
- UnityPrint(file);
- UNITY_OUTPUT_CHAR(':');
- UnityPrintNumber((UNITY_INT)line);
- UNITY_OUTPUT_CHAR(')');
- UNITY_OUTPUT_CHAR(' ');
- UnityPrint(Unity.CurrentTestName);
- UNITY_OUTPUT_CHAR(':');
-#else
-#ifdef UNITY_OUTPUT_FOR_IAR_WORKBENCH
- UnityPrint("');
- UnityPrint(Unity.CurrentTestName);
- UnityPrint(" ");
-#else
-#ifdef UNITY_OUTPUT_FOR_QT_CREATOR
- UnityPrint("file://");
- UnityPrint(file);
- UNITY_OUTPUT_CHAR(':');
- UnityPrintNumber((UNITY_INT)line);
- UNITY_OUTPUT_CHAR(' ');
- UnityPrint(Unity.CurrentTestName);
- UNITY_OUTPUT_CHAR(':');
-#else
- UnityPrint(file);
- UNITY_OUTPUT_CHAR(':');
- UnityPrintNumber((UNITY_INT)line);
- UNITY_OUTPUT_CHAR(':');
- UnityPrint(Unity.CurrentTestName);
- UNITY_OUTPUT_CHAR(':');
-#endif
-#endif
-#endif
-}
-
-/*-----------------------------------------------*/
-static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line) {
- UnityTestResultsBegin(Unity.TestFile, line);
- UnityPrint(UnityStrFail);
- UNITY_OUTPUT_CHAR(':');
-}
-
-/*-----------------------------------------------*/
-void UnityConcludeTest(void) {
- if (Unity.CurrentTestIgnored) {
- Unity.TestIgnores++;
- } else if (!Unity.CurrentTestFailed) {
- UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber);
- UnityPrint(UnityStrPass);
- } else {
- Unity.TestFailures++;
- }
-
- Unity.CurrentTestFailed = 0;
- Unity.CurrentTestIgnored = 0;
- UNITY_PRINT_EXEC_TIME();
- UNITY_PRINT_EOL();
- UNITY_FLUSH_CALL();
-}
-
-/*-----------------------------------------------*/
-static void UnityAddMsgIfSpecified(const char* msg) {
- if (msg) {
- UnityPrint(UnityStrSpacer);
-
-#ifdef UNITY_PRINT_TEST_CONTEXT
- UNITY_PRINT_TEST_CONTEXT();
-#endif
-#ifndef UNITY_EXCLUDE_DETAILS
- if (Unity.CurrentDetail1) {
- UnityPrint(UnityStrDetail1Name);
- UnityPrint(Unity.CurrentDetail1);
- if (Unity.CurrentDetail2) {
- UnityPrint(UnityStrDetail2Name);
- UnityPrint(Unity.CurrentDetail2);
- }
- UnityPrint(UnityStrSpacer);
- }
-#endif
- UnityPrint(msg);
- }
-}
-
-/*-----------------------------------------------*/
-static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual) {
- UnityPrint(UnityStrExpected);
- if (expected != NULL) {
- UNITY_OUTPUT_CHAR('\'');
- UnityPrint(expected);
- UNITY_OUTPUT_CHAR('\'');
- } else {
- UnityPrint(UnityStrNull);
- }
- UnityPrint(UnityStrWas);
- if (actual != NULL) {
- UNITY_OUTPUT_CHAR('\'');
- UnityPrint(actual);
- UNITY_OUTPUT_CHAR('\'');
- } else {
- UnityPrint(UnityStrNull);
- }
-}
-
-/*-----------------------------------------------*/
-static void UnityPrintExpectedAndActualStringsLen(const char* expected, const char* actual, const UNITY_UINT32 length) {
- UnityPrint(UnityStrExpected);
- if (expected != NULL) {
- UNITY_OUTPUT_CHAR('\'');
- UnityPrintLen(expected, length);
- UNITY_OUTPUT_CHAR('\'');
- } else {
- UnityPrint(UnityStrNull);
- }
- UnityPrint(UnityStrWas);
- if (actual != NULL) {
- UNITY_OUTPUT_CHAR('\'');
- UnityPrintLen(actual, length);
- UNITY_OUTPUT_CHAR('\'');
- } else {
- UnityPrint(UnityStrNull);
- }
-}
-
-/*-----------------------------------------------
- * Assertion & Control Helpers
- *-----------------------------------------------*/
-
-/*-----------------------------------------------*/
-static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_LINE_TYPE lineNumber, const char* msg) {
- /* Both are NULL or same pointer */
- if (expected == actual) {
- return 0;
- }
-
- /* print and return true if just expected is NULL */
- if (expected == NULL) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrNullPointerForExpected);
- UnityAddMsgIfSpecified(msg);
- return 1;
- }
-
- /* print and return true if just actual is NULL */
- if (actual == NULL) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrNullPointerForActual);
- UnityAddMsgIfSpecified(msg);
- return 1;
- }
-
- return 0; /* return false if neither is NULL */
-}
-
-/*-----------------------------------------------
- * Assertion Functions
- *-----------------------------------------------*/
-
-/*-----------------------------------------------*/
-void UnityAssertBits(const UNITY_INT mask, const UNITY_INT expected, const UNITY_INT actual, const char* msg, const UNITY_LINE_TYPE lineNumber) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- if ((mask & expected) != (mask & actual)) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrExpected);
- UnityPrintMask((UNITY_UINT)mask, (UNITY_UINT)expected);
- UnityPrint(UnityStrWas);
- UnityPrintMask((UNITY_UINT)mask, (UNITY_UINT)actual);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualNumber(const UNITY_INT expected, const UNITY_INT actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_DISPLAY_STYLE_T style) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (expected != actual) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrExpected);
- UnityPrintNumberByStyle(expected, style);
- UnityPrint(UnityStrWas);
- UnityPrintNumberByStyle(actual, style);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertGreaterOrLessOrEqualNumber(const UNITY_INT threshold, const UNITY_INT actual, const UNITY_COMPARISON_T compare, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_DISPLAY_STYLE_T style) {
- int failed = 0;
- RETURN_IF_FAIL_OR_IGNORE;
-
- if ((threshold == actual) && (compare & UNITY_EQUAL_TO)) {
- return;
- }
- if ((threshold == actual)) {
- failed = 1;
- }
-
- if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) {
- if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) {
- failed = 1;
- }
- if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) {
- failed = 1;
- }
- } else /* UINT or HEX */
- {
- if (((UNITY_UINT)actual > (UNITY_UINT)threshold) && (compare & UNITY_SMALLER_THAN)) {
- failed = 1;
- }
- if (((UNITY_UINT)actual < (UNITY_UINT)threshold) && (compare & UNITY_GREATER_THAN)) {
- failed = 1;
- }
- }
-
- if (failed) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrExpected);
- UnityPrintNumberByStyle(actual, style);
- if (compare & UNITY_GREATER_THAN) {
- UnityPrint(UnityStrGt);
- }
- if (compare & UNITY_SMALLER_THAN) {
- UnityPrint(UnityStrLt);
- }
- if (compare & UNITY_EQUAL_TO) {
- UnityPrint(UnityStrOrEqual);
- }
- if (compare == UNITY_NOT_EQUAL) {
- UnityPrint(UnityStrNotEqual);
- }
- UnityPrintNumberByStyle(threshold, style);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-#define UnityPrintPointlessAndBail() \
- { \
- UnityTestResultsFailBegin(lineNumber); \
- UnityPrint(UnityStrPointless); \
- UnityAddMsgIfSpecified(msg); \
- UNITY_FAIL_AND_BAIL; \
- }
-
-/*-----------------------------------------------*/
-void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_DISPLAY_STYLE_T style, const UNITY_FLAGS_T flags) {
- UNITY_UINT32 elements = num_elements;
- unsigned int length = style & 0xF;
- unsigned int increment = 0;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (num_elements == 0) {
- UnityPrintPointlessAndBail();
- }
-
- if (expected == actual) {
- return; /* Both are NULL or same pointer */
- }
-
- if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) {
- UNITY_FAIL_AND_BAIL;
- }
-
- while ((elements > 0) && (elements--)) {
- UNITY_INT expect_val;
- UNITY_INT actual_val;
-
- switch (length) {
- case 1:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual;
- increment = sizeof(UNITY_INT8);
- break;
-
- case 2:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual;
- increment = sizeof(UNITY_INT16);
- break;
-
-#ifdef UNITY_SUPPORT_64
- case 8:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual;
- increment = sizeof(UNITY_INT64);
- break;
-#endif
-
- default: /* default is length 4 bytes */
- case 4:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual;
- increment = sizeof(UNITY_INT32);
- length = 4;
- break;
- }
-
- if (expect_val != actual_val) {
- if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) { /* For UINT, remove sign extension (padding 1's) from signed type casts above */
- UNITY_INT mask = 1;
- mask = (mask << 8 * length) - 1;
- expect_val &= mask;
- actual_val &= mask;
- }
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrElement);
- UnityPrintNumberUnsigned(num_elements - elements - 1);
- UnityPrint(UnityStrExpected);
- UnityPrintNumberByStyle(expect_val, style);
- UnityPrint(UnityStrWas);
- UnityPrintNumberByStyle(actual_val, style);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
- /* Walk through array by incrementing the pointers */
- if (flags == UNITY_ARRAY_TO_ARRAY) {
- expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment);
- }
- actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment);
- }
-}
-
-/*-----------------------------------------------*/
-#ifndef UNITY_EXCLUDE_FLOAT
-/* Wrap this define in a function with variable types as float or double */
-#define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff) \
- if (isinf(expected) && isinf(actual) && (((expected) < 0) == ((actual) < 0))) \
- return 1; \
- if (UNITY_NAN_CHECK) \
- return 1; \
- (diff) = (actual) - (expected); \
- if ((diff) < 0) \
- (diff) = -(diff); \
- if ((delta) < 0) \
- (delta) = -(delta); \
- return !(isnan(diff) || isinf(diff) || ((diff) > (delta)))
-/* This first part of this condition will catch any NaN or Infinite values */
-#ifndef UNITY_NAN_NOT_EQUAL_NAN
-#define UNITY_NAN_CHECK isnan(expected) && isnan(actual)
-#else
-#define UNITY_NAN_CHECK 0
-#endif
-
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
-#define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \
- { \
- UnityPrint(UnityStrExpected); \
- UnityPrintFloat(expected); \
- UnityPrint(UnityStrWas); \
- UnityPrintFloat(actual); \
- }
-#else
-#define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) UnityPrint(UnityStrDelta)
-#endif /* UNITY_EXCLUDE_FLOAT_PRINT */
-
-/*-----------------------------------------------*/
-static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) {
- UNITY_FLOAT diff;
- UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff);
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, const UNITY_UINT32 num_elements, const char* msg,
- const UNITY_LINE_TYPE lineNumber, const UNITY_FLAGS_T flags) {
- UNITY_UINT32 elements = num_elements;
- UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_expected = expected;
- UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_actual = actual;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (elements == 0) {
- UnityPrintPointlessAndBail();
- }
-
- if (expected == actual) {
- return; /* Both are NULL or same pointer */
- }
-
- if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) {
- UNITY_FAIL_AND_BAIL;
- }
-
- while (elements--) {
- if (!UnityFloatsWithin(*ptr_expected * UNITY_FLOAT_PRECISION, *ptr_expected, *ptr_actual)) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrElement);
- UnityPrintNumberUnsigned(num_elements - elements - 1);
- UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT((UNITY_DOUBLE)*ptr_expected, (UNITY_DOUBLE)*ptr_actual);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
- if (flags == UNITY_ARRAY_TO_ARRAY) {
- ptr_expected++;
- }
- ptr_actual++;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertFloatsWithin(const UNITY_FLOAT delta, const UNITY_FLOAT expected, const UNITY_FLOAT actual, const char* msg, const UNITY_LINE_TYPE lineNumber) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (!UnityFloatsWithin(delta, expected, actual)) {
- UnityTestResultsFailBegin(lineNumber);
- UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT((UNITY_DOUBLE)expected, (UNITY_DOUBLE)actual);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertFloatSpecial(const UNITY_FLOAT actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_FLOAT_TRAIT_T style) {
- const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet};
- UNITY_INT should_be_trait = ((UNITY_INT)style & 1);
- UNITY_INT is_trait = !should_be_trait;
- UNITY_INT trait_index = (UNITY_INT)(style >> 1);
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- switch (style) {
- case UNITY_FLOAT_IS_INF:
- case UNITY_FLOAT_IS_NOT_INF:
- is_trait = isinf(actual) && (actual > 0);
- break;
- case UNITY_FLOAT_IS_NEG_INF:
- case UNITY_FLOAT_IS_NOT_NEG_INF:
- is_trait = isinf(actual) && (actual < 0);
- break;
-
- case UNITY_FLOAT_IS_NAN:
- case UNITY_FLOAT_IS_NOT_NAN:
- is_trait = isnan(actual) ? 1 : 0;
- break;
-
- case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */
- case UNITY_FLOAT_IS_NOT_DET:
- is_trait = !isinf(actual) && !isnan(actual);
- break;
-
- default: /* including UNITY_FLOAT_INVALID_TRAIT */
- trait_index = 0;
- trait_names[0] = UnityStrInvalidFloatTrait;
- break;
- }
-
- if (is_trait != should_be_trait) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrExpected);
- if (!should_be_trait) {
- UnityPrint(UnityStrNot);
- }
- UnityPrint(trait_names[trait_index]);
- UnityPrint(UnityStrWas);
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
- UnityPrintFloat((UNITY_DOUBLE)actual);
-#else
- if (should_be_trait) {
- UnityPrint(UnityStrNot);
- }
- UnityPrint(trait_names[trait_index]);
-#endif
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-#endif /* not UNITY_EXCLUDE_FLOAT */
-
-/*-----------------------------------------------*/
-#ifndef UNITY_EXCLUDE_DOUBLE
-static int UnityDoublesWithin(UNITY_DOUBLE delta, UNITY_DOUBLE expected, UNITY_DOUBLE actual) {
- UNITY_DOUBLE diff;
- UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff);
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected, UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, const UNITY_UINT32 num_elements, const char* msg,
- const UNITY_LINE_TYPE lineNumber, const UNITY_FLAGS_T flags) {
- UNITY_UINT32 elements = num_elements;
- UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_expected = expected;
- UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_actual = actual;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (elements == 0) {
- UnityPrintPointlessAndBail();
- }
-
- if (expected == actual) {
- return; /* Both are NULL or same pointer */
- }
-
- if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) {
- UNITY_FAIL_AND_BAIL;
- }
-
- while (elements--) {
- if (!UnityDoublesWithin(*ptr_expected * UNITY_DOUBLE_PRECISION, *ptr_expected, *ptr_actual)) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrElement);
- UnityPrintNumberUnsigned(num_elements - elements - 1);
- UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(*ptr_expected, *ptr_actual);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
- if (flags == UNITY_ARRAY_TO_ARRAY) {
- ptr_expected++;
- }
- ptr_actual++;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, const UNITY_DOUBLE expected, const UNITY_DOUBLE actual, const char* msg, const UNITY_LINE_TYPE lineNumber) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (!UnityDoublesWithin(delta, expected, actual)) {
- UnityTestResultsFailBegin(lineNumber);
- UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_FLOAT_TRAIT_T style) {
- const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet};
- UNITY_INT should_be_trait = ((UNITY_INT)style & 1);
- UNITY_INT is_trait = !should_be_trait;
- UNITY_INT trait_index = (UNITY_INT)(style >> 1);
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- switch (style) {
- case UNITY_FLOAT_IS_INF:
- case UNITY_FLOAT_IS_NOT_INF:
- is_trait = isinf(actual) && (actual > 0);
- break;
- case UNITY_FLOAT_IS_NEG_INF:
- case UNITY_FLOAT_IS_NOT_NEG_INF:
- is_trait = isinf(actual) && (actual < 0);
- break;
-
- case UNITY_FLOAT_IS_NAN:
- case UNITY_FLOAT_IS_NOT_NAN:
- is_trait = isnan(actual) ? 1 : 0;
- break;
-
- case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */
- case UNITY_FLOAT_IS_NOT_DET:
- is_trait = !isinf(actual) && !isnan(actual);
- break;
-
- default: /* including UNITY_FLOAT_INVALID_TRAIT */
- trait_index = 0;
- trait_names[0] = UnityStrInvalidFloatTrait;
- break;
- }
-
- if (is_trait != should_be_trait) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrExpected);
- if (!should_be_trait) {
- UnityPrint(UnityStrNot);
- }
- UnityPrint(trait_names[trait_index]);
- UnityPrint(UnityStrWas);
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
- UnityPrintFloat(actual);
-#else
- if (should_be_trait) {
- UnityPrint(UnityStrNot);
- }
- UnityPrint(trait_names[trait_index]);
-#endif
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-#endif /* not UNITY_EXCLUDE_DOUBLE */
-
-/*-----------------------------------------------*/
-void UnityAssertNumbersWithin(const UNITY_UINT delta, const UNITY_INT expected, const UNITY_INT actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_DISPLAY_STYLE_T style) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) {
- if (actual > expected) {
- Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta);
- } else {
- Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta);
- }
- } else {
- if ((UNITY_UINT)actual > (UNITY_UINT)expected) {
- Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta);
- } else {
- Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta);
- }
- }
-
- if (Unity.CurrentTestFailed) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrDelta);
- UnityPrintNumberByStyle((UNITY_INT)delta, style);
- UnityPrint(UnityStrExpected);
- UnityPrintNumberByStyle(expected, style);
- UnityPrint(UnityStrWas);
- UnityPrintNumberByStyle(actual, style);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_DISPLAY_STYLE_T style, const UNITY_FLAGS_T flags) {
- UNITY_UINT32 elements = num_elements;
- unsigned int length = style & 0xF;
- unsigned int increment = 0;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- if (num_elements == 0) {
- UnityPrintPointlessAndBail();
- }
-
- if (expected == actual) {
- return; /* Both are NULL or same pointer */
- }
-
- if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) {
- UNITY_FAIL_AND_BAIL;
- }
-
- while ((elements > 0) && (elements--)) {
- UNITY_INT expect_val;
- UNITY_INT actual_val;
-
- switch (length) {
- case 1:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual;
- increment = sizeof(UNITY_INT8);
- break;
-
- case 2:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual;
- increment = sizeof(UNITY_INT16);
- break;
-
-#ifdef UNITY_SUPPORT_64
- case 8:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual;
- increment = sizeof(UNITY_INT64);
- break;
-#endif
-
- default: /* default is length 4 bytes */
- case 4:
- expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected;
- actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual;
- increment = sizeof(UNITY_INT32);
- length = 4;
- break;
- }
-
- if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) {
- if (actual_val > expect_val) {
- Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta);
- } else {
- Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta);
- }
- } else {
- if ((UNITY_UINT)actual_val > (UNITY_UINT)expect_val) {
- Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta);
- } else {
- Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta);
- }
- }
-
- if (Unity.CurrentTestFailed) {
- if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) { /* For UINT, remove sign extension (padding 1's) from signed type casts above */
- UNITY_INT mask = 1;
- mask = (mask << 8 * length) - 1;
- expect_val &= mask;
- actual_val &= mask;
- }
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrDelta);
- UnityPrintNumberByStyle((UNITY_INT)delta, style);
- UnityPrint(UnityStrElement);
- UnityPrintNumberUnsigned(num_elements - elements - 1);
- UnityPrint(UnityStrExpected);
- UnityPrintNumberByStyle(expect_val, style);
- UnityPrint(UnityStrWas);
- UnityPrintNumberByStyle(actual_val, style);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
- /* Walk through array by incrementing the pointers */
- if (flags == UNITY_ARRAY_TO_ARRAY) {
- expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment);
- }
- actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment);
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualString(const char* expected, const char* actual, const char* msg, const UNITY_LINE_TYPE lineNumber) {
- UNITY_UINT32 i;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- /* if both pointers not null compare the strings */
- if (expected && actual) {
- for (i = 0; expected[i] || actual[i]; i++) {
- if (expected[i] != actual[i]) {
- Unity.CurrentTestFailed = 1;
- break;
- }
- }
- } else { /* handle case of one pointers being null (if both null, test should pass) */
- if (expected != actual) {
- Unity.CurrentTestFailed = 1;
- }
- }
-
- if (Unity.CurrentTestFailed) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrintExpectedAndActualStrings(expected, actual);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualStringLen(const char* expected, const char* actual, const UNITY_UINT32 length, const char* msg, const UNITY_LINE_TYPE lineNumber) {
- UNITY_UINT32 i;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- /* if both pointers not null compare the strings */
- if (expected && actual) {
- for (i = 0; (i < length) && (expected[i] || actual[i]); i++) {
- if (expected[i] != actual[i]) {
- Unity.CurrentTestFailed = 1;
- break;
- }
- }
- } else { /* handle case of one pointers being null (if both null, test should pass) */
- if (expected != actual) {
- Unity.CurrentTestFailed = 1;
- }
- }
-
- if (Unity.CurrentTestFailed) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrintExpectedAndActualStringsLen(expected, actual, length);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, const char** actual, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_FLAGS_T flags) {
- UNITY_UINT32 i = 0;
- UNITY_UINT32 j = 0;
- const char* expd = NULL;
- const char* act = NULL;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- /* if no elements, it's an error */
- if (num_elements == 0) {
- UnityPrintPointlessAndBail();
- }
-
- if ((const void*)expected == (const void*)actual) {
- return; /* Both are NULL or same pointer */
- }
-
- if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) {
- UNITY_FAIL_AND_BAIL;
- }
-
- if (flags != UNITY_ARRAY_TO_ARRAY) {
- expd = (const char*)expected;
- }
-
- do {
- act = actual[j];
- if (flags == UNITY_ARRAY_TO_ARRAY) {
- expd = ((const char* const*)expected)[j];
- }
-
- /* if both pointers not null compare the strings */
- if (expd && act) {
- for (i = 0; expd[i] || act[i]; i++) {
- if (expd[i] != act[i]) {
- Unity.CurrentTestFailed = 1;
- break;
- }
- }
- } else { /* handle case of one pointers being null (if both null, test should pass) */
- if (expd != act) {
- Unity.CurrentTestFailed = 1;
- }
- }
-
- if (Unity.CurrentTestFailed) {
- UnityTestResultsFailBegin(lineNumber);
- if (num_elements > 1) {
- UnityPrint(UnityStrElement);
- UnityPrintNumberUnsigned(j);
- }
- UnityPrintExpectedAndActualStrings(expd, act);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
- } while (++j < num_elements);
-}
-
-/*-----------------------------------------------*/
-void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_UINT32 length, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_FLAGS_T flags) {
- UNITY_PTR_ATTRIBUTE const unsigned char* ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected;
- UNITY_PTR_ATTRIBUTE const unsigned char* ptr_act = (UNITY_PTR_ATTRIBUTE const unsigned char*)actual;
- UNITY_UINT32 elements = num_elements;
- UNITY_UINT32 bytes;
-
- RETURN_IF_FAIL_OR_IGNORE;
-
- if ((elements == 0) || (length == 0)) {
- UnityPrintPointlessAndBail();
- }
-
- if (expected == actual) {
- return; /* Both are NULL or same pointer */
- }
-
- if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) {
- UNITY_FAIL_AND_BAIL;
- }
-
- while (elements--) {
- bytes = length;
- while (bytes--) {
- if (*ptr_exp != *ptr_act) {
- UnityTestResultsFailBegin(lineNumber);
- UnityPrint(UnityStrMemory);
- if (num_elements > 1) {
- UnityPrint(UnityStrElement);
- UnityPrintNumberUnsigned(num_elements - elements - 1);
- }
- UnityPrint(UnityStrByte);
- UnityPrintNumberUnsigned(length - bytes - 1);
- UnityPrint(UnityStrExpected);
- UnityPrintNumberByStyle(*ptr_exp, UNITY_DISPLAY_STYLE_HEX8);
- UnityPrint(UnityStrWas);
- UnityPrintNumberByStyle(*ptr_act, UNITY_DISPLAY_STYLE_HEX8);
- UnityAddMsgIfSpecified(msg);
- UNITY_FAIL_AND_BAIL;
- }
- ptr_exp++;
- ptr_act++;
- }
- if (flags == UNITY_ARRAY_TO_VAL) {
- ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected;
- }
- }
-}
-
-/*-----------------------------------------------*/
-
-static union {
- UNITY_INT8 i8;
- UNITY_INT16 i16;
- UNITY_INT32 i32;
-#ifdef UNITY_SUPPORT_64
- UNITY_INT64 i64;
-#endif
-#ifndef UNITY_EXCLUDE_FLOAT
- float f;
-#endif
-#ifndef UNITY_EXCLUDE_DOUBLE
- double d;
-#endif
-} UnityQuickCompare;
-
-UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size) {
- switch (size) {
- case 1:
- UnityQuickCompare.i8 = (UNITY_INT8)num;
- return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8);
-
- case 2:
- UnityQuickCompare.i16 = (UNITY_INT16)num;
- return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16);
-
-#ifdef UNITY_SUPPORT_64
- case 8:
- UnityQuickCompare.i64 = (UNITY_INT64)num;
- return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64);
-#endif
-
- default: /* 4 bytes */
- UnityQuickCompare.i32 = (UNITY_INT32)num;
- return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32);
- }
-}
-
-#ifndef UNITY_EXCLUDE_FLOAT
-/*-----------------------------------------------*/
-UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) {
- UnityQuickCompare.f = num;
- return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.f);
-}
-#endif
-
-#ifndef UNITY_EXCLUDE_DOUBLE
-/*-----------------------------------------------*/
-UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) {
- UnityQuickCompare.d = num;
- return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.d);
-}
-#endif
-
-/*-----------------------------------------------
- * printf helper function
- *-----------------------------------------------*/
-#ifdef UNITY_INCLUDE_PRINT_FORMATTED
-static void UnityPrintFVA(const char* format, va_list va) {
- const char* pch = format;
- if (pch != NULL) {
- while (*pch) {
- /* format identification character */
- if (*pch == '%') {
- pch++;
-
- if (pch != NULL) {
- switch (*pch) {
- case 'd':
- case 'i': {
- const int number = va_arg(va, int);
- UnityPrintNumber((UNITY_INT)number);
- break;
- }
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
- case 'f':
- case 'g': {
- const double number = va_arg(va, double);
- UnityPrintFloat((UNITY_DOUBLE)number);
- break;
- }
-#endif
- case 'u': {
- const unsigned int number = va_arg(va, unsigned int);
- UnityPrintNumberUnsigned((UNITY_UINT)number);
- break;
- }
- case 'b': {
- const unsigned int number = va_arg(va, unsigned int);
- const UNITY_UINT mask = (UNITY_UINT)0 - (UNITY_UINT)1;
- UNITY_OUTPUT_CHAR('0');
- UNITY_OUTPUT_CHAR('b');
- UnityPrintMask(mask, (UNITY_UINT)number);
- break;
- }
- case 'x':
- case 'X':
- case 'p': {
- const unsigned int number = va_arg(va, unsigned int);
- UNITY_OUTPUT_CHAR('0');
- UNITY_OUTPUT_CHAR('x');
- UnityPrintNumberHex((UNITY_UINT)number, 8);
- break;
- }
- case 'c': {
- const int ch = va_arg(va, int);
- UnityPrintChar((const char*)&ch);
- break;
- }
- case 's': {
- const char* string = va_arg(va, const char*);
- UnityPrint(string);
- break;
- }
- case '%': {
- UnityPrintChar(pch);
- break;
- }
- default: {
- /* print the unknown format character */
- UNITY_OUTPUT_CHAR('%');
- UnityPrintChar(pch);
- break;
- }
- }
- }
- }
-#ifdef UNITY_OUTPUT_COLOR
- /* print ANSI escape code */
- else if ((*pch == 27) && (*(pch + 1) == '[')) {
- pch += UnityPrintAnsiEscapeString(pch);
- continue;
- }
-#endif
- else if (*pch == '\n') {
- UNITY_PRINT_EOL();
- } else {
- UnityPrintChar(pch);
- }
-
- pch++;
- }
- }
-}
-
-void UnityPrintF(const UNITY_LINE_TYPE line, const char* format, ...) {
- UnityTestResultsBegin(Unity.TestFile, line);
- UnityPrint("INFO");
- if (format != NULL) {
- UnityPrint(": ");
- va_list va;
- va_start(va, format);
- UnityPrintFVA(format, va);
- va_end(va);
- }
- UNITY_PRINT_EOL();
-}
-#endif /* ! UNITY_INCLUDE_PRINT_FORMATTED */
-
-/*-----------------------------------------------
- * Control Functions
- *-----------------------------------------------*/
-
-/*-----------------------------------------------*/
-void UnityFail(const char* msg, const UNITY_LINE_TYPE line) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- UnityTestResultsBegin(Unity.TestFile, line);
- UnityPrint(UnityStrFail);
- if (msg != NULL) {
- UNITY_OUTPUT_CHAR(':');
-
-#ifdef UNITY_PRINT_TEST_CONTEXT
- UNITY_PRINT_TEST_CONTEXT();
-#endif
-#ifndef UNITY_EXCLUDE_DETAILS
- if (Unity.CurrentDetail1) {
- UnityPrint(UnityStrDetail1Name);
- UnityPrint(Unity.CurrentDetail1);
- if (Unity.CurrentDetail2) {
- UnityPrint(UnityStrDetail2Name);
- UnityPrint(Unity.CurrentDetail2);
- }
- UnityPrint(UnityStrSpacer);
- }
-#endif
- if (msg[0] != ' ') {
- UNITY_OUTPUT_CHAR(' ');
- }
- UnityPrint(msg);
- }
-
- UNITY_FAIL_AND_BAIL;
-}
-
-/*-----------------------------------------------*/
-void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) {
- RETURN_IF_FAIL_OR_IGNORE;
-
- UnityTestResultsBegin(Unity.TestFile, line);
- UnityPrint(UnityStrIgnore);
- if (msg != NULL) {
- UNITY_OUTPUT_CHAR(':');
- UNITY_OUTPUT_CHAR(' ');
- UnityPrint(msg);
- }
- UNITY_IGNORE_AND_BAIL;
-}
-
-/*-----------------------------------------------*/
-void UnityMessage(const char* msg, const UNITY_LINE_TYPE line) {
- UnityTestResultsBegin(Unity.TestFile, line);
- UnityPrint("INFO");
- if (msg != NULL) {
- UNITY_OUTPUT_CHAR(':');
- UNITY_OUTPUT_CHAR(' ');
- UnityPrint(msg);
- }
- UNITY_PRINT_EOL();
-}
-
-/*-----------------------------------------------*/
-/* If we have not defined our own test runner, then include our default test runner to make life easier */
-#ifndef UNITY_SKIP_DEFAULT_RUNNER
-void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum) {
- Unity.CurrentTestName = FuncName;
- Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)FuncLineNum;
- Unity.NumberOfTests++;
- UNITY_CLR_DETAILS();
- UNITY_EXEC_TIME_START();
- if (TEST_PROTECT()) {
- setUp();
- Func();
- }
- if (TEST_PROTECT()) {
- tearDown();
- }
- UNITY_EXEC_TIME_STOP();
- UnityConcludeTest();
-}
-#endif
-
-/*-----------------------------------------------*/
-void UnitySetTestFile(const char* filename) { Unity.TestFile = filename; }
-
-/*-----------------------------------------------*/
-void UnityBegin(const char* filename) {
- Unity.TestFile = filename;
- Unity.CurrentTestName = NULL;
- Unity.CurrentTestLineNumber = 0;
- Unity.NumberOfTests = 0;
- Unity.TestFailures = 0;
- Unity.TestIgnores = 0;
- Unity.CurrentTestFailed = 0;
- Unity.CurrentTestIgnored = 0;
-
- UNITY_CLR_DETAILS();
- UNITY_OUTPUT_START();
-}
-
-/*-----------------------------------------------*/
-int UnityEnd(void) {
- UNITY_PRINT_EOL();
- UnityPrint(UnityStrBreaker);
- UNITY_PRINT_EOL();
- UnityPrintNumber((UNITY_INT)(Unity.NumberOfTests));
- UnityPrint(UnityStrResultsTests);
- UnityPrintNumber((UNITY_INT)(Unity.TestFailures));
- UnityPrint(UnityStrResultsFailures);
- UnityPrintNumber((UNITY_INT)(Unity.TestIgnores));
- UnityPrint(UnityStrResultsIgnored);
- UNITY_PRINT_EOL();
- if (Unity.TestFailures == 0U) {
- UnityPrint(UnityStrOk);
- } else {
- UnityPrint(UnityStrFail);
-#ifdef UNITY_DIFFERENTIATE_FINAL_FAIL
- UNITY_OUTPUT_CHAR('E');
- UNITY_OUTPUT_CHAR('D');
-#endif
- }
- UNITY_PRINT_EOL();
- UNITY_FLUSH_CALL();
- UNITY_OUTPUT_COMPLETE();
- return (int)(Unity.TestFailures);
-}
-
-/*-----------------------------------------------
- * Command Line Argument Support
- *-----------------------------------------------*/
-#ifdef UNITY_USE_COMMAND_LINE_ARGS
-
-char* UnityOptionIncludeNamed = NULL;
-char* UnityOptionExcludeNamed = NULL;
-int UnityVerbosity = 1;
-
-/*-----------------------------------------------*/
-int UnityParseOptions(int argc, char** argv) {
- int i;
- UnityOptionIncludeNamed = NULL;
- UnityOptionExcludeNamed = NULL;
-
- for (i = 1; i < argc; i++) {
- if (argv[i][0] == '-') {
- switch (argv[i][1]) {
- case 'l': /* list tests */
- return -1;
- case 'n': /* include tests with name including this string */
- case 'f': /* an alias for -n */
- if (argv[i][2] == '=') {
- UnityOptionIncludeNamed = &argv[i][3];
- } else if (++i < argc) {
- UnityOptionIncludeNamed = argv[i];
- } else {
- UnityPrint("ERROR: No Test String to Include Matches For");
- UNITY_PRINT_EOL();
- return 1;
- }
- break;
- case 'q': /* quiet */
- UnityVerbosity = 0;
- break;
- case 'v': /* verbose */
- UnityVerbosity = 2;
- break;
- case 'x': /* exclude tests with name including this string */
- if (argv[i][2] == '=') {
- UnityOptionExcludeNamed = &argv[i][3];
- } else if (++i < argc) {
- UnityOptionExcludeNamed = argv[i];
- } else {
- UnityPrint("ERROR: No Test String to Exclude Matches For");
- UNITY_PRINT_EOL();
- return 1;
- }
- break;
- default:
- UnityPrint("ERROR: Unknown Option ");
- UNITY_OUTPUT_CHAR(argv[i][1]);
- UNITY_PRINT_EOL();
- return 1;
- }
- }
- }
-
- return 0;
-}
-
-/*-----------------------------------------------*/
-int IsStringInBiggerString(const char* longstring, const char* shortstring) {
- const char* lptr = longstring;
- const char* sptr = shortstring;
- const char* lnext = lptr;
-
- if (*sptr == '*') {
- return 1;
- }
-
- while (*lptr) {
- lnext = lptr + 1;
-
- /* If they current bytes match, go on to the next bytes */
- while (*lptr && *sptr && (*lptr == *sptr)) {
- lptr++;
- sptr++;
-
- /* We're done if we match the entire string or up to a wildcard */
- if (*sptr == '*')
- return 1;
- if (*sptr == ',')
- return 1;
- if (*sptr == '"')
- return 1;
- if (*sptr == '\'')
- return 1;
- if (*sptr == ':')
- return 2;
- if (*sptr == 0)
- return 1;
- }
-
- /* Otherwise we start in the long pointer 1 character further and try again */
- lptr = lnext;
- sptr = shortstring;
- }
-
- return 0;
-}
-
-/*-----------------------------------------------*/
-int UnityStringArgumentMatches(const char* str) {
- int retval;
- const char* ptr1;
- const char* ptr2;
- const char* ptrf;
-
- /* Go through the options and get the substrings for matching one at a time */
- ptr1 = str;
- while (ptr1[0] != 0) {
- if ((ptr1[0] == '"') || (ptr1[0] == '\'')) {
- ptr1++;
- }
-
- /* look for the start of the next partial */
- ptr2 = ptr1;
- ptrf = 0;
- do {
- ptr2++;
- if ((ptr2[0] == ':') && (ptr2[1] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')) {
- ptrf = &ptr2[1];
- }
- } while ((ptr2[0] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ','));
-
- while ((ptr2[0] != 0) && ((ptr2[0] == ':') || (ptr2[0] == '\'') || (ptr2[0] == '"') || (ptr2[0] == ','))) {
- ptr2++;
- }
-
- /* done if complete filename match */
- retval = IsStringInBiggerString(Unity.TestFile, ptr1);
- if (retval == 1) {
- return retval;
- }
-
- /* done if testname match after filename partial match */
- if ((retval == 2) && (ptrf != 0)) {
- if (IsStringInBiggerString(Unity.CurrentTestName, ptrf)) {
- return 1;
- }
- }
-
- /* done if complete testname match */
- if (IsStringInBiggerString(Unity.CurrentTestName, ptr1) == 1) {
- return 1;
- }
-
- ptr1 = ptr2;
- }
-
- /* we couldn't find a match for any substrings */
- return 0;
-}
-
-/*-----------------------------------------------*/
-int UnityTestMatches(void) {
- /* Check if this test name matches the included test pattern */
- int retval;
- if (UnityOptionIncludeNamed) {
- retval = UnityStringArgumentMatches(UnityOptionIncludeNamed);
- } else {
- retval = 1;
- }
-
- /* Check if this test name matches the excluded test pattern */
- if (UnityOptionExcludeNamed) {
- if (UnityStringArgumentMatches(UnityOptionExcludeNamed)) {
- retval = 0;
- }
- }
-
- return retval;
-}
-
-#endif /* UNITY_USE_COMMAND_LINE_ARGS */
-/*-----------------------------------------------*/
diff --git a/grid_common/host_test/unity.h b/grid_common/host_test/unity.h
deleted file mode 100644
index 9a3616f35..000000000
--- a/grid_common/host_test/unity.h
+++ /dev/null
@@ -1,661 +0,0 @@
-/* ==========================================
- Unity Project - A Test Framework for C
- Copyright (c) 2007-21 Mike Karlesky, Mark VanderVoord, Greg Williams
- [Released under MIT License. Please refer to license.txt for details]
-========================================== */
-
-#ifndef UNITY_FRAMEWORK_H
-#define UNITY_FRAMEWORK_H
-#define UNITY
-
-#define UNITY_VERSION_MAJOR 2
-#define UNITY_VERSION_MINOR 5
-#define UNITY_VERSION_BUILD 2
-#define UNITY_VERSION ((UNITY_VERSION_MAJOR << 16) | (UNITY_VERSION_MINOR << 8) | UNITY_VERSION_BUILD)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "unity_internals.h"
-
-/*-------------------------------------------------------
- * Test Setup / Teardown
- *-------------------------------------------------------*/
-
-/* These functions are intended to be called before and after each test.
- * If using unity directly, these will need to be provided for each test
- * executable built. If you are using the test runner generator and/or
- * Ceedling, these are optional. */
-void setUp(void);
-void tearDown(void);
-
-/* These functions are intended to be called at the beginning and end of an
- * entire test suite. suiteTearDown() is passed the number of tests that
- * failed, and its return value becomes the exit code of main(). If using
- * Unity directly, you're in charge of calling these if they are desired.
- * If using Ceedling or the test runner generator, these will be called
- * automatically if they exist. */
-void suiteSetUp(void);
-int suiteTearDown(int num_failures);
-
-/*-------------------------------------------------------
- * Test Reset and Verify
- *-------------------------------------------------------*/
-
-/* These functions are intended to be called before during tests in order
- * to support complex test loops, etc. Both are NOT built into Unity. Instead
- * the test runner generator will create them. resetTest will run teardown and
- * setup again, verifying any end-of-test needs between. verifyTest will only
- * run the verification. */
-void resetTest(void);
-void verifyTest(void);
-
-/*-------------------------------------------------------
- * Configuration Options
- *-------------------------------------------------------
- * All options described below should be passed as a compiler flag to all files using Unity. If you must add #defines, place them BEFORE the #include above.
-
- * Integers/longs/pointers
- * - Unity attempts to automatically discover your integer sizes
- * - define UNITY_EXCLUDE_STDINT_H to stop attempting to look in
- * - define UNITY_EXCLUDE_LIMITS_H to stop attempting to look in
- * - If you cannot use the automatic methods above, you can force Unity by using these options:
- * - define UNITY_SUPPORT_64
- * - set UNITY_INT_WIDTH
- * - set UNITY_LONG_WIDTH
- * - set UNITY_POINTER_WIDTH
-
- * Floats
- * - define UNITY_EXCLUDE_FLOAT to disallow floating point comparisons
- * - define UNITY_FLOAT_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_FLOAT
- * - define UNITY_FLOAT_TYPE to specify doubles instead of single precision floats
- * - define UNITY_INCLUDE_DOUBLE to allow double floating point comparisons
- * - define UNITY_EXCLUDE_DOUBLE to disallow double floating point comparisons (default)
- * - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE
- * - define UNITY_DOUBLE_TYPE to specify something other than double
- * - define UNITY_EXCLUDE_FLOAT_PRINT to trim binary size, won't print floating point values in errors
-
- * Output
- * - by default, Unity prints to standard out with putchar. define UNITY_OUTPUT_CHAR(a) with a different function if desired
- * - define UNITY_DIFFERENTIATE_FINAL_FAIL to print FAILED (vs. FAIL) at test end summary - for automated search for failure
-
- * Optimization
- * - by default, line numbers are stored in unsigned shorts. Define UNITY_LINE_TYPE with a different type if your files are huge
- * - by default, test and failure counters are unsigned shorts. Define UNITY_COUNTER_TYPE with a different type if you want to save space or have more than 65535 Tests.
-
- * Test Cases
- * - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner generator script
-
- * Parameterized Tests
- * - you'll want to create a define of TEST_CASE(...) which basically evaluates to nothing
-
- * Tests with Arguments
- * - you'll want to define UNITY_USE_COMMAND_LINE_ARGS if you have the test runner passing arguments to Unity
-
- *-------------------------------------------------------
- * Basic Fail and Ignore
- *-------------------------------------------------------*/
-
-#define TEST_FAIL_MESSAGE(message) UNITY_TEST_FAIL(__LINE__, (message))
-#define TEST_FAIL() UNITY_TEST_FAIL(__LINE__, NULL)
-#define TEST_IGNORE_MESSAGE(message) UNITY_TEST_IGNORE(__LINE__, (message))
-#define TEST_IGNORE() UNITY_TEST_IGNORE(__LINE__, NULL)
-#define TEST_MESSAGE(message) UnityMessage((message), __LINE__)
-#define TEST_ONLY()
-#ifdef UNITY_INCLUDE_PRINT_FORMATTED
-#define TEST_PRINTF(message, ...) UnityPrintF(__LINE__, (message), __VA_ARGS__)
-#endif
-
-/* It is not necessary for you to call PASS. A PASS condition is assumed if nothing fails.
- * This method allows you to abort a test immediately with a PASS state, ignoring the remainder of the test. */
-#define TEST_PASS() TEST_ABORT()
-#define TEST_PASS_MESSAGE(message) \
- do { \
- UnityMessage((message), __LINE__); \
- TEST_ABORT(); \
- } while (0)
-
-/* This macro does nothing, but it is useful for build tools (like Ceedling) to make use of this to figure out
- * which files should be linked to in order to perform a test. Use it like TEST_FILE("sandwiches.c") */
-#define TEST_FILE(a)
-
-/*-------------------------------------------------------
- * Test Asserts (simple)
- *-------------------------------------------------------*/
-
-/* Boolean */
-#define TEST_ASSERT(condition) UNITY_TEST_ASSERT((condition), __LINE__, " Expression Evaluated To FALSE")
-#define TEST_ASSERT_TRUE(condition) UNITY_TEST_ASSERT((condition), __LINE__, " Expected TRUE Was FALSE")
-#define TEST_ASSERT_UNLESS(condition) UNITY_TEST_ASSERT(!(condition), __LINE__, " Expression Evaluated To TRUE")
-#define TEST_ASSERT_FALSE(condition) UNITY_TEST_ASSERT(!(condition), __LINE__, " Expected FALSE Was TRUE")
-#define TEST_ASSERT_NULL(pointer) UNITY_TEST_ASSERT_NULL((pointer), __LINE__, " Expected NULL")
-#define TEST_ASSERT_NOT_NULL(pointer) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, " Expected Non-NULL")
-#define TEST_ASSERT_EMPTY(pointer) UNITY_TEST_ASSERT_EMPTY((pointer), __LINE__, " Expected Empty")
-#define TEST_ASSERT_NOT_EMPTY(pointer) UNITY_TEST_ASSERT_NOT_EMPTY((pointer), __LINE__, " Expected Non-Empty")
-
-/* Integers (of all sizes) */
-#define TEST_ASSERT_EQUAL_INT(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT8(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT8(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT8((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT16((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT32((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT64((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_size_t(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX8(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX8((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX16(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX32(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX64(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_CHAR(expected, actual) UNITY_TEST_ASSERT_EQUAL_CHAR((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_BITS(mask, expected, actual) UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_BITS_HIGH(mask, actual) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT)(-1), (actual), __LINE__, NULL)
-#define TEST_ASSERT_BITS_LOW(mask, actual) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT)(0), (actual), __LINE__, NULL)
-#define TEST_ASSERT_BIT_HIGH(bit, actual) UNITY_TEST_ASSERT_BITS(((UNITY_UINT)1 << (bit)), (UNITY_UINT)(-1), (actual), __LINE__, NULL)
-#define TEST_ASSERT_BIT_LOW(bit, actual) UNITY_TEST_ASSERT_BITS(((UNITY_UINT)1 << (bit)), (UNITY_UINT)(0), (actual), __LINE__, NULL)
-
-/* Integer Not Equal To (of all sizes) */
-#define TEST_ASSERT_NOT_EQUAL_INT(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_INT8(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_INT16(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_INT32(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_INT64(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_UINT(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_UINT8(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_UINT16(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_UINT32(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_UINT64(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_size_t(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_HEX8(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_HEX16(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_HEX32(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_HEX64(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL_CHAR(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_CHAR((threshold), (actual), __LINE__, NULL)
-
-/* Integer Greater Than/ Less Than (of all sizes) */
-#define TEST_ASSERT_GREATER_THAN(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_INT(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_INT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_INT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_INT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_INT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_UINT(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_UINT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_UINT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_UINT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_HEX16(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_HEX32(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_THAN_CHAR(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_CHAR((threshold), (actual), __LINE__, NULL)
-
-#define TEST_ASSERT_LESS_THAN(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_INT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_INT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_INT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_INT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_INT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_UINT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_UINT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_UINT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_UINT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_HEX16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_HEX32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_HEX64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_THAN_CHAR(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_CHAR((threshold), (actual), __LINE__, NULL)
-
-#define TEST_ASSERT_GREATER_OR_EQUAL(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_size_t(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX8(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX16(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX32(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_GREATER_OR_EQUAL_CHAR(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, NULL)
-
-#define TEST_ASSERT_LESS_OR_EQUAL(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_INT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_INT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_INT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_INT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_INT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, NULL)
-#define TEST_ASSERT_LESS_OR_EQUAL_CHAR(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, NULL)
-
-/* Integer Ranges (of all sizes) */
-#define TEST_ASSERT_INT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_INT8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT8_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_INT16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT16_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_INT32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_INT64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT64_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_UINT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_UINT8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT8_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_UINT16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT16_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_UINT32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_UINT64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT64_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_size_t_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_HEX_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_HEX8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX8_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_HEX16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX16_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_HEX32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_HEX64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX64_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_CHAR_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_CHAR_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-
-/* Integer Array Ranges (of all sizes) */
-#define TEST_ASSERT_INT_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_INT8_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_INT16_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_INT32_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_UINT_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_UINT8_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_UINT16_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_UINT32_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_size_t_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_HEX_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_HEX8_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_HEX16_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_HEX32_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-#define TEST_ASSERT_CHAR_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
-
-/* Structs and Strings */
-#define TEST_ASSERT_EQUAL_PTR(expected, actual) UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_STRING(expected, actual) UNITY_TEST_ASSERT_EQUAL_STRING((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len) UNITY_TEST_ASSERT_EQUAL_STRING_LEN((expected), (actual), (len), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_MEMORY(expected, actual, len) UNITY_TEST_ASSERT_EQUAL_MEMORY((expected), (actual), (len), __LINE__, NULL)
-
-/* Arrays */
-#define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_size_t_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements) UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((expected), (actual), (len), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_CHAR_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-
-/* Arrays Compared To Single Value */
-#define TEST_ASSERT_EACH_EQUAL_INT(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_INT8(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT8((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_INT16(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT16((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_INT32(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT32((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_INT64(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT64((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_UINT(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_UINT8(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT8((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_UINT16(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT16((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_UINT32(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT32((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_UINT64(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT64((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_size_t(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_HEX(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_HEX8(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX8((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_HEX16(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX16((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_HEX32(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_HEX64(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX64((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_PTR(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_PTR((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_STRING(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_STRING((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_MEMORY(expected, actual, len, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY((expected), (actual), (len), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_CHAR(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_CHAR((expected), (actual), (num_elements), __LINE__, NULL)
-
-/* Floating Point (If Enabled) */
-#define TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_FLOAT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_FLOAT(expected, actual) UNITY_TEST_ASSERT_EQUAL_FLOAT((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_NEG_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_NAN(actual) UNITY_TEST_ASSERT_FLOAT_IS_NAN((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_DETERMINATE(actual) UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_NOT_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_NOT_NAN(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN((actual), __LINE__, NULL)
-#define TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE((actual), __LINE__, NULL)
-
-/* Double (If Enabled) */
-#define TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_DOUBLE(expected, actual) UNITY_TEST_ASSERT_EQUAL_DOUBLE((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE((expected), (actual), (num_elements), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_NEG_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_NAN(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NAN((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual) UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_NOT_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN((actual), __LINE__, NULL)
-#define TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE((actual), __LINE__, NULL)
-
-/* Shorthand */
-#ifdef UNITY_SHORTHAND_AS_OLD
-#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal")
-#endif
-#ifdef UNITY_SHORTHAND_AS_INT
-#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#endif
-#ifdef UNITY_SHORTHAND_AS_MEM
-#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_MEMORY((&expected), (&actual), sizeof(expected), __LINE__, NULL)
-#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#endif
-#ifdef UNITY_SHORTHAND_AS_RAW
-#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) == (actual)), __LINE__, " Expected Equal")
-#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal")
-#endif
-#ifdef UNITY_SHORTHAND_AS_NONE
-#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#endif
-
-/*-------------------------------------------------------
- * Test Asserts (with additional messages)
- *-------------------------------------------------------*/
-
-/* Boolean */
-#define TEST_ASSERT_MESSAGE(condition, message) UNITY_TEST_ASSERT((condition), __LINE__, (message))
-#define TEST_ASSERT_TRUE_MESSAGE(condition, message) UNITY_TEST_ASSERT((condition), __LINE__, (message))
-#define TEST_ASSERT_UNLESS_MESSAGE(condition, message) UNITY_TEST_ASSERT(!(condition), __LINE__, (message))
-#define TEST_ASSERT_FALSE_MESSAGE(condition, message) UNITY_TEST_ASSERT(!(condition), __LINE__, (message))
-#define TEST_ASSERT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NULL((pointer), __LINE__, (message))
-#define TEST_ASSERT_NOT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, (message))
-#define TEST_ASSERT_EMPTY_MESSAGE(pointer, message) UNITY_TEST_ASSERT_EMPTY((pointer), __LINE__, (message))
-#define TEST_ASSERT_NOT_EMPTY_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NOT_EMPTY((pointer), __LINE__, (message))
-
-/* Integers (of all sizes) */
-#define TEST_ASSERT_EQUAL_INT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT8((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT16((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT32((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT64((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_size_t_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX8((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_BITS_MESSAGE(mask, expected, actual, message) UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_BITS_HIGH_MESSAGE(mask, actual, message) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT32)(-1), (actual), __LINE__, (message))
-#define TEST_ASSERT_BITS_LOW_MESSAGE(mask, actual, message) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT32)(0), (actual), __LINE__, (message))
-#define TEST_ASSERT_BIT_HIGH_MESSAGE(bit, actual, message) UNITY_TEST_ASSERT_BITS(((UNITY_UINT32)1 << (bit)), (UNITY_UINT32)(-1), (actual), __LINE__, (message))
-#define TEST_ASSERT_BIT_LOW_MESSAGE(bit, actual, message) UNITY_TEST_ASSERT_BITS(((UNITY_UINT32)1 << (bit)), (UNITY_UINT32)(0), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_CHAR_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_CHAR((expected), (actual), __LINE__, (message))
-
-/* Integer Not Equal To (of all sizes) */
-#define TEST_ASSERT_NOT_EQUAL_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_CHAR((threshold), (actual), __LINE__, (message))
-
-/* Integer Greater Than/ Less Than (of all sizes) */
-#define TEST_ASSERT_GREATER_THAN_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_THAN_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_CHAR((threshold), (actual), __LINE__, (message))
-
-#define TEST_ASSERT_LESS_THAN_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_THAN_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_CHAR((threshold), (actual), __LINE__, (message))
-
-#define TEST_ASSERT_GREATER_OR_EQUAL_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_GREATER_OR_EQUAL_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, (message))
-
-#define TEST_ASSERT_LESS_OR_EQUAL_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, (message))
-#define TEST_ASSERT_LESS_OR_EQUAL_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, (message))
-
-/* Integer Ranges (of all sizes) */
-#define TEST_ASSERT_INT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_INT8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT8_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_INT16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT16_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_INT32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT32_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_INT64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT64_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_UINT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_UINT8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT8_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_UINT16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT16_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_UINT32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT32_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_UINT64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT64_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_size_t_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_HEX_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_HEX8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX8_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_HEX16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX16_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_HEX32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_HEX64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX64_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_CHAR_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_CHAR_WITHIN((delta), (expected), (actual), __LINE__, (message))
-
-/* Integer Array Ranges (of all sizes) */
-#define TEST_ASSERT_INT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_INT8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_INT16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_INT32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_UINT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_UINT8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_UINT16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_UINT32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_size_t_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_HEX_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_HEX8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_HEX16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_HEX32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-#define TEST_ASSERT_CHAR_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
-
-/* Structs and Strings */
-#define TEST_ASSERT_EQUAL_PTR_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_STRING((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message) UNITY_TEST_ASSERT_EQUAL_STRING_LEN((expected), (actual), (len), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_MEMORY_MESSAGE(expected, actual, len, message) UNITY_TEST_ASSERT_EQUAL_MEMORY((expected), (actual), (len), __LINE__, (message))
-
-/* Arrays */
-#define TEST_ASSERT_EQUAL_INT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_INT64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_UINT64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_size_t_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_HEX64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_PTR_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_STRING_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_MEMORY_ARRAY_MESSAGE(expected, actual, len, num_elements, message) UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((expected), (actual), (len), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_CHAR_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-
-/* Arrays Compared To Single Value*/
-#define TEST_ASSERT_EACH_EQUAL_INT_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_INT8_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT8((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_INT16_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT16((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_INT32_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT32((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_INT64_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT64((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_UINT_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_UINT8_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT8((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_UINT16_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT16((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_UINT32_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT32((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_UINT64_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT64((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_size_t_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_HEX_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_HEX8_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX8((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_HEX16_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX16((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_HEX32_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_HEX64_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX64((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_PTR_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_PTR((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_STRING_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_STRING((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_MEMORY_MESSAGE(expected, actual, len, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY((expected), (actual), (len), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_CHAR_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_CHAR((expected), (actual), (num_elements), __LINE__, (message))
-
-/* Floating Point (If Enabled) */
-#define TEST_ASSERT_FLOAT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_FLOAT_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_FLOAT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_FLOAT((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_FLOAT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_FLOAT_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NAN((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_NOT_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_NOT_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_NOT_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN((actual), __LINE__, (message))
-#define TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE((actual), __LINE__, (message))
-
-/* Double (If Enabled) */
-#define TEST_ASSERT_DOUBLE_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_DOUBLE_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_DOUBLE((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_EACH_EQUAL_DOUBLE_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE((expected), (actual), (num_elements), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NAN((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_NOT_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_NOT_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN((actual), __LINE__, (message))
-#define TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE((actual), __LINE__, (message))
-
-/* Shorthand */
-#ifdef UNITY_SHORTHAND_AS_OLD
-#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, (message))
-#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, (message))
-#endif
-#ifdef UNITY_SHORTHAND_AS_INT
-#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message)
-#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#endif
-#ifdef UNITY_SHORTHAND_AS_MEM
-#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_MEMORY((&expected), (&actual), sizeof(expected), __LINE__, message)
-#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#endif
-#ifdef UNITY_SHORTHAND_AS_RAW
-#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) == (actual)), __LINE__, message)
-#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, message)
-#endif
-#ifdef UNITY_SHORTHAND_AS_NONE
-#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
-#endif
-
-/* end of UNITY_FRAMEWORK_H */
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/grid_common/host_test/unity_internals.h b/grid_common/host_test/unity_internals.h
deleted file mode 100644
index 8b30a5d24..000000000
--- a/grid_common/host_test/unity_internals.h
+++ /dev/null
@@ -1,1202 +0,0 @@
-/* ==========================================
- Unity Project - A Test Framework for C
- Copyright (c) 2007-21 Mike Karlesky, Mark VanderVoord, Greg Williams
- [Released under MIT License. Please refer to license.txt for details]
-========================================== */
-
-#ifndef UNITY_INTERNALS_H
-#define UNITY_INTERNALS_H
-
-#ifdef UNITY_INCLUDE_CONFIG_H
-#include "unity_config.h"
-#endif
-
-#ifndef UNITY_EXCLUDE_SETJMP_H
-#include
-#endif
-
-#ifndef UNITY_EXCLUDE_MATH_H
-#include
-#endif
-
-#ifndef UNITY_EXCLUDE_STDDEF_H
-#include
-#endif
-
-#ifdef UNITY_INCLUDE_PRINT_FORMATTED
-#include
-#endif
-
-/* Unity Attempts to Auto-Detect Integer Types
- * Attempt 1: UINT_MAX, ULONG_MAX in , or default to 32 bits
- * Attempt 2: UINTPTR_MAX in , or default to same size as long
- * The user may override any of these derived constants:
- * UNITY_INT_WIDTH, UNITY_LONG_WIDTH, UNITY_POINTER_WIDTH */
-#ifndef UNITY_EXCLUDE_STDINT_H
-#include
-#endif
-
-#ifndef UNITY_EXCLUDE_LIMITS_H
-#include
-#endif
-
-#if defined __GNUC__
-#define UNITY_FUNCTION_ATTR(a) __attribute__((a))
-#else
-#define UNITY_FUNCTION_ATTR(a) /* ignore */
-#endif
-
-/*-------------------------------------------------------
- * Guess Widths If Not Specified
- *-------------------------------------------------------*/
-
-/* Determine the size of an int, if not already specified.
- * We cannot use sizeof(int), because it is not yet defined
- * at this stage in the translation of the C program.
- * Also sizeof(int) does return the size in addressable units on all platforms,
- * which may not necessarily be the size in bytes.
- * Therefore, infer it from UINT_MAX if possible. */
-#ifndef UNITY_INT_WIDTH
-#ifdef UINT_MAX
-#if (UINT_MAX == 0xFFFF)
-#define UNITY_INT_WIDTH (16)
-#elif (UINT_MAX == 0xFFFFFFFF)
-#define UNITY_INT_WIDTH (32)
-#elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF)
-#define UNITY_INT_WIDTH (64)
-#endif
-#else /* Set to default */
-#define UNITY_INT_WIDTH (32)
-#endif /* UINT_MAX */
-#endif
-
-/* Determine the size of a long, if not already specified. */
-#ifndef UNITY_LONG_WIDTH
-#ifdef ULONG_MAX
-#if (ULONG_MAX == 0xFFFF)
-#define UNITY_LONG_WIDTH (16)
-#elif (ULONG_MAX == 0xFFFFFFFF)
-#define UNITY_LONG_WIDTH (32)
-#elif (ULONG_MAX == 0xFFFFFFFFFFFFFFFF)
-#define UNITY_LONG_WIDTH (64)
-#endif
-#else /* Set to default */
-#define UNITY_LONG_WIDTH (32)
-#endif /* ULONG_MAX */
-#endif
-
-/* Determine the size of a pointer, if not already specified. */
-#ifndef UNITY_POINTER_WIDTH
-#ifdef UINTPTR_MAX
-#if (UINTPTR_MAX <= 0xFFFF)
-#define UNITY_POINTER_WIDTH (16)
-#elif (UINTPTR_MAX <= 0xFFFFFFFF)
-#define UNITY_POINTER_WIDTH (32)
-#elif (UINTPTR_MAX <= 0xFFFFFFFFFFFFFFFF)
-#define UNITY_POINTER_WIDTH (64)
-#endif
-#else /* Set to default */
-#define UNITY_POINTER_WIDTH UNITY_LONG_WIDTH
-#endif /* UINTPTR_MAX */
-#endif
-
-/*-------------------------------------------------------
- * Int Support (Define types based on detected sizes)
- *-------------------------------------------------------*/
-
-#if (UNITY_INT_WIDTH == 32)
-typedef unsigned char UNITY_UINT8;
-typedef unsigned short UNITY_UINT16;
-typedef unsigned int UNITY_UINT32;
-typedef signed char UNITY_INT8;
-typedef signed short UNITY_INT16;
-typedef signed int UNITY_INT32;
-#elif (UNITY_INT_WIDTH == 16)
-typedef unsigned char UNITY_UINT8;
-typedef unsigned int UNITY_UINT16;
-typedef unsigned long UNITY_UINT32;
-typedef signed char UNITY_INT8;
-typedef signed int UNITY_INT16;
-typedef signed long UNITY_INT32;
-#else
-#error Invalid UNITY_INT_WIDTH specified! (16 or 32 are supported)
-#endif
-
-/*-------------------------------------------------------
- * 64-bit Support
- *-------------------------------------------------------*/
-
-/* Auto-detect 64 Bit Support */
-#ifndef UNITY_SUPPORT_64
-#if UNITY_LONG_WIDTH == 64 || UNITY_POINTER_WIDTH == 64
-#define UNITY_SUPPORT_64
-#endif
-#endif
-
-/* 64-Bit Support Dependent Configuration */
-#ifndef UNITY_SUPPORT_64
-/* No 64-bit Support */
-typedef UNITY_UINT32 UNITY_UINT;
-typedef UNITY_INT32 UNITY_INT;
-#define UNITY_MAX_NIBBLES (8) /* Maximum number of nibbles in a UNITY_(U)INT */
-#else
-/* 64-bit Support */
-#if (UNITY_LONG_WIDTH == 32)
-typedef unsigned long long UNITY_UINT64;
-typedef signed long long UNITY_INT64;
-#elif (UNITY_LONG_WIDTH == 64)
-typedef unsigned long UNITY_UINT64;
-typedef signed long UNITY_INT64;
-#else
-#error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported)
-#endif
-typedef UNITY_UINT64 UNITY_UINT;
-typedef UNITY_INT64 UNITY_INT;
-#define UNITY_MAX_NIBBLES (16) /* Maximum number of nibbles in a UNITY_(U)INT */
-#endif
-
-/*-------------------------------------------------------
- * Pointer Support
- *-------------------------------------------------------*/
-
-#if (UNITY_POINTER_WIDTH == 32)
-#define UNITY_PTR_TO_INT UNITY_INT32
-#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32
-#elif (UNITY_POINTER_WIDTH == 64)
-#define UNITY_PTR_TO_INT UNITY_INT64
-#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64
-#elif (UNITY_POINTER_WIDTH == 16)
-#define UNITY_PTR_TO_INT UNITY_INT16
-#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX16
-#else
-#error Invalid UNITY_POINTER_WIDTH specified! (16, 32 or 64 are supported)
-#endif
-
-#ifndef UNITY_PTR_ATTRIBUTE
-#define UNITY_PTR_ATTRIBUTE
-#endif
-
-#ifndef UNITY_INTERNAL_PTR
-#define UNITY_INTERNAL_PTR UNITY_PTR_ATTRIBUTE const void*
-#endif
-
-/*-------------------------------------------------------
- * Float Support
- *-------------------------------------------------------*/
-
-#ifdef UNITY_EXCLUDE_FLOAT
-
-/* No Floating Point Support */
-#ifndef UNITY_EXCLUDE_DOUBLE
-#define UNITY_EXCLUDE_DOUBLE /* Remove double when excluding float support */
-#endif
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
-#define UNITY_EXCLUDE_FLOAT_PRINT
-#endif
-
-#else
-
-/* Floating Point Support */
-#ifndef UNITY_FLOAT_PRECISION
-#define UNITY_FLOAT_PRECISION (0.00001f)
-#endif
-#ifndef UNITY_FLOAT_TYPE
-#define UNITY_FLOAT_TYPE float
-#endif
-typedef UNITY_FLOAT_TYPE UNITY_FLOAT;
-
-/* isinf & isnan macros should be provided by math.h */
-#ifndef isinf
-/* The value of Inf - Inf is NaN */
-#define isinf(n) (isnan((n) - (n)) && !isnan(n))
-#endif
-
-#ifndef isnan
-/* NaN is the only floating point value that does NOT equal itself.
- * Therefore if n != n, then it is NaN. */
-#define isnan(n) ((n != n) ? 1 : 0)
-#endif
-
-#endif
-
-/*-------------------------------------------------------
- * Double Float Support
- *-------------------------------------------------------*/
-
-/* unlike float, we DON'T include by default */
-#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(UNITY_INCLUDE_DOUBLE)
-
-/* No Floating Point Support */
-#ifndef UNITY_EXCLUDE_DOUBLE
-#define UNITY_EXCLUDE_DOUBLE
-#else
-#undef UNITY_INCLUDE_DOUBLE
-#endif
-
-#ifndef UNITY_EXCLUDE_FLOAT
-#ifndef UNITY_DOUBLE_TYPE
-#define UNITY_DOUBLE_TYPE double
-#endif
-typedef UNITY_FLOAT UNITY_DOUBLE;
-/* For parameter in UnityPrintFloat(UNITY_DOUBLE), which aliases to double or float */
-#endif
-
-#else
-
-/* Double Floating Point Support */
-#ifndef UNITY_DOUBLE_PRECISION
-#define UNITY_DOUBLE_PRECISION (1e-12)
-#endif
-
-#ifndef UNITY_DOUBLE_TYPE
-#define UNITY_DOUBLE_TYPE double
-#endif
-typedef UNITY_DOUBLE_TYPE UNITY_DOUBLE;
-
-#endif
-
-/*-------------------------------------------------------
- * Output Method: stdout (DEFAULT)
- *-------------------------------------------------------*/
-#ifndef UNITY_OUTPUT_CHAR
-/* Default to using putchar, which is defined in stdio.h */
-#include
-#define UNITY_OUTPUT_CHAR(a) (void)putchar(a)
-#else
-/* If defined as something else, make sure we declare it here so it's ready for use */
-#ifdef UNITY_OUTPUT_CHAR_HEADER_DECLARATION
-extern void UNITY_OUTPUT_CHAR_HEADER_DECLARATION;
-#endif
-#endif
-
-#ifndef UNITY_OUTPUT_FLUSH
-#ifdef UNITY_USE_FLUSH_STDOUT
-/* We want to use the stdout flush utility */
-#include
-#define UNITY_OUTPUT_FLUSH() (void)fflush(stdout)
-#else
-/* We've specified nothing, therefore flush should just be ignored */
-#define UNITY_OUTPUT_FLUSH()
-#endif
-#else
-/* If defined as something else, make sure we declare it here so it's ready for use */
-#ifdef UNITY_OUTPUT_FLUSH_HEADER_DECLARATION
-extern void UNITY_OUTPUT_FLUSH_HEADER_DECLARATION;
-#endif
-#endif
-
-#ifndef UNITY_OUTPUT_FLUSH
-#define UNITY_FLUSH_CALL()
-#else
-#define UNITY_FLUSH_CALL() UNITY_OUTPUT_FLUSH()
-#endif
-
-#ifndef UNITY_PRINT_EOL
-#define UNITY_PRINT_EOL() UNITY_OUTPUT_CHAR('\n')
-#endif
-
-#ifndef UNITY_OUTPUT_START
-#define UNITY_OUTPUT_START()
-#endif
-
-#ifndef UNITY_OUTPUT_COMPLETE
-#define UNITY_OUTPUT_COMPLETE()
-#endif
-
-#ifdef UNITY_INCLUDE_EXEC_TIME
-#if !defined(UNITY_EXEC_TIME_START) && !defined(UNITY_EXEC_TIME_STOP) && !defined(UNITY_PRINT_EXEC_TIME) && !defined(UNITY_TIME_TYPE)
-/* If none any of these macros are defined then try to provide a default implementation */
-
-#if defined(UNITY_CLOCK_MS)
-/* This is a simple way to get a default implementation on platforms that support getting a millisecond counter */
-#define UNITY_TIME_TYPE UNITY_UINT
-#define UNITY_EXEC_TIME_START() Unity.CurrentTestStartTime = UNITY_CLOCK_MS()
-#define UNITY_EXEC_TIME_STOP() Unity.CurrentTestStopTime = UNITY_CLOCK_MS()
-#define UNITY_PRINT_EXEC_TIME() \
- { \
- UNITY_UINT execTimeMs = (Unity.CurrentTestStopTime - Unity.CurrentTestStartTime); \
- UnityPrint(" ("); \
- UnityPrintNumberUnsigned(execTimeMs); \
- UnityPrint(" ms)"); \
- }
-#elif defined(_WIN32)
-#include
-#define UNITY_TIME_TYPE clock_t
-#define UNITY_GET_TIME(t) t = (clock_t)((clock() * 1000) / CLOCKS_PER_SEC)
-#define UNITY_EXEC_TIME_START() UNITY_GET_TIME(Unity.CurrentTestStartTime)
-#define UNITY_EXEC_TIME_STOP() UNITY_GET_TIME(Unity.CurrentTestStopTime)
-#define UNITY_PRINT_EXEC_TIME() \
- { \
- UNITY_UINT execTimeMs = (Unity.CurrentTestStopTime - Unity.CurrentTestStartTime); \
- UnityPrint(" ("); \
- UnityPrintNumberUnsigned(execTimeMs); \
- UnityPrint(" ms)"); \
- }
-#elif defined(__unix__)
-#include
-#define UNITY_TIME_TYPE struct timespec
-#define UNITY_GET_TIME(t) clock_gettime(CLOCK_MONOTONIC, &t)
-#define UNITY_EXEC_TIME_START() UNITY_GET_TIME(Unity.CurrentTestStartTime)
-#define UNITY_EXEC_TIME_STOP() UNITY_GET_TIME(Unity.CurrentTestStopTime)
-#define UNITY_PRINT_EXEC_TIME() \
- { \
- UNITY_UINT execTimeMs = ((Unity.CurrentTestStopTime.tv_sec - Unity.CurrentTestStartTime.tv_sec) * 1000L); \
- execTimeMs += ((Unity.CurrentTestStopTime.tv_nsec - Unity.CurrentTestStartTime.tv_nsec) / 1000000L); \
- UnityPrint(" ("); \
- UnityPrintNumberUnsigned(execTimeMs); \
- UnityPrint(" ms)"); \
- }
-#endif
-#endif
-#endif
-
-#ifndef UNITY_EXEC_TIME_START
-#define UNITY_EXEC_TIME_START() \
- do { \
- } while (0)
-#endif
-
-#ifndef UNITY_EXEC_TIME_STOP
-#define UNITY_EXEC_TIME_STOP() \
- do { \
- } while (0)
-#endif
-
-#ifndef UNITY_TIME_TYPE
-#define UNITY_TIME_TYPE UNITY_UINT
-#endif
-
-#ifndef UNITY_PRINT_EXEC_TIME
-#define UNITY_PRINT_EXEC_TIME() \
- do { \
- } while (0)
-#endif
-
-/*-------------------------------------------------------
- * Footprint
- *-------------------------------------------------------*/
-
-#ifndef UNITY_LINE_TYPE
-#define UNITY_LINE_TYPE UNITY_UINT
-#endif
-
-#ifndef UNITY_COUNTER_TYPE
-#define UNITY_COUNTER_TYPE UNITY_UINT
-#endif
-
-/*-------------------------------------------------------
- * Internal Structs Needed
- *-------------------------------------------------------*/
-
-typedef void (*UnityTestFunction)(void);
-
-#define UNITY_DISPLAY_RANGE_INT (0x10)
-#define UNITY_DISPLAY_RANGE_UINT (0x20)
-#define UNITY_DISPLAY_RANGE_HEX (0x40)
-#define UNITY_DISPLAY_RANGE_CHAR (0x80)
-
-typedef enum {
- UNITY_DISPLAY_STYLE_INT = (UNITY_INT_WIDTH / 8) + UNITY_DISPLAY_RANGE_INT,
- UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT,
- UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT,
- UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT,
-#ifdef UNITY_SUPPORT_64
- UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT,
-#endif
-
- UNITY_DISPLAY_STYLE_UINT = (UNITY_INT_WIDTH / 8) + UNITY_DISPLAY_RANGE_UINT,
- UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT,
- UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT,
- UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT,
-#ifdef UNITY_SUPPORT_64
- UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT,
-#endif
-
- UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX,
- UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX,
- UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX,
-#ifdef UNITY_SUPPORT_64
- UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX,
-#endif
-
- UNITY_DISPLAY_STYLE_CHAR = 1 + UNITY_DISPLAY_RANGE_CHAR + UNITY_DISPLAY_RANGE_INT,
-
- UNITY_DISPLAY_STYLE_UNKNOWN
-} UNITY_DISPLAY_STYLE_T;
-
-typedef enum {
- UNITY_WITHIN = 0x0,
- UNITY_EQUAL_TO = 0x1,
- UNITY_GREATER_THAN = 0x2,
- UNITY_GREATER_OR_EQUAL = 0x2 + UNITY_EQUAL_TO,
- UNITY_SMALLER_THAN = 0x4,
- UNITY_SMALLER_OR_EQUAL = 0x4 + UNITY_EQUAL_TO,
- UNITY_NOT_EQUAL = 0x0,
- UNITY_UNKNOWN
-} UNITY_COMPARISON_T;
-
-#ifndef UNITY_EXCLUDE_FLOAT
-typedef enum UNITY_FLOAT_TRAIT {
- UNITY_FLOAT_IS_NOT_INF = 0,
- UNITY_FLOAT_IS_INF,
- UNITY_FLOAT_IS_NOT_NEG_INF,
- UNITY_FLOAT_IS_NEG_INF,
- UNITY_FLOAT_IS_NOT_NAN,
- UNITY_FLOAT_IS_NAN,
- UNITY_FLOAT_IS_NOT_DET,
- UNITY_FLOAT_IS_DET,
- UNITY_FLOAT_INVALID_TRAIT
-} UNITY_FLOAT_TRAIT_T;
-#endif
-
-typedef enum { UNITY_ARRAY_TO_VAL = 0, UNITY_ARRAY_TO_ARRAY, UNITY_ARRAY_UNKNOWN } UNITY_FLAGS_T;
-
-struct UNITY_STORAGE_T {
- const char* TestFile;
- const char* CurrentTestName;
-#ifndef UNITY_EXCLUDE_DETAILS
- const char* CurrentDetail1;
- const char* CurrentDetail2;
-#endif
- UNITY_LINE_TYPE CurrentTestLineNumber;
- UNITY_COUNTER_TYPE NumberOfTests;
- UNITY_COUNTER_TYPE TestFailures;
- UNITY_COUNTER_TYPE TestIgnores;
- UNITY_COUNTER_TYPE CurrentTestFailed;
- UNITY_COUNTER_TYPE CurrentTestIgnored;
-#ifdef UNITY_INCLUDE_EXEC_TIME
- UNITY_TIME_TYPE CurrentTestStartTime;
- UNITY_TIME_TYPE CurrentTestStopTime;
-#endif
-#ifndef UNITY_EXCLUDE_SETJMP_H
- jmp_buf AbortFrame;
-#endif
-};
-
-extern struct UNITY_STORAGE_T Unity;
-
-/*-------------------------------------------------------
- * Test Suite Management
- *-------------------------------------------------------*/
-
-void UnityBegin(const char* filename);
-int UnityEnd(void);
-void UnitySetTestFile(const char* filename);
-void UnityConcludeTest(void);
-
-#ifndef RUN_TEST
-void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum);
-#else
-#define UNITY_SKIP_DEFAULT_RUNNER
-#endif
-
-/*-------------------------------------------------------
- * Details Support
- *-------------------------------------------------------*/
-
-#ifdef UNITY_EXCLUDE_DETAILS
-#define UNITY_CLR_DETAILS()
-#define UNITY_SET_DETAIL(d1)
-#define UNITY_SET_DETAILS(d1, d2)
-#else
-#define UNITY_CLR_DETAILS() \
- { \
- Unity.CurrentDetail1 = 0; \
- Unity.CurrentDetail2 = 0; \
- }
-#define UNITY_SET_DETAIL(d1) \
- { \
- Unity.CurrentDetail1 = (d1); \
- Unity.CurrentDetail2 = 0; \
- }
-#define UNITY_SET_DETAILS(d1, d2) \
- { \
- Unity.CurrentDetail1 = (d1); \
- Unity.CurrentDetail2 = (d2); \
- }
-
-#ifndef UNITY_DETAIL1_NAME
-#define UNITY_DETAIL1_NAME "Function"
-#endif
-
-#ifndef UNITY_DETAIL2_NAME
-#define UNITY_DETAIL2_NAME "Argument"
-#endif
-#endif
-
-#ifdef UNITY_PRINT_TEST_CONTEXT
-void UNITY_PRINT_TEST_CONTEXT(void);
-#endif
-
-/*-------------------------------------------------------
- * Test Output
- *-------------------------------------------------------*/
-
-void UnityPrint(const char* string);
-
-#ifdef UNITY_INCLUDE_PRINT_FORMATTED
-void UnityPrintF(const UNITY_LINE_TYPE line, const char* format, ...);
-#endif
-
-void UnityPrintLen(const char* string, const UNITY_UINT32 length);
-void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number);
-void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style);
-void UnityPrintNumber(const UNITY_INT number_to_print);
-void UnityPrintNumberUnsigned(const UNITY_UINT number);
-void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print);
-
-#ifndef UNITY_EXCLUDE_FLOAT_PRINT
-void UnityPrintFloat(const UNITY_DOUBLE input_number);
-#endif
-
-/*-------------------------------------------------------
- * Test Assertion Functions
- *-------------------------------------------------------
- * Use the macros below this section instead of calling
- * these directly. The macros have a consistent naming
- * convention and will pull in file and line information
- * for you. */
-
-void UnityAssertEqualNumber(const UNITY_INT expected, const UNITY_INT actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_DISPLAY_STYLE_T style);
-
-void UnityAssertGreaterOrLessOrEqualNumber(const UNITY_INT threshold, const UNITY_INT actual, const UNITY_COMPARISON_T compare, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_DISPLAY_STYLE_T style);
-
-void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_DISPLAY_STYLE_T style, const UNITY_FLAGS_T flags);
-
-void UnityAssertBits(const UNITY_INT mask, const UNITY_INT expected, const UNITY_INT actual, const char* msg, const UNITY_LINE_TYPE lineNumber);
-
-void UnityAssertEqualString(const char* expected, const char* actual, const char* msg, const UNITY_LINE_TYPE lineNumber);
-
-void UnityAssertEqualStringLen(const char* expected, const char* actual, const UNITY_UINT32 length, const char* msg, const UNITY_LINE_TYPE lineNumber);
-
-void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, const char** actual, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_FLAGS_T flags);
-
-void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_UINT32 length, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_FLAGS_T flags);
-
-void UnityAssertNumbersWithin(const UNITY_UINT delta, const UNITY_INT expected, const UNITY_INT actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_DISPLAY_STYLE_T style);
-
-void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_UINT32 num_elements, const char* msg, const UNITY_LINE_TYPE lineNumber,
- const UNITY_DISPLAY_STYLE_T style, const UNITY_FLAGS_T flags);
-
-#ifndef UNITY_EXCLUDE_SETJMP_H
-void UnityFail(const char* message, const UNITY_LINE_TYPE line) UNITY_FUNCTION_ATTR(noreturn);
-void UnityIgnore(const char* message, const UNITY_LINE_TYPE line) UNITY_FUNCTION_ATTR(noreturn);
-#else
-void UnityFail(const char* message, const UNITY_LINE_TYPE line);
-void UnityIgnore(const char* message, const UNITY_LINE_TYPE line);
-#endif
-
-void UnityMessage(const char* message, const UNITY_LINE_TYPE line);
-
-#ifndef UNITY_EXCLUDE_FLOAT
-void UnityAssertFloatsWithin(const UNITY_FLOAT delta, const UNITY_FLOAT expected, const UNITY_FLOAT actual, const char* msg, const UNITY_LINE_TYPE lineNumber);
-
-void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, const UNITY_UINT32 num_elements, const char* msg,
- const UNITY_LINE_TYPE lineNumber, const UNITY_FLAGS_T flags);
-
-void UnityAssertFloatSpecial(const UNITY_FLOAT actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_FLOAT_TRAIT_T style);
-#endif
-
-#ifndef UNITY_EXCLUDE_DOUBLE
-void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, const UNITY_DOUBLE expected, const UNITY_DOUBLE actual, const char* msg, const UNITY_LINE_TYPE lineNumber);
-
-void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected, UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, const UNITY_UINT32 num_elements, const char* msg,
- const UNITY_LINE_TYPE lineNumber, const UNITY_FLAGS_T flags);
-
-void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, const char* msg, const UNITY_LINE_TYPE lineNumber, const UNITY_FLOAT_TRAIT_T style);
-#endif
-
-/*-------------------------------------------------------
- * Helpers
- *-------------------------------------------------------*/
-
-UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size);
-#ifndef UNITY_EXCLUDE_FLOAT
-UNITY_INTERNAL_PTR UnityFloatToPtr(const float num);
-#endif
-#ifndef UNITY_EXCLUDE_DOUBLE
-UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num);
-#endif
-
-/*-------------------------------------------------------
- * Error Strings We Might Need
- *-------------------------------------------------------*/
-
-extern const char UnityStrOk[];
-extern const char UnityStrPass[];
-extern const char UnityStrFail[];
-extern const char UnityStrIgnore[];
-
-extern const char UnityStrErrFloat[];
-extern const char UnityStrErrDouble[];
-extern const char UnityStrErr64[];
-extern const char UnityStrErrShorthand[];
-
-/*-------------------------------------------------------
- * Test Running Macros
- *-------------------------------------------------------*/
-
-#ifndef UNITY_EXCLUDE_SETJMP_H
-#define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0)
-#define TEST_ABORT() longjmp(Unity.AbortFrame, 1)
-#else
-#define TEST_PROTECT() 1
-#define TEST_ABORT() return
-#endif
-
-/* This tricky series of macros gives us an optional line argument to treat it as RUN_TEST(func, num=__LINE__) */
-#ifndef RUN_TEST
-#ifdef __STDC_VERSION__
-#if __STDC_VERSION__ >= 199901L
-#define UNITY_SUPPORT_VARIADIC_MACROS
-#endif
-#endif
-#ifdef UNITY_SUPPORT_VARIADIC_MACROS
-#define RUN_TEST(...) RUN_TEST_AT_LINE(__VA_ARGS__, __LINE__, throwaway)
-#define RUN_TEST_AT_LINE(func, line, ...) UnityDefaultTestRun(func, #func, line)
-#endif
-#endif
-
-/* If we can't do the tricky version, we'll just have to require them to always include the line number */
-#ifndef RUN_TEST
-#ifdef CMOCK
-#define RUN_TEST(func, num) UnityDefaultTestRun(func, #func, num)
-#else
-#define RUN_TEST(func) UnityDefaultTestRun(func, #func, __LINE__)
-#endif
-#endif
-
-#define TEST_LINE_NUM (Unity.CurrentTestLineNumber)
-#define TEST_IS_IGNORED (Unity.CurrentTestIgnored)
-#define UNITY_NEW_TEST(a) \
- Unity.CurrentTestName = (a); \
- Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)(__LINE__); \
- Unity.NumberOfTests++;
-
-#ifndef UNITY_BEGIN
-#define UNITY_BEGIN() UnityBegin(__FILE__)
-#endif
-
-#ifndef UNITY_END
-#define UNITY_END() UnityEnd()
-#endif
-
-#ifndef UNITY_SHORTHAND_AS_INT
-#ifndef UNITY_SHORTHAND_AS_MEM
-#ifndef UNITY_SHORTHAND_AS_NONE
-#ifndef UNITY_SHORTHAND_AS_RAW
-#define UNITY_SHORTHAND_AS_OLD
-#endif
-#endif
-#endif
-#endif
-
-/*-----------------------------------------------
- * Command Line Argument Support
- *-----------------------------------------------*/
-
-#ifdef UNITY_USE_COMMAND_LINE_ARGS
-int UnityParseOptions(int argc, char** argv);
-int UnityTestMatches(void);
-#endif
-
-/*-------------------------------------------------------
- * Basic Fail and Ignore
- *-------------------------------------------------------*/
-
-#define UNITY_TEST_FAIL(line, message) UnityFail((message), (UNITY_LINE_TYPE)(line))
-#define UNITY_TEST_IGNORE(line, message) UnityIgnore((message), (UNITY_LINE_TYPE)(line))
-
-/*-------------------------------------------------------
- * Test Asserts
- *-------------------------------------------------------*/
-
-#define UNITY_TEST_ASSERT(condition, line, message) \
- do { \
- if (condition) { \
- } else { \
- UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), (message)); \
- } \
- } while (0)
-#define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (UNITY_LINE_TYPE)(line), (message))
-#define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (UNITY_LINE_TYPE)(line), (message))
-#define UNITY_TEST_ASSERT_EMPTY(pointer, line, message) UNITY_TEST_ASSERT(((pointer[0]) == 0), (UNITY_LINE_TYPE)(line), (message))
-#define UNITY_TEST_ASSERT_NOT_EMPTY(pointer, line, message) UNITY_TEST_ASSERT(((pointer[0]) != 0), (UNITY_LINE_TYPE)(line), (message))
-
-#define UNITY_TEST_ASSERT_EQUAL_INT(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_EQUAL_INT8(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8)(expected), (UNITY_INT)(UNITY_INT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_EQUAL_INT16(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_EQUAL_INT32(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_EQUAL_UINT(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_EQUAL_UINT8(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_UINT8)(expected), (UNITY_INT)(UNITY_UINT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_EQUAL_UINT16(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_UINT16)(expected), (UNITY_INT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_EQUAL_UINT32(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_UINT32)(expected), (UNITY_INT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_EQUAL_HEX8(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8)(expected), (UNITY_INT)(UNITY_INT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_EQUAL_HEX16(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_EQUAL_HEX32(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_EQUAL_CHAR(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8)(expected), (UNITY_INT)(UNITY_INT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-#define UNITY_TEST_ASSERT_BITS(mask, expected, actual, line, message) UnityAssertBits((UNITY_INT)(mask), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line))
-
-#define UNITY_TEST_ASSERT_NOT_EQUAL_INT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_INT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_INT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_INT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_CHAR(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-
-#define UNITY_TEST_ASSERT_GREATER_THAN_INT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_GREATER_THAN_INT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_GREATER_THAN_INT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_GREATER_THAN_INT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_GREATER_THAN_UINT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_GREATER_THAN_UINT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_GREATER_THAN_UINT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_GREATER_THAN_UINT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_GREATER_THAN_HEX8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_GREATER_THAN_HEX16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_GREATER_THAN_HEX32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_GREATER_THAN_CHAR(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-
-#define UNITY_TEST_ASSERT_SMALLER_THAN_INT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_INT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_INT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_INT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_CHAR(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT8)(threshold), (UNITY_INT)(UNITY_UINT8)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT16)(threshold), (UNITY_INT)(UNITY_UINT16)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_UINT32)(threshold), (UNITY_INT)(UNITY_UINT32)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8)(threshold), (UNITY_INT)(UNITY_INT8)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-
-#define UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
-#define UNITY_TEST_ASSERT_INT8_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT8)(delta), (UNITY_INT)(UNITY_INT8)(expected), (UNITY_INT)(UNITY_INT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
-#define UNITY_TEST_ASSERT_INT16_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT16)(delta), (UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
-#define UNITY_TEST_ASSERT_INT32_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT32)(delta), (UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
-#define UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
-#define UNITY_TEST_ASSERT_UINT8_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT8)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8)(actual), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT8)
-#define UNITY_TEST_ASSERT_UINT16_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT16)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT16)
-#define UNITY_TEST_ASSERT_UINT32_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT32)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT32)
-#define UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT8)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8)(actual), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX8)
-#define UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT16)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX16)
-#define UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT32)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX32)
-#define UNITY_TEST_ASSERT_CHAR_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((UNITY_UINT8)(delta), (UNITY_INT)(UNITY_INT8)(expected), (UNITY_INT)(UNITY_INT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR)
-
-#define UNITY_TEST_ASSERT_INT_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT8)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT8, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT16, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT32)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT32, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT8, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT16, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT32)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT32, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT8)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX8, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX16, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT32)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX32, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT8)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_CHAR, UNITY_ARRAY_TO_ARRAY)
-
-#define UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_PTR_TO_INT)(expected), (UNITY_PTR_TO_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER)
-#define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)(line))
-#define UNITY_TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len, line, message) \
- UnityAssertEqualStringLen((const char*)(expected), (const char*)(actual), (UNITY_UINT32)(len), (message), (UNITY_LINE_TYPE)(line))
-#define UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, line, message) \
- UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), 1, (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY)
-
-#define UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualStringArray((UNITY_INTERNAL_PTR)(expected), (const char**)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, line, message) \
- UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR, \
- UNITY_ARRAY_TO_ARRAY)
-
-#define UNITY_TEST_ASSERT_EACH_EQUAL_INT(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(expected), (UNITY_INT_WIDTH / 8)), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_INT8(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT8)(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT8, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_INT16(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT16)(expected), 2), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT16, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_INT32(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT32)(expected), 4), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT32, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(expected), (UNITY_INT_WIDTH / 8)), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT8(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT8)(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT8, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT16(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT16)(expected), 2), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT16, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT32(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT32)(expected), 4), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT32, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX8(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT8)(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX8, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX16(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT16)(expected), 2), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX16, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX32(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT32)(expected), 4), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX32, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_PTR(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_PTR_TO_INT)(expected), (UNITY_POINTER_WIDTH / 8)), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_POINTER, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_STRING(expected, actual, num_elements, line, message) \
- UnityAssertEqualStringArray((UNITY_INTERNAL_PTR)(expected), (const char**)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY(expected, actual, len, num_elements, line, message) \
- UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_CHAR(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT8)(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_CHAR, UNITY_ARRAY_TO_VAL)
-
-#ifdef UNITY_SUPPORT_64
-#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) \
- UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64, \
- UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_INT64(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT64)(expected), 8), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT64, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT64(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT64)(expected), 8), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT64, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX64(expected, actual, num_elements, line, message) \
- UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT64)(expected), 8), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX64, UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) \
- UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_INT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_GREATER_THAN_INT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_INT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64(threshold, actual, line, message) \
- UnityAssertGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
-#define UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT64)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_INT64, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT64)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_UINT64, UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) \
- UnityAssertNumbersArrayWithin((UNITY_UINT64)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), \
- UNITY_DISPLAY_STYLE_HEX64, UNITY_ARRAY_TO_ARRAY)
-#else
-#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_GREATER_THAN_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#define UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
-#endif
-
-#ifdef UNITY_EXCLUDE_FLOAT
-#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
-#else
-#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) \
- UnityAssertFloatsWithin((UNITY_FLOAT)(delta), (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line))
-#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) \
- UNITY_TEST_ASSERT_FLOAT_WITHIN((UNITY_FLOAT)(expected) * (UNITY_FLOAT)UNITY_FLOAT_PRECISION, (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (UNITY_LINE_TYPE)(line), (message))
-#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualFloatArray((UNITY_FLOAT*)(expected), (UNITY_FLOAT*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements, line, message) \
- UnityAssertEqualFloatArray(UnityFloatToPtr(expected), (UNITY_FLOAT*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_INF)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NEG_INF)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NAN)
-#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_DET)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_INF)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NEG_INF)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NAN)
-#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_DET)
-#endif
-
-#ifdef UNITY_EXCLUDE_DOUBLE
-#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
-#else
-#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) \
- UnityAssertDoublesWithin((UNITY_DOUBLE)(delta), (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line))
-#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) \
- UNITY_TEST_ASSERT_DOUBLE_WITHIN((UNITY_DOUBLE)(expected) * (UNITY_DOUBLE)UNITY_DOUBLE_PRECISION, (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (UNITY_LINE_TYPE)(line), (message))
-#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) \
- UnityAssertEqualDoubleArray((UNITY_DOUBLE*)(expected), (UNITY_DOUBLE*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY)
-#define UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements, line, message) \
- UnityAssertEqualDoubleArray(UnityDoubleToPtr(expected), (UNITY_DOUBLE*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_INF)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NEG_INF)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NAN)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_DET)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_INF)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NEG_INF)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NAN)
-#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_DET)
-#endif
-
-/* End of UNITY_INTERNALS_H */
-#endif
diff --git a/grid_common/lua_src/.gitignore b/grid_common/lua_src/.gitignore
deleted file mode 100644
index f4d7351a9..000000000
--- a/grid_common/lua_src/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.c
-*.h
-!lua_source_collection.h
diff --git a/grid_common/test_harness.c b/grid_common/test_harness.c
deleted file mode 100644
index 3a2d7e8f6..000000000
--- a/grid_common/test_harness.c
+++ /dev/null
@@ -1,23 +0,0 @@
-// fuzz_target.cc
-#include
-#include
-#include
-
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-
- // Pass the input.
-
- if (size < 10) {
- return 0;
- } else {
- return 0;
- }
-
- if (size > 0 && data[0] == 'H')
- if (size > 1 && data[1] == 'I')
- if (size > 2 && data[2] == '!')
- __builtin_trap();
-
- // Pass the input.
- return 0; // Values other than 0 and -1 are reserved for future use.
-}
diff --git a/grid_common/tinyalloc/tinyalloc.c b/grid_common/tinyalloc/tinyalloc.c
deleted file mode 100644
index 5941eacdd..000000000
--- a/grid_common/tinyalloc/tinyalloc.c
+++ /dev/null
@@ -1,260 +0,0 @@
-#include "tinyalloc.h"
-#include
-
-#ifdef TA_DEBUG
-extern void print_s(char*);
-extern void print_i(size_t);
-#else
-#define print_s(X)
-#define print_i(X)
-#endif
-
-typedef struct Block Block;
-
-struct Block {
- void* addr;
- Block* next;
- size_t size;
-};
-
-typedef struct {
- Block* free; // first free block
- Block* used; // first used block
- Block* fresh; // first available blank block
- size_t top; // top free addr
-} Heap;
-
-static Heap* heap = NULL;
-static const void* heap_limit = NULL;
-static size_t heap_split_thresh;
-static size_t heap_alignment;
-static size_t heap_max_blocks;
-
-/**
- * If compaction is enabled, inserts block
- * into free list, sorted by addr.
- * If disabled, add block has new head of
- * the free list.
- */
-static void insert_block(Block* block) {
-#ifndef TA_DISABLE_COMPACT
- Block* ptr = heap->free;
- Block* prev = NULL;
- while (ptr != NULL) {
- if ((size_t)block->addr <= (size_t)ptr->addr) {
- print_s("insert");
- print_i((size_t)ptr);
- break;
- }
- prev = ptr;
- ptr = ptr->next;
- }
- if (prev != NULL) {
- if (ptr == NULL) {
- print_s("new tail");
- }
- prev->next = block;
- } else {
- print_s("new head");
- heap->free = block;
- }
- block->next = ptr;
-#else
- block->next = heap->free;
- heap->free = block;
-#endif
-}
-
-#ifndef TA_DISABLE_COMPACT
-static void release_blocks(Block* scan, Block* to) {
- Block* scan_next;
- while (scan != to) {
- print_s("release");
- print_i((size_t)scan);
- scan_next = scan->next;
- scan->next = heap->fresh;
- heap->fresh = scan;
- scan->addr = 0;
- scan->size = 0;
- scan = scan_next;
- }
-}
-
-static void compact() {
- Block* ptr = heap->free;
- Block* prev;
- Block* scan;
- while (ptr != NULL) {
- prev = ptr;
- scan = ptr->next;
- while (scan != NULL && (size_t)prev->addr + prev->size == (size_t)scan->addr) {
- print_s("merge");
- print_i((size_t)scan);
- prev = scan;
- scan = scan->next;
- }
- if (prev != ptr) {
- size_t new_size = (size_t)prev->addr - (size_t)ptr->addr + prev->size;
- print_s("new size");
- print_i(new_size);
- ptr->size = new_size;
- Block* next = prev->next;
- // make merged blocks available
- release_blocks(ptr->next, prev->next);
- // relink
- ptr->next = next;
- }
- ptr = ptr->next;
- }
-}
-#endif
-
-bool ta_init(const void* base, const void* limit, const size_t heap_blocks, const size_t split_thresh, const size_t alignment) {
- heap = (Heap*)base;
- heap_limit = limit;
- heap_split_thresh = split_thresh;
- heap_alignment = alignment;
- heap_max_blocks = heap_blocks;
-
- heap->free = NULL;
- heap->used = NULL;
- heap->fresh = (Block*)(heap + 1);
- heap->top = (size_t)(heap->fresh + heap_blocks);
-
- Block* block = heap->fresh;
- size_t i = heap_max_blocks - 1;
- while (i--) {
- block->next = block + 1;
- block++;
- }
- block->next = NULL;
- return true;
-}
-
-bool ta_free(void* free) {
- Block* block = heap->used;
- Block* prev = NULL;
- while (block != NULL) {
- if (free == block->addr) {
- if (prev) {
- prev->next = block->next;
- } else {
- heap->used = block->next;
- }
- insert_block(block);
-#ifndef TA_DISABLE_COMPACT
- compact();
-#endif
- return true;
- }
- prev = block;
- block = block->next;
- }
- return false;
-}
-
-static Block* alloc_block(size_t num) {
- Block* ptr = heap->free;
- Block* prev = NULL;
- size_t top = heap->top;
- num = (num + heap_alignment - 1) & -heap_alignment;
- while (ptr != NULL) {
- const int is_top = ((size_t)ptr->addr + ptr->size >= top) && ((size_t)ptr->addr + num <= (size_t)heap_limit);
- if (is_top || ptr->size >= num) {
- if (prev != NULL) {
- prev->next = ptr->next;
- } else {
- heap->free = ptr->next;
- }
- ptr->next = heap->used;
- heap->used = ptr;
- if (is_top) {
- print_s("resize top block");
- ptr->size = num;
- heap->top = (size_t)ptr->addr + num;
-#ifndef TA_DISABLE_SPLIT
- } else if (heap->fresh != NULL) {
- size_t excess = ptr->size - num;
- if (excess >= heap_split_thresh) {
- ptr->size = num;
- Block* split = heap->fresh;
- heap->fresh = split->next;
- split->addr = (void*)((size_t)ptr->addr + num);
- print_s("split");
- print_i((size_t)split->addr);
- split->size = excess;
- insert_block(split);
-#ifndef TA_DISABLE_COMPACT
- compact();
-#endif
- }
-#endif
- }
- return ptr;
- }
- prev = ptr;
- ptr = ptr->next;
- }
- // no matching free blocks
- // see if any other blocks available
- size_t new_top = top + num;
- if (heap->fresh != NULL && new_top <= (size_t)heap_limit) {
- ptr = heap->fresh;
- heap->fresh = ptr->next;
- ptr->addr = (void*)top;
- ptr->next = heap->used;
- ptr->size = num;
- heap->used = ptr;
- heap->top = new_top;
- return ptr;
- }
- return NULL;
-}
-
-void* ta_alloc(size_t num) {
- Block* block = alloc_block(num);
- if (block != NULL) {
- return block->addr;
- }
- return NULL;
-}
-
-static void memclear(void* ptr, size_t num) {
- size_t* ptrw = (size_t*)ptr;
- size_t numw = (num & -sizeof(size_t)) / sizeof(size_t);
- while (numw--) {
- *ptrw++ = 0;
- }
- num &= (sizeof(size_t) - 1);
- uint8_t* ptrb = (uint8_t*)ptrw;
- while (num--) {
- *ptrb++ = 0;
- }
-}
-
-void* ta_calloc(size_t num, size_t size) {
- num *= size;
- Block* block = alloc_block(num);
- if (block != NULL) {
- memclear(block->addr, num);
- return block->addr;
- }
- return NULL;
-}
-
-static size_t count_blocks(Block* ptr) {
- size_t num = 0;
- while (ptr != NULL) {
- num++;
- ptr = ptr->next;
- }
- return num;
-}
-
-size_t ta_num_free() { return count_blocks(heap->free); }
-
-size_t ta_num_used() { return count_blocks(heap->used); }
-
-size_t ta_num_fresh() { return count_blocks(heap->fresh); }
-
-bool ta_check() { return heap_max_blocks == ta_num_free() + ta_num_used() + ta_num_fresh(); }
diff --git a/grid_common/tinyalloc/tinyalloc.h b/grid_common/tinyalloc/tinyalloc.h
deleted file mode 100644
index b41c805c1..000000000
--- a/grid_common/tinyalloc/tinyalloc.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include
-#include
-
-bool ta_init(const void* base, const void* limit, const size_t heap_blocks, const size_t split_thresh, const size_t alignment);
-void* ta_alloc(size_t num);
-void* ta_calloc(size_t num, size_t size);
-bool ta_free(void* ptr);
-
-size_t ta_num_free();
-size_t ta_num_used();
-size_t ta_num_fresh();
-bool ta_check();
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/grid_esp/.gitignore b/grid_esp/.gitignore
deleted file mode 100755
index 9affba3e7..000000000
--- a/grid_esp/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-build
-managed_components
-output
-components/grid_esp32_vmp/vmp/build
diff --git a/grid_esp/burn_bootloader.sh b/grid_esp/burn_bootloader.sh
deleted file mode 100755
index 05b87a9e5..000000000
--- a/grid_esp/burn_bootloader.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-esptool.py --chip esp32s3 -p $(ls /dev/ttyACM* | head -n 1) --before=default_reset \
---after=no_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m \
-0x0 bootloader/bootloader.bin \
-0x8000 bootloader/partition-table.bin \
-0xe000 bootloader/ota_data_initial.bin \
-0x410000 bootloader/tinyuf2.bin
diff --git a/grid_esp/components/grid_common/CMakeLists.txt b/grid_esp/components/grid_common/CMakeLists.txt
deleted file mode 100644
index 42562b03e..000000000
--- a/grid_esp/components/grid_common/CMakeLists.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-idf_component_register(
-
- LDFRAGMENTS
- "linker_fragment.lf"
-
- SRCS
- "../../../grid_common/grid_protocol.c"
- "../../../grid_common/grid_config.c"
- "../../../grid_common/grid_cal.c"
- "../../../grid_common/grid_ain.c"
- "../../../grid_common/grid_asc.c"
- "../../../grid_common/grid_led.c"
- "../../../grid_common/grid_littlefs.c"
- "../../../grid_common/grid_math.c"
- "../../../grid_common/grid_sys.c"
- "../../../grid_common/grid_swsr.c"
- "../../../grid_common/grid_allocator.c"
- "../../../grid_common/grid_msg.c"
- "../../../grid_common/grid_noflash.c"
- "../../../grid_common/grid_platform.c"
- "../../../grid_common/grid_decode.c"
- "../../../grid_common/grid_port.c"
- "../../../grid_common/grid_usb.c"
- "../../../grid_common/grid_ui.c"
- "../../../grid_common/grid_ui_button.c"
- "../../../grid_common/grid_ui_encoder.c"
- "../../../grid_common/grid_ui_endless.c"
- "../../../grid_common/grid_ui_potmeter.c"
- "../../../grid_common/grid_ui_system.c"
- "../../../grid_common/grid_ui_lcd.c"
- "../../../grid_common/grid_module.c"
- "../../../grid_common/grid_lua.c"
- "../../../grid_common/grid_lua_api.c"
- "../../../grid_common/grid_transport.c"
- "../../../grid_common/grid_rollid.c"
- "../../../grid_common/grid_utask.c"
-
- "../../../grid_common/littlefs/lfs.c"
- "../../../grid_common/littlefs/lfs_util.c"
-
- "../../../grid_common/lua-5.4.3/src/dirent.c"
- "../../../grid_common/lua-5.4.3/src/lapi.c"
- "../../../grid_common/lua-5.4.3/src/lctype.c"
- "../../../grid_common/lua-5.4.3/src/lfunc.c"
- "../../../grid_common/lua-5.4.3/src/lmathlib.c"
- "../../../grid_common/lua-5.4.3/src/loslib.c"
- "../../../grid_common/lua-5.4.3/src/ltable.c"
- "../../../grid_common/lua-5.4.3/src/lundump.c"
- "../../../grid_common/lua-5.4.3/src/lauxlib.c"
- "../../../grid_common/lua-5.4.3/src/ldblib.c"
- "../../../grid_common/lua-5.4.3/src/lgc.c"
- "../../../grid_common/lua-5.4.3/src/lmem.c"
- "../../../grid_common/lua-5.4.3/src/lparser.c"
- "../../../grid_common/lua-5.4.3/src/ltablib.c"
- "../../../grid_common/lua-5.4.3/src/lutf8lib.c"
- "../../../grid_common/lua-5.4.3/src/lbaselib.c"
- "../../../grid_common/lua-5.4.3/src/ldebug.c"
- "../../../grid_common/lua-5.4.3/src/linit.c"
- "../../../grid_common/lua-5.4.3/src/loadlib.c"
- "../../../grid_common/lua-5.4.3/src/lstate.c"
- "../../../grid_common/lua-5.4.3/src/ltm.c"
- "../../../grid_common/lua-5.4.3/src/lvm.c"
- "../../../grid_common/lua-5.4.3/src/lcode.c"
- "../../../grid_common/lua-5.4.3/src/ldo.c"
- "../../../grid_common/lua-5.4.3/src/liolib.c"
- "../../../grid_common/lua-5.4.3/src/lobject.c"
- "../../../grid_common/lua-5.4.3/src/lstring.c"
- "../../../grid_common/lua-5.4.3/src/lzio.c"
- "../../../grid_common/lua-5.4.3/src/llex.c"
- "../../../grid_common/lua-5.4.3/src/lopcodes.c"
- "../../../grid_common/lua-5.4.3/src/ldump.c"
- "../../../grid_common/lua-5.4.3/src/lstrlib.c"
- "../../../grid_common/lua-5.4.3/src/lcorolib.c"
-
- "../../../grid_common/tomlc99/toml.c"
-
- INCLUDE_DIRS
- "."
- "../../../grid_common"
- "../../../grid_common/lua-5.4.3/src"
- "../../../grid_common/littlefs"
- "../../../grid_common/proto"
-)
diff --git a/grid_esp/components/grid_esp32_platform/grid_esp32_platform.c b/grid_esp/components/grid_esp32_platform/grid_esp32_platform.c
deleted file mode 100644
index fc57ec71d..000000000
--- a/grid_esp/components/grid_esp32_platform/grid_esp32_platform.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include "grid_esp32_platform.h"
-
-#include "esp_heap_caps.h"
-
-#include "rom/ets_sys.h" // For ets_printf
-
-#include "esp_timer.h"
-
-// #include "hal/cpu_hal.h"
-
-#include "esp_cpu.h"
-
-// static const char* TAG = "grid_esp32_platform";
-
-void* grid_platform_allocate_volatile(size_t size) {
-
- void* handle = heap_caps_malloc(size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
-
- // ets_printf("ADDRESS: %lx\r\n", handle);
-
- if (handle == NULL) {
-
- ets_printf("MALLOC FAILED");
-
- while (1) {
- }
- }
-
- return handle;
-}
-
-uint64_t IRAM_ATTR grid_platform_rtc_get_micros(void) { return esp_timer_get_time(); }
-
-uint64_t IRAM_ATTR grid_platform_rtc_get_diff(uint64_t t1, uint64_t t2) { return ((t1 << 1) - (t2 << 1)) >> 1; }
-
-uint64_t IRAM_ATTR grid_platform_rtc_get_elapsed_time(uint64_t told) { return grid_platform_rtc_get_diff(grid_platform_rtc_get_micros(), told); }
-
-uint32_t IRAM_ATTR grid_platform_get_cycles() { return esp_cpu_get_cycle_count(); }
-
-uint32_t IRAM_ATTR grid_platform_get_cycles_per_us() { return CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ; }
-
-static char uint4_to_hex[16] = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
-};
-
-static void uint8_to_hex(uint8_t u, char h[2]) {
- h[0] = uint4_to_hex[u >> 4];
- h[1] = uint4_to_hex[u & 0xf];
-}
-
-void IRAM_ATTR grid_platform_printf_nonprint(const uint8_t* src, size_t size) {
-
- for (size_t i = 0; i < size; ++i) {
-
- if (src[i] < 32) {
-
- char hex[2];
- uint8_to_hex(src[i], hex);
- ets_printf("[%c%c]", hex[0], hex[1]);
-
- } else {
-
- ets_printf("%c", src[i]);
- }
- }
-}
diff --git a/grid_esp/main/.gitignore b/grid_esp/main/.gitignore
deleted file mode 100644
index 411b40248..000000000
--- a/grid_esp/main/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-pico_firmware.h
diff --git a/grid_esp/main/Kconfig.projbuild b/grid_esp/main/Kconfig.projbuild
deleted file mode 100644
index b7e335e3a..000000000
--- a/grid_esp/main/Kconfig.projbuild
+++ /dev/null
@@ -1,15 +0,0 @@
-menu "Example Configuration"
-
- choice
- prompt "USB-to-UART device type"
- default EXAMPLE_USE_CP210X
- help
- Type of UART converter to use in this example.
-
- config EXAMPLE_USE_FTDI
- bool "FT232"
- config EXAMPLE_USE_CP210X
- bool "CP2012"
- endchoice
-
-endmenu
diff --git a/grid_esp/main/grid_esp32.c b/grid_esp/main/grid_esp32.c
deleted file mode 100644
index e1db50e75..000000000
--- a/grid_esp/main/grid_esp32.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include "grid_esp32.h"
-
-#include "grid_esp32_adc.h"
-
-static const char* TAG = "grid_esp32";
-
-void vTaskGetRunTimeStats2(char* pcWriteBuffer) {
-
- TaskStatus_t* pxTaskStatusArray;
- volatile UBaseType_t uxArraySize, x;
- uint32_t ulTotalRunTime, ulStatsAsPercentage;
-
- // Make sure the write buffer does not contain a string.
- *pcWriteBuffer = 0x00;
-
- // Take a snapshot of the number of tasks in case it changes while this
- // function is executing.
- uxArraySize = uxTaskGetNumberOfTasks();
-
- // Allocate a TaskStatus_t structure for each task. An array could be
- // allocated statically at compile time.
- pxTaskStatusArray = pvPortMalloc(uxArraySize * sizeof(TaskStatus_t));
-
- if (pxTaskStatusArray != NULL) {
- // Generate raw status information about each task.
- uxArraySize = uxTaskGetSystemState(pxTaskStatusArray, uxArraySize, &ulTotalRunTime);
-
- // grid_platform_printf("Task Count : %d Core: %d\r\n\r\n", uxArraySize,
- // xPortGetCoreID());
-
- // Avoid divide by zero errors.
- if (ulTotalRunTime > 0) {
- // For each populated position in the pxTaskStatusArray array,
- // format the raw data as human readable ASCII data
- for (x = 0; x < uxArraySize; x++) {
-
- char taskName[10] = ".........\0";
- snprintf(taskName, 6, pxTaskStatusArray[x].pcTaskName);
-
- uint8_t core = xTaskGetCoreID(pxTaskStatusArray[x].xHandle);
-
- uint8_t priority = uxTaskPriorityGet(pxTaskStatusArray[x].xHandle);
-
- /* Inspect our own high water mark on entering the task. */
- unsigned long uxHighWaterMark = uxTaskGetStackHighWaterMark(pxTaskStatusArray[x].xHandle);
-
- // What percentage of the total run time has the task used?
- // This will always be rounded down to the nearest integer.
- // ulTotalRunTimeDiv100 has already been divided by 100.
- ulStatsAsPercentage = pxTaskStatusArray[x].ulRunTimeCounter / (ulTotalRunTime / 100);
-
- uint32_t runtime = pxTaskStatusArray[x].ulRunTimeCounter;
-
- // TaskHandle_t task = pxTaskStatusArray[x].xHandle;
-
- char core_char = 'X';
-
- if (core == 0) {
- core_char = '0';
- } else if (core == 1) {
- core_char = '1';
- }
-
- sprintf(pcWriteBuffer, "%c-%s\t\t0x%lx\t\t%lu\t\t%d\t\t%lu pcnt (%lu/%lu)\r\n", core_char, taskName, (unsigned long int)pxTaskStatusArray[x].xHandle, uxHighWaterMark, priority,
- ulStatsAsPercentage, runtime, ulTotalRunTime);
-
- pcWriteBuffer += strlen((char*)pcWriteBuffer);
- }
- }
-
- // The array is no longer needed, free the memory it consumes.
- vPortFree(pxTaskStatusArray);
- }
-}
-
-#define MAX_TASK_ID 16
-
-uint32_t lastRunTimeCounter[MAX_TASK_ID] = {0};
-uint32_t lastTotalRunTime = 0;
-
-uint8_t skip_list[MAX_TASK_ID] = {0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0};
-
-void vTaskGetRunTimeStats3(char* pcWriteBuffer) {
-
- TaskStatus_t* pxTaskStatusArray;
- volatile UBaseType_t uxArraySize, x;
- uint32_t ulTotalRunTime, ulStatsAsPercentage;
-
- // Make sure the write buffer does not contain a string.
- *pcWriteBuffer = 0x00;
-
- // Take a snapshot of the number of tasks in case it changes while this
- // function is executing.
- uxArraySize = uxTaskGetNumberOfTasks();
-
- // Allocate a TaskStatus_t structure for each task. An array could be
- // allocated statically at compile time.
- pxTaskStatusArray = pvPortMalloc(uxArraySize * sizeof(TaskStatus_t));
-
- if (pxTaskStatusArray != NULL) {
- // Generate raw status information about each task.
- uxArraySize = uxTaskGetSystemState(pxTaskStatusArray, uxArraySize, &ulTotalRunTime);
-
- // grid_platform_printf("Task Count : %d Core: %d\r\n\r\n", uxArraySize,
- // xPortGetCoreID());
-
- // Avoid divide by zero errors.
- if (ulTotalRunTime > 0) {
- // For each populated position in the pxTaskStatusArray array,
- // format the raw data as human readable ASCII data
-
- sprintf(pcWriteBuffer, "{");
-
- for (uint8_t i = 0; i < MAX_TASK_ID; i++) {
-
- for (x = 0; x < uxArraySize; x++) {
-
- uint32_t taskNumber = pxTaskStatusArray[x].xTaskNumber;
-
- if (taskNumber == i) {
-
- char taskName[10] = ".........\0";
- snprintf(taskName, 6, pxTaskStatusArray[x].pcTaskName);
-
- uint8_t core = xTaskGetCoreID(pxTaskStatusArray[x].xHandle);
-
- /* Inspect our own high water mark on entering the task. */
- // unsigned long uxHighWaterMark = uxTaskGetStackHighWaterMark(pxTaskStatusArray[x].xHandle);
-
- // What percentage of the total run time has the task used?
- // This will always be rounded down to the nearest integer.
-
- uint32_t taskElapsedTime = pxTaskStatusArray[x].ulRunTimeCounter - lastRunTimeCounter[taskNumber];
- uint32_t totalElapsedTime = (ulTotalRunTime - lastTotalRunTime);
-
- ulStatsAsPercentage = (taskElapsedTime * 100) / (totalElapsedTime);
-
- lastRunTimeCounter[taskNumber] = pxTaskStatusArray[x].ulRunTimeCounter;
-
- // uint32_t runtime = pxTaskStatusArray[x].ulRunTimeCounter;
-
- // TaskHandle_t task = pxTaskStatusArray[x].xHandle;
-
- char core_char = 'X';
-
- if (core == 0) {
- core_char = '0';
- } else if (core == 1) {
- core_char = '1';
- }
-
- if (skip_list[i] == 0) {
-
- uint32_t debug_var = ulStatsAsPercentage;
-
- // As Percentage (string)
- sprintf(pcWriteBuffer, "\"c%c %02lu %s %lx\": \"%lu%%%%\", ", core_char, taskNumber, taskName, (long unsigned int)pxTaskStatusArray[x].xHandle, debug_var);
-
- // As Integer (string)
- // sprintf( pcWriteBuffer, "\"c%c %02lu %s\": \"%lu\", ",
- // core_char, taskNumber, taskName, debug_var);
-
- // As Integer (number)
- // sprintf( pcWriteBuffer, "\"c%c %02lu %s\": %lu, ", core_char,
- // taskNumber, taskName, debug_var);
- } else {
-
- // first run
- if (lastTotalRunTime == 0) {
-
- ets_printf("SKIPLIST: %s\r\n", taskName);
- }
- }
-
- pcWriteBuffer += strlen((char*)pcWriteBuffer);
- }
- }
- }
-
- sprintf(&pcWriteBuffer[strlen(pcWriteBuffer) - 2], "}");
- lastTotalRunTime = ulTotalRunTime;
- }
-
- // The array is no longer needed, free the memory it consumes.
- vPortFree(pxTaskStatusArray);
- }
-}
-
-void grid_esp32_housekeeping_task(void* arg) {
-
- // char stats[3000] = {0};
-
- // int8_t axis_psition = 0;
-
- while (1) {
-
- // grid_platform_usb_gamepad_axis_move(axis_psition, GAMEPAD_AXIS_X);
- // axis_psition++;
-
- // vTaskGetRunTimeStats2(stats);
-
- // grid_port_debug_print_text(stats);
-
- // ets_printf("%s\r\n", stats);
-
- vTaskDelay(pdMS_TO_TICKS(1000));
- }
-
- // Wait to be deleted
- vTaskSuspend(NULL);
-}
-
-uint32_t grid_platform_get_hwcfg_bit(uint8_t n) {
-
- gpio_set_direction(GRID_ESP32_PINS_HWCFG_SHIFT, GPIO_MODE_OUTPUT);
- gpio_set_direction(GRID_ESP32_PINS_HWCFG_CLOCK, GPIO_MODE_OUTPUT);
- gpio_set_direction(GRID_ESP32_PINS_HWCFG_DATA, GPIO_MODE_INPUT);
-
- gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 0);
- gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
-
- ets_delay_us(40);
-
- gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 1);
-
- ets_delay_us(10);
-
- uint8_t level = 0;
- for (uint8_t i = 0; i < n + 1; ++i) {
-
- gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 0);
-
- level = gpio_get_level(GRID_ESP32_PINS_HWCFG_DATA);
-
- ets_delay_us(10);
- gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
- ets_delay_us(10);
- }
-
- return level > 0;
-}
-
-uint32_t grid_platform_get_hwcfg() {
-
- gpio_set_direction(GRID_ESP32_PINS_HWCFG_SHIFT, GPIO_MODE_OUTPUT);
- gpio_set_direction(GRID_ESP32_PINS_HWCFG_CLOCK, GPIO_MODE_OUTPUT);
- gpio_set_direction(GRID_ESP32_PINS_HWCFG_DATA, GPIO_MODE_INPUT);
-
- gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 0);
- gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
-
- ets_delay_us(40);
-
- gpio_set_level(GRID_ESP32_PINS_HWCFG_SHIFT, 1);
-
- ets_delay_us(10);
-
- uint8_t hwcfg = 0;
- for (uint8_t i = 0; i < 8; ++i) {
-
- gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 0);
-
- uint8_t level = gpio_get_level(GRID_ESP32_PINS_HWCFG_DATA);
- hwcfg |= ((level > 0) << i);
-
- ets_delay_us(10);
- gpio_set_level(GRID_ESP32_PINS_HWCFG_CLOCK, 1);
- ets_delay_us(10);
- }
-
- ESP_LOGI(TAG, "HWCFG value: %d", hwcfg);
- return hwcfg;
-}
-
-uint32_t grid_platform_get_id(uint32_t* return_array) {
-
- /*
-
- struct ESP_FUSE3
- {
- uint8_t crc;
- uint8_t macAddr[6];
- uint8_t reserved[8];
- uint8_t version;
- };
- */
-
- uint8_t block[32] = {0};
-
- if (ESP_OK == esp_efuse_read_block(EFUSE_BLK1, block, 0, 6 * 8)) {
- ESP_LOGI(TAG, "CPUID OK");
- }
-
- uint8_t* mac_address = &block[0];
-
- ESP_LOGI(TAG, "MAC: %02x:%02x:%02x:%02x:%02x:%02x", mac_address[0], mac_address[1], mac_address[2], mac_address[3], mac_address[4], mac_address[5]);
-
- uint64_t cpuid = 0;
-
- for (uint8_t i = 0; i < 6; i++) {
-
- // ESP_LOGI(TAG, "CPUID: %016llx",cpuid);
- cpuid |= ((uint64_t)mac_address[i]) << ((5 - i) * 8);
- }
-
- ESP_LOGI(TAG, "CPUID: %016llx", cpuid);
-
- uint8_t* array = (uint8_t*)return_array;
- array[0] = mac_address[0];
- array[1] = mac_address[1];
- array[2] = mac_address[2];
- array[3] = mac_address[3];
- array[4] = mac_address[4];
- array[5] = mac_address[5];
-
- return 0;
-}
-
-uint8_t grid_platform_get_random_8() {
- uint32_t random_number = esp_random();
- return random_number % 256;
-}
-
-void grid_platform_delay_ms(uint32_t delay_milliseconds) { ets_delay_us(delay_milliseconds * 1000); }
-
-void grid_platform_delay_us(uint32_t delay_microseconds) { ets_delay_us(delay_microseconds); }
-
-uint8_t grid_platform_get_reset_cause() { return 0; }
-
-void grid_platform_printf(char const* fmt, ...) {
-
- va_list ap;
-
- char temp[1012] = {0};
-
- va_start(ap, fmt);
-
- vsnprintf(temp, 1012, fmt, ap);
-
- va_end(ap);
-
- ets_printf(temp);
-}
-
-uint8_t grid_platform_disable_grid_transmitter(uint8_t direction) {
-
- ets_printf("grid_platform_disable_grid_transmitter NOT IMPLEMENTED!!!\r\n");
- return 1;
-}
-
-uint8_t grid_platform_reset_grid_transmitter(uint8_t direction) {
-
- // ets_printf("grid_platform_reset_grid_transmitter NOT IMPLEMENTED!!!\r\n");
- return 1;
-}
-
-uint8_t grid_platform_enable_grid_transmitter(uint8_t direction) {
-
- ets_printf("grid_platform_enable_grid_transmitter NOT IMPLEMENTED!!!\r\n");
- return 1;
-}
-
-void grid_platform_system_reset() { ets_printf("grid_platform_system_reset NOT IMPLEMENTED!!!\r\n"); }
-
-uint8_t IRAM_ATTR grid_platform_get_adc_bit_depth() { return 12; }
-
-void grid_platform_mux_init(uint8_t mux_positions_bm) { grid_esp32_adc_mux_init(&grid_esp32_adc_state, mux_positions_bm); }
-
-void IRAM_ATTR grid_platform_mux_write(uint8_t index) {
-
- grid_esp32_adc_state.mux_index = index;
- grid_esp32_adc_mux_update(&grid_esp32_adc_state);
-}
diff --git a/grid_esp/main/grid_esp32.h b/grid_esp/main/grid_esp32.h
deleted file mode 100644
index c04d9b455..000000000
--- a/grid_esp/main/grid_esp32.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-#pragma once
-
-#include "driver/rmt_encoder.h"
-#include
-
-#include "driver/gpio.h"
-#include "esp_check.h"
-#include "esp_efuse.h"
-#include "grid_esp32_nvm.h"
-#include "grid_esp32_pins.h"
-#include "rom/ets_sys.h" // For ets_printf
-
-#include "bootloader_random.h"
-#include "esp_random.h"
-
-#include "tinyusb.h"
-#include "tinyusb_cdc_acm.h"
-
-#include "freertos/FreeRTOS.h"
-#include "freertos/semphr.h"
-#include "freertos/task.h"
-
-#include "hal/cpu_hal.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void grid_esp32_housekeeping_task(void* arg);
-
-/**
- * @brief Read HWCFG register value on ESP32 based module
- *
- * @param[in] void void
- * @return
- * - 32-bit unsigned value of HWCFG register
- */
-uint32_t grid_platform_get_hwcfg();
-
-/**
- * @brief Read CPUID register (mac address) value on ESP32 based module
- *
- * @param[in] void void
- * @return
- * - 64-bit unsigned value of CPUID register
- */
-
-void grid_platform_printf(char const* fmt, ...);
-
-uint32_t grid_platform_get_id(uint32_t* return_array);
-
-uint32_t grid_platform_get_id(uint32_t* return_array);
-uint32_t grid_platform_get_hwcfg();
-uint8_t grid_platform_get_random_8();
-void grid_platform_delay_ms(uint32_t delay_milliseconds);
-void grid_platform_delay_us(uint32_t delay_microseconds);
-uint8_t grid_platform_get_reset_cause();
-
-uint8_t grid_platform_disable_grid_transmitter(uint8_t direction);
-uint8_t grid_platform_reset_grid_transmitter(uint8_t direction);
-uint8_t grid_platform_enable_grid_transmitter(uint8_t direction);
-
-void grid_platform_system_reset();
-void grid_platform_nvm_defrag();
-
-uint8_t grid_platform_get_adc_bit_depth();
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/grid_esp/pico_header.sh b/grid_esp/pico_header.sh
deleted file mode 100755
index f60b5e008..000000000
--- a/grid_esp/pico_header.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-xxd -i ../grid_pico/build/main/main.bin > ./main/pico_firmware.h
-sed -i '1i\const \\' ./main/pico_firmware.h
diff --git a/grid_esp/sdkconfig.old b/grid_esp/sdkconfig.old
deleted file mode 100644
index def0266b5..000000000
--- a/grid_esp/sdkconfig.old
+++ /dev/null
@@ -1,2383 +0,0 @@
-#
-# Automatically generated file. DO NOT EDIT.
-# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Configuration
-#
-CONFIG_SOC_ADC_SUPPORTED=y
-CONFIG_SOC_UART_SUPPORTED=y
-CONFIG_SOC_PCNT_SUPPORTED=y
-CONFIG_SOC_PHY_SUPPORTED=y
-CONFIG_SOC_WIFI_SUPPORTED=y
-CONFIG_SOC_TWAI_SUPPORTED=y
-CONFIG_SOC_GDMA_SUPPORTED=y
-CONFIG_SOC_UHCI_SUPPORTED=y
-CONFIG_SOC_AHB_GDMA_SUPPORTED=y
-CONFIG_SOC_GPTIMER_SUPPORTED=y
-CONFIG_SOC_LCDCAM_SUPPORTED=y
-CONFIG_SOC_LCDCAM_I80_LCD_SUPPORTED=y
-CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED=y
-CONFIG_SOC_MCPWM_SUPPORTED=y
-CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y
-CONFIG_SOC_CACHE_SUPPORT_WRAP=y
-CONFIG_SOC_ULP_SUPPORTED=y
-CONFIG_SOC_ULP_FSM_SUPPORTED=y
-CONFIG_SOC_RISCV_COPROC_SUPPORTED=y
-CONFIG_SOC_BT_SUPPORTED=y
-CONFIG_SOC_USB_OTG_SUPPORTED=y
-CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y
-CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y
-CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y
-CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y
-CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y
-CONFIG_SOC_EFUSE_SUPPORTED=y
-CONFIG_SOC_SDMMC_HOST_SUPPORTED=y
-CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y
-CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y
-CONFIG_SOC_RTC_MEM_SUPPORTED=y
-CONFIG_SOC_PSRAM_DMA_CAPABLE=y
-CONFIG_SOC_XT_WDT_SUPPORTED=y
-CONFIG_SOC_I2S_SUPPORTED=y
-CONFIG_SOC_RMT_SUPPORTED=y
-CONFIG_SOC_SDM_SUPPORTED=y
-CONFIG_SOC_GPSPI_SUPPORTED=y
-CONFIG_SOC_LEDC_SUPPORTED=y
-CONFIG_SOC_I2C_SUPPORTED=y
-CONFIG_SOC_SYSTIMER_SUPPORTED=y
-CONFIG_SOC_SUPPORT_COEXISTENCE=y
-CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y
-CONFIG_SOC_AES_SUPPORTED=y
-CONFIG_SOC_MPI_SUPPORTED=y
-CONFIG_SOC_SHA_SUPPORTED=y
-CONFIG_SOC_HMAC_SUPPORTED=y
-CONFIG_SOC_DIG_SIGN_SUPPORTED=y
-CONFIG_SOC_FLASH_ENC_SUPPORTED=y
-CONFIG_SOC_SECURE_BOOT_SUPPORTED=y
-CONFIG_SOC_MEMPROT_SUPPORTED=y
-CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y
-CONFIG_SOC_BOD_SUPPORTED=y
-CONFIG_SOC_CLK_TREE_SUPPORTED=y
-CONFIG_SOC_MPU_SUPPORTED=y
-CONFIG_SOC_WDT_SUPPORTED=y
-CONFIG_SOC_SPI_FLASH_SUPPORTED=y
-CONFIG_SOC_RNG_SUPPORTED=y
-CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y
-CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y
-CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y
-CONFIG_SOC_PM_SUPPORTED=y
-CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y
-CONFIG_SOC_XTAL_SUPPORT_40M=y
-CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y
-CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y
-CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y
-CONFIG_SOC_ADC_ARBITER_SUPPORTED=y
-CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y
-CONFIG_SOC_ADC_MONITOR_SUPPORTED=y
-CONFIG_SOC_ADC_DMA_SUPPORTED=y
-CONFIG_SOC_ADC_PERIPH_NUM=2
-CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10
-CONFIG_SOC_ADC_ATTEN_NUM=4
-CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2
-CONFIG_SOC_ADC_PATT_LEN_MAX=24
-CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12
-CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12
-CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4
-CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4
-CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2
-CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2
-CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333
-CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611
-CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12
-CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12
-CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y
-CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y
-CONFIG_SOC_ADC_SHARED_POWER=y
-CONFIG_SOC_APB_BACKUP_DMA=y
-CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y
-CONFIG_SOC_CACHE_WRITEBACK_SUPPORTED=y
-CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y
-CONFIG_SOC_CACHE_ACS_INVALID_STATE_ON_PANIC=y
-CONFIG_SOC_CPU_CORES_NUM=2
-CONFIG_SOC_CPU_INTR_NUM=32
-CONFIG_SOC_CPU_HAS_FPU=y
-CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y
-CONFIG_SOC_CPU_BREAKPOINTS_NUM=2
-CONFIG_SOC_CPU_WATCHPOINTS_NUM=2
-CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40
-CONFIG_SOC_SIMD_PREFERRED_DATA_ALIGNMENT=16
-CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096
-CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16
-CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100
-CONFIG_SOC_AHB_GDMA_VERSION=1
-CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1
-CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5
-CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=5
-CONFIG_SOC_AHB_GDMA_SUPPORT_PSRAM=y
-CONFIG_SOC_GPIO_PORT=1
-CONFIG_SOC_GPIO_PIN_COUNT=49
-CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y
-CONFIG_SOC_GPIO_FILTER_CLK_SUPPORT_APB=y
-CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y
-CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y
-CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF
-CONFIG_SOC_GPIO_IN_RANGE_MAX=48
-CONFIG_SOC_GPIO_OUT_RANGE_MAX=48
-CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x0001FFFFFC000000
-CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y
-CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3
-CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y
-CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8
-CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8
-CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y
-CONFIG_SOC_I2C_NUM=2
-CONFIG_SOC_HP_I2C_NUM=2
-CONFIG_SOC_I2C_FIFO_LEN=32
-CONFIG_SOC_I2C_CMD_REG_NUM=8
-CONFIG_SOC_I2C_SUPPORT_SLAVE=y
-CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y
-CONFIG_SOC_I2C_SUPPORT_XTAL=y
-CONFIG_SOC_I2C_SUPPORT_RTC=y
-CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y
-CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y
-CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y
-CONFIG_SOC_I2C_SLAVE_CAN_GET_STRETCH_CAUSE=y
-CONFIG_SOC_I2S_NUM=2
-CONFIG_SOC_I2S_HW_VERSION_2=y
-CONFIG_SOC_I2S_SUPPORTS_XTAL=y
-CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y
-CONFIG_SOC_I2S_SUPPORTS_PCM=y
-CONFIG_SOC_I2S_SUPPORTS_PDM=y
-CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y
-CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y
-CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y
-CONFIG_SOC_I2S_SUPPORTS_PDM2PCM=y
-CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2
-CONFIG_SOC_I2S_PDM_MAX_RX_LINES=4
-CONFIG_SOC_I2S_SUPPORTS_TDM=y
-CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y
-CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y
-CONFIG_SOC_LEDC_TIMER_NUM=4
-CONFIG_SOC_LEDC_CHANNEL_NUM=8
-CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=14
-CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y
-CONFIG_SOC_MCPWM_GROUPS=2
-CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3
-CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3
-CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2
-CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2
-CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2
-CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3
-CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y
-CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3
-CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3
-CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y
-CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1
-CONFIG_SOC_MMU_PERIPH_NUM=1
-CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
-CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
-CONFIG_SOC_PCNT_GROUPS=1
-CONFIG_SOC_PCNT_UNITS_PER_GROUP=4
-CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2
-CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2
-CONFIG_SOC_RMT_GROUPS=1
-CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4
-CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4
-CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8
-CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48
-CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y
-CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y
-CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y
-CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y
-CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y
-CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y
-CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y
-CONFIG_SOC_RMT_SUPPORT_XTAL=y
-CONFIG_SOC_RMT_SUPPORT_RC_FAST=y
-CONFIG_SOC_RMT_SUPPORT_APB=y
-CONFIG_SOC_RMT_SUPPORT_DMA=y
-CONFIG_SOC_LCD_I80_SUPPORTED=y
-CONFIG_SOC_LCD_RGB_SUPPORTED=y
-CONFIG_SOC_LCD_I80_BUSES=1
-CONFIG_SOC_LCD_RGB_PANELS=1
-CONFIG_SOC_LCD_I80_BUS_WIDTH=16
-CONFIG_SOC_LCD_RGB_DATA_WIDTH=16
-CONFIG_SOC_LCD_SUPPORT_RGB_YUV_CONV=y
-CONFIG_SOC_LCDCAM_I80_NUM_BUSES=1
-CONFIG_SOC_LCDCAM_I80_BUS_WIDTH=16
-CONFIG_SOC_LCDCAM_RGB_NUM_PANELS=1
-CONFIG_SOC_LCDCAM_RGB_DATA_WIDTH=16
-CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128
-CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549
-CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128
-CONFIG_SOC_RTCIO_PIN_COUNT=22
-CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y
-CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y
-CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y
-CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y
-CONFIG_SOC_SDM_GROUPS=1
-CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8
-CONFIG_SOC_SDM_CLK_SUPPORT_APB=y
-CONFIG_SOC_SPI_PERIPH_NUM=3
-CONFIG_SOC_SPI_MAX_CS_NUM=6
-CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64
-CONFIG_SOC_SPI_SUPPORT_DDRCLK=y
-CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y
-CONFIG_SOC_SPI_SUPPORT_CD_SIG=y
-CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y
-CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y
-CONFIG_SOC_SPI_SUPPORT_CLK_APB=y
-CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y
-CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y
-CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y
-CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16
-CONFIG_SOC_SPI_SUPPORT_OCT=y
-CONFIG_SOC_SPI_SCT_SUPPORTED=y
-CONFIG_SOC_SPI_SCT_REG_NUM=14
-CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y
-CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA
-CONFIG_SOC_MEMSPI_SRC_FREQ_120M_SUPPORTED=y
-CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y
-CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y
-CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y
-CONFIG_SOC_SPIRAM_SUPPORTED=y
-CONFIG_SOC_SPIRAM_XIP_SUPPORTED=y
-CONFIG_SOC_SYSTIMER_COUNTER_NUM=2
-CONFIG_SOC_SYSTIMER_ALARM_NUM=3
-CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32
-CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20
-CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y
-CONFIG_SOC_SYSTIMER_INT_LEVEL=y
-CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y
-CONFIG_SOC_TIMER_GROUPS=2
-CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2
-CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54
-CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y
-CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y
-CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4
-CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32
-CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16
-CONFIG_SOC_TOUCH_SENSOR_VERSION=2
-CONFIG_SOC_TOUCH_SENSOR_NUM=15
-CONFIG_SOC_TOUCH_MIN_CHAN_ID=1
-CONFIG_SOC_TOUCH_MAX_CHAN_ID=14
-CONFIG_SOC_TOUCH_SUPPORT_BENCHMARK=y
-CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y
-CONFIG_SOC_TOUCH_SUPPORT_WATERPROOF=y
-CONFIG_SOC_TOUCH_SUPPORT_PROX_SENSING=y
-CONFIG_SOC_TOUCH_SUPPORT_DENOISE_CHAN=y
-CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3
-CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y
-CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1
-CONFIG_SOC_TWAI_CONTROLLER_NUM=1
-CONFIG_SOC_TWAI_MASK_FILTER_NUM=1
-CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y
-CONFIG_SOC_TWAI_BRP_MIN=2
-CONFIG_SOC_TWAI_BRP_MAX=16384
-CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y
-CONFIG_SOC_UART_NUM=3
-CONFIG_SOC_UART_HP_NUM=3
-CONFIG_SOC_UART_FIFO_LEN=128
-CONFIG_SOC_UART_BITRATE_MAX=5000000
-CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y
-CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y
-CONFIG_SOC_UART_SUPPORT_APB_CLK=y
-CONFIG_SOC_UART_SUPPORT_RTC_CLK=y
-CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y
-CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y
-CONFIG_SOC_UHCI_NUM=1
-CONFIG_SOC_USB_OTG_PERIPH_NUM=1
-CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968
-CONFIG_SOC_SHA_SUPPORT_DMA=y
-CONFIG_SOC_SHA_SUPPORT_RESUME=y
-CONFIG_SOC_SHA_GDMA=y
-CONFIG_SOC_SHA_SUPPORT_SHA1=y
-CONFIG_SOC_SHA_SUPPORT_SHA224=y
-CONFIG_SOC_SHA_SUPPORT_SHA256=y
-CONFIG_SOC_SHA_SUPPORT_SHA384=y
-CONFIG_SOC_SHA_SUPPORT_SHA512=y
-CONFIG_SOC_SHA_SUPPORT_SHA512_224=y
-CONFIG_SOC_SHA_SUPPORT_SHA512_256=y
-CONFIG_SOC_SHA_SUPPORT_SHA512_T=y
-CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4
-CONFIG_SOC_MPI_OPERATIONS_NUM=3
-CONFIG_SOC_RSA_MAX_BIT_LEN=4096
-CONFIG_SOC_AES_SUPPORT_DMA=y
-CONFIG_SOC_AES_GDMA=y
-CONFIG_SOC_AES_SUPPORT_AES_128=y
-CONFIG_SOC_AES_SUPPORT_AES_256=y
-CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y
-CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y
-CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y
-CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y
-CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y
-CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y
-CONFIG_SOC_PM_SUPPORT_CPU_PD=y
-CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y
-CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y
-CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y
-CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y
-CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y
-CONFIG_SOC_PM_SUPPORT_MODEM_PD=y
-CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y
-CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y
-CONFIG_SOC_PM_CPU_RETENTION_BY_RTCCNTL=y
-CONFIG_SOC_PM_MODEM_RETENTION_BY_BACKUPDMA=y
-CONFIG_SOC_PM_MODEM_PD_BY_SW=y
-CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y
-CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y
-CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y
-CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y
-CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D2=y
-CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y
-CONFIG_SOC_EFUSE_DIS_DOWNLOAD_DCACHE=y
-CONFIG_SOC_EFUSE_HARD_DIS_JTAG=y
-CONFIG_SOC_EFUSE_DIS_USB_JTAG=y
-CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y
-CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y
-CONFIG_SOC_EFUSE_DIS_ICACHE=y
-CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y
-CONFIG_SOC_SECURE_BOOT_V2_RSA=y
-CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3
-CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y
-CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y
-CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64
-CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y
-CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y
-CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y
-CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y
-CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16
-CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256
-CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21
-CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192
-CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12
-CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y
-CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y
-CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y
-CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y
-CONFIG_SOC_SPI_MEM_SUPPORT_FLASH_OPI_MODE=y
-CONFIG_SOC_SPI_MEM_SUPPORT_TIMING_TUNING=y
-CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y
-CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y
-CONFIG_SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY=y
-CONFIG_SOC_MEMSPI_CORE_CLK_SHARED_WITH_PSRAM=y
-CONFIG_SOC_SPI_MEM_SUPPORT_CACHE_32BIT_ADDR_MAP=y
-CONFIG_SOC_COEX_HW_PTI=y
-CONFIG_SOC_EXTERNAL_COEX_LEADER_TX_LINE=y
-CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y
-CONFIG_SOC_SDMMC_NUM_SLOTS=2
-CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y
-CONFIG_SOC_SDMMC_DELAY_PHASE_NUM=4
-CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y
-CONFIG_SOC_WIFI_HW_TSF=y
-CONFIG_SOC_WIFI_FTM_SUPPORT=y
-CONFIG_SOC_WIFI_GCMP_SUPPORT=y
-CONFIG_SOC_WIFI_WAPI_SUPPORT=y
-CONFIG_SOC_WIFI_CSI_SUPPORT=y
-CONFIG_SOC_WIFI_MESH_SUPPORT=y
-CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y
-CONFIG_SOC_WIFI_PHY_NEEDS_USB_WORKAROUND=y
-CONFIG_SOC_BLE_SUPPORTED=y
-CONFIG_SOC_BLE_MESH_SUPPORTED=y
-CONFIG_SOC_BLE_50_SUPPORTED=y
-CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y
-CONFIG_SOC_BLUFI_SUPPORTED=y
-CONFIG_SOC_ULP_HAS_ADC=y
-CONFIG_SOC_PHY_COMBO_MODULE=y
-CONFIG_IDF_CMAKE=y
-CONFIG_IDF_TOOLCHAIN="gcc"
-CONFIG_IDF_TOOLCHAIN_GCC=y
-CONFIG_IDF_TARGET_ARCH_XTENSA=y
-CONFIG_IDF_TARGET_ARCH="xtensa"
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_IDF_INIT_VERSION="5.3.1"
-CONFIG_IDF_TARGET_ESP32S3=y
-CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009
-
-#
-# Build type
-#
-CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y
-# CONFIG_APP_BUILD_TYPE_RAM is not set
-CONFIG_APP_BUILD_GENERATE_BINARIES=y
-CONFIG_APP_BUILD_BOOTLOADER=y
-CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
-# CONFIG_APP_REPRODUCIBLE_BUILD is not set
-# CONFIG_APP_NO_BLOBS is not set
-# end of Build type
-
-#
-# Bootloader config
-#
-
-#
-# Bootloader manager
-#
-CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y
-CONFIG_BOOTLOADER_PROJECT_VER=1
-# end of Bootloader manager
-
-#
-# Application Rollback
-#
-# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
-# end of Application Rollback
-
-#
-# Bootloader Rollback
-#
-# end of Bootloader Rollback
-
-CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0
-CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set
-
-#
-# Log
-#
-CONFIG_BOOTLOADER_LOG_VERSION_1=y
-CONFIG_BOOTLOADER_LOG_VERSION=1
-# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set
-CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y
-# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_INFO is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
-CONFIG_BOOTLOADER_LOG_LEVEL=1
-
-#
-# Format
-#
-# CONFIG_BOOTLOADER_LOG_COLORS is not set
-CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y
-# end of Format
-
-#
-# Settings
-#
-CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y
-CONFIG_BOOTLOADER_LOG_MODE_TEXT=y
-# end of Settings
-# end of Log
-
-#
-# Serial Flash Configurations
-#
-# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set
-CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
-# end of Serial Flash Configurations
-
-# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
-CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
-# CONFIG_BOOTLOADER_FACTORY_RESET is not set
-# CONFIG_BOOTLOADER_APP_TEST is not set
-CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=y
-# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
-CONFIG_BOOTLOADER_WDT_TIME_MS=9000
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
-CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
-# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
-# end of Bootloader config
-
-#
-# Security features
-#
-CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y
-CONFIG_SECURE_BOOT_V2_PREFERRED=y
-# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
-# CONFIG_SECURE_BOOT is not set
-# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
-CONFIG_SECURE_ROM_DL_MODE_ENABLED=y
-# end of Security features
-
-#
-# Application manager
-#
-CONFIG_APP_COMPILE_TIME_DATE=y
-# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
-# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
-# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
-CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
-# end of Application manager
-
-CONFIG_ESP_ROM_HAS_CRC_LE=y
-CONFIG_ESP_ROM_HAS_CRC_BE=y
-CONFIG_ESP_ROM_HAS_MZ_CRC32=y
-CONFIG_ESP_ROM_HAS_JPEG_DECODE=y
-CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y
-CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y
-CONFIG_ESP_ROM_USB_OTG_NUM=3
-CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4
-CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y
-CONFIG_ESP_ROM_HAS_ENCRYPTED_WRITES_USING_LEGACY_DRV=y
-CONFIG_ESP_ROM_GET_CLK_FREQ=y
-CONFIG_ESP_ROM_HAS_HAL_WDT=y
-CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y
-CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y
-CONFIG_ESP_ROM_HAS_SPI_FLASH=y
-CONFIG_ESP_ROM_HAS_SPI_FLASH_MMAP=y
-CONFIG_ESP_ROM_HAS_ETS_PRINTF_BUG=y
-CONFIG_ESP_ROM_HAS_NEWLIB=y
-CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y
-CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y
-CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y
-CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y
-CONFIG_ESP_ROM_HAS_FLASH_COUNT_PAGES_BUG=y
-CONFIG_ESP_ROM_HAS_CACHE_SUSPEND_WAITI_BUG=y
-CONFIG_ESP_ROM_HAS_CACHE_WRITEBACK_BUG=y
-CONFIG_ESP_ROM_HAS_SW_FLOAT=y
-CONFIG_ESP_ROM_HAS_VERSION=y
-CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y
-CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y
-CONFIG_ESP_ROM_CONSOLE_OUTPUT_SECONDARY=y
-
-#
-# Boot ROM Behavior
-#
-# CONFIG_BOOT_ROM_LOG_ALWAYS_ON is not set
-# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set
-CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH=y
-# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set
-# end of Boot ROM Behavior
-
-#
-# Serial flasher config
-#
-# CONFIG_ESPTOOLPY_NO_STUB is not set
-# CONFIG_ESPTOOLPY_OCT_FLASH is not set
-# CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT is not set
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_DIO is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set
-CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y
-CONFIG_ESPTOOLPY_FLASHMODE="dio"
-CONFIG_ESPTOOLPY_FLASHFREQ_120M=y
-# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set
-# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set
-# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ="80m"
-# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE="8MB"
-# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set
-CONFIG_ESPTOOLPY_BEFORE_RESET=y
-# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
-CONFIG_ESPTOOLPY_BEFORE="default_reset"
-CONFIG_ESPTOOLPY_AFTER_RESET=y
-# CONFIG_ESPTOOLPY_AFTER_NORESET is not set
-CONFIG_ESPTOOLPY_AFTER="hard_reset"
-CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
-# end of Serial flasher config
-
-#
-# Partition Table
-#
-# CONFIG_PARTITION_TABLE_SINGLE_APP is not set
-# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set
-# CONFIG_PARTITION_TABLE_TWO_OTA is not set
-# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="bootloader/partitions-8MB.csv"
-CONFIG_PARTITION_TABLE_FILENAME="bootloader/partitions-8MB.csv"
-CONFIG_PARTITION_TABLE_OFFSET=0x8000
-CONFIG_PARTITION_TABLE_MD5=y
-# end of Partition Table
-
-#
-# Example Configuration
-#
-# CONFIG_EXAMPLE_USE_FTDI is not set
-CONFIG_EXAMPLE_USE_CP210X=y
-# end of Example Configuration
-
-#
-# Compiler options
-#
-# CONFIG_COMPILER_OPTIMIZATION_DEBUG is not set
-# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
-CONFIG_COMPILER_OPTIMIZATION_PERF=y
-# CONFIG_COMPILER_OPTIMIZATION_NONE is not set
-CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set
-CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y
-CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y
-CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
-# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set
-CONFIG_COMPILER_HIDE_PATHS_MACROS=y
-# CONFIG_COMPILER_CXX_EXCEPTIONS is not set
-# CONFIG_COMPILER_CXX_RTTI is not set
-CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
-# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set
-# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set
-# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set
-CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y
-# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set
-# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set
-# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set
-# CONFIG_COMPILER_DUMP_RTL_FILES is not set
-CONFIG_COMPILER_RT_LIB_GCCLIB=y
-CONFIG_COMPILER_RT_LIB_NAME="gcc"
-# CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING is not set
-CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE=y
-# CONFIG_COMPILER_STATIC_ANALYZER is not set
-# end of Compiler options
-
-#
-# Component config
-#
-
-#
-# Application Level Tracing
-#
-# CONFIG_APPTRACE_DEST_JTAG is not set
-CONFIG_APPTRACE_DEST_NONE=y
-# CONFIG_APPTRACE_DEST_UART1 is not set
-# CONFIG_APPTRACE_DEST_UART2 is not set
-# CONFIG_APPTRACE_DEST_USB_CDC is not set
-CONFIG_APPTRACE_DEST_UART_NONE=y
-CONFIG_APPTRACE_UART_TASK_PRIO=1
-CONFIG_APPTRACE_LOCK_ENABLE=y
-# end of Application Level Tracing
-
-#
-# Bluetooth
-#
-# CONFIG_BT_ENABLED is not set
-
-#
-# Common Options
-#
-# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set
-# end of Common Options
-# end of Bluetooth
-
-#
-# Console Library
-#
-# CONFIG_CONSOLE_SORTED_HELP is not set
-# end of Console Library
-
-#
-# Driver Configurations
-#
-
-#
-# Legacy TWAI Driver Configurations
-#
-# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set
-CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
-# end of Legacy TWAI Driver Configurations
-
-#
-# Legacy ADC Driver Configuration
-#
-# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set
-
-#
-# Legacy ADC Calibration Configuration
-#
-# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set
-# end of Legacy ADC Calibration Configuration
-# end of Legacy ADC Driver Configuration
-
-#
-# Legacy MCPWM Driver Configurations
-#
-# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy MCPWM Driver Configurations
-
-#
-# Legacy Timer Group Driver Configurations
-#
-# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy Timer Group Driver Configurations
-
-#
-# Legacy RMT Driver Configurations
-#
-# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy RMT Driver Configurations
-
-#
-# Legacy I2S Driver Configurations
-#
-# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy I2S Driver Configurations
-
-#
-# Legacy I2C Driver Configurations
-#
-# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy I2C Driver Configurations
-
-#
-# Legacy PCNT Driver Configurations
-#
-# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy PCNT Driver Configurations
-
-#
-# Legacy SDM Driver Configurations
-#
-# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy SDM Driver Configurations
-
-#
-# Legacy Temperature Sensor Driver Configurations
-#
-# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy Temperature Sensor Driver Configurations
-
-#
-# Legacy Touch Sensor Driver Configurations
-#
-# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set
-# end of Legacy Touch Sensor Driver Configurations
-# end of Driver Configurations
-
-#
-# eFuse Bit Manager
-#
-# CONFIG_EFUSE_CUSTOM_TABLE is not set
-# CONFIG_EFUSE_VIRTUAL is not set
-CONFIG_EFUSE_MAX_BLK_LEN=256
-# end of eFuse Bit Manager
-
-#
-# ESP-TLS
-#
-CONFIG_ESP_TLS_USING_MBEDTLS=y
-# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set
-CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y
-# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set
-# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set
-# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set
-# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set
-# CONFIG_ESP_TLS_PSK_VERIFICATION is not set
-# CONFIG_ESP_TLS_INSECURE is not set
-# end of ESP-TLS
-
-#
-# ADC and ADC Calibration
-#
-# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set
-CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE=y
-# CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set
-# CONFIG_ADC_ENABLE_DEBUG_LOG is not set
-# end of ADC and ADC Calibration
-
-#
-# Wireless Coexistence
-#
-CONFIG_ESP_COEX_ENABLED=y
-# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set
-# CONFIG_ESP_COEX_GPIO_DEBUG is not set
-# end of Wireless Coexistence
-
-#
-# Common ESP-related
-#
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
-# end of Common ESP-related
-
-#
-# ESP-Driver:GPIO Configurations
-#
-# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set
-# end of ESP-Driver:GPIO Configurations
-
-#
-# ESP-Driver:GPTimer Configurations
-#
-CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y
-# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set
-CONFIG_GPTIMER_OBJ_CACHE_SAFE=y
-# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:GPTimer Configurations
-
-#
-# ESP-Driver:I2C Configurations
-#
-# CONFIG_I2C_ISR_IRAM_SAFE is not set
-# CONFIG_I2C_ENABLE_DEBUG_LOG is not set
-# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set
-CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y
-# end of ESP-Driver:I2C Configurations
-
-#
-# ESP-Driver:I2S Configurations
-#
-CONFIG_I2S_ISR_IRAM_SAFE=y
-# CONFIG_I2S_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:I2S Configurations
-
-#
-# ESP-Driver:LEDC Configurations
-#
-# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set
-# end of ESP-Driver:LEDC Configurations
-
-#
-# ESP-Driver:MCPWM Configurations
-#
-CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y
-# CONFIG_MCPWM_ISR_CACHE_SAFE is not set
-# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set
-CONFIG_MCPWM_OBJ_CACHE_SAFE=y
-# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:MCPWM Configurations
-
-#
-# ESP-Driver:PCNT Configurations
-#
-# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_PCNT_ISR_IRAM_SAFE is not set
-# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:PCNT Configurations
-
-#
-# ESP-Driver:RMT Configurations
-#
-CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y
-CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y
-CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y
-# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set
-CONFIG_RMT_TX_ISR_CACHE_SAFE=y
-CONFIG_RMT_RX_ISR_CACHE_SAFE=y
-CONFIG_RMT_OBJ_CACHE_SAFE=y
-# CONFIG_RMT_ENABLE_DEBUG_LOG is not set
-CONFIG_RMT_ISR_IRAM_SAFE=y
-# end of ESP-Driver:RMT Configurations
-
-#
-# ESP-Driver:Sigma Delta Modulator Configurations
-#
-# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_SDM_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:Sigma Delta Modulator Configurations
-
-#
-# ESP-Driver:SPI Configurations
-#
-CONFIG_SPI_MASTER_IN_IRAM=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=y
-CONFIG_SPI_SLAVE_IN_IRAM=y
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
-# end of ESP-Driver:SPI Configurations
-
-#
-# ESP-Driver:Touch Sensor Configurations
-#
-# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_TOUCH_ISR_IRAM_SAFE is not set
-# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set
-# CONFIG_TOUCH_SKIP_FSM_CHECK is not set
-# end of ESP-Driver:Touch Sensor Configurations
-
-#
-# ESP-Driver:Temperature Sensor Configurations
-#
-# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:Temperature Sensor Configurations
-
-#
-# ESP-Driver:TWAI Configurations
-#
-# CONFIG_TWAI_ISR_IN_IRAM is not set
-# CONFIG_TWAI_ISR_CACHE_SAFE is not set
-# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:TWAI Configurations
-
-#
-# ESP-Driver:UART Configurations
-#
-# CONFIG_UART_ISR_IN_IRAM is not set
-# end of ESP-Driver:UART Configurations
-
-#
-# ESP-Driver:UHCI Configurations
-#
-# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set
-# CONFIG_UHCI_ISR_CACHE_SAFE is not set
-# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set
-# end of ESP-Driver:UHCI Configurations
-
-#
-# ESP-Driver:USB Serial/JTAG Configuration
-#
-CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y
-# end of ESP-Driver:USB Serial/JTAG Configuration
-
-#
-# Ethernet
-#
-CONFIG_ETH_ENABLED=y
-CONFIG_ETH_USE_SPI_ETHERNET=y
-# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
-# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
-# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set
-# CONFIG_ETH_USE_OPENETH is not set
-# CONFIG_ETH_TRANSMIT_MUTEX is not set
-# end of Ethernet
-
-#
-# Event Loop Library
-#
-# CONFIG_ESP_EVENT_LOOP_PROFILING is not set
-CONFIG_ESP_EVENT_POST_FROM_ISR=y
-CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y
-# end of Event Loop Library
-
-#
-# GDB Stub
-#
-CONFIG_ESP_GDBSTUB_ENABLED=y
-# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set
-CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y
-CONFIG_ESP_GDBSTUB_MAX_TASKS=32
-# end of GDB Stub
-
-#
-# ESP HID
-#
-CONFIG_ESPHID_TASK_SIZE_BT=2048
-CONFIG_ESPHID_TASK_SIZE_BLE=4096
-# end of ESP HID
-
-#
-# ESP HTTP client
-#
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
-# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set
-# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set
-# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set
-CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000
-# end of ESP HTTP client
-
-#
-# HTTP Server
-#
-CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
-CONFIG_HTTPD_MAX_URI_LEN=512
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
-CONFIG_HTTPD_PURGE_BUF_LEN=32
-# CONFIG_HTTPD_LOG_PURGE_DATA is not set
-# CONFIG_HTTPD_WS_SUPPORT is not set
-# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set
-CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000
-# end of HTTP Server
-
-#
-# ESP HTTPS OTA
-#
-# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set
-# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set
-CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000
-# end of ESP HTTPS OTA
-
-#
-# ESP HTTPS server
-#
-# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set
-CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000
-# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set
-# end of ESP HTTPS server
-
-#
-# Hardware Settings
-#
-
-#
-# Chip revision
-#
-CONFIG_ESP32S3_REV_MIN_0=y
-# CONFIG_ESP32S3_REV_MIN_1 is not set
-# CONFIG_ESP32S3_REV_MIN_2 is not set
-CONFIG_ESP32S3_REV_MIN_FULL=0
-CONFIG_ESP_REV_MIN_FULL=0
-
-#
-# Maximum Supported ESP32-S3 Revision (Rev v0.99)
-#
-CONFIG_ESP32S3_REV_MAX_FULL=99
-CONFIG_ESP_REV_MAX_FULL=99
-CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0
-CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=199
-
-#
-# Maximum Supported ESP32-S3 eFuse Block Revision (eFuse Block Rev v1.99)
-#
-# end of Chip revision
-
-#
-# MAC Config
-#
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
-CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4
-# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set
-CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4
-# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set
-# end of MAC Config
-
-#
-# Sleep Config
-#
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y
-CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND=y
-CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y
-CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y
-CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000
-# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set
-# CONFIG_ESP_SLEEP_DEBUG is not set
-CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y
-# end of Sleep Config
-
-#
-# RTC Clock Config
-#
-CONFIG_RTC_CLK_SRC_INT_RC=y
-# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set
-# CONFIG_RTC_CLK_SRC_EXT_OSC is not set
-# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set
-CONFIG_RTC_CLK_CAL_CYCLES=1024
-# end of RTC Clock Config
-
-#
-# Peripheral Control
-#
-CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y
-# end of Peripheral Control
-
-#
-# GDMA Configurations
-#
-CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y
-CONFIG_GDMA_ISR_HANDLER_IN_IRAM=y
-CONFIG_GDMA_OBJ_DRAM_SAFE=y
-# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set
-CONFIG_GDMA_ISR_IRAM_SAFE=y
-# end of GDMA Configurations
-
-#
-# Main XTAL Config
-#
-CONFIG_XTAL_FREQ_40=y
-CONFIG_XTAL_FREQ=40
-# end of Main XTAL Config
-
-#
-# Power Supplier
-#
-
-#
-# Brownout Detector
-#
-CONFIG_ESP_BROWNOUT_DET=y
-CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set
-CONFIG_ESP_BROWNOUT_DET_LVL=7
-CONFIG_ESP_BROWNOUT_USE_INTR=y
-# end of Brownout Detector
-# end of Power Supplier
-
-CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y
-CONFIG_ESP_SPI_BUS_LOCK_FUNCS_IN_IRAM=y
-CONFIG_ESP_INTR_IN_IRAM=y
-# end of Hardware Settings
-
-#
-# ESP-Driver:LCD Controller Configurations
-#
-# CONFIG_LCD_ENABLE_DEBUG_LOG is not set
-# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set
-# CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set
-# end of ESP-Driver:LCD Controller Configurations
-
-#
-# ESP-MM: Memory Management Configurations
-#
-# CONFIG_ESP_MM_CACHE_MSYNC_C2M_CHUNKED_OPS is not set
-# end of ESP-MM: Memory Management Configurations
-
-#
-# ESP NETIF Adapter
-#
-CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120
-# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set
-CONFIG_ESP_NETIF_TCPIP_LWIP=y
-# CONFIG_ESP_NETIF_LOOPBACK is not set
-CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y
-CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y
-# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set
-# CONFIG_ESP_NETIF_L2_TAP is not set
-# CONFIG_ESP_NETIF_BRIDGE_EN is not set
-# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set
-# end of ESP NETIF Adapter
-
-#
-# Partition API Configuration
-#
-# end of Partition API Configuration
-
-#
-# PHY
-#
-CONFIG_ESP_PHY_ENABLED=y
-CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y
-# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set
-CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
-CONFIG_ESP_PHY_MAX_TX_POWER=20
-CONFIG_ESP_PHY_REDUCE_TX_POWER=y
-CONFIG_ESP_PHY_ENABLE_USB=y
-# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set
-CONFIG_ESP_PHY_RF_CAL_PARTIAL=y
-# CONFIG_ESP_PHY_RF_CAL_NONE is not set
-# CONFIG_ESP_PHY_RF_CAL_FULL is not set
-CONFIG_ESP_PHY_CALIBRATION_MODE=0
-# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set
-# CONFIG_ESP_PHY_RECORD_USED_TIME is not set
-CONFIG_ESP_PHY_IRAM_OPT=y
-# end of PHY
-
-#
-# Power Management
-#
-CONFIG_PM_SLEEP_FUNC_IN_IRAM=y
-# CONFIG_PM_ENABLE is not set
-CONFIG_PM_SLP_IRAM_OPT=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y
-CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y
-# end of Power Management
-
-#
-# ESP PSRAM
-#
-CONFIG_SPIRAM=y
-
-#
-# SPI RAM config
-#
-CONFIG_SPIRAM_MODE_QUAD=y
-# CONFIG_SPIRAM_MODE_OCT is not set
-CONFIG_SPIRAM_TYPE_AUTO=y
-# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
-# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
-# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
-CONFIG_SPIRAM_CLK_IO=30
-CONFIG_SPIRAM_CS_IO=26
-# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
-# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
-# CONFIG_SPIRAM_RODATA is not set
-CONFIG_SPIRAM_SPEED_120M=y
-# CONFIG_SPIRAM_SPEED_80M is not set
-# CONFIG_SPIRAM_SPEED_40M is not set
-CONFIG_SPIRAM_SPEED=120
-# CONFIG_SPIRAM_BOOT_HW_INIT is not set
-# CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION is not set
-# CONFIG_SPIRAM_USE_MEMMAP is not set
-CONFIG_SPIRAM_USE_CAPS_ALLOC=y
-# CONFIG_SPIRAM_USE_MALLOC is not set
-# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set
-# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
-# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set
-# end of SPI RAM config
-# end of ESP PSRAM
-
-#
-# ESP Ringbuf
-#
-# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set
-# end of ESP Ringbuf
-
-#
-# ESP-ROM
-#
-CONFIG_ESP_ROM_PRINT_IN_IRAM=y
-# end of ESP-ROM
-
-#
-# ESP Security Specific
-#
-# end of ESP Security Specific
-
-#
-# ESP System Settings
-#
-# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y
-# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160
-
-#
-# Cache config
-#
-CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y
-# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set
-CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000
-# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set
-CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y
-CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8
-# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set
-CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y
-CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32
-# CONFIG_ESP32S3_DATA_CACHE_16KB is not set
-CONFIG_ESP32S3_DATA_CACHE_32KB=y
-# CONFIG_ESP32S3_DATA_CACHE_64KB is not set
-CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000
-# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set
-CONFIG_ESP32S3_DATA_CACHE_8WAYS=y
-CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8
-# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set
-CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y
-# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set
-CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32
-# end of Cache config
-
-#
-# Memory
-#
-# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set
-# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set
-# end of Memory
-
-#
-# Trace memory
-#
-# CONFIG_ESP32S3_TRAX is not set
-CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0
-# end of Trace memory
-
-# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
-CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
-CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0
-CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y
-CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y
-
-#
-# Memory protection
-#
-CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y
-CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y
-# end of Memory protection
-
-CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120
-CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
-# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set
-# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
-CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
-CONFIG_ESP_CONSOLE_UART_DEFAULT=y
-# CONFIG_ESP_CONSOLE_USB_CDC is not set
-# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
-# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_NONE is not set
-CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
-# CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is not set
-CONFIG_ESP_CONSOLE_UART=y
-CONFIG_ESP_CONSOLE_UART_NUM=0
-CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0
-CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
-CONFIG_ESP_INT_WDT=y
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_INT_WDT_CHECK_CPU1=y
-CONFIG_ESP_TASK_WDT_EN=y
-CONFIG_ESP_TASK_WDT_INIT=y
-# CONFIG_ESP_TASK_WDT_PANIC is not set
-CONFIG_ESP_TASK_WDT_TIMEOUT_S=10
-CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
-CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
-# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
-# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set
-CONFIG_ESP_DEBUG_OCDAWARE=y
-CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y
-# end of ESP System Settings
-
-#
-# IPC (Inter-Processor Call)
-#
-CONFIG_ESP_IPC_TASK_STACK_SIZE=2048
-CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
-CONFIG_ESP_IPC_ISR_ENABLE=y
-# end of IPC (Inter-Processor Call)
-
-#
-# ESP Timer (High Resolution Timer)
-#
-CONFIG_ESP_TIMER_IN_IRAM=y
-# CONFIG_ESP_TIMER_PROFILING is not set
-CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y
-CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y
-CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584
-CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1
-# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set
-CONFIG_ESP_TIMER_TASK_AFFINITY=0x0
-CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y
-CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y
-CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD=y
-CONFIG_ESP_TIMER_IMPL_SYSTIMER=y
-# end of ESP Timer (High Resolution Timer)
-
-#
-# Wi-Fi
-#
-CONFIG_ESP_WIFI_ENABLED=y
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
-CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y
-# CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER is not set
-CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0
-CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16
-CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
-# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set
-CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
-CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
-# CONFIG_ESP_WIFI_CSI_ENABLED is not set
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
-CONFIG_ESP_WIFI_TX_BA_WIN=6
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
-CONFIG_ESP_WIFI_RX_BA_WIN=6
-CONFIG_ESP_WIFI_NVS_ENABLED=y
-CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y
-# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set
-CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32
-CONFIG_ESP_WIFI_IRAM_OPT=y
-# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set
-CONFIG_ESP_WIFI_RX_IRAM_OPT=y
-CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y
-CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
-CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y
-CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y
-CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y
-# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
-CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50
-# CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT is not set
-CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10
-CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
-# CONFIG_ESP_WIFI_FTM_ENABLE is not set
-# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set
-# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set
-# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
-# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
-CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
-CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
-# CONFIG_ESP_WIFI_EAP_TLS1_3 is not set
-# CONFIG_ESP_WIFI_WAPI_PSK is not set
-# CONFIG_ESP_WIFI_SUITE_B_192 is not set
-# CONFIG_ESP_WIFI_11KV_SUPPORT is not set
-# CONFIG_ESP_WIFI_MBO_SUPPORT is not set
-# CONFIG_ESP_WIFI_ENABLE_ROAMING_APP is not set
-# CONFIG_ESP_WIFI_DPP_SUPPORT is not set
-# CONFIG_ESP_WIFI_11R_SUPPORT is not set
-# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set
-
-#
-# WPS Configuration Options
-#
-# CONFIG_ESP_WIFI_WPS_STRICT is not set
-# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set
-# end of WPS Configuration Options
-
-# CONFIG_ESP_WIFI_DEBUG_PRINT is not set
-# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set
-CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
-# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set
-# end of Wi-Fi
-
-#
-# Core dump
-#
-# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set
-CONFIG_ESP_COREDUMP_ENABLE_TO_UART=y
-# CONFIG_ESP_COREDUMP_ENABLE_TO_NONE is not set
-# CONFIG_ESP_COREDUMP_DATA_FORMAT_BIN is not set
-CONFIG_ESP_COREDUMP_DATA_FORMAT_ELF=y
-CONFIG_ESP_COREDUMP_CHECKSUM_CRC32=y
-# CONFIG_ESP_COREDUMP_CHECKSUM_SHA256 is not set
-# CONFIG_ESP_COREDUMP_CAPTURE_DRAM is not set
-CONFIG_ESP_COREDUMP_ENABLE=y
-CONFIG_ESP_COREDUMP_LOGS=y
-CONFIG_ESP_COREDUMP_MAX_TASKS_NUM=64
-CONFIG_ESP_COREDUMP_UART_DELAY=0
-CONFIG_ESP_COREDUMP_STACK_SIZE=0
-CONFIG_ESP_COREDUMP_DECODE_INFO=y
-# CONFIG_ESP_COREDUMP_DECODE_DISABLE is not set
-CONFIG_ESP_COREDUMP_DECODE="info"
-# end of Core dump
-
-#
-# FAT Filesystem support
-#
-CONFIG_FATFS_VOLUME_COUNT=2
-CONFIG_FATFS_LFN_NONE=y
-# CONFIG_FATFS_LFN_HEAP is not set
-# CONFIG_FATFS_LFN_STACK is not set
-# CONFIG_FATFS_SECTOR_512 is not set
-CONFIG_FATFS_SECTOR_4096=y
-# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set
-CONFIG_FATFS_CODEPAGE_437=y
-# CONFIG_FATFS_CODEPAGE_720 is not set
-# CONFIG_FATFS_CODEPAGE_737 is not set
-# CONFIG_FATFS_CODEPAGE_771 is not set
-# CONFIG_FATFS_CODEPAGE_775 is not set
-# CONFIG_FATFS_CODEPAGE_850 is not set
-# CONFIG_FATFS_CODEPAGE_852 is not set
-# CONFIG_FATFS_CODEPAGE_855 is not set
-# CONFIG_FATFS_CODEPAGE_857 is not set
-# CONFIG_FATFS_CODEPAGE_860 is not set
-# CONFIG_FATFS_CODEPAGE_861 is not set
-# CONFIG_FATFS_CODEPAGE_862 is not set
-# CONFIG_FATFS_CODEPAGE_863 is not set
-# CONFIG_FATFS_CODEPAGE_864 is not set
-# CONFIG_FATFS_CODEPAGE_865 is not set
-# CONFIG_FATFS_CODEPAGE_866 is not set
-# CONFIG_FATFS_CODEPAGE_869 is not set
-# CONFIG_FATFS_CODEPAGE_932 is not set
-# CONFIG_FATFS_CODEPAGE_936 is not set
-# CONFIG_FATFS_CODEPAGE_949 is not set
-# CONFIG_FATFS_CODEPAGE_950 is not set
-CONFIG_FATFS_CODEPAGE=437
-CONFIG_FATFS_FS_LOCK=0
-CONFIG_FATFS_TIMEOUT_MS=10000
-CONFIG_FATFS_PER_FILE_CACHE=y
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y
-# CONFIG_FATFS_USE_FASTSEEK is not set
-CONFIG_FATFS_USE_STRFUNC_NONE=y
-# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set
-# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0
-# CONFIG_FATFS_IMMEDIATE_FSYNC is not set
-# CONFIG_FATFS_USE_LABEL is not set
-CONFIG_FATFS_LINK_LOCK=y
-# CONFIG_FATFS_USE_DYN_BUFFERS is not set
-
-#
-# File system free space calculation behavior
-#
-CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0
-CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0
-# end of File system free space calculation behavior
-# end of FAT Filesystem support
-
-#
-# FreeRTOS
-#
-
-#
-# Kernel
-#
-# CONFIG_FREERTOS_SMP is not set
-# CONFIG_FREERTOS_UNICORE is not set
-CONFIG_FREERTOS_HZ=100
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
-CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536
-# CONFIG_FREERTOS_USE_IDLE_HOOK is not set
-# CONFIG_FREERTOS_USE_TICK_HOOK is not set
-CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
-# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set
-CONFIG_FREERTOS_USE_TIMERS=y
-CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc"
-# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set
-# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set
-CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y
-CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF
-CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
-CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
-CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1
-CONFIG_FREERTOS_USE_TRACE_FACILITY=y
-CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
-# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set
-CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y
-CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y
-CONFIG_FREERTOS_RUN_TIME_COUNTER_TYPE_U32=y
-# CONFIG_FREERTOS_RUN_TIME_COUNTER_TYPE_U64 is not set
-# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set
-# end of Kernel
-
-#
-# Port
-#
-CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
-# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
-CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y
-# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set
-# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
-CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
-CONFIG_FREERTOS_ISR_STACKSIZE=2096
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
-# CONFIG_FREERTOS_FPU_IN_ISR is not set
-CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y
-CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y
-# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set
-CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y
-CONFIG_FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER=y
-# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
-# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
-# end of Port
-
-#
-# Extra
-#
-# CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM is not set
-# end of Extra
-
-CONFIG_FREERTOS_PORT=y
-CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
-CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
-CONFIG_FREERTOS_DEBUG_OCDAWARE=y
-CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
-CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
-CONFIG_FREERTOS_NUMBER_OF_CORES=2
-CONFIG_FREERTOS_IN_IRAM=y
-# end of FreeRTOS
-
-#
-# Hardware Abstraction Layer (HAL) and Low Level (LL)
-#
-CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y
-# CONFIG_HAL_ASSERTION_DISABLE is not set
-# CONFIG_HAL_ASSERTION_SILENT is not set
-# CONFIG_HAL_ASSERTION_ENABLE is not set
-CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
-CONFIG_HAL_WDT_USE_ROM_IMPL=y
-# end of Hardware Abstraction Layer (HAL) and Low Level (LL)
-
-#
-# Heap memory debugging
-#
-CONFIG_HEAP_POISONING_DISABLED=y
-# CONFIG_HEAP_POISONING_LIGHT is not set
-# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set
-CONFIG_HEAP_TRACING_OFF=y
-# CONFIG_HEAP_TRACING_STANDALONE is not set
-# CONFIG_HEAP_TRACING_TOHOST is not set
-# CONFIG_HEAP_USE_HOOKS is not set
-# CONFIG_HEAP_TASK_TRACKING is not set
-# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set
-# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set
-# end of Heap memory debugging
-
-#
-# Log
-#
-CONFIG_LOG_VERSION_1=y
-# CONFIG_LOG_VERSION_2 is not set
-CONFIG_LOG_VERSION=1
-
-#
-# Log Level
-#
-# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
-# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
-CONFIG_LOG_DEFAULT_LEVEL_WARN=y
-# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set
-# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
-# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
-CONFIG_LOG_DEFAULT_LEVEL=2
-# CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT is not set
-CONFIG_LOG_MAXIMUM_LEVEL_INFO=y
-# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
-# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
-CONFIG_LOG_MAXIMUM_LEVEL=3
-
-#
-# Level Settings
-#
-# CONFIG_LOG_MASTER_LEVEL is not set
-CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y
-# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set
-# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set
-CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y
-# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set
-CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y
-CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31
-# end of Level Settings
-# end of Log Level
-
-#
-# Format
-#
-CONFIG_LOG_COLORS=y
-CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
-# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
-# end of Format
-
-#
-# Settings
-#
-CONFIG_LOG_MODE_TEXT_EN=y
-CONFIG_LOG_MODE_TEXT=y
-# end of Settings
-
-CONFIG_LOG_IN_IRAM=y
-# end of Log
-
-#
-# LWIP
-#
-CONFIG_LWIP_ENABLE=y
-CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
-CONFIG_LWIP_TCPIP_TASK_PRIO=18
-# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
-# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set
-CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
-# CONFIG_LWIP_L2_TO_L3_COPY is not set
-# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
-# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set
-CONFIG_LWIP_TIMERS_ONDEMAND=y
-CONFIG_LWIP_ND6=y
-# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set
-CONFIG_LWIP_MAX_SOCKETS=10
-# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
-# CONFIG_LWIP_SO_LINGER is not set
-CONFIG_LWIP_SO_REUSE=y
-CONFIG_LWIP_SO_REUSE_RXTOALL=y
-# CONFIG_LWIP_SO_RCVBUF is not set
-# CONFIG_LWIP_NETBUF_RECVINFO is not set
-CONFIG_LWIP_IP_DEFAULT_TTL=64
-CONFIG_LWIP_IP4_FRAG=y
-CONFIG_LWIP_IP6_FRAG=y
-# CONFIG_LWIP_IP4_REASSEMBLY is not set
-# CONFIG_LWIP_IP6_REASSEMBLY is not set
-CONFIG_LWIP_IP_REASS_MAX_PBUFS=10
-# CONFIG_LWIP_IP_FORWARD is not set
-# CONFIG_LWIP_STATS is not set
-CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
-CONFIG_LWIP_GARP_TMR_INTERVAL=60
-CONFIG_LWIP_ESP_MLDV6_REPORT=y
-CONFIG_LWIP_MLDV6_TMR_INTERVAL=40
-CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
-CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
-# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set
-# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set
-# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
-CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
-# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
-CONFIG_LWIP_DHCP_OPTIONS_LEN=68
-CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0
-CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1
-
-#
-# DHCP server
-#
-CONFIG_LWIP_DHCPS=y
-CONFIG_LWIP_DHCPS_LEASE_UNIT=60
-CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
-CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y
-CONFIG_LWIP_DHCPS_ADD_DNS=y
-# end of DHCP server
-
-# CONFIG_LWIP_AUTOIP is not set
-CONFIG_LWIP_IPV4=y
-CONFIG_LWIP_IPV6=y
-# CONFIG_LWIP_IPV6_AUTOCONFIG is not set
-CONFIG_LWIP_IPV6_NUM_ADDRESSES=3
-# CONFIG_LWIP_IPV6_FORWARD is not set
-# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set
-CONFIG_LWIP_NETIF_LOOPBACK=y
-CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
-
-#
-# TCP
-#
-CONFIG_LWIP_MAX_ACTIVE_TCP=16
-CONFIG_LWIP_MAX_LISTENING_TCP=16
-CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
-CONFIG_LWIP_TCP_MAXRTX=12
-CONFIG_LWIP_TCP_SYNMAXRTX=12
-CONFIG_LWIP_TCP_MSS=1440
-CONFIG_LWIP_TCP_TMR_INTERVAL=250
-CONFIG_LWIP_TCP_MSL=60000
-CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000
-CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744
-CONFIG_LWIP_TCP_WND_DEFAULT=5744
-CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
-CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6
-CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
-CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6
-CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4
-# CONFIG_LWIP_TCP_SACK_OUT is not set
-CONFIG_LWIP_TCP_OVERSIZE_MSS=y
-# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
-CONFIG_LWIP_TCP_RTO_TIME=1500
-# end of TCP
-
-#
-# UDP
-#
-CONFIG_LWIP_MAX_UDP_PCBS=16
-CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
-# end of UDP
-
-#
-# Checksums
-#
-# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set
-# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set
-CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
-# end of Checksums
-
-CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
-CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
-CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5
-CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3
-CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10
-# CONFIG_LWIP_PPP_SUPPORT is not set
-# CONFIG_LWIP_SLIP_SUPPORT is not set
-
-#
-# ICMP
-#
-CONFIG_LWIP_ICMP=y
-# CONFIG_LWIP_MULTICAST_PING is not set
-# CONFIG_LWIP_BROADCAST_PING is not set
-# end of ICMP
-
-#
-# LWIP RAW API
-#
-CONFIG_LWIP_MAX_RAW_PCBS=16
-# end of LWIP RAW API
-
-#
-# SNTP
-#
-CONFIG_LWIP_SNTP_MAX_SERVERS=1
-# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set
-CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
-CONFIG_LWIP_SNTP_STARTUP_DELAY=y
-CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000
-# end of SNTP
-
-#
-# DNS
-#
-CONFIG_LWIP_DNS_MAX_HOST_IP=1
-CONFIG_LWIP_DNS_MAX_SERVERS=3
-# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set
-# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set
-# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set
-# end of DNS
-
-CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7
-CONFIG_LWIP_ESP_LWIP_ASSERT=y
-
-#
-# Hooks
-#
-# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set
-CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y
-# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set
-CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y
-# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set
-# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set
-CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y
-# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set
-# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set
-CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y
-# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set
-# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set
-CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y
-# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set
-# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set
-CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
-# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set
-# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set
-CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y
-# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set
-CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y
-# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set
-# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set
-# end of Hooks
-
-# CONFIG_LWIP_DEBUG is not set
-# end of LWIP
-
-#
-# mbedTLS
-#
-CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
-# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set
-# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set
-# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
-CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
-CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
-# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
-# CONFIG_MBEDTLS_DEBUG is not set
-
-#
-# mbedTLS v3.x related
-#
-# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set
-# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
-# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
-# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
-CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
-CONFIG_MBEDTLS_PKCS7_C=y
-# end of mbedTLS v3.x related
-
-#
-# Certificate Bundle
-#
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set
-# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200
-# end of Certificate Bundle
-
-# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
-CONFIG_MBEDTLS_CMAC_C=y
-CONFIG_MBEDTLS_HARDWARE_AES=y
-CONFIG_MBEDTLS_AES_USE_INTERRUPT=y
-CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0
-CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y
-CONFIG_MBEDTLS_HARDWARE_MPI=y
-# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
-CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y
-CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0
-CONFIG_MBEDTLS_HARDWARE_SHA=y
-CONFIG_MBEDTLS_ROM_MD5=y
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set
-CONFIG_MBEDTLS_HAVE_TIME=y
-# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set
-# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
-CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
-CONFIG_MBEDTLS_SHA1_C=y
-CONFIG_MBEDTLS_SHA512_C=y
-# CONFIG_MBEDTLS_SHA3_C is not set
-CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
-# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set
-# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set
-# CONFIG_MBEDTLS_TLS_DISABLED is not set
-CONFIG_MBEDTLS_TLS_SERVER=y
-CONFIG_MBEDTLS_TLS_CLIENT=y
-CONFIG_MBEDTLS_TLS_ENABLED=y
-
-#
-# TLS Key Exchange Methods
-#
-# CONFIG_MBEDTLS_PSK_MODES is not set
-CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
-# end of TLS Key Exchange Methods
-
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
-# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set
-# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set
-CONFIG_MBEDTLS_SSL_ALPN=y
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y
-
-#
-# Symmetric Ciphers
-#
-CONFIG_MBEDTLS_AES_C=y
-# CONFIG_MBEDTLS_CAMELLIA_C is not set
-# CONFIG_MBEDTLS_DES_C is not set
-# CONFIG_MBEDTLS_BLOWFISH_C is not set
-# CONFIG_MBEDTLS_XTEA_C is not set
-CONFIG_MBEDTLS_CCM_C=y
-CONFIG_MBEDTLS_GCM_C=y
-# CONFIG_MBEDTLS_NIST_KW_C is not set
-# end of Symmetric Ciphers
-
-# CONFIG_MBEDTLS_RIPEMD160_C is not set
-
-#
-# Certificates
-#
-CONFIG_MBEDTLS_PEM_PARSE_C=y
-CONFIG_MBEDTLS_PEM_WRITE_C=y
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
-# end of Certificates
-
-CONFIG_MBEDTLS_ECP_C=y
-CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y
-CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y
-# CONFIG_MBEDTLS_DHM_C is not set
-CONFIG_MBEDTLS_ECDH_C=y
-CONFIG_MBEDTLS_ECDSA_C=y
-# CONFIG_MBEDTLS_ECJPAKE_C is not set
-CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
-CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
-CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y
-# CONFIG_MBEDTLS_POLY1305_C is not set
-# CONFIG_MBEDTLS_CHACHA20_C is not set
-# CONFIG_MBEDTLS_HKDF_C is not set
-# CONFIG_MBEDTLS_THREADING_C is not set
-CONFIG_MBEDTLS_ERROR_STRINGS=y
-CONFIG_MBEDTLS_FS_IO=y
-# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set
-# end of mbedTLS
-
-#
-# ESP-MQTT Configurations
-#
-CONFIG_MQTT_PROTOCOL_311=y
-# CONFIG_MQTT_PROTOCOL_5 is not set
-CONFIG_MQTT_TRANSPORT_SSL=y
-# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set
-# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set
-# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set
-# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set
-# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set
-# CONFIG_MQTT_CUSTOM_OUTBOX is not set
-# end of ESP-MQTT Configurations
-
-#
-# LibC
-#
-CONFIG_LIBC_NEWLIB=y
-# CONFIG_LIBC_PICOLIBC is not set
-CONFIG_LIBC_MISC_IN_IRAM=y
-CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y
-CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y
-# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set
-# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set
-# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set
-# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set
-CONFIG_LIBC_STDIN_LINE_ENDING_CR=y
-# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set
-CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y
-# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set
-# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set
-# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set
-# end of LibC
-
-CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y
-
-#
-# NVS
-#
-# CONFIG_NVS_ENCRYPTION is not set
-# CONFIG_NVS_ASSERT_ERROR_CHECK is not set
-# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set
-# CONFIG_NVS_ALLOCATE_CACHE_IN_SPIRAM is not set
-# end of NVS
-
-#
-# OpenThread
-#
-# CONFIG_OPENTHREAD_ENABLED is not set
-
-#
-# OpenThread Spinel
-#
-# CONFIG_OPENTHREAD_SPINEL_ONLY is not set
-# end of OpenThread Spinel
-# end of OpenThread
-
-#
-# Protocomm
-#
-CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y
-CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y
-# CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2 is not set
-CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y
-# end of Protocomm
-
-#
-# PThreads
-#
-CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_PTHREAD_STACK_MIN=768
-CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y
-# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set
-# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set
-CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
-# end of PThreads
-
-#
-# MMU Config
-#
-CONFIG_MMU_PAGE_SIZE_64KB=y
-CONFIG_MMU_PAGE_MODE="64KB"
-CONFIG_MMU_PAGE_SIZE=0x10000
-# end of MMU Config
-
-#
-# Main Flash configuration
-#
-
-#
-# SPI Flash behavior when brownout
-#
-CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y
-CONFIG_SPI_FLASH_BROWNOUT_RESET=y
-# end of SPI Flash behavior when brownout
-
-#
-# Optional and Experimental Features (READ DOCS FIRST)
-#
-
-#
-# Features here require specific hardware (READ DOCS FIRST!)
-#
-CONFIG_SPI_FLASH_UNDER_HIGH_FREQ=y
-# CONFIG_SPI_FLASH_HPM_ENA is not set
-CONFIG_SPI_FLASH_HPM_AUTO=y
-# CONFIG_SPI_FLASH_HPM_DIS is not set
-CONFIG_SPI_FLASH_HPM_ON=y
-CONFIG_SPI_FLASH_HPM_DC_AUTO=y
-# CONFIG_SPI_FLASH_HPM_DC_DISABLE is not set
-# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set
-CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50
-# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set
-# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set
-CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y
-# end of Optional and Experimental Features (READ DOCS FIRST)
-# end of Main Flash configuration
-
-#
-# SPI Flash driver
-#
-# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
-# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
-CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
-# CONFIG_SPI_FLASH_ROM_IMPL is not set
-CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
-# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
-CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
-CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20
-CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1
-CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192
-# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set
-# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set
-# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set
-
-#
-# Auto-detect flash chips
-#
-CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y
-CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y
-CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y
-CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y
-CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y
-CONFIG_SPI_FLASH_VENDOR_BOYA_SUPPORTED=y
-CONFIG_SPI_FLASH_VENDOR_TH_SUPPORTED=y
-CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y
-# end of Auto-detect flash chips
-
-CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
-# end of SPI Flash driver
-
-#
-# SPIFFS Configuration
-#
-CONFIG_SPIFFS_MAX_PARTITIONS=3
-
-#
-# SPIFFS Cache Configuration
-#
-CONFIG_SPIFFS_CACHE=y
-CONFIG_SPIFFS_CACHE_WR=y
-# CONFIG_SPIFFS_CACHE_STATS is not set
-# end of SPIFFS Cache Configuration
-
-CONFIG_SPIFFS_PAGE_CHECK=y
-CONFIG_SPIFFS_GC_MAX_RUNS=10
-# CONFIG_SPIFFS_GC_STATS is not set
-CONFIG_SPIFFS_PAGE_SIZE=256
-CONFIG_SPIFFS_OBJ_NAME_LEN=32
-# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
-CONFIG_SPIFFS_USE_MAGIC=y
-CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
-CONFIG_SPIFFS_META_LENGTH=4
-CONFIG_SPIFFS_USE_MTIME=y
-
-#
-# Debug Configuration
-#
-# CONFIG_SPIFFS_DBG is not set
-# CONFIG_SPIFFS_API_DBG is not set
-# CONFIG_SPIFFS_GC_DBG is not set
-# CONFIG_SPIFFS_CACHE_DBG is not set
-# CONFIG_SPIFFS_CHECK_DBG is not set
-# CONFIG_SPIFFS_TEST_VISUALISATION is not set
-# end of Debug Configuration
-# end of SPIFFS Configuration
-
-#
-# TCP Transport
-#
-
-#
-# Websocket
-#
-# CONFIG_WS_TRANSPORT is not set
-# end of Websocket
-# end of TCP Transport
-
-#
-# Ultra Low Power (ULP) Co-processor
-#
-CONFIG_ULP_COPROC_ENABLED=y
-# CONFIG_ULP_COPROC_TYPE_FSM is not set
-CONFIG_ULP_COPROC_TYPE_RISCV=y
-CONFIG_ULP_COPROC_RESERVE_MEM=8176
-
-#
-# ULP RISC-V Settings
-#
-# CONFIG_ULP_RISCV_INTERRUPT_ENABLE is not set
-CONFIG_ULP_RISCV_UART_BAUDRATE=9600
-CONFIG_ULP_RISCV_I2C_RW_TIMEOUT=500
-# end of ULP RISC-V Settings
-
-#
-# ULP Debugging Options
-#
-# end of ULP Debugging Options
-# end of Ultra Low Power (ULP) Co-processor
-
-#
-# Unity unit testing library
-#
-CONFIG_UNITY_ENABLE_FLOAT=y
-CONFIG_UNITY_ENABLE_DOUBLE=y
-# CONFIG_UNITY_ENABLE_64BIT is not set
-CONFIG_UNITY_ENABLE_COLOR=y
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
-# CONFIG_UNITY_ENABLE_FIXTURE is not set
-# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
-# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set
-# end of Unity unit testing library
-
-#
-# USB-OTG
-#
-CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256
-CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y
-# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set
-# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set
-
-#
-# Hub Driver Configuration
-#
-
-#
-# Root Port configuration
-#
-CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250
-CONFIG_USB_HOST_RESET_HOLD_MS=30
-CONFIG_USB_HOST_RESET_RECOVERY_MS=30
-CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10
-# end of Root Port configuration
-
-# CONFIG_USB_HOST_HUBS_SUPPORTED is not set
-# end of Hub Driver Configuration
-
-# CONFIG_USB_HOST_ENABLE_ENUM_FILTER_CALLBACK is not set
-CONFIG_USB_OTG_SUPPORTED=y
-# end of USB-OTG
-
-#
-# Virtual file system
-#
-CONFIG_VFS_SUPPORT_IO=y
-CONFIG_VFS_SUPPORT_DIR=y
-CONFIG_VFS_SUPPORT_SELECT=y
-CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-# CONFIG_VFS_SELECT_IN_RAM is not set
-CONFIG_VFS_SUPPORT_TERMIOS=y
-CONFIG_VFS_MAX_COUNT=8
-
-#
-# Host File System I/O (Semihosting)
-#
-CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-# end of Host File System I/O (Semihosting)
-
-CONFIG_VFS_INITIALIZE_DEV_NULL=y
-# end of Virtual file system
-
-#
-# Wear Levelling
-#
-# CONFIG_WL_SECTOR_SIZE_512 is not set
-CONFIG_WL_SECTOR_SIZE_4096=y
-CONFIG_WL_SECTOR_SIZE=4096
-# end of Wear Levelling
-
-#
-# Wi-Fi Provisioning Manager
-#
-CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
-CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
-CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
-# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set
-# end of Wi-Fi Provisioning Manager
-
-#
-# TinyUSB Stack
-#
-CONFIG_TINYUSB_DEBUG_LEVEL=1
-
-#
-# TinyUSB DCD
-#
-# CONFIG_TINYUSB_MODE_SLAVE is not set
-CONFIG_TINYUSB_MODE_DMA=y
-# end of TinyUSB DCD
-
-#
-# Descriptor configuration
-#
-
-#
-# You can provide your custom descriptors via tinyusb_driver_install()
-#
-# CONFIG_TINYUSB_DESC_USE_ESPRESSIF_VID is not set
-CONFIG_TINYUSB_DESC_CUSTOM_VID=0x303a
-# CONFIG_TINYUSB_DESC_USE_DEFAULT_PID is not set
-CONFIG_TINYUSB_DESC_CUSTOM_PID=0x8123
-CONFIG_TINYUSB_DESC_BCD_DEVICE=0x0100
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Intech Studio"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Grid"
-CONFIG_TINYUSB_DESC_SERIAL_STRING="123456"
-CONFIG_TINYUSB_DESC_CDC_STRING="Intech Grid CDC Device"
-# end of Descriptor configuration
-
-#
-# Massive Storage Class (MSC)
-#
-# CONFIG_TINYUSB_MSC_ENABLED is not set
-# end of Massive Storage Class (MSC)
-
-#
-# Communication Device Class (CDC)
-#
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_COUNT=1
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=512
-CONFIG_TINYUSB_CDC_TX_BUFSIZE=1024
-CONFIG_TINYUSB_CDC_EP_BUFSIZE=512
-# end of Communication Device Class (CDC)
-
-#
-# Musical Instrument Digital Interface (MIDI)
-#
-CONFIG_TINYUSB_MIDI_COUNT=1
-# end of Musical Instrument Digital Interface (MIDI)
-
-#
-# Human Interface Device Class (HID)
-#
-CONFIG_TINYUSB_HID_COUNT=1
-# end of Human Interface Device Class (HID)
-
-#
-# Device Firmware Upgrade (DFU)
-#
-# CONFIG_TINYUSB_DFU_MODE_DFU is not set
-# CONFIG_TINYUSB_DFU_MODE_DFU_RUNTIME is not set
-CONFIG_TINYUSB_DFU_MODE_NONE=y
-# end of Device Firmware Upgrade (DFU)
-
-#
-# Bluetooth Host Class (BTH)
-#
-# CONFIG_TINYUSB_BTH_ENABLED is not set
-# end of Bluetooth Host Class (BTH)
-
-#
-# Network driver (ECM/NCM/RNDIS)
-#
-# CONFIG_TINYUSB_NET_MODE_ECM_RNDIS is not set
-# CONFIG_TINYUSB_NET_MODE_NCM is not set
-CONFIG_TINYUSB_NET_MODE_NONE=y
-# end of Network driver (ECM/NCM/RNDIS)
-
-#
-# Vendor Specific Interface
-#
-CONFIG_TINYUSB_VENDOR_COUNT=0
-# end of Vendor Specific Interface
-# end of TinyUSB Stack
-# end of Component config
-
-CONFIG_IDF_EXPERIMENTAL_FEATURES=y
diff --git a/grid_esp/trace_patch.sh b/grid_esp/trace_patch.sh
deleted file mode 100755
index 71e759cec..000000000
--- a/grid_esp/trace_patch.sh
+++ /dev/null
@@ -1 +0,0 @@
-sed -i '10s|.*|#include "../../../../../../../../../project/grid_esp/components/grid_esp32_trace/trace_hooks.h"|' /opt/esp/idf/components/freertos/config/include/freertos/FreeRTOSConfig.h
diff --git a/grid_esp/uf2convert.sh b/grid_esp/uf2convert.sh
deleted file mode 100755
index 7ace6f788..000000000
--- a/grid_esp/uf2convert.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-
-mkdir ./output
-
-python3 ./tools/uf2conv.py -f ESP32S3 ./build/grid_fw.bin -b 0x0 -c -o ./output/grid_fw.uf2
diff --git a/grid_esp/upload.sh b/grid_esp/upload.sh
deleted file mode 100644
index 655e0a889..000000000
--- a/grid_esp/upload.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-# otatool.py -p /dev/ttyACM0 write_ota_partition --slot 0 --input build/grid_fw.bin
-# otatool.py -p /dev/ttyACM0 switch_ota_partition --slot 0
-esptool.py --chip esp32s3 -p $(ls /dev/ttyACM*) --before=default_reset --after=no_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x10000 build/grid_fw.bin && otatool.py -p $(ls /dev/ttyACM*) switch_ota_partition --slot 0
diff --git a/grid_esp/version.txt b/grid_esp/version.txt
deleted file mode 100644
index 7dea76edb..000000000
--- a/grid_esp/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-1.0.1
diff --git a/grid_make/.gitignore b/grid_make/.gitignore
deleted file mode 100644
index f4f9129d4..000000000
--- a/grid_make/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/run
-/etc
-/grid_common
diff --git a/grid_make/gcc/.gitignore b/grid_make/gcc/.gitignore
deleted file mode 100644
index 601c68d6e..000000000
--- a/grid_make/gcc/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-# Ignore everything
-*
-
-# But not these files...
-!.gitignore
-!Makefile
-!uf2conv.py
diff --git a/grid_make/gcc/uf2conv.py b/grid_make/gcc/uf2conv.py
deleted file mode 100644
index d7c1192d6..000000000
--- a/grid_make/gcc/uf2conv.py
+++ /dev/null
@@ -1,292 +0,0 @@
-#!/usr/bin/env python3
-import sys
-import struct
-import subprocess
-import re
-import os
-import os.path
-import argparse
-
-
-UF2_MAGIC_START0 = 0x0A324655 # "UF2\n"
-UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected
-UF2_MAGIC_END = 0x0AB16F30 # Ditto
-
-families = {
- 'SAMD21': 0x68ed2b88,
- 'SAMD51': 0x55114460,
- 'NRF52': 0x1b57745f,
- 'STM32F1': 0x5ee21072,
- 'STM32F4': 0x57755a57,
- 'ATMEGA32': 0x16573617,
-}
-
-INFO_FILE = "/INFO_UF2.TXT"
-
-appstartaddr = 0x2000
-familyid = 0x0
-
-
-def is_uf2(buf):
- w = struct.unpack(" 476:
- assert False, "Invalid UF2 data size at " + ptr
- newaddr = hd[3]
- if curraddr == None:
- appstartaddr = newaddr
- curraddr = newaddr
- padding = newaddr - curraddr
- if padding < 0:
- assert False, "Block out of order at " + ptr
- if padding > 10*1024*1024:
- assert False, "More than 10M of padding needed at " + ptr
- if padding % 4 != 0:
- assert False, "Non-word padding size at " + ptr
- while padding > 0:
- padding -= 4
- outp += b"\x00\x00\x00\x00"
- outp += block[32 : 32 + datalen]
- curraddr = newaddr + datalen
- return outp
-
-def convert_to_carray(file_content):
- outp = "const unsigned char bindata[] __attribute__((aligned(16))) = {"
- for i in range(len(file_content)):
- if i % 16 == 0:
- outp += "\n"
- outp += "0x%02x, " % ord(file_content[i])
- outp += "\n};\n"
- return outp
-
-def convert_to_uf2(file_content):
- global familyid
- datapadding = b""
- while len(datapadding) < 512 - 256 - 32 - 4:
- datapadding += b"\x00\x00\x00\x00"
- numblocks = (len(file_content) + 255) // 256
- outp = b""
- for blockno in range(numblocks):
- ptr = 256 * blockno
- chunk = file_content[ptr:ptr + 256]
- flags = 0x0
- if familyid:
- flags |= 0x2000
- hd = struct.pack(b"= 3 and words[1] == "2" and words[2] == "FAT":
- drives.append(words[0])
- else:
- rootpath = "/media"
- if sys.platform == "darwin":
- rootpath = "/Volumes"
- elif sys.platform == "linux":
- tmp = rootpath + "/" + os.environ["USER"]
- if os.path.isdir(tmp):
- rootpath = tmp
- for d in os.listdir(rootpath):
- drives.append(os.path.join(rootpath, d))
-
-
- def has_info(d):
- try:
- return os.path.isfile(d + INFO_FILE)
- except:
- return False
-
- return list(filter(has_info, drives))
-
-
-def board_id(path):
- with open(path + INFO_FILE, mode='r') as file:
- file_content = file.read()
- return re.search("Board-ID: ([^\r\n]*)", file_content).group(1)
-
-
-def list_drives():
- for d in get_drives():
- print(d, board_id(d))
-
-
-def write_file(name, buf):
- with open(name, "wb") as f:
- f.write(buf)
- print("Wrote %d bytes to %s." % (len(buf), name))
-
-
-def main():
- global appstartaddr, familyid
- def error(msg):
- print(msg)
- sys.exit(1)
- parser = argparse.ArgumentParser(description='Convert to UF2 or flash directly.')
- parser.add_argument('input', metavar='INPUT', type=str, nargs='?',
- help='input file (HEX, BIN or UF2)')
- parser.add_argument('-b' , '--base', dest='base', type=str,
- default="0x2000",
- help='set base address of application for BIN format (default: 0x2000)')
- parser.add_argument('-o' , '--output', metavar="FILE", dest='output', type=str,
- help='write output to named file; defaults to "flash.uf2" or "flash.bin" where sensible')
- parser.add_argument('-d' , '--device', dest="device_path",
- help='select a device path to flash')
- parser.add_argument('-l' , '--list', action='store_true',
- help='list connected devices')
- parser.add_argument('-c' , '--convert', action='store_true',
- help='do not flash, just convert')
- parser.add_argument('-f' , '--family', dest='family', type=str,
- default="0x0",
- help='specify familyID - number or name (default: 0x0)')
- parser.add_argument('-C' , '--carray', action='store_true',
- help='convert binary file to a C array, not UF2')
- args = parser.parse_args()
- appstartaddr = int(args.base, 0)
-
- if args.family.upper() in families:
- familyid = families[args.family.upper()]
- else:
- try:
- familyid = int(args.family, 0)
- except ValueError:
- error("Family ID needs to be a number or one of: " + ", ".join(families.keys()))
-
- if args.list:
- list_drives()
- else:
- if not args.input:
- error("Need input file")
- with open(args.input, mode='rb') as f:
- inpbuf = f.read()
- from_uf2 = is_uf2(inpbuf)
- ext = "uf2"
- if from_uf2:
- outbuf = convert_from_uf2(inpbuf)
- ext = "bin"
- elif is_hex(inpbuf):
- outbuf = convert_from_hex_to_uf2(inpbuf.decode("utf-8"))
- elif args.carray:
- outbuf = convert_to_carray(inpbuf)
- ext = "h"
- else:
- outbuf = convert_to_uf2(inpbuf)
- print("Converting to %s, output size: %d, start address: 0x%x" %
- (ext, len(outbuf), appstartaddr))
- if args.convert:
- drives = []
- if args.output == None:
- args.output = "flash." + ext
- else:
- drives = get_drives()
-
- if args.output:
- write_file(args.output, outbuf)
- else:
- if len(drives) == 0:
- error("No drive to deploy.")
- for d in drives:
- print("Flashing %s (%s)" % (d, board_id(d)))
- write_file(d + "/NEW.UF2", outbuf)
-
-
-if __name__ == "__main__":
- main()
diff --git a/grid_make/grid/vmp/build/proc b/grid_make/grid/vmp/build/proc
deleted file mode 100755
index 101f22b53..000000000
Binary files a/grid_make/grid/vmp/build/proc and /dev/null differ
diff --git a/grid_make/usb/class/midi/device/audiodf_midi.c b/grid_make/usb/class/midi/device/audiodf_midi.c
deleted file mode 100644
index c575d0fe7..000000000
--- a/grid_make/usb/class/midi/device/audiodf_midi.c
+++ /dev/null
@@ -1,372 +0,0 @@
-#include "audiodf_midi.h"
-#include
-
-#define AUDIODF_MIDI_VERSION 0x00000001u
-
-/** USB Device Audio Midi Function Specific Data */
-
-struct audiodf_midi_func_data {
- /* AUDIO descriptor */
- uint8_t *audio_desc;
-
- uint8_t func_iface[2];
- uint8_t func_ep_in;
- uint8_t func_ep_out;
- uint8_t protocol; //????
-
- uint8_t midi_report[4]; //????
-
- uint8_t midi_report_inbound[4]; //????
-
- bool enabled;
-};
-
-
-/* USB Device Audio Midi Function Instance */
-static struct usbdf_driver _audiodf_midi;
-
-/* USB Device Audio Midi Function Data Instance */
-static struct audiodf_midi_func_data _audiodf_midi_funcd;
-
-
-volatile uint8_t usb_debug2[10];
-
-
-
-
-// Define the function pointer type
-typedef bool (*midi_xfer_cb_t)(const uint8_t, const enum usb_xfer_code, const uint32_t);
-
-// Global function pointer
-static midi_xfer_cb_t midi_in_cb = NULL;
-static midi_xfer_cb_t midi_out_cb = NULL;
-static midi_xfer_cb_t midi_installed_cb = NULL;
-
-
-/**
- * \brief Enable Audio Midi Function
- * \param[in] drv Pointer to USB device function driver
- * \param[in] desc Pointer to USB interface descriptor
- * \return Operation status.
- */
-static int32_t audio_midi_enable(struct usbdf_driver *drv, struct usbd_descriptors *desc)
-{
-
- printf("MIDI ENABLE\n");
-
- struct audiodf_midi_func_data *func_data = (struct audiodf_midi_func_data *)(drv->func_data);
-
- usb_iface_desc_t ifc_desc;
- volatile usb_ep_desc_t ep_desc;
- uint8_t * ifc, *ep;
- uint8_t i;
-
- ifc = desc->sod;
-
- #define AUDIO_CLASS 0x01 // Audio Class
- #define AUDIO_AC_SUBCLASS 0x01 // Audio Control Subclass
- #define AUDIO_MS_SUBCLASS 0x03 // MidiStreaming Subclass
-
- for (i=0; i<2; i++){
-
- if (NULL == ifc) {
- return ERR_NOT_FOUND;
- }
-
- ifc_desc.bInterfaceNumber = ifc[2];
- ifc_desc.bInterfaceClass = ifc[5];
-
- if (AUDIO_AC_SUBCLASS == ifc_desc.bInterfaceClass || AUDIO_MS_SUBCLASS == ifc_desc.bInterfaceClass) {
- if (func_data->func_iface[i] == ifc_desc.bInterfaceNumber) { // Initialized
- return ERR_ALREADY_INITIALIZED;
- } else if (func_data->func_iface[i] != 0xFF) { // Occupied
- return ERR_NO_RESOURCE;
- } else {
- func_data->func_iface[i] = ifc_desc.bInterfaceNumber;
- }
- } else { // Not supported by this function driver
- return ERR_NOT_FOUND;
- }
-
- //#define USB_DT_AUDIO 0x24
- // Install AUDIO descriptor
- //_audiodf_midi_funcd.audio_desc = usb_find_desc(usb_desc_next(desc->sod), desc->eod, USB_DT_AUDIO);
-
- // Install endpoints
- if (i == 1){ // i==1 because only the second interface has endpoint descriptors
- ep = usb_find_desc(ifc, desc->eod, USB_DT_ENDPOINT);
- while (NULL != ep) {
- ep_desc.bEndpointAddress = ep[2];
- ep_desc.bmAttributes = ep[3];
- ep_desc.wMaxPacketSize = usb_get_u16(ep + 4);
-
- usb_debug2[4] = ep_desc.wMaxPacketSize;
-
- usb_debug2[0] = i;
-
- if (usb_d_ep_init(ep_desc.bEndpointAddress, ep_desc.bmAttributes, ep_desc.wMaxPacketSize)) {
- return ERR_NOT_INITIALIZED;
- }
- if (ep_desc.bEndpointAddress & USB_EP_DIR_IN) {
- func_data->func_ep_in = ep_desc.bEndpointAddress;
- usb_d_ep_enable(func_data->func_ep_in);
- } else {
- func_data->func_ep_out = ep_desc.bEndpointAddress;
- usb_d_ep_enable(func_data->func_ep_out);
- }
- desc->sod = ep;
- ep = usb_find_ep_desc(usb_desc_next(desc->sod), desc->eod);
- }
- }
-
- ifc = usb_find_desc(usb_desc_next(desc->sod), desc->eod, USB_DT_INTERFACE);
-
- }
-
-
- printf("MIDI TEST %d %d \r\n", _audiodf_midi_funcd.func_ep_in, _audiodf_midi_funcd.func_ep_out);
-
- usb_d_ep_register_callback(_audiodf_midi_funcd.func_ep_in, USB_D_EP_CB_XFER, (FUNC_PTR)midi_in_cb);
- usb_d_ep_register_callback(_audiodf_midi_funcd.func_ep_out, USB_D_EP_CB_XFER, (FUNC_PTR)midi_out_cb);
-
- if (midi_installed_cb){
- midi_installed_cb(0, 0, 0);
- }
-
-
- _audiodf_midi_funcd.enabled = true;
- return ERR_NONE;
-}
-
-/**
- * \brief Disable Audio Midi Function
- * \param[in] drv Pointer to USB device function driver
- * \param[in] desc Pointer to USB device descriptor
- * \return Operation status.
- */
-static int32_t audio_midi_disable(struct usbdf_driver *drv, struct usbd_descriptors *desc)
-{
-
- struct audiodf_midi_func_data *func_data = (struct audiodf_midi_func_data *)(drv->func_data);
-
- usb_iface_desc_t ifc_desc;
-
- if (desc) {
- ifc_desc.bInterfaceClass = desc->sod[5];
- // Check interface
- if ((AUDIO_AC_SUBCLASS != ifc_desc.bInterfaceClass) && (AUDIO_MS_SUBCLASS != ifc_desc.bInterfaceClass)) {
- return ERR_NOT_FOUND;
- }
- }
-
-
- if (func_data->func_iface[0] != 0xFF) {
- func_data->func_iface[0] = 0xFF;
- }
-
-
- if (func_data->func_iface[1] != 0xFF) {
- func_data->func_iface[1] = 0xFF;
- }
-
-
- if (func_data->func_ep_in != 0xFF) {
- usb_d_ep_deinit(func_data->func_ep_in);
- func_data->func_ep_in = 0xFF;
- }
-
- if (func_data->func_ep_out != 0xFF) {
- usb_d_ep_deinit(func_data->func_ep_out);
- func_data->func_ep_out = 0xFF;
- }
-
- _audiodf_midi_funcd.enabled = false;
- return ERR_NONE;
-
-}
-
-
-static int32_t audio_midi_ctrl(struct usbdf_driver *drv, enum usbdf_control ctrl, void *param)
-{
-
- switch (ctrl) {
- case USBDF_ENABLE:
- return audio_midi_enable(drv, (struct usbd_descriptors *)param);
-
- case USBDF_DISABLE:
- return audio_midi_disable(drv, (struct usbd_descriptors *)param);
-
- case USBDF_GET_IFACE:
- return ERR_UNSUPPORTED_OP;
-
- default:
- return ERR_INVALID_ARG;
- }
-}
-
-
-
-static int32_t audio_midi_get_desc(uint8_t ep, struct usb_req *req)
-{
- return usbdc_xfer(ep, _audiodf_midi_funcd.audio_desc, _audiodf_midi_funcd.audio_desc[0], false);
-
-// return ERR_INVALID_ARG;
-
-}
-/**
- * \brief Process the Audio class request
- * \param[in] ep Endpoint address.
- * \param[in] req Pointer to the request.
- * \return Operation status.
- */
-
-static int32_t audio_midi_req(uint8_t ep, struct usb_req *req, enum usb_ctrl_stage stage)
-{
-
- //return ERR_NOT_FOUND;
-
- if ((0x81 == req->bmRequestType) && (req->wIndex == _audiodf_midi_funcd.func_iface[0] || req->wIndex == _audiodf_midi_funcd.func_iface[1])) {
- return audio_midi_get_desc(ep, req); // Never hit breakpoint here
-
-
- } else {
-
-
- if (0x01 != ((req->bmRequestType >> 5) & 0x03)) { // class request
- return ERR_NOT_FOUND; // Never hit breakpoint here
- }
- if (req->wIndex == _audiodf_midi_funcd.func_iface[0] || req->wIndex == _audiodf_midi_funcd.func_iface[1]) {
-
- // Copied from Hid
- // Never hit breakpoint here
- switch (req->bRequest) {
- case 0x03: /* Get Protocol */
- return usbdc_xfer(ep, &_audiodf_midi_funcd.protocol, 1, 0);
- case 0x0B: /* Set Protocol */
- _audiodf_midi_funcd.protocol = req->wValue;
- return usbdc_xfer(ep, NULL, 0, 0);
- default:
- return ERR_INVALID_ARG;
- }
-
-
- } else {
- return ERR_NOT_FOUND;
- }
- }
- (void)stage;
-}
-
-/** USB Device Audio Midi Handler Struct */
-static struct usbdc_handler audio_midi_req_h = {NULL, (FUNC_PTR)audio_midi_req};
-
-/**
- * \brief Initialize the USB Audio Midi Function Driver
- */
-int32_t audiodf_midi_init(void)
-{
-
-
- if (usbdc_get_state() > USBD_S_POWER) {
- return ERR_DENIED;
- }
-
- _audiodf_midi.ctrl = audio_midi_ctrl;
- _audiodf_midi.func_data = &_audiodf_midi_funcd;
-
- usbdc_register_function(&_audiodf_midi);
- usbdc_register_handler(USBDC_HDL_REQ, &audio_midi_req_h);
- return ERR_NONE;
-}
-
-/**
- * \brief Deinitialize the USB Audio Midi Function Driver
- */
-int32_t audiodf_midi_deinit(void)
-{
- if (usbdc_get_state() > USBD_S_POWER) {
- return ERR_DENIED;
- }
-
- _audiodf_midi.ctrl = NULL;
- _audiodf_midi.func_data = NULL;
-
- usbdc_unregister_function(&_audiodf_midi);
- usbdc_unregister_handler(USBDC_HDL_REQ, &audio_midi_req_h);
- return ERR_NONE;
-}
-
-/**
- * \brief Check whether Audio Midi Function is enabled
- */
-bool audiodf_midi_is_enabled(void)
-{
- return true;
-}
-
-
-
-int32_t audiodf_midi_write(uint8_t byte0, uint8_t byte1, uint8_t byte2, uint8_t byte3)
-{
- if (!audiodf_midi_is_enabled()) {
- return ERR_DENIED;
- }
-
- // if previous xfer is completed
-
- _audiodf_midi_funcd.midi_report[0] = byte0;
- _audiodf_midi_funcd.midi_report[1] = byte1;
- _audiodf_midi_funcd.midi_report[2] = byte2;
- _audiodf_midi_funcd.midi_report[3] = byte3;
-
- return usbdc_xfer(_audiodf_midi_funcd.func_ep_in, _audiodf_midi_funcd.midi_report, 4, false);
-
-}
-
-int32_t audiodf_midi_write_status(){
-
-
- struct usb_d_ep_status epstat;
- return usb_d_ep_get_status(_audiodf_midi_funcd.func_ep_in, &epstat);
-
-}
-
-
-
-int32_t audiodf_midi_read(uint8_t *buf, uint32_t size)
-{
- if (!audiodf_midi_is_enabled()) {
- return ERR_DENIED;
- }
-
- return usbdc_xfer(_audiodf_midi_funcd.func_ep_out, buf, size, false);
-}
-
-
-int32_t audiodf_midi_register_callback(enum audiodf_midi_cb_type cb_type, FUNC_PTR func)
-{
- switch (cb_type) {
- case AUDIODF_MIDI_CB_READ:
- midi_in_cb = (midi_xfer_cb_t)func;
- break;
- case AUDIODF_MIDI_CB_WRITE:
- midi_out_cb = (midi_xfer_cb_t)func;
- break;
- case AUDIODF_MIDI_CB_INSTALLED:
- midi_installed_cb = (midi_xfer_cb_t)func;
- break;
- default:
- return ERR_INVALID_ARG;
- }
- return ERR_NONE;
-}
-
-
-
-/**
- * \brief Return version
- */
-uint32_t audiodf_midi_get_version(void)
-{
- return AUDIODF_MIDI_VERSION;
-}
diff --git a/grid_make/vmp/vmp.o b/grid_make/vmp/vmp.o
deleted file mode 100644
index 30f04077e..000000000
Binary files a/grid_make/vmp/vmp.o and /dev/null differ
diff --git a/grid_pico/.gitignore b/grid_pico/.gitignore
deleted file mode 100644
index a3fa25510..000000000
--- a/grid_pico/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/build
-CMakeCache.txt
-/CMakeFiles
-elf2uf2
-generated
-pioasm
-/main/vmp/build
diff --git a/grid_pico/Makefile b/grid_pico/Makefile
deleted file mode 100644
index 50ddd1413..000000000
--- a/grid_pico/Makefile
+++ /dev/null
@@ -1,279 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
-
-# Default target executed when no arguments are given to make.
-default_target: all
-.PHONY : default_target
-
-# Allow only one "make -f Makefile2" at a time, but pass parallelism.
-.NOTPARALLEL:
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-# Disable VCS-based implicit rules.
-% : %,v
-
-# Disable VCS-based implicit rules.
-% : RCS/%
-
-# Disable VCS-based implicit rules.
-% : RCS/%,v
-
-# Disable VCS-based implicit rules.
-% : SCCS/s.%
-
-# Disable VCS-based implicit rules.
-% : s.%
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-# Command-line flag to silence nested $(MAKE).
-$(VERBOSE)MAKESILENT = -s
-
-#Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-# A target that is always out of date.
-cmake_force:
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E rm -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /pico/project
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /pico/project
-
-#=============================================================================
-# Targets provided globally by CMake.
-
-# Special rule for the target edit_cache
-edit_cache:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
- /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
-.PHONY : edit_cache
-
-# Special rule for the target edit_cache
-edit_cache/fast: edit_cache
-.PHONY : edit_cache/fast
-
-# Special rule for the target rebuild_cache
-rebuild_cache:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
- /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : rebuild_cache
-
-# Special rule for the target rebuild_cache
-rebuild_cache/fast: rebuild_cache
-.PHONY : rebuild_cache/fast
-
-# The main all target
-all: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /pico/project/CMakeFiles /pico/project//CMakeFiles/progress.marks
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
- $(CMAKE_COMMAND) -E cmake_progress_start /pico/project/CMakeFiles 0
-.PHONY : all
-
-# The main clean target
-clean:
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
-.PHONY : clean
-
-# The main clean target
-clean/fast: clean
-.PHONY : clean/fast
-
-# Prepare targets for installation.
-preinstall: all
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
-.PHONY : preinstall
-
-# Prepare targets for installation.
-preinstall/fast:
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
-.PHONY : preinstall/fast
-
-# clear depends
-depend:
- $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-.PHONY : depend
-
-#=============================================================================
-# Target rules for targets named bs2_default
-
-# Build rule for target.
-bs2_default: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 bs2_default
-.PHONY : bs2_default
-
-# fast build rule for target.
-bs2_default/fast:
- $(MAKE) $(MAKESILENT) -f pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/build.make pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/build
-.PHONY : bs2_default/fast
-
-#=============================================================================
-# Target rules for targets named bs2_default_bin
-
-# Build rule for target.
-bs2_default_bin: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 bs2_default_bin
-.PHONY : bs2_default_bin
-
-# fast build rule for target.
-bs2_default_bin/fast:
- $(MAKE) $(MAKESILENT) -f pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default_bin.dir/build.make pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default_bin.dir/build
-.PHONY : bs2_default_bin/fast
-
-#=============================================================================
-# Target rules for targets named bs2_default_padded_checksummed_asm
-
-# Build rule for target.
-bs2_default_padded_checksummed_asm: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 bs2_default_padded_checksummed_asm
-.PHONY : bs2_default_padded_checksummed_asm
-
-# fast build rule for target.
-bs2_default_padded_checksummed_asm/fast:
- $(MAKE) $(MAKESILENT) -f pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default_padded_checksummed_asm.dir/build.make pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default_padded_checksummed_asm.dir/build
-.PHONY : bs2_default_padded_checksummed_asm/fast
-
-#=============================================================================
-# Target rules for targets named cyw43_firmware_package
-
-# Build rule for target.
-cyw43_firmware_package: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 cyw43_firmware_package
-.PHONY : cyw43_firmware_package
-
-# fast build rule for target.
-cyw43_firmware_package/fast:
- $(MAKE) $(MAKESILENT) -f pico-sdk/src/rp2_common/cyw43_driver/CMakeFiles/cyw43_firmware_package.dir/build.make pico-sdk/src/rp2_common/cyw43_driver/CMakeFiles/cyw43_firmware_package.dir/build
-.PHONY : cyw43_firmware_package/fast
-
-#=============================================================================
-# Target rules for targets named PioasmBuild
-
-# Build rule for target.
-PioasmBuild: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 PioasmBuild
-.PHONY : PioasmBuild
-
-# fast build rule for target.
-PioasmBuild/fast:
- $(MAKE) $(MAKESILENT) -f pico-sdk/src/rp2_common/cyw43_driver/CMakeFiles/PioasmBuild.dir/build.make pico-sdk/src/rp2_common/cyw43_driver/CMakeFiles/PioasmBuild.dir/build
-.PHONY : PioasmBuild/fast
-
-#=============================================================================
-# Target rules for targets named cyw43_driver_picow_cyw43_bus_pio_spi_pio_h
-
-# Build rule for target.
-cyw43_driver_picow_cyw43_bus_pio_spi_pio_h: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 cyw43_driver_picow_cyw43_bus_pio_spi_pio_h
-.PHONY : cyw43_driver_picow_cyw43_bus_pio_spi_pio_h
-
-# fast build rule for target.
-cyw43_driver_picow_cyw43_bus_pio_spi_pio_h/fast:
- $(MAKE) $(MAKESILENT) -f pico-sdk/src/rp2_common/cyw43_driver/CMakeFiles/cyw43_driver_picow_cyw43_bus_pio_spi_pio_h.dir/build.make pico-sdk/src/rp2_common/cyw43_driver/CMakeFiles/cyw43_driver_picow_cyw43_bus_pio_spi_pio_h.dir/build
-.PHONY : cyw43_driver_picow_cyw43_bus_pio_spi_pio_h/fast
-
-#=============================================================================
-# Target rules for targets named main
-
-# Build rule for target.
-main: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main
-.PHONY : main
-
-# fast build rule for target.
-main/fast:
- $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/build
-.PHONY : main/fast
-
-#=============================================================================
-# Target rules for targets named main_uart_tx_pio_h
-
-# Build rule for target.
-main_uart_tx_pio_h: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main_uart_tx_pio_h
-.PHONY : main_uart_tx_pio_h
-
-# fast build rule for target.
-main_uart_tx_pio_h/fast:
- $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main_uart_tx_pio_h.dir/build.make main/CMakeFiles/main_uart_tx_pio_h.dir/build
-.PHONY : main_uart_tx_pio_h/fast
-
-#=============================================================================
-# Target rules for targets named main_uart_rx_pio_h
-
-# Build rule for target.
-main_uart_rx_pio_h: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main_uart_rx_pio_h
-.PHONY : main_uart_rx_pio_h
-
-# fast build rule for target.
-main_uart_rx_pio_h/fast:
- $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main_uart_rx_pio_h.dir/build.make main/CMakeFiles/main_uart_rx_pio_h.dir/build
-.PHONY : main_uart_rx_pio_h/fast
-
-#=============================================================================
-# Target rules for targets named ELF2UF2Build
-
-# Build rule for target.
-ELF2UF2Build: cmake_check_build_system
- $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ELF2UF2Build
-.PHONY : ELF2UF2Build
-
-# fast build rule for target.
-ELF2UF2Build/fast:
- $(MAKE) $(MAKESILENT) -f main/CMakeFiles/ELF2UF2Build.dir/build.make main/CMakeFiles/ELF2UF2Build.dir/build
-.PHONY : ELF2UF2Build/fast
-
-# Help Target
-help:
- @echo "The following are some of the valid targets for this Makefile:"
- @echo "... all (the default if no target is provided)"
- @echo "... clean"
- @echo "... depend"
- @echo "... edit_cache"
- @echo "... rebuild_cache"
- @echo "... ELF2UF2Build"
- @echo "... PioasmBuild"
- @echo "... bs2_default_bin"
- @echo "... bs2_default_padded_checksummed_asm"
- @echo "... cyw43_driver_picow_cyw43_bus_pio_spi_pio_h"
- @echo "... cyw43_firmware_package"
- @echo "... main_uart_rx_pio_h"
- @echo "... main_uart_tx_pio_h"
- @echo "... bs2_default"
- @echo "... main"
-.PHONY : help
-
-
-
-#=============================================================================
-# Special targets to cleanup operation of make.
-
-# Special rule to run CMake to check the build system integrity.
-# No rule that depends on this can have commands that come from listfiles
-# because they might be regenerated.
-cmake_check_build_system:
- $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-.PHONY : cmake_check_build_system
diff --git a/grid_pico/cmake_install.cmake b/grid_pico/cmake_install.cmake
deleted file mode 100644
index aec189ffd..000000000
--- a/grid_pico/cmake_install.cmake
+++ /dev/null
@@ -1,56 +0,0 @@
-# Install script for directory: /pico/project
-
-# Set the install prefix
-if(NOT DEFINED CMAKE_INSTALL_PREFIX)
- set(CMAKE_INSTALL_PREFIX "/usr/local")
-endif()
-string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-# Set the install configuration name.
-if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
- if(BUILD_TYPE)
- string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
- CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
- else()
- set(CMAKE_INSTALL_CONFIG_NAME "Release")
- endif()
- message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
-endif()
-
-# Set the component getting installed.
-if(NOT CMAKE_INSTALL_COMPONENT)
- if(COMPONENT)
- message(STATUS "Install component: \"${COMPONENT}\"")
- set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
- else()
- set(CMAKE_INSTALL_COMPONENT)
- endif()
-endif()
-
-# Is this installation the result of a crosscompile?
-if(NOT DEFINED CMAKE_CROSSCOMPILING)
- set(CMAKE_CROSSCOMPILING "TRUE")
-endif()
-
-# Set default install directory permissions.
-if(NOT DEFINED CMAKE_OBJDUMP)
- set(CMAKE_OBJDUMP "/usr/bin/arm-none-eabi-objdump")
-endif()
-
-if(NOT CMAKE_INSTALL_LOCAL_ONLY)
- # Include the install script for each subdirectory.
- include("/pico/project/pico-sdk/cmake_install.cmake")
- include("/pico/project/main/cmake_install.cmake")
-
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
- set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
-else()
- set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
-endif()
-
-string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
- "${CMAKE_INSTALL_MANIFEST_FILES}")
-file(WRITE "/pico/project/${CMAKE_INSTALL_MANIFEST}"
- "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/grid_pico/main/.gitignore b/grid_pico/main/.gitignore
deleted file mode 100644
index e872586e3..000000000
--- a/grid_pico/main/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.Makefile
-CMakeFiles
-elf2uf2
diff --git a/grid_pico/main/CMakeLists.txt b/grid_pico/main/CMakeLists.txt
deleted file mode 100644
index 5000013ea..000000000
--- a/grid_pico/main/CMakeLists.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-add_executable(main
- main.c
- grid_pico_spi.c
- grid_pico_platform.c
- ../../grid_common/grid_msg.c
- ../../grid_common/grid_port.c
- ../../grid_common/grid_transport.c
- ../../grid_common/grid_rollid.c
- ../../grid_common/grid_utask.c
- pico_pool.c
- pico_swsr.c
- vmp/vmp_def.c
- ../../vmp/vmp.c
-)
-
-target_include_directories(main PRIVATE ../../vmp)
-
-pico_generate_pio_header(main ${CMAKE_CURRENT_LIST_DIR}/uart_tx.pio)
-
-pico_generate_pio_header(main ${CMAKE_CURRENT_LIST_DIR}/uart_rx.pio)
-
-target_sources(main PRIVATE)
-
- # Import pico_stdlib which imports commonly used features
- target_link_libraries(main PRIVATE pico_stdlib pico_multicore hardware_pio hardware_pwm hardware_dma hardware_spi hardware_watchdog)
-
-
- # Create map/bin/hex file etc.
- pico_add_extra_outputs(main)
-
-
- pico_set_binary_type(main no_flash)
-
-
- # Add path via pico_set_program_url CMAKE
- example_auto_set_url(main)
diff --git a/grid_pico/main/Makefile b/grid_pico/main/Makefile
deleted file mode 100644
index a9cbb4f67..000000000
--- a/grid_pico/main/Makefile
+++ /dev/null
@@ -1,1351 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
-
-# Default target executed when no arguments are given to make.
-default_target: all
-.PHONY : default_target
-
-# Allow only one "make -f Makefile2" at a time, but pass parallelism.
-.NOTPARALLEL:
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-# Disable VCS-based implicit rules.
-% : %,v
-
-# Disable VCS-based implicit rules.
-% : RCS/%
-
-# Disable VCS-based implicit rules.
-% : RCS/%,v
-
-# Disable VCS-based implicit rules.
-% : SCCS/s.%
-
-# Disable VCS-based implicit rules.
-% : s.%
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-# Command-line flag to silence nested $(MAKE).
-$(VERBOSE)MAKESILENT = -s
-
-#Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-# A target that is always out of date.
-cmake_force:
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E rm -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /pico/project
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /pico/project
-
-#=============================================================================
-# Targets provided globally by CMake.
-
-# Special rule for the target edit_cache
-edit_cache:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
- /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
-.PHONY : edit_cache
-
-# Special rule for the target edit_cache
-edit_cache/fast: edit_cache
-.PHONY : edit_cache/fast
-
-# Special rule for the target rebuild_cache
-rebuild_cache:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
- /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : rebuild_cache
-
-# Special rule for the target rebuild_cache
-rebuild_cache/fast: rebuild_cache
-.PHONY : rebuild_cache/fast
-
-# The main all target
-all: cmake_check_build_system
- cd /pico/project && $(CMAKE_COMMAND) -E cmake_progress_start /pico/project/CMakeFiles /pico/project/main//CMakeFiles/progress.marks
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/all
- $(CMAKE_COMMAND) -E cmake_progress_start /pico/project/CMakeFiles 0
-.PHONY : all
-
-# The main clean target
-clean:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/clean
-.PHONY : clean
-
-# The main clean target
-clean/fast: clean
-.PHONY : clean/fast
-
-# Prepare targets for installation.
-preinstall: all
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/preinstall
-.PHONY : preinstall
-
-# Prepare targets for installation.
-preinstall/fast:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/preinstall
-.PHONY : preinstall/fast
-
-# clear depends
-depend:
- cd /pico/project && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-.PHONY : depend
-
-# Convenience name for target.
-main/CMakeFiles/main.dir/rule:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/CMakeFiles/main.dir/rule
-.PHONY : main/CMakeFiles/main.dir/rule
-
-# Convenience name for target.
-main: main/CMakeFiles/main.dir/rule
-.PHONY : main
-
-# fast build rule for target.
-main/fast:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/build
-.PHONY : main/fast
-
-# Convenience name for target.
-main/CMakeFiles/main_uart_tx_pio_h.dir/rule:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/CMakeFiles/main_uart_tx_pio_h.dir/rule
-.PHONY : main/CMakeFiles/main_uart_tx_pio_h.dir/rule
-
-# Convenience name for target.
-main_uart_tx_pio_h: main/CMakeFiles/main_uart_tx_pio_h.dir/rule
-.PHONY : main_uart_tx_pio_h
-
-# fast build rule for target.
-main_uart_tx_pio_h/fast:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main_uart_tx_pio_h.dir/build.make main/CMakeFiles/main_uart_tx_pio_h.dir/build
-.PHONY : main_uart_tx_pio_h/fast
-
-# Convenience name for target.
-main/CMakeFiles/main_uart_rx_pio_h.dir/rule:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/CMakeFiles/main_uart_rx_pio_h.dir/rule
-.PHONY : main/CMakeFiles/main_uart_rx_pio_h.dir/rule
-
-# Convenience name for target.
-main_uart_rx_pio_h: main/CMakeFiles/main_uart_rx_pio_h.dir/rule
-.PHONY : main_uart_rx_pio_h
-
-# fast build rule for target.
-main_uart_rx_pio_h/fast:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main_uart_rx_pio_h.dir/build.make main/CMakeFiles/main_uart_rx_pio_h.dir/build
-.PHONY : main_uart_rx_pio_h/fast
-
-# Convenience name for target.
-main/CMakeFiles/ELF2UF2Build.dir/rule:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 main/CMakeFiles/ELF2UF2Build.dir/rule
-.PHONY : main/CMakeFiles/ELF2UF2Build.dir/rule
-
-# Convenience name for target.
-ELF2UF2Build: main/CMakeFiles/ELF2UF2Build.dir/rule
-.PHONY : ELF2UF2Build
-
-# fast build rule for target.
-ELF2UF2Build/fast:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/ELF2UF2Build.dir/build.make main/CMakeFiles/ELF2UF2Build.dir/build
-.PHONY : ELF2UF2Build/fast
-
-main.obj: main.c.obj
-.PHONY : main.obj
-
-# target to build an object file
-main.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/main.c.obj
-.PHONY : main.c.obj
-
-main.i: main.c.i
-.PHONY : main.i
-
-# target to preprocess a source file
-main.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/main.c.i
-.PHONY : main.c.i
-
-main.s: main.c.s
-.PHONY : main.s
-
-# target to generate assembly for a file
-main.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/main.c.s
-.PHONY : main.c.s
-
-pico/pico-sdk/src/common/pico_sync/critical_section.obj: pico/pico-sdk/src/common/pico_sync/critical_section.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/critical_section.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_sync/critical_section.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/critical_section.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/critical_section.c.obj
-
-pico/pico-sdk/src/common/pico_sync/critical_section.i: pico/pico-sdk/src/common/pico_sync/critical_section.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/critical_section.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_sync/critical_section.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/critical_section.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/critical_section.c.i
-
-pico/pico-sdk/src/common/pico_sync/critical_section.s: pico/pico-sdk/src/common/pico_sync/critical_section.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/critical_section.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_sync/critical_section.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/critical_section.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/critical_section.c.s
-
-pico/pico-sdk/src/common/pico_sync/lock_core.obj: pico/pico-sdk/src/common/pico_sync/lock_core.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/lock_core.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_sync/lock_core.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/lock_core.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/lock_core.c.obj
-
-pico/pico-sdk/src/common/pico_sync/lock_core.i: pico/pico-sdk/src/common/pico_sync/lock_core.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/lock_core.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_sync/lock_core.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/lock_core.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/lock_core.c.i
-
-pico/pico-sdk/src/common/pico_sync/lock_core.s: pico/pico-sdk/src/common/pico_sync/lock_core.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/lock_core.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_sync/lock_core.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/lock_core.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/lock_core.c.s
-
-pico/pico-sdk/src/common/pico_sync/mutex.obj: pico/pico-sdk/src/common/pico_sync/mutex.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/mutex.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_sync/mutex.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/mutex.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/mutex.c.obj
-
-pico/pico-sdk/src/common/pico_sync/mutex.i: pico/pico-sdk/src/common/pico_sync/mutex.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/mutex.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_sync/mutex.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/mutex.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/mutex.c.i
-
-pico/pico-sdk/src/common/pico_sync/mutex.s: pico/pico-sdk/src/common/pico_sync/mutex.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/mutex.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_sync/mutex.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/mutex.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/mutex.c.s
-
-pico/pico-sdk/src/common/pico_sync/sem.obj: pico/pico-sdk/src/common/pico_sync/sem.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/sem.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_sync/sem.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/sem.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_sync/sem.c.obj
-
-pico/pico-sdk/src/common/pico_sync/sem.i: pico/pico-sdk/src/common/pico_sync/sem.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/sem.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_sync/sem.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/sem.c.i
-.PHONY : pico/pico-sdk/src/common/pico_sync/sem.c.i
-
-pico/pico-sdk/src/common/pico_sync/sem.s: pico/pico-sdk/src/common/pico_sync/sem.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/sem.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_sync/sem.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_sync/sem.c.s
-.PHONY : pico/pico-sdk/src/common/pico_sync/sem.c.s
-
-pico/pico-sdk/src/common/pico_time/time.obj: pico/pico-sdk/src/common/pico_time/time.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_time/time.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_time/time.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_time/time.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_time/time.c.obj
-
-pico/pico-sdk/src/common/pico_time/time.i: pico/pico-sdk/src/common/pico_time/time.c.i
-.PHONY : pico/pico-sdk/src/common/pico_time/time.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_time/time.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_time/time.c.i
-.PHONY : pico/pico-sdk/src/common/pico_time/time.c.i
-
-pico/pico-sdk/src/common/pico_time/time.s: pico/pico-sdk/src/common/pico_time/time.c.s
-.PHONY : pico/pico-sdk/src/common/pico_time/time.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_time/time.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_time/time.c.s
-.PHONY : pico/pico-sdk/src/common/pico_time/time.c.s
-
-pico/pico-sdk/src/common/pico_time/timeout_helper.obj: pico/pico-sdk/src/common/pico_time/timeout_helper.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_time/timeout_helper.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_time/timeout_helper.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_time/timeout_helper.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_time/timeout_helper.c.obj
-
-pico/pico-sdk/src/common/pico_time/timeout_helper.i: pico/pico-sdk/src/common/pico_time/timeout_helper.c.i
-.PHONY : pico/pico-sdk/src/common/pico_time/timeout_helper.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_time/timeout_helper.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_time/timeout_helper.c.i
-.PHONY : pico/pico-sdk/src/common/pico_time/timeout_helper.c.i
-
-pico/pico-sdk/src/common/pico_time/timeout_helper.s: pico/pico-sdk/src/common/pico_time/timeout_helper.c.s
-.PHONY : pico/pico-sdk/src/common/pico_time/timeout_helper.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_time/timeout_helper.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_time/timeout_helper.c.s
-.PHONY : pico/pico-sdk/src/common/pico_time/timeout_helper.c.s
-
-pico/pico-sdk/src/common/pico_util/datetime.obj: pico/pico-sdk/src/common/pico_util/datetime.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_util/datetime.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_util/datetime.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/datetime.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_util/datetime.c.obj
-
-pico/pico-sdk/src/common/pico_util/datetime.i: pico/pico-sdk/src/common/pico_util/datetime.c.i
-.PHONY : pico/pico-sdk/src/common/pico_util/datetime.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_util/datetime.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/datetime.c.i
-.PHONY : pico/pico-sdk/src/common/pico_util/datetime.c.i
-
-pico/pico-sdk/src/common/pico_util/datetime.s: pico/pico-sdk/src/common/pico_util/datetime.c.s
-.PHONY : pico/pico-sdk/src/common/pico_util/datetime.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_util/datetime.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/datetime.c.s
-.PHONY : pico/pico-sdk/src/common/pico_util/datetime.c.s
-
-pico/pico-sdk/src/common/pico_util/pheap.obj: pico/pico-sdk/src/common/pico_util/pheap.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_util/pheap.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_util/pheap.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/pheap.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_util/pheap.c.obj
-
-pico/pico-sdk/src/common/pico_util/pheap.i: pico/pico-sdk/src/common/pico_util/pheap.c.i
-.PHONY : pico/pico-sdk/src/common/pico_util/pheap.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_util/pheap.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/pheap.c.i
-.PHONY : pico/pico-sdk/src/common/pico_util/pheap.c.i
-
-pico/pico-sdk/src/common/pico_util/pheap.s: pico/pico-sdk/src/common/pico_util/pheap.c.s
-.PHONY : pico/pico-sdk/src/common/pico_util/pheap.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_util/pheap.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/pheap.c.s
-.PHONY : pico/pico-sdk/src/common/pico_util/pheap.c.s
-
-pico/pico-sdk/src/common/pico_util/queue.obj: pico/pico-sdk/src/common/pico_util/queue.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_util/queue.obj
-
-# target to build an object file
-pico/pico-sdk/src/common/pico_util/queue.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/queue.c.obj
-.PHONY : pico/pico-sdk/src/common/pico_util/queue.c.obj
-
-pico/pico-sdk/src/common/pico_util/queue.i: pico/pico-sdk/src/common/pico_util/queue.c.i
-.PHONY : pico/pico-sdk/src/common/pico_util/queue.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/common/pico_util/queue.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/queue.c.i
-.PHONY : pico/pico-sdk/src/common/pico_util/queue.c.i
-
-pico/pico-sdk/src/common/pico_util/queue.s: pico/pico-sdk/src/common/pico_util/queue.c.s
-.PHONY : pico/pico-sdk/src/common/pico_util/queue.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/common/pico_util/queue.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/common/pico_util/queue.c.s
-.PHONY : pico/pico-sdk/src/common/pico_util/queue.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_claim/claim.obj: pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_claim/claim.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_claim/claim.i: pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_claim/claim.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_claim/claim.s: pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_claim/claim.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.obj: pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.i: pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.s: pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_divider/divider.obj: pico/pico-sdk/src/rp2_common/hardware_divider/divider.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_divider/divider.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_divider/divider.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_divider/divider.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_divider/divider.S.obj
-
-pico/pico-sdk/src/rp2_common/hardware_dma/dma.obj: pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_dma/dma.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_dma/dma.i: pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_dma/dma.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_dma/dma.s: pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_dma/dma.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_dma/dma.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.obj: pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.i: pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.s: pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_irq/irq.obj: pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_irq/irq.i: pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_irq/irq.s: pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.obj: pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj
-
-pico/pico-sdk/src/rp2_common/hardware_pio/pio.obj: pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pio/pio.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_pio/pio.i: pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pio/pio.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_pio/pio.s: pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pio/pio.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_pll/pll.obj: pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pll/pll.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_pll/pll.i: pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pll/pll.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_pll/pll.s: pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pll/pll.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_spi/spi.obj: pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_spi/spi.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_spi/spi.i: pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_spi/spi.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_spi/spi.s: pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_spi/spi.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_sync/sync.obj: pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_sync/sync.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_sync/sync.i: pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_sync/sync.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_sync/sync.s: pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_sync/sync.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_timer/timer.obj: pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_timer/timer.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_timer/timer.i: pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_timer/timer.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_timer/timer.s: pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_timer/timer.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_uart/uart.obj: pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_uart/uart.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_uart/uart.i: pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_uart/uart.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_uart/uart.s: pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_uart/uart.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.obj: pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.i: pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.s: pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.obj: pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.i: pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.s: pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.s
-
-pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.obj: pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.obj
-
-pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.i: pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.i
-
-pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.s: pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.s
-
-pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.obj: pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.obj: pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.i: pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.i
-
-pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.s: pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.s
-
-pico/pico-sdk/src/rp2_common/pico_divider/divider.obj: pico/pico-sdk/src/rp2_common/pico_divider/divider.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_divider/divider.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_divider/divider.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_divider/divider.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_divider/divider.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.obj: pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.obj: pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.i: pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.i
-
-pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.s: pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.s
-
-pico/pico-sdk/src/rp2_common/pico_double/double_math.obj: pico/pico-sdk/src/rp2_common/pico_double/double_math.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_math.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_double/double_math.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_math.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_math.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_double/double_math.i: pico/pico-sdk/src/rp2_common/pico_double/double_math.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_math.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_double/double_math.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_math.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_math.c.i
-
-pico/pico-sdk/src/rp2_common/pico_double/double_math.s: pico/pico-sdk/src/rp2_common/pico_double/double_math.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_math.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_double/double_math.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_math.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_math.c.s
-
-pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.obj: pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.obj: pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.obj: pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.i: pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.i
-
-pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.s: pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.s
-
-pico/pico-sdk/src/rp2_common/pico_float/float_math.obj: pico/pico-sdk/src/rp2_common/pico_float/float_math.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_math.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_float/float_math.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_math.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_math.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_float/float_math.i: pico/pico-sdk/src/rp2_common/pico_float/float_math.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_math.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_float/float_math.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_math.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_math.c.i
-
-pico/pico-sdk/src/rp2_common/pico_float/float_math.s: pico/pico-sdk/src/rp2_common/pico_float/float_math.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_math.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_float/float_math.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_math.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_math.c.s
-
-pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.obj: pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.obj: pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.obj: pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.i: pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.i
-
-pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.s: pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.s
-
-pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.obj: pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_multicore/multicore.obj: pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_multicore/multicore.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_multicore/multicore.i: pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_multicore/multicore.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.i
-
-pico/pico-sdk/src/rp2_common/pico_multicore/multicore.s: pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_multicore/multicore.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.s
-
-pico/pico-sdk/src/rp2_common/pico_platform/platform.obj: pico/pico-sdk/src/rp2_common/pico_platform/platform.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_platform/platform.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_platform/platform.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_platform/platform.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_platform/platform.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_platform/platform.i: pico/pico-sdk/src/rp2_common/pico_platform/platform.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_platform/platform.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_platform/platform.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_platform/platform.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_platform/platform.c.i
-
-pico/pico-sdk/src/rp2_common/pico_platform/platform.s: pico/pico-sdk/src/rp2_common/pico_platform/platform.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_platform/platform.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_platform/platform.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_platform/platform.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_platform/platform.c.s
-
-pico/pico-sdk/src/rp2_common/pico_printf/printf.obj: pico/pico-sdk/src/rp2_common/pico_printf/printf.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_printf/printf.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_printf/printf.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_printf/printf.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_printf/printf.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_printf/printf.i: pico/pico-sdk/src/rp2_common/pico_printf/printf.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_printf/printf.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_printf/printf.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_printf/printf.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_printf/printf.c.i
-
-pico/pico-sdk/src/rp2_common/pico_printf/printf.s: pico/pico-sdk/src/rp2_common/pico_printf/printf.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_printf/printf.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_printf/printf.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_printf/printf.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_printf/printf.c.s
-
-pico/pico-sdk/src/rp2_common/pico_runtime/runtime.obj: pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_runtime/runtime.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_runtime/runtime.i: pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_runtime/runtime.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.i
-
-pico/pico-sdk/src/rp2_common/pico_runtime/runtime.s: pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_runtime/runtime.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.s
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.obj: pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.i: pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.i
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.s: pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.s
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.obj: pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.obj: pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.i: pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.i
-
-pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.s: pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.s
-
-pico/pico-sdk/src/rp2_common/pico_stdio/stdio.obj: pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio/stdio.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_stdio/stdio.i: pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio/stdio.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.i
-
-pico/pico-sdk/src/rp2_common/pico_stdio/stdio.s: pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio/stdio.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.s
-
-pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.obj: pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.i: pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.i
-
-pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.s: pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.s
-
-pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.obj: pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.obj
-
-# target to build an object file
-pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj
-
-pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.i: pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.i
-
-# target to preprocess a source file
-pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.i:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.i
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.i
-
-pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.s: pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.s
-
-# target to generate assembly for a file
-pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.s:
- cd /pico/project && $(MAKE) $(MAKESILENT) -f main/CMakeFiles/main.dir/build.make main/CMakeFiles/main.dir/pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.s
-.PHONY : pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.s
-
-# Help Target
-help:
- @echo "The following are some of the valid targets for this Makefile:"
- @echo "... all (the default if no target is provided)"
- @echo "... clean"
- @echo "... depend"
- @echo "... edit_cache"
- @echo "... rebuild_cache"
- @echo "... ELF2UF2Build"
- @echo "... main_uart_rx_pio_h"
- @echo "... main_uart_tx_pio_h"
- @echo "... main"
- @echo "... main.obj"
- @echo "... main.i"
- @echo "... main.s"
- @echo "... pico/pico-sdk/src/common/pico_sync/critical_section.obj"
- @echo "... pico/pico-sdk/src/common/pico_sync/critical_section.i"
- @echo "... pico/pico-sdk/src/common/pico_sync/critical_section.s"
- @echo "... pico/pico-sdk/src/common/pico_sync/lock_core.obj"
- @echo "... pico/pico-sdk/src/common/pico_sync/lock_core.i"
- @echo "... pico/pico-sdk/src/common/pico_sync/lock_core.s"
- @echo "... pico/pico-sdk/src/common/pico_sync/mutex.obj"
- @echo "... pico/pico-sdk/src/common/pico_sync/mutex.i"
- @echo "... pico/pico-sdk/src/common/pico_sync/mutex.s"
- @echo "... pico/pico-sdk/src/common/pico_sync/sem.obj"
- @echo "... pico/pico-sdk/src/common/pico_sync/sem.i"
- @echo "... pico/pico-sdk/src/common/pico_sync/sem.s"
- @echo "... pico/pico-sdk/src/common/pico_time/time.obj"
- @echo "... pico/pico-sdk/src/common/pico_time/time.i"
- @echo "... pico/pico-sdk/src/common/pico_time/time.s"
- @echo "... pico/pico-sdk/src/common/pico_time/timeout_helper.obj"
- @echo "... pico/pico-sdk/src/common/pico_time/timeout_helper.i"
- @echo "... pico/pico-sdk/src/common/pico_time/timeout_helper.s"
- @echo "... pico/pico-sdk/src/common/pico_util/datetime.obj"
- @echo "... pico/pico-sdk/src/common/pico_util/datetime.i"
- @echo "... pico/pico-sdk/src/common/pico_util/datetime.s"
- @echo "... pico/pico-sdk/src/common/pico_util/pheap.obj"
- @echo "... pico/pico-sdk/src/common/pico_util/pheap.i"
- @echo "... pico/pico-sdk/src/common/pico_util/pheap.s"
- @echo "... pico/pico-sdk/src/common/pico_util/queue.obj"
- @echo "... pico/pico-sdk/src/common/pico_util/queue.i"
- @echo "... pico/pico-sdk/src/common/pico_util/queue.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_claim/claim.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_claim/claim.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_claim/claim.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_divider/divider.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_dma/dma.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_dma/dma.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_dma/dma.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_irq/irq.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_irq/irq.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_irq/irq.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_pio/pio.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_pio/pio.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_pio/pio.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_pll/pll.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_pll/pll.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_pll/pll.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_spi/spi.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_spi/spi.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_spi/spi.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_sync/sync.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_sync/sync.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_sync/sync.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_timer/timer.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_timer/timer.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_timer/timer.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_uart/uart.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_uart/uart.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_uart/uart.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.s"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.obj"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.i"
- @echo "... pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_divider/divider.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_math.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_math.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_math.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_math.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_math.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_math.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_multicore/multicore.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_multicore/multicore.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_multicore/multicore.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_platform/platform.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_platform/platform.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_platform/platform.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_printf/printf.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_printf/printf.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_printf/printf.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_runtime/runtime.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_runtime/runtime.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_runtime/runtime.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdio/stdio.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdio/stdio.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdio/stdio.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.s"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.obj"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.i"
- @echo "... pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.s"
-.PHONY : help
-
-
-
-#=============================================================================
-# Special targets to cleanup operation of make.
-
-# Special rule to run CMake to check the build system integrity.
-# No rule that depends on this can have commands that come from listfiles
-# because they might be regenerated.
-cmake_check_build_system:
- cd /pico/project && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-.PHONY : cmake_check_build_system
diff --git a/grid_pico/main/cmake_install.cmake b/grid_pico/main/cmake_install.cmake
deleted file mode 100644
index 120867dda..000000000
--- a/grid_pico/main/cmake_install.cmake
+++ /dev/null
@@ -1,38 +0,0 @@
-# Install script for directory: /pico/project/main
-
-# Set the install prefix
-if(NOT DEFINED CMAKE_INSTALL_PREFIX)
- set(CMAKE_INSTALL_PREFIX "/usr/local")
-endif()
-string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-# Set the install configuration name.
-if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
- if(BUILD_TYPE)
- string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
- CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
- else()
- set(CMAKE_INSTALL_CONFIG_NAME "Release")
- endif()
- message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
-endif()
-
-# Set the component getting installed.
-if(NOT CMAKE_INSTALL_COMPONENT)
- if(COMPONENT)
- message(STATUS "Install component: \"${COMPONENT}\"")
- set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
- else()
- set(CMAKE_INSTALL_COMPONENT)
- endif()
-endif()
-
-# Is this installation the result of a crosscompile?
-if(NOT DEFINED CMAKE_CROSSCOMPILING)
- set(CMAKE_CROSSCOMPILING "TRUE")
-endif()
-
-# Set default install directory permissions.
-if(NOT DEFINED CMAKE_OBJDUMP)
- set(CMAKE_OBJDUMP "/usr/bin/arm-none-eabi-objdump")
-endif()
diff --git a/grid_pico/pico-sdk b/grid_pico/pico-sdk
deleted file mode 160000
index 2e6142b15..000000000
--- a/grid_pico/pico-sdk
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2e6142b15b8a75c1227dd3edbe839193b2bf9041
diff --git a/help.sh b/help.sh
deleted file mode 100755
index 6d03a1707..000000000
--- a/help.sh
+++ /dev/null
@@ -1 +0,0 @@
-clear && ./gui_build.sh && ./pico_build_firmware.sh && ./esp_build_firmware.sh && ./esp_burn_firmware.sh && ./esp_monitor.sh
diff --git a/host_fuzz.sh b/host_fuzz.sh
deleted file mode 100755
index bd70c587f..000000000
--- a/host_fuzz.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-clang -fsanitize=fuzzer,address -o fuzzer_test grid_common/test_harness.c
-
-timeout -k 60s 60s ./fuzzer_test -timeout=10 -max_len=128
-fuzzer_exit_code=$?
-if [ $fuzzer_exit_code -eq 124 ]; then
- echo "Fuzzer timed out."
- exit 0
-else
- echo "Fuzzer exit code: $fuzzer_exit_code"
- cp $(ls crash-*) input.bin
- ls
- echo "cat:"
- cat input.bin
- echo "xxd:"
- cat $(ls crash-*) | xxd
- exit $fuzzer_exit_code
-fi
diff --git a/host_test.sh b/host_test.sh
deleted file mode 100755
index 5fc2b9af0..000000000
--- a/host_test.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-cmake -S ./grid_common/host_test -B ./grid_common/host_test/build
-make -C ./grid_common/host_test/build
-./grid_common/host_test/build/UnitTest
diff --git a/lua_build.sh b/lua_build.sh
index 1192ea13a..364406ea2 100755
--- a/lua_build.sh
+++ b/lua_build.sh
@@ -1,7 +1,8 @@
#!/bin/bash
# Get the directory from the argument
-directory="grid_common/lua_src/"
+directory="common/src/lua"
+output_dir="common/build/lua"
# Check if the provided argument is a directory
if [ ! -d "$directory" ]; then
@@ -9,8 +10,12 @@ if [ ! -d "$directory" ]; then
exit 1
fi
+# Create build directory
+mkdir -p $output_dir
+
# Loop through all .lua files in the specified directory
for lua_file in "$directory"/*.lua; do
+
# Check if there are no .lua files
if [ ! -e "$lua_file" ]; then
echo "No .lua files found in the directory."
@@ -21,7 +26,7 @@ for lua_file in "$directory"/*.lua; do
base_name=$(basename "$lua_file" .lua)
# Create the corresponding .h file
- header_file="$directory/$base_name.h"
+ header_file="$output_dir/$base_name.h"
# Start writing to the header file
{
@@ -29,8 +34,10 @@ for lua_file in "$directory"/*.lua; do
echo "#define GRID_LUA_SRC_${base_name^^}_H"
echo ""
} > "$header_file"
- # Use xxd to convert the .lua file to a C string literal and add a terminating zero byte
- (xxd -i "$lua_file") >> "$header_file"
+
+ # Use xxd to convert the .lua file to a C string literal and add a terminating zero byte
+ (xxd -i "$lua_file") >> "$header_file"
+
{
# Close the header guard
echo ""
diff --git a/patch_esp_trace_include.sh b/patch_esp_trace_include.sh
index 869aabcbe..abc807338 100755
--- a/patch_esp_trace_include.sh
+++ b/patch_esp_trace_include.sh
@@ -9,5 +9,5 @@ fi
FILEPATH=$IDF_PATH/components/freertos/config/include/freertos/FreeRTOSConfig.h
LINENO="10"
-DIRECTIVE="#include \"../../../../../../../../../project/grid_esp/components/grid_esp32_trace/trace_hooks.h\""
+DIRECTIVE="#include \"../../../../../../../../../project/esp32s3/components/grid_esp32_trace/trace_hooks.h\""
sed -i "${LINENO}i ${DIRECTIVE}" "$FILEPATH"
diff --git a/pico_build.sh b/pico_build.sh
new file mode 100755
index 000000000..52982e6dc
--- /dev/null
+++ b/pico_build.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+mkdir rp2040/build
+
+rm rp2040/build/main/main.*
+
+cmake -S rp2040 -B rp2040/build
+
+if [ $? -ne 0 ] ; then
+ exit 1
+fi
+
+make -C rp2040/build
+
+if [ $? -ne 0 ] ; then
+ exit 1
+fi
+
+xxd -i rp2040/build/main/main.bin > rp2040/build/main/pico_firmware.h
+
+if [ $? -ne 0 ] ; then
+ exit 1
+fi
+
+sed -i '1i\const \\' rp2040/build/main/pico_firmware.h
+
+sed -i 's/rp2040_build_main_main_bin/pico_firmware/g' rp2040/build/main/pico_firmware.h
diff --git a/pico_build_firmware.sh b/pico_build_firmware.sh
deleted file mode 100755
index 50aec585b..000000000
--- a/pico_build_firmware.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-mkdir -p ./grid_pico/build
-
-rm -r ./grid_pico/build/main/main.*
-rm ./grid_esp/main/pico_firmware.h
-
-cmake -S "./grid_pico" -B "./grid_pico/build"
-make -C "./grid_pico/build"
-xxd -i ./grid_pico/build/main/main.bin > ./grid_pico/build/main/pico_firmware.h
-sed -i '1i\const \\' ./grid_pico/build/main/pico_firmware.h
-sed -i 's/__grid_pico_build_main_main_bin/pico_firmware/g' ./grid_pico/build/main/pico_firmware.h
-cp ./grid_pico/build/main/pico_firmware.h ./grid_esp/main/pico_firmware.h
diff --git a/format.sh b/pre_commit.sh
similarity index 100%
rename from format.sh
rename to pre_commit.sh
diff --git a/refactoring_stats.sh b/refactoring_stats.sh
deleted file mode 100755
index a982522ee..000000000
--- a/refactoring_stats.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-echo "grid_common:"
-echo ""
-wc -l grid_common/*.c|sort -n
-
-echo ""
-echo "grid_make/grid:"
-echo ""
-wc -l grid_make/grid/*.c|sort -n
diff --git a/rp2040/.gitignore b/rp2040/.gitignore
new file mode 100644
index 000000000..5a8864fb4
--- /dev/null
+++ b/rp2040/.gitignore
@@ -0,0 +1,16 @@
+!CMakeLists.txt
+!example_auto_set_url.cmake
+!pico_sdk_import.cmake
+!README.md
+
+!main
+!main/CMakeLists.txt
+!main/main.c
+
+!src
+!src/*.c
+!src/*.h
+!src/*.pio
+
+!vmp
+!vmp/**
diff --git a/grid_pico/CMakeLists.txt b/rp2040/CMakeLists.txt
similarity index 100%
rename from grid_pico/CMakeLists.txt
rename to rp2040/CMakeLists.txt
diff --git a/grid_pico/README.md b/rp2040/README.md
similarity index 100%
rename from grid_pico/README.md
rename to rp2040/README.md
diff --git a/grid_pico/example_auto_set_url.cmake b/rp2040/example_auto_set_url.cmake
similarity index 100%
rename from grid_pico/example_auto_set_url.cmake
rename to rp2040/example_auto_set_url.cmake
diff --git a/rp2040/main/CMakeLists.txt b/rp2040/main/CMakeLists.txt
new file mode 100644
index 000000000..948d939c2
--- /dev/null
+++ b/rp2040/main/CMakeLists.txt
@@ -0,0 +1,32 @@
+add_executable(main
+ main.c
+ ../src/grid_pico_spi.c
+ ../src/grid_pico_platform.c
+ ../src/pico_pool.c
+ ../src/pico_swsr.c
+ ../../common/src/c/grid_msg.c
+ ../../common/src/c/grid_port.c
+ ../../common/src/c/grid_transport.c
+ ../../common/src/c/grid_rollid.c
+ ../../common/src/c/grid_utask.c
+ ../vmp/vmp_def.c
+ ../../common/dep/vmp/vmp.c
+)
+
+target_include_directories(main PRIVATE ../vmp ../../common/dep/vmp ../src ../../common/src/c)
+
+pico_generate_pio_header(main ${CMAKE_CURRENT_LIST_DIR}/../src/uart_tx.pio)
+pico_generate_pio_header(main ${CMAKE_CURRENT_LIST_DIR}/../src/uart_rx.pio)
+
+target_sources(main PRIVATE)
+
+# Import pico_stdlib which imports commonly used features
+target_link_libraries(main PRIVATE pico_stdlib pico_multicore hardware_pio hardware_pwm hardware_dma hardware_spi hardware_watchdog)
+
+# Create map/bin/hex file etc.
+pico_add_extra_outputs(main)
+
+pico_set_binary_type(main no_flash)
+
+# Add path via pico_set_program_url CMAKE
+example_auto_set_url(main)
diff --git a/grid_pico/main/main.c b/rp2040/main/main.c
similarity index 99%
rename from grid_pico/main/main.c
rename to rp2040/main/main.c
index 554392113..ca5496f63 100644
--- a/grid_pico/main/main.c
+++ b/rp2040/main/main.c
@@ -21,11 +21,11 @@ const PIO GRID_RX_PIO = pio1;
#include "grid_pico_pins.h"
-#include "../../grid_common/grid_msg.h"
-#include "../../grid_common/grid_transport.h"
+#include "grid_msg.h"
+#include "grid_transport.h"
-#include "vmp/vmp_def.h"
-#include "vmp/vmp_tag.h"
+#include "vmp_def.h"
+#include "vmp_tag.h"
#include "pico_pool.h"
#include "pico_swsr.h"
diff --git a/grid_pico/pico_sdk_import.cmake b/rp2040/pico_sdk_import.cmake
similarity index 100%
rename from grid_pico/pico_sdk_import.cmake
rename to rp2040/pico_sdk_import.cmake
diff --git a/grid_pico/main/grid_pico_pins.h b/rp2040/src/grid_pico_pins.h
similarity index 100%
rename from grid_pico/main/grid_pico_pins.h
rename to rp2040/src/grid_pico_pins.h
diff --git a/grid_pico/main/grid_pico_platform.c b/rp2040/src/grid_pico_platform.c
similarity index 100%
rename from grid_pico/main/grid_pico_platform.c
rename to rp2040/src/grid_pico_platform.c
diff --git a/grid_pico/main/grid_pico_platform.h b/rp2040/src/grid_pico_platform.h
similarity index 100%
rename from grid_pico/main/grid_pico_platform.h
rename to rp2040/src/grid_pico_platform.h
diff --git a/grid_pico/main/grid_pico_spi.c b/rp2040/src/grid_pico_spi.c
similarity index 98%
rename from grid_pico/main/grid_pico_spi.c
rename to rp2040/src/grid_pico_spi.c
index 1944b1a66..4ed5aef5a 100644
--- a/grid_pico/main/grid_pico_spi.c
+++ b/rp2040/src/grid_pico_spi.c
@@ -1,7 +1,7 @@
#include "grid_pico_spi.h"
#include "grid_pico_pins.h"
-#include "../../grid_common/grid_protocol.h"
+#include "grid_protocol.h"
#include "hardware/dma.h"
#include "hardware/gpio.h"
diff --git a/grid_pico/main/grid_pico_spi.h b/rp2040/src/grid_pico_spi.h
similarity index 100%
rename from grid_pico/main/grid_pico_spi.h
rename to rp2040/src/grid_pico_spi.h
diff --git a/grid_pico/main/pico_pool.c b/rp2040/src/pico_pool.c
similarity index 100%
rename from grid_pico/main/pico_pool.c
rename to rp2040/src/pico_pool.c
diff --git a/grid_pico/main/pico_pool.h b/rp2040/src/pico_pool.h
similarity index 97%
rename from grid_pico/main/pico_pool.h
rename to rp2040/src/pico_pool.h
index 6c01fe8a9..3e658e495 100644
--- a/grid_pico/main/pico_pool.h
+++ b/rp2040/src/pico_pool.h
@@ -7,7 +7,7 @@
#include
#include
-#include "../../grid_common/grid_protocol.h"
+#include "grid_protocol.h"
enum pico_bkt_state_t {
PICO_BKT_STATE_EMPTY = 0,
diff --git a/grid_pico/main/pico_swsr.c b/rp2040/src/pico_swsr.c
similarity index 100%
rename from grid_pico/main/pico_swsr.c
rename to rp2040/src/pico_swsr.c
diff --git a/grid_pico/main/pico_swsr.h b/rp2040/src/pico_swsr.h
similarity index 100%
rename from grid_pico/main/pico_swsr.h
rename to rp2040/src/pico_swsr.h
diff --git a/grid_pico/main/uart_rx.pio b/rp2040/src/uart_rx.pio
similarity index 100%
rename from grid_pico/main/uart_rx.pio
rename to rp2040/src/uart_rx.pio
diff --git a/grid_pico/main/uart_tx.pio b/rp2040/src/uart_tx.pio
similarity index 100%
rename from grid_pico/main/uart_tx.pio
rename to rp2040/src/uart_tx.pio
diff --git a/rp2040/vmp/.gitignore b/rp2040/vmp/.gitignore
new file mode 100644
index 000000000..378eac25d
--- /dev/null
+++ b/rp2040/vmp/.gitignore
@@ -0,0 +1 @@
+build
diff --git a/grid_pico/main/vmp/build.sh b/rp2040/vmp/build.sh
similarity index 100%
rename from grid_pico/main/vmp/build.sh
rename to rp2040/vmp/build.sh
diff --git a/grid_pico/main/vmp/execute.sh b/rp2040/vmp/execute.sh
similarity index 100%
rename from grid_pico/main/vmp/execute.sh
rename to rp2040/vmp/execute.sh
diff --git a/grid_pico/main/vmp/proc.c b/rp2040/vmp/proc.c
similarity index 100%
rename from grid_pico/main/vmp/proc.c
rename to rp2040/vmp/proc.c
diff --git a/grid_pico/main/vmp/vmp_def.c b/rp2040/vmp/vmp_def.c
similarity index 100%
rename from grid_pico/main/vmp/vmp_def.c
rename to rp2040/vmp/vmp_def.c
diff --git a/grid_pico/main/vmp/vmp_def.h b/rp2040/vmp/vmp_def.h
similarity index 100%
rename from grid_pico/main/vmp/vmp_def.h
rename to rp2040/vmp/vmp_def.h
diff --git a/grid_pico/main/vmp/vmp_tag.h b/rp2040/vmp/vmp_tag.h
similarity index 100%
rename from grid_pico/main/vmp/vmp_tag.h
rename to rp2040/vmp/vmp_tag.h
diff --git a/test.sh b/test.sh
new file mode 100755
index 000000000..8dfd8d6d7
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make -C "./test" all && ./test/build/test
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 000000000..a5849c650
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1,4 @@
+!Makefile
+!platform.c
+!test.c
+!test.h
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 000000000..7aea16973
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,50 @@
+# Do not use the built-in inference rules
+.SUFFIXES:
+
+CC = cc
+
+BUILD_DIR = build
+BUILD_DIRS = \
+ $(BUILD_DIR) \
+ $(BUILD_DIR)/common \
+ $(BUILD_DIR)/common/src \
+ $(BUILD_DIR)/common/src/c \
+ $(BUILD_DIR)/common/test \
+
+$(BUILD_DIRS): ; mkdir $@
+
+SRC_DIR = .
+SRCS = \
+ test.c \
+ platform.c \
+ \
+ common/src/c/grid_math.c \
+ common/src/c/grid_noflash.c \
+ common/src/c/grid_swsr.c \
+ common/src/c/grid_ui.c \
+ common/src/c/grid_ui_encoder.c \
+ common/test/grid_ui_encoder_test.c \
+
+INCLUDES = \
+ -I. \
+ -I.. \
+ -Icommon/build/lua \
+ -Icommon/dep \
+ -Icommon/dep/proto \
+ -Icommon/src/c \
+
+DEPS = $(SRCS:%.c=$(BUILD_DIR)/%.d)
+$(BUILD_DIR)/%.d: $(SRC_DIR)/%.c | $(BUILD_DIRS)
+ $(CC) $(INCLUDES) -MM -MF $@ -MT $@ $<
+
+OBJS = $(SRCS:%.c=$(BUILD_DIR)/%.o)
+$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(BUILD_DIR)/%.d | $(BUILD_DIRS)
+ $(CC) -g $(INCLUDES) -c -o $@ $<
+
+$(BUILD_DIR)/test: $(OBJS) $(DEPS) | $(BUILD_DIRS)
+ $(CC) -Wl,--unresolved-symbols=ignore-in-object-files -no-pie $(OBJS) -o $@
+
+.PHONY: all
+all: $(BUILD_DIR)/test
+
+include $(DEPS)
diff --git a/test/common b/test/common
new file mode 120000
index 000000000..60d3b0a6a
--- /dev/null
+++ b/test/common
@@ -0,0 +1 @@
+../common
\ No newline at end of file
diff --git a/test/platform.c b/test/platform.c
new file mode 100644
index 000000000..6c2a9e838
--- /dev/null
+++ b/test/platform.c
@@ -0,0 +1,13 @@
+#include
+#include
+#include
+
+#include
+
+void* grid_platform_allocate_volatile(size_t size) { return malloc(size); }
+
+uint64_t grid_platform_rtc_get_micros(void) { return 0; }
+
+uint64_t grid_platform_rtc_get_diff(uint64_t t1, uint64_t t2) { return 0; }
+
+uint64_t grid_platform_rtc_get_elapsed_time(uint64_t told) { return 10 - told; }
diff --git a/test/test.c b/test/test.c
new file mode 100644
index 000000000..09b94c5fe
--- /dev/null
+++ b/test/test.c
@@ -0,0 +1,39 @@
+#include
+#include
+
+#include "test.h"
+
+#include "common/test/tests.h"
+
+struct test_entry_t tests[] = {
+ TEST_ENTRY(grid_ui_encoder_relative),
+};
+
+int main() {
+
+ int total = sizeof(tests) / sizeof(tests[0]);
+ int passed = 0;
+
+ for (int i = 0; i < total; ++i) {
+
+ struct test_entry_t* entry = &tests[i];
+ struct test_return_t ret = entry->fun();
+ passed += ret.status == TEST_PASS;
+
+ switch (ret.status) {
+ case TEST_PASS: {
+ fprintf(stderr, "pass \"%s\"\n", entry->name);
+ } break;
+ case TEST_FAIL: {
+ fprintf(stderr, "FAIL \"%s\" at %s:%d\n", entry->name, ret.file, ret.line);
+ } break;
+ default: {
+ assert(0);
+ } break;
+ }
+ }
+
+ fprintf(stderr, "passed/total: %d/%d\n", passed, total);
+
+ return passed == total ? 0 : 1;
+}
diff --git a/test/test.h b/test/test.h
new file mode 100644
index 000000000..d40c5bb35
--- /dev/null
+++ b/test/test.h
@@ -0,0 +1,43 @@
+#ifndef TEST_H
+#define TEST_H
+
+enum test_status_t {
+ TEST_PASS = 0,
+ TEST_FAIL,
+};
+
+struct test_return_t {
+ enum test_status_t status;
+ const char* file;
+ int line;
+};
+
+typedef struct test_return_t (*fn_test_t)(void);
+
+struct test_entry_t {
+ fn_test_t fun;
+ const char* name;
+};
+
+// clang-format off
+
+#define TEST_ENTRY(name) { test_ ## name, #name }
+
+#define TEST_DECL(name) struct test_return_t test_ ## name(void)
+
+#define TEST_SUCCESS (struct test_return_t){ TEST_PASS }
+#define TEST_FAILURE (struct test_return_t){ TEST_FAIL, __FILE__, __LINE__ }
+
+#define TEST_ASSERT_MSG(expr, ...) \
+do { \
+ if (!(expr)) { \
+ fprintf(stderr, __VA_ARGS__); \
+ return TEST_FAILURE; \
+ } \
+} while (0)
+
+#define TEST_ASSERT(expr) TEST_ASSERT_MSG(expr, "");
+
+// clang-format on
+
+#endif /* TEST_H */
diff --git a/tools/.gitignore b/tools/.gitignore
new file mode 100644
index 000000000..410fc6a2e
--- /dev/null
+++ b/tools/.gitignore
@@ -0,0 +1,2 @@
+!uf2conv
+!uf2conv/*
diff --git a/grid_esp/tools/uf2conv.c b/tools/uf2conv/uf2conv.c
similarity index 100%
rename from grid_esp/tools/uf2conv.c
rename to tools/uf2conv/uf2conv.c
diff --git a/grid_esp/tools/uf2conv.md b/tools/uf2conv/uf2conv.md
similarity index 100%
rename from grid_esp/tools/uf2conv.md
rename to tools/uf2conv/uf2conv.md
diff --git a/grid_esp/tools/uf2conv.py b/tools/uf2conv/uf2conv.py
similarity index 96%
rename from grid_esp/tools/uf2conv.py
rename to tools/uf2conv/uf2conv.py
index 82b0b1026..cdb946fe8 100755
--- a/grid_esp/tools/uf2conv.py
+++ b/tools/uf2conv/uf2conv.py
@@ -203,15 +203,7 @@ def to_str(b):
def get_drives():
drives = []
- if sys.platform == "win32":
- r = subprocess.check_output(["wmic", "PATH", "Win32_LogicalDisk",
- "get", "DeviceID,", "VolumeName,",
- "FileSystem,", "DriveType"])
- for line in to_str(r).split('\n'):
- words = re.split('\s+', line)
- if len(words) >= 3 and words[1] == "2" and words[2] == "FAT":
- drives.append(words[0])
- else:
+ if sys.platform != "win32":
rootpath = "/media"
if sys.platform == "darwin":
rootpath = "/Volumes"
diff --git a/grid_esp/tools/uf2families.json b/tools/uf2conv/uf2families.json
similarity index 100%
rename from grid_esp/tools/uf2families.json
rename to tools/uf2conv/uf2families.json