From 470cf77cac110ac5cf71f3022e46396f105c3f4f Mon Sep 17 00:00:00 2001 From: Frederik Beimgraben Date: Wed, 21 May 2025 14:16:03 +0200 Subject: [PATCH] chore![CCS-Setup]: Initial Commit --- .ccsproject | 14 + .clangd | 11 + .cproject | 193 + .project | 20 + .settings/org.eclipse.cdt.codan.core.prefs | 3 + Debug/.clangd/compile_commands.json | 47 + GUIComm_JSON.c | 277 ++ Include/GUIComm.h | 101 + Include/HAL.h | 101 + Include/IQmathLib.h | 3967 +++++++++++++++++ Include/QmathLib.h | 2100 +++++++++ README.html | 107 + callbacks_JSON.c | 64 + include/Config_Common.h | 71 + include/GUI_JSON.h | 112 + include/callbacks_JSON.h | 58 + lnk_msp430fr2355.cmd | 250 ++ main.c | 168 + src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib.a | Bin 0 -> 1702 bytes ...Y32_5xx_6xx_CPUX_large_code_large_data.lib | Bin 0 -> 515270 bytes ...xx_6xx_CPUX_large_code_restricted_data.lib | Bin 0 -> 510830 bytes ...Y32_5xx_6xx_CPUX_large_code_small_data.lib | Bin 0 -> 506794 bytes ...Y32_5xx_6xx_CPUX_small_code_small_data.lib | Bin 0 -> 506298 bytes src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib.a | Bin 0 -> 1698 bytes ...Y32_5xx_6xx_CPUX_large_code_large_data.lib | Bin 0 -> 217680 bytes ...xx_6xx_CPUX_large_code_restricted_data.lib | Bin 0 -> 214744 bytes ...Y32_5xx_6xx_CPUX_large_code_small_data.lib | Bin 0 -> 212688 bytes ...Y32_5xx_6xx_CPUX_small_code_small_data.lib | Bin 0 -> 212448 bytes src/MSP430_GUI/GUI_JSON.c | 201 + src/MSP430_GUI/jsmn/jsmn.c | 335 ++ src/MSP430_GUI/jsmn/jsmn.h | 98 + src/MSP430_HAL/HAL_Config_Private.h | 84 + src/MSP430_HAL/HAL_GUIComm_UART_FR235x.c | 145 + src/MSP430_HAL/HAL_IO_FR235x.c | 169 + src/MSP430_HAL/HAL_System_FR235x.c | 147 + src/MSP430_HAL/HAL_Timer_FR235x.c | 71 + targetConfigs/MSP430FR2355.ccxml | 12 + targetConfigs/readme.txt | 9 + 38 files changed, 8935 insertions(+) create mode 100644 .ccsproject create mode 100644 .clangd create mode 100644 .cproject create mode 100644 .project create mode 100644 .settings/org.eclipse.cdt.codan.core.prefs create mode 100644 Debug/.clangd/compile_commands.json create mode 100755 GUIComm_JSON.c create mode 100755 Include/GUIComm.h create mode 100755 Include/HAL.h create mode 100755 Include/IQmathLib.h create mode 100755 Include/QmathLib.h create mode 100755 README.html create mode 100755 callbacks_JSON.c create mode 100755 include/Config_Common.h create mode 100755 include/GUI_JSON.h create mode 100755 include/callbacks_JSON.h create mode 100644 lnk_msp430fr2355.cmd create mode 100755 main.c create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib.a create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_restricted_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_small_code_small_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib.a create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_restricted_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib create mode 100755 src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_small_code_small_data.lib create mode 100755 src/MSP430_GUI/GUI_JSON.c create mode 100755 src/MSP430_GUI/jsmn/jsmn.c create mode 100755 src/MSP430_GUI/jsmn/jsmn.h create mode 100755 src/MSP430_HAL/HAL_Config_Private.h create mode 100755 src/MSP430_HAL/HAL_GUIComm_UART_FR235x.c create mode 100755 src/MSP430_HAL/HAL_IO_FR235x.c create mode 100755 src/MSP430_HAL/HAL_System_FR235x.c create mode 100755 src/MSP430_HAL/HAL_Timer_FR235x.c create mode 100644 targetConfigs/MSP430FR2355.ccxml create mode 100644 targetConfigs/readme.txt diff --git a/.ccsproject b/.ccsproject new file mode 100644 index 0000000..492a9bd --- /dev/null +++ b/.ccsproject @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..8c4daa2 --- /dev/null +++ b/.clangd @@ -0,0 +1,11 @@ +# This is an auto-generated file - do not add it to source-control + +CompileFlags: + CompilationDatabase: Debug/.clangd + +Diagnostics: + Suppress: '*' + +InlayHints: + Enabled: No + diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..9f0265b --- /dev/null +++ b/.cproject @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..ec5c800 --- /dev/null +++ b/.project @@ -0,0 +1,20 @@ + + + ESR-G11 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + + com.ti.ccstudio.core.ccsNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.core.ccnature + + diff --git a/.settings/org.eclipse.cdt.codan.core.prefs b/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..f653028 --- /dev/null +++ b/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +inEditor=false +onBuild=false diff --git a/Debug/.clangd/compile_commands.json b/Debug/.clangd/compile_commands.json new file mode 100644 index 0000000..313878c --- /dev/null +++ b/Debug/.clangd/compile_commands.json @@ -0,0 +1,47 @@ +[ + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/GUIComm_JSON.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/callbacks_JSON.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/main.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/src/MSP430_GUI/GUI_JSON.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/src/MSP430_GUI/jsmn/jsmn.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/src/MSP430_HAL/HAL_GUIComm_UART_FR235x.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/src/MSP430_HAL/HAL_IO_FR235x.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/src/MSP430_HAL/HAL_System_FR235x.c" + }, + { + "directory" : "/home/frederik/workspace_ccstheia/ESR-G11/Debug", + "command" : "clang++ -I\"/home/frederik/.ti/ccs2010/ccs/ccs_base/msp430/include\" -I\"/home/frederik/workspace_ccstheia/ESR-G11\" -I\"/home/frederik/workspace_ccstheia/ESR-G11/include\" -I\"/home/frederik/.ti/ccs2010/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/include\" -D__MSP430FR2355__ -D_FRWP_ENABLE -D_INFO_FRWP_ENABLE -D__ENABLE_GUI_COMM=1 -DGLOBAL_Q=8", + "file" : "/home/frederik/workspace_ccstheia/ESR-G11/src/MSP430_HAL/HAL_Timer_FR235x.c" + } +] diff --git a/GUIComm_JSON.c b/GUIComm_JSON.c new file mode 100755 index 0000000..8c56074 --- /dev/null +++ b/GUIComm_JSON.c @@ -0,0 +1,277 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2020, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// GUI Communication Layer +// +// API to communicate with GUI using JSON protocol +// Texas Instruments, Inc.** + +#include +#include +#include +#include +#include +#include + +static void itoa(int32_t value, char* result); + +static const char cmdTemplate[] = "{\"\":}\n"; +static char cATXString[20]; + +//These values are used to concatenate the command and data to the command template +// when using the GUIComm_send functions +#define CMD_INDEX 1 +#define DATA_INDEX 3 +#define CMD_TEMPLATE_LENGTH 6 +#define BASE 10 + + +//! \brief Converts a number into a string +//! +//! \return none +void itoa(int32_t value, char* result) +{ + char* ptr = result, *ptr1 = result, tmp_char; + uint32_t tmp_value; + + tmp_value = labs(value); + do { + *ptr++ = "0123456789" [tmp_value%BASE]; + tmp_value /= BASE; + } while (tmp_value); + + // Apply negative sign + if (value < 0) *ptr++ = '-'; + *ptr-- = '\0'; + while(ptr1 < ptr) { + tmp_char = *ptr; + *ptr--= *ptr1; + *ptr1++ = tmp_char; + } +} + +int GUIComm_sendUInt(char *cmd, uint8_t cmdLength, uint32_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendInt(char *cmd, uint8_t cmdLength, uint32_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendUInt8(char *cmd, uint8_t cmdLength, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendInt8(char *cmd, uint8_t cmdLength, int8_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendInt16(char *cmd, uint8_t cmdLength, int16_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendUInt16(char *cmd, uint8_t cmdLength, uint16_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendUInt32(char *cmd, uint8_t cmdLength, uint32_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendInt32(char *cmd, uint8_t cmdLength, int32_t val) +{ + uint8_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + itoa(val, cATXString); + GUI_TransmitStringBlocking(cATXString); + } + } + + return 0; +} + +int GUIComm_sendBool(char *cmd, uint8_t cmdLength, bool val) +{ + uint16_t i; + + for (i = 0; i < CMD_TEMPLATE_LENGTH; i++) + { + HAL_GUI_TransmitCharBlocking(cmdTemplate[i]); + if (i == CMD_INDEX) + { + GUI_TransmitStringBlocking(cmd); + } + else if (i == DATA_INDEX) + { + if (val == true) + { + GUI_TransmitStringBlocking("true"); + } + else + { + GUI_TransmitStringBlocking("false"); + } + } + } + + return 0; +} + diff --git a/Include/GUIComm.h b/Include/GUIComm.h new file mode 100755 index 0000000..033b517 --- /dev/null +++ b/Include/GUIComm.h @@ -0,0 +1,101 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2020, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// Generic GUI Demo using MSP430 +// +// API to communicate with GUI and abstract transport layer protocol +// Texas Instruments, Inc. +// ****************************************************************************** + +#ifndef INCLUDE_GUICOMM_H_ +#define INCLUDE_GUICOMM_H_ + +//! ***** Functions to send data to GUI ***** + +//! \brief Sends a 32-bit integer. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendInt(char *cmd, uint8_t cmdLength, uint32_t val); + +//! \brief Sends a 32-bit unsigned integer. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendUInt(char *cmd, uint8_t cmdLength, uint32_t val); + +//! \brief Sends an uint8_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendUInt8(char *cmd, uint8_t cmdLength, uint8_t val); + +//! \brief Sends an int8_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendInt8(char *cmd, uint8_t cmdLength, int8_t val); + +//! \brief Sends an uint16_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendUInt16(char *cmd, uint8_t cmdLength, uint16_t val); + +//! \brief Sends an int16_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendInt16(char *cmd, uint8_t cmdLength, int16_t val); + +//! \brief Sends an uint32_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendUInt32(char *cmd, uint8_t cmdLength, uint32_t val); + +//! \brief Sends an int32_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendInt32(char *cmd, uint8_t cmdLength, int32_t val); + +//! \brief Sends an uint32_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendUInt64(char *cmd, uint8_t cmdLength, uint64_t val); + +//! \brief Sends an int32_t value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendInt64(char *cmd, uint8_t cmdLength, int64_t val); + +//! \brief Sends a bool value to the GUI. +//! +//! \return 0 if success, -1 if failure +extern int GUIComm_sendBool(char *cmd, uint8_t cmdLength, bool val); + + + +#endif /* INCLUDE_GUICOMM_H_ */ diff --git a/Include/HAL.h b/Include/HAL.h new file mode 100755 index 0000000..791cd15 --- /dev/null +++ b/Include/HAL.h @@ -0,0 +1,101 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// MSP430 HAL +// +// Hardware Abstraction Layer for MSP430 +// +// Texas Instruments, Inc. + +#ifndef __HAL_H__ +#define __HAL_H__ + +#include +#include +#include +#include +#include + +//! \brief GUI Comm RX Callback function pointer +//! +//! \param[in] char with Received byte +//! +//! \return true if device wakes-up after ISR, false if not. +typedef bool (*tGUICommRXCharCallback)(char ); + +// ********************* System ************************************************ +//! \brief Initializes I/Os used by the system. +//! Initialization is done to achieve lowest power consumption. +//! +//! +//! \return 0 if OK, -1 if error +extern int8_t HAL_System_Init(void); + +// ********************* I/O *************************************************** +//! \brief Initializes I/Os used by the system. +//! Initialization is done to achieve lowest power consumption. +//! +//! +//! \return none +extern void HAL_IO_Init(void); + +//! \brief Initializes inputs used for push-buttons +//! Pins are initialized with pull-ups and interrupts are enabled. +//! +//! +//! \return none +extern void HAL_IO_InitButtons(void); + +// ********************* Timer *************************************************** +//! \brief Initializes a simple periodic interrupt timer. +//! Timer is initialized using Low-frequency clock and interrupts +//! are enabled. +//! +//! \return none +extern void HAL_Timer_Init(void); + +// ********************* GUI Communication ************************************* +//! \brief Initializes the communication interface for GUI. +//! +//! \param[in] RxByteCallback is the function called when a byte is received. +//! +//! \return none +extern void HAL_GUI_Init(tGUICommRXCharCallback RxByteCallback); + +//! \brief Transmits a character to the GUI in blocking mode. +//! +//! \param[in] character is the character being transmitted to GUI. +//! +//! \return none +extern void HAL_GUI_TransmitCharBlocking(char character); + +#endif //__HAL_H__ diff --git a/Include/IQmathLib.h b/Include/IQmathLib.h new file mode 100755 index 0000000..cfc5b50 --- /dev/null +++ b/Include/IQmathLib.h @@ -0,0 +1,3967 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __IQMATHLIB_H__ +#define __IQMATHLIB_H__ + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// The IQ format to be used when the IQ format is not explicitly specified +// (such as _IQcos instead of _IQ16cos). This value must be between 1 and 30, +// inclusive. +// +//***************************************************************************** +#ifndef GLOBAL_IQ +#define GLOBAL_IQ 24 +#endif + +//***************************************************************************** +// +// Include some standard headers. +// +//***************************************************************************** +#include +#include +#include + +//***************************************************************************** +// +// Various Useful Constant Definitions: +// +//***************************************************************************** +#define Q30 30 +#define Q29 29 +#define Q28 28 +#define Q27 27 +#define Q26 26 +#define Q25 25 +#define Q24 24 +#define Q23 23 +#define Q22 22 +#define Q21 21 +#define Q20 20 +#define Q19 19 +#define Q18 18 +#define Q17 17 +#define Q16 16 +#define Q15 15 +#define Q14 14 +#define Q13 13 +#define Q12 12 +#define Q11 11 +#define Q10 10 +#define Q9 9 +#define Q8 8 +#define Q7 7 +#define Q6 6 +#define Q5 5 +#define Q4 4 +#define Q3 3 +#define Q2 2 +#define Q1 1 +#ifndef QG +#define QG GLOBAL_IQ +#endif + +#define MAX_IQ_POS LONG_MAX +#define MAX_IQ_NEG LONG_MIN +#define MIN_IQ_POS 1 +#define MIN_IQ_NEG -1 + +//***************************************************************************** +// +// The types for the various IQ formats. +// +//***************************************************************************** +typedef int32_t _iq30; +typedef int32_t _iq29; +typedef int32_t _iq28; +typedef int32_t _iq27; +typedef int32_t _iq26; +typedef int32_t _iq25; +typedef int32_t _iq24; +typedef int32_t _iq23; +typedef int32_t _iq22; +typedef int32_t _iq21; +typedef int32_t _iq20; +typedef int32_t _iq19; +typedef int32_t _iq18; +typedef int32_t _iq17; +typedef int32_t _iq16; +typedef int32_t _iq15; +typedef int32_t _iq14; +typedef int32_t _iq13; +typedef int32_t _iq12; +typedef int32_t _iq11; +typedef int32_t _iq10; +typedef int32_t _iq9; +typedef int32_t _iq8; +typedef int32_t _iq7; +typedef int32_t _iq6; +typedef int32_t _iq5; +typedef int32_t _iq4; +typedef int32_t _iq3; +typedef int32_t _iq2; +typedef int32_t _iq1; +typedef int32_t _iq; + +//***************************************************************************** +// +// Simple multiplies or divides, which are accomplished with simple shifts. +// +//***************************************************************************** +#define _IQmpy2(A) ((A) << 1) +#define _IQmpy4(A) ((A) << 2) +#define _IQmpy8(A) ((A) << 3) +#define _IQmpy16(A) ((A) << 4) +#define _IQmpy32(A) ((A) << 5) +#define _IQmpy64(A) ((A) << 6) +#define _IQdiv2(A) ((A) >> 1) +#define _IQdiv4(A) ((A) >> 2) +#define _IQdiv8(A) ((A) >> 3) +#define _IQdiv16(A) ((A) >> 4) +#define _IQdiv32(A) ((A) >> 5) +#define _IQdiv64(A) ((A) >> 6) + +//***************************************************************************** +// +// Convert a value into an IQ number. +// +//***************************************************************************** +#define _IQ30(A) ((_iq30)((A) * ((_iq30)1 << 30))) +#define _IQ29(A) ((_iq29)((A) * ((_iq29)1 << 29))) +#define _IQ28(A) ((_iq28)((A) * ((_iq28)1 << 28))) +#define _IQ27(A) ((_iq27)((A) * ((_iq27)1 << 27))) +#define _IQ26(A) ((_iq26)((A) * ((_iq26)1 << 26))) +#define _IQ25(A) ((_iq25)((A) * ((_iq25)1 << 25))) +#define _IQ24(A) ((_iq24)((A) * ((_iq24)1 << 24))) +#define _IQ23(A) ((_iq23)((A) * ((_iq23)1 << 23))) +#define _IQ22(A) ((_iq22)((A) * ((_iq22)1 << 22))) +#define _IQ21(A) ((_iq21)((A) * ((_iq21)1 << 21))) +#define _IQ20(A) ((_iq20)((A) * ((_iq20)1 << 20))) +#define _IQ19(A) ((_iq19)((A) * ((_iq19)1 << 19))) +#define _IQ18(A) ((_iq18)((A) * ((_iq18)1 << 18))) +#define _IQ17(A) ((_iq17)((A) * ((_iq17)1 << 17))) +#define _IQ16(A) ((_iq16)((A) * ((_iq16)1 << 16))) +#define _IQ15(A) ((_iq15)((A) * ((_iq15)1 << 15))) +#define _IQ14(A) ((_iq14)((A) * ((_iq14)1 << 14))) +#define _IQ13(A) ((_iq13)((A) * ((_iq13)1 << 13))) +#define _IQ12(A) ((_iq12)((A) * ((_iq12)1 << 12))) +#define _IQ11(A) ((_iq11)((A) * ((_iq11)1 << 11))) +#define _IQ10(A) ((_iq10)((A) * ((_iq10)1 << 10))) +#define _IQ9(A) ((_iq9)((A) * ((_iq9)1 << 9))) +#define _IQ8(A) ((_iq8)((A) * ((_iq8)1 << 8))) +#define _IQ7(A) ((_iq7)((A) * ((_iq7)1 << 7))) +#define _IQ6(A) ((_iq6)((A) * ((_iq6)1 << 6))) +#define _IQ5(A) ((_iq5)((A) * ((_iq5)1 << 5))) +#define _IQ4(A) ((_iq4)((A) * ((_iq4)1 << 4))) +#define _IQ3(A) ((_iq3)((A) * ((_iq3)1 << 3))) +#define _IQ2(A) ((_iq2)((A) * ((_iq2)1 << 2))) +#define _IQ1(A) ((_iq1)((A) * ((_iq1)1 << 1))) + +#if GLOBAL_IQ == 30 +#define _IQ(A) _IQ30(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQ(A) _IQ29(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQ(A) _IQ28(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQ(A) _IQ27(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQ(A) _IQ26(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQ(A) _IQ25(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQ(A) _IQ24(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQ(A) _IQ23(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQ(A) _IQ22(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQ(A) _IQ21(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQ(A) _IQ20(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQ(A) _IQ19(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQ(A) _IQ18(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQ(A) _IQ17(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQ(A) _IQ16(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQ(A) _IQ15(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQ(A) _IQ14(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQ(A) _IQ13(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQ(A) _IQ12(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQ(A) _IQ11(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQ(A) _IQ10(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQ(A) _IQ9(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQ(A) _IQ8(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQ(A) _IQ7(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQ(A) _IQ6(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQ(A) _IQ5(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQ(A) _IQ4(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQ(A) _IQ3(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQ(A) _IQ2(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQ(A) _IQ1(A) +#endif + +//***************************************************************************** +// +// Convert an IQ number to a floating point value. +// +//***************************************************************************** +extern float _IQ30toF(_iq30 A); +extern float _IQ29toF(_iq29 A); +extern float _IQ28toF(_iq28 A); +extern float _IQ27toF(_iq27 A); +extern float _IQ26toF(_iq26 A); +extern float _IQ25toF(_iq25 A); +extern float _IQ24toF(_iq24 A); +extern float _IQ23toF(_iq23 A); +extern float _IQ22toF(_iq22 A); +extern float _IQ21toF(_iq21 A); +extern float _IQ20toF(_iq20 A); +extern float _IQ19toF(_iq19 A); +extern float _IQ18toF(_iq18 A); +extern float _IQ17toF(_iq17 A); +extern float _IQ16toF(_iq16 A); +extern float _IQ15toF(_iq15 A); +extern float _IQ14toF(_iq14 A); +extern float _IQ13toF(_iq13 A); +extern float _IQ12toF(_iq12 A); +extern float _IQ11toF(_iq11 A); +extern float _IQ10toF(_iq10 A); +extern float _IQ9toF(_iq9 A); +extern float _IQ8toF(_iq8 A); +extern float _IQ7toF(_iq7 A); +extern float _IQ6toF(_iq6 A); +extern float _IQ5toF(_iq5 A); +extern float _IQ4toF(_iq4 A); +extern float _IQ3toF(_iq3 A); +extern float _IQ2toF(_iq2 A); +extern float _IQ1toF(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQtoF(A) _IQ30toF(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQtoF(A) _IQ29toF(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQtoF(A) _IQ28toF(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQtoF(A) _IQ27toF(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQtoF(A) _IQ26toF(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQtoF(A) _IQ25toF(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQtoF(A) _IQ24toF(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQtoF(A) _IQ23toF(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQtoF(A) _IQ22toF(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQtoF(A) _IQ21toF(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQtoF(A) _IQ20toF(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQtoF(A) _IQ19toF(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQtoF(A) _IQ18toF(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQtoF(A) _IQ17toF(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQtoF(A) _IQ16toF(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQtoF(A) _IQ15toF(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQtoF(A) _IQ14toF(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQtoF(A) _IQ13toF(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQtoF(A) _IQ12toF(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQtoF(A) _IQ11toF(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQtoF(A) _IQ10toF(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQtoF(A) _IQ9toF(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQtoF(A) _IQ8toF(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQtoF(A) _IQ7toF(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQtoF(A) _IQ6toF(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQtoF(A) _IQ5toF(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQtoF(A) _IQ4toF(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQtoF(A) _IQ3toF(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQtoF(A) _IQ2toF(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQtoF(A) _IQ1toF(A) +#endif + +//***************************************************************************** +// +// Saturates an IQ number in a given range. +// +//***************************************************************************** +#define _IQsat(A, Pos, Neg) (((A) > (Pos)) ? \ + (Pos) : \ + (((A) < (Neg)) ? (Neg) : (A))) + +//***************************************************************************** +// +// Converts an IQ number between the global IQ format and a specified IQ +// format. +// +//***************************************************************************** +#define _IQtoIQ30(A) ((_iq30)(A) << (30 - GLOBAL_IQ)) +#define _IQ30toIQ(A) ((_iq30)(A) >> (30 - GLOBAL_IQ)) + +#if (GLOBAL_IQ >= 29) +#define _IQtoIQ29(A) ((_iq29)(A) >> (GLOBAL_IQ - 29)) +#define _IQ29toIQ(A) ((_iq29)(A) << (GLOBAL_IQ - 29)) +#else +#define _IQtoIQ29(A) ((_iq29)(A) << (29 - GLOBAL_IQ)) +#define _IQ29toIQ(A) ((_iq29)(A) >> (29 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 28) +#define _IQtoIQ28(A) ((_iq28)(A) >> (GLOBAL_IQ - 28)) +#define _IQ28toIQ(A) ((_iq28)(A) << (GLOBAL_IQ - 28)) +#else +#define _IQtoIQ28(A) ((_iq28)(A) << (28 - GLOBAL_IQ)) +#define _IQ28toIQ(A) ((_iq28)(A) >> (28 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 27) +#define _IQtoIQ27(A) ((_iq27)(A) >> (GLOBAL_IQ - 27)) +#define _IQ27toIQ(A) ((_iq27)(A) << (GLOBAL_IQ - 27)) +#else +#define _IQtoIQ27(A) ((_iq27)(A) << (27 - GLOBAL_IQ)) +#define _IQ27toIQ(A) ((_iq27)(A) >> (27 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 26) +#define _IQtoIQ26(A) ((_iq26)(A) >> (GLOBAL_IQ - 26)) +#define _IQ26toIQ(A) ((_iq26)(A) << (GLOBAL_IQ - 26)) +#else +#define _IQtoIQ26(A) ((_iq26)(A) << (26 - GLOBAL_IQ)) +#define _IQ26toIQ(A) ((_iq26)(A) >> (26 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 25) +#define _IQtoIQ25(A) ((_iq25)(A) >> (GLOBAL_IQ - 25)) +#define _IQ25toIQ(A) ((_iq25)(A) << (GLOBAL_IQ - 25)) +#else +#define _IQtoIQ25(A) ((_iq25)(A) << (25 - GLOBAL_IQ)) +#define _IQ25toIQ(A) ((_iq25)(A) >> (25 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 24) +#define _IQtoIQ24(A) ((_iq24)(A) >> (GLOBAL_IQ - 24)) +#define _IQ24toIQ(A) ((_iq24)(A) << (GLOBAL_IQ - 24)) +#else +#define _IQtoIQ24(A) ((_iq24)(A) << (24 - GLOBAL_IQ)) +#define _IQ24toIQ(A) ((_iq24)(A) >> (24 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 23) +#define _IQtoIQ23(A) ((_iq23)(A) >> (GLOBAL_IQ - 23)) +#define _IQ23toIQ(A) ((_iq23)(A) << (GLOBAL_IQ - 23)) +#else +#define _IQtoIQ23(A) ((_iq23)(A) << (23 - GLOBAL_IQ)) +#define _IQ23toIQ(A) ((_iq23)(A) >> (23 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 22) +#define _IQtoIQ22(A) ((_iq22)(A) >> (GLOBAL_IQ - 22)) +#define _IQ22toIQ(A) ((_iq22)(A) << (GLOBAL_IQ - 22)) +#else +#define _IQtoIQ22(A) ((_iq22)(A) << (22 - GLOBAL_IQ)) +#define _IQ22toIQ(A) ((_iq22)(A) >> (22 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 21) +#define _IQtoIQ21(A) ((_iq21)(A) >> (GLOBAL_IQ - 21)) +#define _IQ21toIQ(A) ((_iq21)(A) << (GLOBAL_IQ - 21)) +#else +#define _IQtoIQ21(A) ((_iq21)(A) << (21 - GLOBAL_IQ)) +#define _IQ21toIQ(A) ((_iq21)(A) >> (21 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 20) +#define _IQtoIQ20(A) ((_iq20)(A) >> (GLOBAL_IQ - 20)) +#define _IQ20toIQ(A) ((_iq20)(A) << (GLOBAL_IQ - 20)) +#else +#define _IQtoIQ20(A) ((_iq20)(A) << (20 - GLOBAL_IQ)) +#define _IQ20toIQ(A) ((_iq20)(A) >> (20 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 19) +#define _IQtoIQ19(A) ((_iq19)(A) >> (GLOBAL_IQ - 19)) +#define _IQ19toIQ(A) ((_iq19)(A) << (GLOBAL_IQ - 19)) +#else +#define _IQtoIQ19(A) ((_iq19)(A) << (19 - GLOBAL_IQ)) +#define _IQ19toIQ(A) ((_iq19)(A) >> (19 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 18) +#define _IQtoIQ18(A) ((_iq18)(A) >> (GLOBAL_IQ - 18)) +#define _IQ18toIQ(A) ((_iq18)(A) << (GLOBAL_IQ - 18)) +#else +#define _IQtoIQ18(A) ((_iq18)(A) << (18 - GLOBAL_IQ)) +#define _IQ18toIQ(A) ((_iq18)(A) >> (18 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 17) +#define _IQtoIQ17(A) ((_iq17)(A) >> (GLOBAL_IQ - 17)) +#define _IQ17toIQ(A) ((_iq17)(A) << (GLOBAL_IQ - 17)) +#else +#define _IQtoIQ17(A) ((_iq17)(A) << (17 - GLOBAL_IQ)) +#define _IQ17toIQ(A) ((_iq17)(A) >> (17 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 16) +#define _IQtoIQ16(A) ((_iq16)(A) >> (GLOBAL_IQ - 16)) +#define _IQ16toIQ(A) ((_iq16)(A) << (GLOBAL_IQ - 16)) +#else +#define _IQtoIQ16(A) ((_iq16)(A) << (16 - GLOBAL_IQ)) +#define _IQ16toIQ(A) ((_iq16)(A) >> (16 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 15) +#define _IQtoIQ15(A) ((_iq15)(A) >> (GLOBAL_IQ - 15)) +#define _IQ15toIQ(A) ((_iq15)(A) << (GLOBAL_IQ - 15)) +#else +#define _IQtoIQ15(A) ((_iq15)(A) << (15 - GLOBAL_IQ)) +#define _IQ15toIQ(A) ((_iq15)(A) >> (15 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 14) +#define _IQtoIQ14(A) ((_iq14)(A) >> (GLOBAL_IQ - 14)) +#define _IQ14toIQ(A) ((_iq14)(A) << (GLOBAL_IQ - 14)) +#else +#define _IQtoIQ14(A) ((_iq14)(A) << (14 - GLOBAL_IQ)) +#define _IQ14toIQ(A) ((_iq14)(A) >> (14 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 13) +#define _IQtoIQ13(A) ((_iq13)(A) >> (GLOBAL_IQ - 13)) +#define _IQ13toIQ(A) ((_iq13)(A) << (GLOBAL_IQ - 13)) +#else +#define _IQtoIQ13(A) ((_iq13)(A) << (13 - GLOBAL_IQ)) +#define _IQ13toIQ(A) ((_iq13)(A) >> (13 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 12) +#define _IQtoIQ12(A) ((_iq12)(A) >> (GLOBAL_IQ - 12)) +#define _IQ12toIQ(A) ((_iq12)(A) << (GLOBAL_IQ - 12)) +#else +#define _IQtoIQ12(A) ((_iq12)(A) << (12 - GLOBAL_IQ)) +#define _IQ12toIQ(A) ((_iq12)(A) >> (12 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 11) +#define _IQtoIQ11(A) ((_iq11)(A) >> (GLOBAL_IQ - 11)) +#define _IQ11toIQ(A) ((_iq11)(A) << (GLOBAL_IQ - 11)) +#else +#define _IQtoIQ11(A) ((_iq11)(A) << (11 - GLOBAL_IQ)) +#define _IQ11toIQ(A) ((_iq11)(A) >> (11 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 10) +#define _IQtoIQ10(A) ((_iq10)(A) >> (GLOBAL_IQ - 10)) +#define _IQ10toIQ(A) ((_iq10)(A) << (GLOBAL_IQ - 10)) +#else +#define _IQtoIQ10(A) ((_iq10)(A) << (10 - GLOBAL_IQ)) +#define _IQ10toIQ(A) ((_iq10)(A) >> (10 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 9) +#define _IQtoIQ9(A) ((_iq9)(A) >> (GLOBAL_IQ - 9)) +#define _IQ9toIQ(A) ((_iq9)(A) << (GLOBAL_IQ - 9)) +#else +#define _IQtoIQ9(A) ((_iq9)(A) << (9 - GLOBAL_IQ)) +#define _IQ9toIQ(A) ((_iq9)(A) >> (9 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 8) +#define _IQtoIQ8(A) ((_iq8)(A) >> (GLOBAL_IQ - 8)) +#define _IQ8toIQ(A) ((_iq8)(A) << (GLOBAL_IQ - 8)) +#else +#define _IQtoIQ8(A) ((_iq8)(A) << (8 - GLOBAL_IQ)) +#define _IQ8toIQ(A) ((_iq8)(A) >> (8 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 7) +#define _IQtoIQ7(A) ((_iq7)(A) >> (GLOBAL_IQ - 7)) +#define _IQ7toIQ(A) ((_iq7)(A) << (GLOBAL_IQ - 7)) +#else +#define _IQtoIQ7(A) ((_iq7)(A) << (7 - GLOBAL_IQ)) +#define _IQ7toIQ(A) ((_iq7)(A) >> (7 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 6) +#define _IQtoIQ6(A) ((_iq6)(A) >> (GLOBAL_IQ - 6)) +#define _IQ6toIQ(A) ((_iq6)(A) << (GLOBAL_IQ - 6)) +#else +#define _IQtoIQ6(A) ((_iq6)(A) << (6 - GLOBAL_IQ)) +#define _IQ6toIQ(A) ((_iq6)(A) >> (6 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 5) +#define _IQtoIQ5(A) ((_iq5)(A) >> (GLOBAL_IQ - 5)) +#define _IQ5toIQ(A) ((_iq5)(A) << (GLOBAL_IQ - 5)) +#else +#define _IQtoIQ5(A) ((_iq5)(A) << (5 - GLOBAL_IQ)) +#define _IQ5toIQ(A) ((_iq5)(A) >> (5 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 4) +#define _IQtoIQ4(A) ((_iq4)(A) >> (GLOBAL_IQ - 4)) +#define _IQ4toIQ(A) ((_iq4)(A) << (GLOBAL_IQ - 4)) +#else +#define _IQtoIQ4(A) ((_iq4)(A) << (4 - GLOBAL_IQ)) +#define _IQ4toIQ(A) ((_iq4)(A) >> (4 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 3) +#define _IQtoIQ3(A) ((_iq3)(A) >> (GLOBAL_IQ - 3)) +#define _IQ3toIQ(A) ((_iq3)(A) << (GLOBAL_IQ - 3)) +#else +#define _IQtoIQ3(A) ((_iq3)(A) << (3 - GLOBAL_IQ)) +#define _IQ3toIQ(A) ((_iq3)(A) >> (3 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 2) +#define _IQtoIQ2(A) ((_iq2)(A) >> (GLOBAL_IQ - 2)) +#define _IQ2toIQ(A) ((_iq2)(A) << (GLOBAL_IQ - 2)) +#else +#define _IQtoIQ2(A) ((_iq2)(A) << (2 - GLOBAL_IQ)) +#define _IQ2toIQ(A) ((_iq2)(A) >> (2 - GLOBAL_IQ)) +#endif + +#define _IQtoIQ1(A) ((_iq1)(A) >> (GLOBAL_IQ - 1)) +#define _IQ1toIQ(A) ((_iq1)(A) << (GLOBAL_IQ - 1)) + +//***************************************************************************** +// +// Converts a number between IQ format and 16-bit Qn format. +// +//***************************************************************************** +#if (GLOBAL_IQ >= 15) +#define _IQtoQ15(A) ((int32_t)(A) >> (GLOBAL_IQ - 15)) +#define _Q15toIQ(A) ((_iq15)(A) << (GLOBAL_IQ - 15)) +#else +#define _IQtoQ15(A) ((int32_t)(A) << (15 - GLOBAL_IQ)) +#define _Q15toIQ(A) ((_iq15)(A) >> (15 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 14) +#define _IQtoQ14(A) ((int32_t)(A) >> (GLOBAL_IQ - 14)) +#define _Q14toIQ(A) ((_iq14)(A) << (GLOBAL_IQ - 14)) +#else +#define _IQtoQ14(A) ((int32_t)(A) << (14 - GLOBAL_IQ)) +#define _Q14toIQ(A) ((_iq14)(A) >> (14 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 13) +#define _IQtoQ13(A) ((int32_t)(A) >> (GLOBAL_IQ - 13)) +#define _Q13toIQ(A) ((_iq13)(A) << (GLOBAL_IQ - 13)) +#else +#define _IQtoQ13(A) ((int32_t)(A) << (13 - GLOBAL_IQ)) +#define _Q13toIQ(A) ((_iq13)(A) >> (13 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 12) +#define _IQtoQ12(A) ((int32_t)(A) >> (GLOBAL_IQ - 12)) +#define _Q12toIQ(A) ((_iq12)(A) << (GLOBAL_IQ - 12)) +#else +#define _IQtoQ12(A) ((int32_t)(A) << (12 - GLOBAL_IQ)) +#define _Q12toIQ(A) ((_iq12)(A) >> (12 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 11) +#define _IQtoQ11(A) ((int32_t)(A) >> (GLOBAL_IQ - 11)) +#define _Q11toIQ(A) ((_iq11)(A) << (GLOBAL_IQ - 11)) +#else +#define _IQtoQ11(A) ((int32_t)(A) << (11 - GLOBAL_IQ)) +#define _Q11toIQ(A) ((_iq11)(A) >> (11 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 10) +#define _IQtoQ10(A) ((int32_t)(A) >> (GLOBAL_IQ - 10)) +#define _Q10toIQ(A) ((_iq10)(A) << (GLOBAL_IQ - 10)) +#else +#define _IQtoQ10(A) ((int32_t)(A) << (10 - GLOBAL_IQ)) +#define _Q10toIQ(A) ((_iq10)(A) >> (10 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 9) +#define _IQtoQ9(A) ((int32_t)(A) >> (GLOBAL_IQ - 9)) +#define _Q9toIQ(A) ((_iq9)(A) << (GLOBAL_IQ - 9)) +#else +#define _IQtoQ9(A) ((int32_t)(A) << (9 - GLOBAL_IQ)) +#define _Q9toIQ(A) ((_iq9)(A) >> (9 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 8) +#define _IQtoQ8(A) ((int32_t)(A) >> (GLOBAL_IQ - 8)) +#define _Q8toIQ(A) ((_iq8)(A) << (GLOBAL_IQ - 8)) +#else +#define _IQtoQ8(A) ((int32_t)(A) << (8 - GLOBAL_IQ)) +#define _Q8toIQ(A) ((_iq8)(A) >> (8 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 7) +#define _IQtoQ7(A) ((int32_t)(A) >> (GLOBAL_IQ - 7)) +#define _Q7toIQ(A) ((_iq7)(A) << (GLOBAL_IQ - 7)) +#else +#define _IQtoQ7(A) ((int32_t)(A) << (7 - GLOBAL_IQ)) +#define _Q7toIQ(A) ((_iq7)(A) >> (7 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 6) +#define _IQtoQ6(A) ((int32_t)(A) >> (GLOBAL_IQ - 6)) +#define _Q6toIQ(A) ((_iq6)(A) << (GLOBAL_IQ - 6)) +#else +#define _IQtoQ6(A) ((int32_t)(A) << (6 - GLOBAL_IQ)) +#define _Q6toIQ(A) ((_iq6)(A) >> (6 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 5) +#define _IQtoQ5(A) ((int32_t)(A) >> (GLOBAL_IQ - 5)) +#define _Q5toIQ(A) ((_iq5)(A) << (GLOBAL_IQ - 5)) +#else +#define _IQtoQ5(A) ((int32_t)(A) << (5 - GLOBAL_IQ)) +#define _Q5toIQ(A) ((_iq5)(A) >> (5 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 4) +#define _IQtoQ4(A) ((int32_t)(A) >> (GLOBAL_IQ - 4)) +#define _Q4toIQ(A) ((_iq4)(A) << (GLOBAL_IQ - 4)) +#else +#define _IQtoQ4(A) ((int32_t)(A) << (4 - GLOBAL_IQ)) +#define _Q4toIQ(A) ((_iq4)(A) >> (4 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 3) +#define _IQtoQ3(A) ((int32_t)(A) >> (GLOBAL_IQ - 3)) +#define _Q3toIQ(A) ((_iq3)(A) << (GLOBAL_IQ - 3)) +#else +#define _IQtoQ3(A) ((int32_t)(A) << (3 - GLOBAL_IQ)) +#define _Q3toIQ(A) ((_iq3)(A) >> (3 - GLOBAL_IQ)) +#endif + +#if (GLOBAL_IQ >= 2) +#define _IQtoQ2(A) ((int32_t)(A) >> (GLOBAL_IQ - 2)) +#define _Q2toIQ(A) ((_iq2)(A) << (GLOBAL_IQ - 2)) +#else +#define _IQtoQ2(A) ((int32_t)(A) << (2 - GLOBAL_IQ)) +#define _Q2toIQ(A) ((_iq2)(A) >> (2 - GLOBAL_IQ)) +#endif + +#define _IQtoQ1(A) ((int32_t)(A) >> (GLOBAL_IQ - 1)) +#define _Q1toIQ(A) ((_iq1)(A) << (GLOBAL_IQ - 1)) + +//***************************************************************************** +// +// Multiplies two IQ numbers. +// +//***************************************************************************** +extern _iq30 _IQ30mpy(_iq30 A, _iq30 B); +extern _iq29 _IQ29mpy(_iq29 A, _iq29 B); +extern _iq28 _IQ28mpy(_iq28 A, _iq28 B); +extern _iq27 _IQ27mpy(_iq27 A, _iq27 B); +extern _iq26 _IQ26mpy(_iq26 A, _iq26 B); +extern _iq25 _IQ25mpy(_iq25 A, _iq25 B); +extern _iq24 _IQ24mpy(_iq24 A, _iq24 B); +extern _iq23 _IQ23mpy(_iq23 A, _iq23 B); +extern _iq22 _IQ22mpy(_iq22 A, _iq22 B); +extern _iq21 _IQ21mpy(_iq21 A, _iq21 B); +extern _iq20 _IQ20mpy(_iq20 A, _iq20 B); +extern _iq19 _IQ19mpy(_iq19 A, _iq19 B); +extern _iq18 _IQ18mpy(_iq18 A, _iq18 B); +extern _iq17 _IQ17mpy(_iq17 A, _iq17 B); +extern _iq16 _IQ16mpy(_iq16 A, _iq16 B); +extern _iq15 _IQ15mpy(_iq15 A, _iq15 B); +extern _iq14 _IQ14mpy(_iq14 A, _iq14 B); +extern _iq13 _IQ13mpy(_iq13 A, _iq13 B); +extern _iq12 _IQ12mpy(_iq12 A, _iq12 B); +extern _iq11 _IQ11mpy(_iq11 A, _iq11 B); +extern _iq10 _IQ10mpy(_iq10 A, _iq10 B); +extern _iq9 _IQ9mpy(_iq9 A, _iq9 B); +extern _iq8 _IQ8mpy(_iq8 A, _iq8 B); +extern _iq7 _IQ7mpy(_iq7 A, _iq7 B); +extern _iq6 _IQ6mpy(_iq6 A, _iq6 B); +extern _iq5 _IQ5mpy(_iq5 A, _iq5 B); +extern _iq4 _IQ4mpy(_iq4 A, _iq4 B); +extern _iq3 _IQ3mpy(_iq3 A, _iq3 B); +extern _iq2 _IQ2mpy(_iq2 A, _iq2 B); +extern _iq1 _IQ1mpy(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 30 +#define _IQmpy(A, B) _IQ30mpy(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQmpy(A, B) _IQ29mpy(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQmpy(A, B) _IQ28mpy(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQmpy(A, B) _IQ27mpy(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQmpy(A, B) _IQ26mpy(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQmpy(A, B) _IQ25mpy(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQmpy(A, B) _IQ24mpy(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQmpy(A, B) _IQ23mpy(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQmpy(A, B) _IQ22mpy(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQmpy(A, B) _IQ21mpy(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQmpy(A, B) _IQ20mpy(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQmpy(A, B) _IQ19mpy(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQmpy(A, B) _IQ18mpy(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQmpy(A, B) _IQ17mpy(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQmpy(A, B) _IQ16mpy(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQmpy(A, B) _IQ15mpy(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQmpy(A, B) _IQ14mpy(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQmpy(A, B) _IQ13mpy(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQmpy(A, B) _IQ12mpy(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQmpy(A, B) _IQ11mpy(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQmpy(A, B) _IQ10mpy(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQmpy(A, B) _IQ9mpy(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQmpy(A, B) _IQ8mpy(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQmpy(A, B) _IQ7mpy(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQmpy(A, B) _IQ6mpy(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQmpy(A, B) _IQ5mpy(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQmpy(A, B) _IQ4mpy(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQmpy(A, B) _IQ3mpy(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQmpy(A, B) _IQ2mpy(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQmpy(A, B) _IQ1mpy(A, B) +#endif + +//***************************************************************************** +// +// Multiplies two IQ numbers, with rounding. +// +//***************************************************************************** +extern _iq30 _IQ30rmpy(_iq30 A, _iq30 B); +extern _iq29 _IQ29rmpy(_iq29 A, _iq29 B); +extern _iq28 _IQ28rmpy(_iq28 A, _iq28 B); +extern _iq27 _IQ27rmpy(_iq27 A, _iq27 B); +extern _iq26 _IQ26rmpy(_iq26 A, _iq26 B); +extern _iq25 _IQ25rmpy(_iq25 A, _iq25 B); +extern _iq24 _IQ24rmpy(_iq24 A, _iq24 B); +extern _iq23 _IQ23rmpy(_iq23 A, _iq23 B); +extern _iq22 _IQ22rmpy(_iq22 A, _iq22 B); +extern _iq21 _IQ21rmpy(_iq21 A, _iq21 B); +extern _iq20 _IQ20rmpy(_iq20 A, _iq20 B); +extern _iq19 _IQ19rmpy(_iq19 A, _iq19 B); +extern _iq18 _IQ18rmpy(_iq18 A, _iq18 B); +extern _iq17 _IQ17rmpy(_iq17 A, _iq17 B); +extern _iq16 _IQ16rmpy(_iq16 A, _iq16 B); +extern _iq15 _IQ15rmpy(_iq15 A, _iq15 B); +extern _iq14 _IQ14rmpy(_iq14 A, _iq14 B); +extern _iq13 _IQ13rmpy(_iq13 A, _iq13 B); +extern _iq12 _IQ12rmpy(_iq12 A, _iq12 B); +extern _iq11 _IQ11rmpy(_iq11 A, _iq11 B); +extern _iq10 _IQ10rmpy(_iq10 A, _iq10 B); +extern _iq9 _IQ9rmpy(_iq9 A, _iq9 B); +extern _iq8 _IQ8rmpy(_iq8 A, _iq8 B); +extern _iq7 _IQ7rmpy(_iq7 A, _iq7 B); +extern _iq6 _IQ6rmpy(_iq6 A, _iq6 B); +extern _iq5 _IQ5rmpy(_iq5 A, _iq5 B); +extern _iq4 _IQ4rmpy(_iq4 A, _iq4 B); +extern _iq3 _IQ3rmpy(_iq3 A, _iq3 B); +extern _iq2 _IQ2rmpy(_iq2 A, _iq2 B); +extern _iq1 _IQ1rmpy(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 30 +#define _IQrmpy(A, B) _IQ30rmpy(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQrmpy(A, B) _IQ29rmpy(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQrmpy(A, B) _IQ28rmpy(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQrmpy(A, B) _IQ27rmpy(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQrmpy(A, B) _IQ26rmpy(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQrmpy(A, B) _IQ25rmpy(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQrmpy(A, B) _IQ24rmpy(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQrmpy(A, B) _IQ23rmpy(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQrmpy(A, B) _IQ22rmpy(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQrmpy(A, B) _IQ21rmpy(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQrmpy(A, B) _IQ20rmpy(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQrmpy(A, B) _IQ19rmpy(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQrmpy(A, B) _IQ18rmpy(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQrmpy(A, B) _IQ17rmpy(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQrmpy(A, B) _IQ16rmpy(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQrmpy(A, B) _IQ15rmpy(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQrmpy(A, B) _IQ14rmpy(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQrmpy(A, B) _IQ13rmpy(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQrmpy(A, B) _IQ12rmpy(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQrmpy(A, B) _IQ11rmpy(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQrmpy(A, B) _IQ10rmpy(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQrmpy(A, B) _IQ9rmpy(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQrmpy(A, B) _IQ8rmpy(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQrmpy(A, B) _IQ7rmpy(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQrmpy(A, B) _IQ6rmpy(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQrmpy(A, B) _IQ5rmpy(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQrmpy(A, B) _IQ4rmpy(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQrmpy(A, B) _IQ3rmpy(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQrmpy(A, B) _IQ2rmpy(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQrmpy(A, B) _IQ1rmpy(A, B) +#endif + +//***************************************************************************** +// +// Multiplies two IQ numbers, with rounding and saturation. +// +//***************************************************************************** +extern _iq30 _IQ30rsmpy(_iq30 A, _iq30 B); +extern _iq29 _IQ29rsmpy(_iq29 A, _iq29 B); +extern _iq28 _IQ28rsmpy(_iq28 A, _iq28 B); +extern _iq27 _IQ27rsmpy(_iq27 A, _iq27 B); +extern _iq26 _IQ26rsmpy(_iq26 A, _iq26 B); +extern _iq25 _IQ25rsmpy(_iq25 A, _iq25 B); +extern _iq24 _IQ24rsmpy(_iq24 A, _iq24 B); +extern _iq23 _IQ23rsmpy(_iq23 A, _iq23 B); +extern _iq22 _IQ22rsmpy(_iq22 A, _iq22 B); +extern _iq21 _IQ21rsmpy(_iq21 A, _iq21 B); +extern _iq20 _IQ20rsmpy(_iq20 A, _iq20 B); +extern _iq19 _IQ19rsmpy(_iq19 A, _iq19 B); +extern _iq18 _IQ18rsmpy(_iq18 A, _iq18 B); +extern _iq17 _IQ17rsmpy(_iq17 A, _iq17 B); +extern _iq16 _IQ16rsmpy(_iq16 A, _iq16 B); +extern _iq15 _IQ15rsmpy(_iq15 A, _iq15 B); +extern _iq14 _IQ14rsmpy(_iq14 A, _iq14 B); +extern _iq13 _IQ13rsmpy(_iq13 A, _iq13 B); +extern _iq12 _IQ12rsmpy(_iq12 A, _iq12 B); +extern _iq11 _IQ11rsmpy(_iq11 A, _iq11 B); +extern _iq10 _IQ10rsmpy(_iq10 A, _iq10 B); +extern _iq9 _IQ9rsmpy(_iq9 A, _iq9 B); +extern _iq8 _IQ8rsmpy(_iq8 A, _iq8 B); +extern _iq7 _IQ7rsmpy(_iq7 A, _iq7 B); +extern _iq6 _IQ6rsmpy(_iq6 A, _iq6 B); +extern _iq5 _IQ5rsmpy(_iq5 A, _iq5 B); +extern _iq4 _IQ4rsmpy(_iq4 A, _iq4 B); +extern _iq3 _IQ3rsmpy(_iq3 A, _iq3 B); +extern _iq2 _IQ2rsmpy(_iq2 A, _iq2 B); +extern _iq1 _IQ1rsmpy(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 30 +#define _IQrsmpy(A, B) _IQ30rsmpy(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQrsmpy(A, B) _IQ29rsmpy(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQrsmpy(A, B) _IQ28rsmpy(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQrsmpy(A, B) _IQ27rsmpy(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQrsmpy(A, B) _IQ26rsmpy(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQrsmpy(A, B) _IQ25rsmpy(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQrsmpy(A, B) _IQ24rsmpy(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQrsmpy(A, B) _IQ23rsmpy(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQrsmpy(A, B) _IQ22rsmpy(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQrsmpy(A, B) _IQ21rsmpy(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQrsmpy(A, B) _IQ20rsmpy(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQrsmpy(A, B) _IQ19rsmpy(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQrsmpy(A, B) _IQ18rsmpy(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQrsmpy(A, B) _IQ17rsmpy(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQrsmpy(A, B) _IQ16rsmpy(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQrsmpy(A, B) _IQ15rsmpy(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQrsmpy(A, B) _IQ14rsmpy(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQrsmpy(A, B) _IQ13rsmpy(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQrsmpy(A, B) _IQ12rsmpy(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQrsmpy(A, B) _IQ11rsmpy(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQrsmpy(A, B) _IQ10rsmpy(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQrsmpy(A, B) _IQ9rsmpy(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQrsmpy(A, B) _IQ8rsmpy(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQrsmpy(A, B) _IQ7rsmpy(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQrsmpy(A, B) _IQ6rsmpy(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQrsmpy(A, B) _IQ5rsmpy(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQrsmpy(A, B) _IQ4rsmpy(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQrsmpy(A, B) _IQ3rsmpy(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQrsmpy(A, B) _IQ2rsmpy(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQrsmpy(A, B) _IQ1rsmpy(A, B) +#endif + +//***************************************************************************** +// +// Divides two IQ numbers. +// +//***************************************************************************** +extern _iq30 _IQ30div(_iq30 A, _iq30 B); +extern _iq29 _IQ29div(_iq29 A, _iq29 B); +extern _iq28 _IQ28div(_iq28 A, _iq28 B); +extern _iq27 _IQ27div(_iq27 A, _iq27 B); +extern _iq26 _IQ26div(_iq26 A, _iq26 B); +extern _iq25 _IQ25div(_iq25 A, _iq25 B); +extern _iq24 _IQ24div(_iq24 A, _iq24 B); +extern _iq23 _IQ23div(_iq23 A, _iq23 B); +extern _iq22 _IQ22div(_iq22 A, _iq22 B); +extern _iq21 _IQ21div(_iq21 A, _iq21 B); +extern _iq20 _IQ20div(_iq20 A, _iq20 B); +extern _iq19 _IQ19div(_iq19 A, _iq19 B); +extern _iq18 _IQ18div(_iq18 A, _iq18 B); +extern _iq17 _IQ17div(_iq17 A, _iq17 B); +extern _iq16 _IQ16div(_iq16 A, _iq16 B); +extern _iq15 _IQ15div(_iq15 A, _iq15 B); +extern _iq14 _IQ14div(_iq14 A, _iq14 B); +extern _iq13 _IQ13div(_iq13 A, _iq13 B); +extern _iq12 _IQ12div(_iq12 A, _iq12 B); +extern _iq11 _IQ11div(_iq11 A, _iq11 B); +extern _iq10 _IQ10div(_iq10 A, _iq10 B); +extern _iq9 _IQ9div(_iq9 A, _iq9 B); +extern _iq8 _IQ8div(_iq8 A, _iq8 B); +extern _iq7 _IQ7div(_iq7 A, _iq7 B); +extern _iq6 _IQ6div(_iq6 A, _iq6 B); +extern _iq5 _IQ5div(_iq5 A, _iq5 B); +extern _iq4 _IQ4div(_iq4 A, _iq4 B); +extern _iq3 _IQ3div(_iq3 A, _iq3 B); +extern _iq2 _IQ2div(_iq2 A, _iq2 B); +extern _iq1 _IQ1div(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 30 +#define _IQdiv(A, B) _IQ30div(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQdiv(A, B) _IQ29div(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQdiv(A, B) _IQ28div(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQdiv(A, B) _IQ27div(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQdiv(A, B) _IQ26div(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQdiv(A, B) _IQ25div(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQdiv(A, B) _IQ24div(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQdiv(A, B) _IQ23div(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQdiv(A, B) _IQ22div(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQdiv(A, B) _IQ21div(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQdiv(A, B) _IQ20div(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQdiv(A, B) _IQ19div(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQdiv(A, B) _IQ18div(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQdiv(A, B) _IQ17div(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQdiv(A, B) _IQ16div(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQdiv(A, B) _IQ15div(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQdiv(A, B) _IQ14div(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQdiv(A, B) _IQ13div(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQdiv(A, B) _IQ12div(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQdiv(A, B) _IQ11div(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQdiv(A, B) _IQ10div(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQdiv(A, B) _IQ9div(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQdiv(A, B) _IQ8div(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQdiv(A, B) _IQ7div(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQdiv(A, B) _IQ6div(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQdiv(A, B) _IQ5div(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQdiv(A, B) _IQ4div(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQdiv(A, B) _IQ3div(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQdiv(A, B) _IQ2div(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQdiv(A, B) _IQ1div(A, B) +#endif + +//***************************************************************************** +// +// Computes the sin of an IQ number. +// +//***************************************************************************** +extern _iq29 _IQ29sin(_iq29 A); +extern _iq28 _IQ28sin(_iq28 A); +extern _iq27 _IQ27sin(_iq27 A); +extern _iq26 _IQ26sin(_iq26 A); +extern _iq25 _IQ25sin(_iq25 A); +extern _iq24 _IQ24sin(_iq24 A); +extern _iq23 _IQ23sin(_iq23 A); +extern _iq22 _IQ22sin(_iq22 A); +extern _iq21 _IQ21sin(_iq21 A); +extern _iq20 _IQ20sin(_iq20 A); +extern _iq19 _IQ19sin(_iq19 A); +extern _iq18 _IQ18sin(_iq18 A); +extern _iq17 _IQ17sin(_iq17 A); +extern _iq16 _IQ16sin(_iq16 A); +extern _iq15 _IQ15sin(_iq15 A); +extern _iq14 _IQ14sin(_iq14 A); +extern _iq13 _IQ13sin(_iq13 A); +extern _iq12 _IQ12sin(_iq12 A); +extern _iq11 _IQ11sin(_iq11 A); +extern _iq10 _IQ10sin(_iq10 A); +extern _iq9 _IQ9sin(_iq9 A); +extern _iq8 _IQ8sin(_iq8 A); +extern _iq7 _IQ7sin(_iq7 A); +extern _iq6 _IQ6sin(_iq6 A); +extern _iq5 _IQ5sin(_iq5 A); +extern _iq4 _IQ4sin(_iq4 A); +extern _iq3 _IQ3sin(_iq3 A); +extern _iq2 _IQ2sin(_iq2 A); +extern _iq1 _IQ1sin(_iq1 A); + +#if GLOBAL_IQ == 29 +#define _IQsin(A) _IQ29sin(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQsin(A) _IQ28sin(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQsin(A) _IQ27sin(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQsin(A) _IQ26sin(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQsin(A) _IQ25sin(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQsin(A) _IQ24sin(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQsin(A) _IQ23sin(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQsin(A) _IQ22sin(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQsin(A) _IQ21sin(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQsin(A) _IQ20sin(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQsin(A) _IQ19sin(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQsin(A) _IQ18sin(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQsin(A) _IQ17sin(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQsin(A) _IQ16sin(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQsin(A) _IQ15sin(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQsin(A) _IQ14sin(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQsin(A) _IQ13sin(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQsin(A) _IQ12sin(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQsin(A) _IQ11sin(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQsin(A) _IQ10sin(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQsin(A) _IQ9sin(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQsin(A) _IQ8sin(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQsin(A) _IQ7sin(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQsin(A) _IQ6sin(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQsin(A) _IQ5sin(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQsin(A) _IQ4sin(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQsin(A) _IQ3sin(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQsin(A) _IQ2sin(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQsin(A) _IQ1sin(A) +#endif + +//***************************************************************************** +// +// Computes the sin of an IQ number, using cycles per unit instead of radians. +// +//***************************************************************************** +extern _iq30 _IQ30sinPU(_iq30 A); +extern _iq29 _IQ29sinPU(_iq29 A); +extern _iq28 _IQ28sinPU(_iq28 A); +extern _iq27 _IQ27sinPU(_iq27 A); +extern _iq26 _IQ26sinPU(_iq26 A); +extern _iq25 _IQ25sinPU(_iq25 A); +extern _iq24 _IQ24sinPU(_iq24 A); +extern _iq23 _IQ23sinPU(_iq23 A); +extern _iq22 _IQ22sinPU(_iq22 A); +extern _iq21 _IQ21sinPU(_iq21 A); +extern _iq20 _IQ20sinPU(_iq20 A); +extern _iq19 _IQ19sinPU(_iq19 A); +extern _iq18 _IQ18sinPU(_iq18 A); +extern _iq17 _IQ17sinPU(_iq17 A); +extern _iq16 _IQ16sinPU(_iq16 A); +extern _iq15 _IQ15sinPU(_iq15 A); +extern _iq14 _IQ14sinPU(_iq14 A); +extern _iq13 _IQ13sinPU(_iq13 A); +extern _iq12 _IQ12sinPU(_iq12 A); +extern _iq11 _IQ11sinPU(_iq11 A); +extern _iq10 _IQ10sinPU(_iq10 A); +extern _iq9 _IQ9sinPU(_iq9 A); +extern _iq8 _IQ8sinPU(_iq8 A); +extern _iq7 _IQ7sinPU(_iq7 A); +extern _iq6 _IQ6sinPU(_iq6 A); +extern _iq5 _IQ5sinPU(_iq5 A); +extern _iq4 _IQ4sinPU(_iq4 A); +extern _iq3 _IQ3sinPU(_iq3 A); +extern _iq2 _IQ2sinPU(_iq2 A); +extern _iq1 _IQ1sinPU(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQsinPU(A) _IQ30sinPU(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQsinPU(A) _IQ29sinPU(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQsinPU(A) _IQ28sinPU(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQsinPU(A) _IQ27sinPU(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQsinPU(A) _IQ26sinPU(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQsinPU(A) _IQ25sinPU(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQsinPU(A) _IQ24sinPU(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQsinPU(A) _IQ23sinPU(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQsinPU(A) _IQ22sinPU(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQsinPU(A) _IQ21sinPU(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQsinPU(A) _IQ20sinPU(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQsinPU(A) _IQ19sinPU(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQsinPU(A) _IQ18sinPU(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQsinPU(A) _IQ17sinPU(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQsinPU(A) _IQ16sinPU(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQsinPU(A) _IQ15sinPU(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQsinPU(A) _IQ14sinPU(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQsinPU(A) _IQ13sinPU(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQsinPU(A) _IQ12sinPU(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQsinPU(A) _IQ11sinPU(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQsinPU(A) _IQ10sinPU(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQsinPU(A) _IQ9sinPU(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQsinPU(A) _IQ8sinPU(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQsinPU(A) _IQ7sinPU(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQsinPU(A) _IQ6sinPU(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQsinPU(A) _IQ5sinPU(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQsinPU(A) _IQ4sinPU(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQsinPU(A) _IQ3sinPU(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQsinPU(A) _IQ2sinPU(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQsinPU(A) _IQ1sinPU(A) +#endif + +//***************************************************************************** +// +// Computes the arcsin of an IQ number. +// +//***************************************************************************** +extern _iq29 _IQ29asin(_iq29 A); +extern _iq28 _IQ28asin(_iq28 A); +extern _iq27 _IQ27asin(_iq27 A); +extern _iq26 _IQ26asin(_iq26 A); +extern _iq25 _IQ25asin(_iq25 A); +extern _iq24 _IQ24asin(_iq24 A); +extern _iq23 _IQ23asin(_iq23 A); +extern _iq22 _IQ22asin(_iq22 A); +extern _iq21 _IQ21asin(_iq21 A); +extern _iq20 _IQ20asin(_iq20 A); +extern _iq19 _IQ19asin(_iq19 A); +extern _iq18 _IQ18asin(_iq18 A); +extern _iq17 _IQ17asin(_iq17 A); +extern _iq16 _IQ16asin(_iq16 A); +extern _iq15 _IQ15asin(_iq15 A); +extern _iq14 _IQ14asin(_iq14 A); +extern _iq13 _IQ13asin(_iq13 A); +extern _iq12 _IQ12asin(_iq12 A); +extern _iq11 _IQ11asin(_iq11 A); +extern _iq10 _IQ10asin(_iq10 A); +extern _iq9 _IQ9asin(_iq9 A); +extern _iq8 _IQ8asin(_iq8 A); +extern _iq7 _IQ7asin(_iq7 A); +extern _iq6 _IQ6asin(_iq6 A); +extern _iq5 _IQ5asin(_iq5 A); +extern _iq4 _IQ4asin(_iq4 A); +extern _iq3 _IQ3asin(_iq3 A); +extern _iq2 _IQ2asin(_iq2 A); +extern _iq1 _IQ1asin(_iq1 A); + +#if GLOBAL_IQ == 29 +#define _IQasin(A) _IQ29asin(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQasin(A) _IQ28asin(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQasin(A) _IQ27asin(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQasin(A) _IQ26asin(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQasin(A) _IQ25asin(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQasin(A) _IQ24asin(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQasin(A) _IQ23asin(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQasin(A) _IQ22asin(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQasin(A) _IQ21asin(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQasin(A) _IQ20asin(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQasin(A) _IQ19asin(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQasin(A) _IQ18asin(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQasin(A) _IQ17asin(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQasin(A) _IQ16asin(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQasin(A) _IQ15asin(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQasin(A) _IQ14asin(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQasin(A) _IQ13asin(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQasin(A) _IQ12asin(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQasin(A) _IQ11asin(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQasin(A) _IQ10asin(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQasin(A) _IQ9asin(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQasin(A) _IQ8asin(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQasin(A) _IQ7asin(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQasin(A) _IQ6asin(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQasin(A) _IQ5asin(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQasin(A) _IQ4asin(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQasin(A) _IQ3asin(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQasin(A) _IQ2asin(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQasin(A) _IQ1asin(A) +#endif + +//***************************************************************************** +// +// Computes the cos of an IQ number. +// +//***************************************************************************** +extern _iq29 _IQ29cos(_iq29 A); +extern _iq28 _IQ28cos(_iq28 A); +extern _iq27 _IQ27cos(_iq27 A); +extern _iq26 _IQ26cos(_iq26 A); +extern _iq25 _IQ25cos(_iq25 A); +extern _iq24 _IQ24cos(_iq24 A); +extern _iq23 _IQ23cos(_iq23 A); +extern _iq22 _IQ22cos(_iq22 A); +extern _iq21 _IQ21cos(_iq21 A); +extern _iq20 _IQ20cos(_iq20 A); +extern _iq19 _IQ19cos(_iq19 A); +extern _iq18 _IQ18cos(_iq18 A); +extern _iq17 _IQ17cos(_iq17 A); +extern _iq16 _IQ16cos(_iq16 A); +extern _iq15 _IQ15cos(_iq15 A); +extern _iq14 _IQ14cos(_iq14 A); +extern _iq13 _IQ13cos(_iq13 A); +extern _iq12 _IQ12cos(_iq12 A); +extern _iq11 _IQ11cos(_iq11 A); +extern _iq10 _IQ10cos(_iq10 A); +extern _iq9 _IQ9cos(_iq9 A); +extern _iq8 _IQ8cos(_iq8 A); +extern _iq7 _IQ7cos(_iq7 A); +extern _iq6 _IQ6cos(_iq6 A); +extern _iq5 _IQ5cos(_iq5 A); +extern _iq4 _IQ4cos(_iq4 A); +extern _iq3 _IQ3cos(_iq3 A); +extern _iq2 _IQ2cos(_iq2 A); +extern _iq1 _IQ1cos(_iq1 A); + +#if GLOBAL_IQ == 29 +#define _IQcos(A) _IQ29cos(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQcos(A) _IQ28cos(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQcos(A) _IQ27cos(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQcos(A) _IQ26cos(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQcos(A) _IQ25cos(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQcos(A) _IQ24cos(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQcos(A) _IQ23cos(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQcos(A) _IQ22cos(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQcos(A) _IQ21cos(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQcos(A) _IQ20cos(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQcos(A) _IQ19cos(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQcos(A) _IQ18cos(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQcos(A) _IQ17cos(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQcos(A) _IQ16cos(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQcos(A) _IQ15cos(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQcos(A) _IQ14cos(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQcos(A) _IQ13cos(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQcos(A) _IQ12cos(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQcos(A) _IQ11cos(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQcos(A) _IQ10cos(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQcos(A) _IQ9cos(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQcos(A) _IQ8cos(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQcos(A) _IQ7cos(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQcos(A) _IQ6cos(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQcos(A) _IQ5cos(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQcos(A) _IQ4cos(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQcos(A) _IQ3cos(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQcos(A) _IQ2cos(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQcos(A) _IQ1cos(A) +#endif + +//***************************************************************************** +// +// Computes the cos of an IQ number, using cycles per unit instead of radians. +// +//***************************************************************************** +extern _iq30 _IQ30cosPU(_iq30 A); +extern _iq29 _IQ29cosPU(_iq29 A); +extern _iq28 _IQ28cosPU(_iq28 A); +extern _iq27 _IQ27cosPU(_iq27 A); +extern _iq26 _IQ26cosPU(_iq26 A); +extern _iq25 _IQ25cosPU(_iq25 A); +extern _iq24 _IQ24cosPU(_iq24 A); +extern _iq23 _IQ23cosPU(_iq23 A); +extern _iq22 _IQ22cosPU(_iq22 A); +extern _iq21 _IQ21cosPU(_iq21 A); +extern _iq20 _IQ20cosPU(_iq20 A); +extern _iq19 _IQ19cosPU(_iq19 A); +extern _iq18 _IQ18cosPU(_iq18 A); +extern _iq17 _IQ17cosPU(_iq17 A); +extern _iq16 _IQ16cosPU(_iq16 A); +extern _iq15 _IQ15cosPU(_iq15 A); +extern _iq14 _IQ14cosPU(_iq14 A); +extern _iq13 _IQ13cosPU(_iq13 A); +extern _iq12 _IQ12cosPU(_iq12 A); +extern _iq11 _IQ11cosPU(_iq11 A); +extern _iq10 _IQ10cosPU(_iq10 A); +extern _iq9 _IQ9cosPU(_iq9 A); +extern _iq8 _IQ8cosPU(_iq8 A); +extern _iq7 _IQ7cosPU(_iq7 A); +extern _iq6 _IQ6cosPU(_iq6 A); +extern _iq5 _IQ5cosPU(_iq5 A); +extern _iq4 _IQ4cosPU(_iq4 A); +extern _iq3 _IQ3cosPU(_iq3 A); +extern _iq2 _IQ2cosPU(_iq2 A); +extern _iq1 _IQ1cosPU(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQcosPU(A) _IQ30cosPU(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQcosPU(A) _IQ29cosPU(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQcosPU(A) _IQ28cosPU(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQcosPU(A) _IQ27cosPU(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQcosPU(A) _IQ26cosPU(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQcosPU(A) _IQ25cosPU(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQcosPU(A) _IQ24cosPU(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQcosPU(A) _IQ23cosPU(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQcosPU(A) _IQ22cosPU(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQcosPU(A) _IQ21cosPU(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQcosPU(A) _IQ20cosPU(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQcosPU(A) _IQ19cosPU(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQcosPU(A) _IQ18cosPU(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQcosPU(A) _IQ17cosPU(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQcosPU(A) _IQ16cosPU(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQcosPU(A) _IQ15cosPU(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQcosPU(A) _IQ14cosPU(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQcosPU(A) _IQ13cosPU(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQcosPU(A) _IQ12cosPU(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQcosPU(A) _IQ11cosPU(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQcosPU(A) _IQ10cosPU(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQcosPU(A) _IQ9cosPU(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQcosPU(A) _IQ8cosPU(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQcosPU(A) _IQ7cosPU(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQcosPU(A) _IQ6cosPU(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQcosPU(A) _IQ5cosPU(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQcosPU(A) _IQ4cosPU(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQcosPU(A) _IQ3cosPU(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQcosPU(A) _IQ2cosPU(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQcosPU(A) _IQ1cosPU(A) +#endif + +//***************************************************************************** +// +// Computes the arccos of an IQ number. +// +//***************************************************************************** +#define _IQ29acos(A) (_IQ29(1.570796327) - _IQ29asin(A)) +#define _IQ28acos(A) (_IQ28(1.570796327) - _IQ28asin(A)) +#define _IQ27acos(A) (_IQ27(1.570796327) - _IQ27asin(A)) +#define _IQ26acos(A) (_IQ26(1.570796327) - _IQ26asin(A)) +#define _IQ25acos(A) (_IQ25(1.570796327) - _IQ25asin(A)) +#define _IQ24acos(A) (_IQ24(1.570796327) - _IQ24asin(A)) +#define _IQ23acos(A) (_IQ23(1.570796327) - _IQ23asin(A)) +#define _IQ22acos(A) (_IQ22(1.570796327) - _IQ22asin(A)) +#define _IQ21acos(A) (_IQ21(1.570796327) - _IQ21asin(A)) +#define _IQ20acos(A) (_IQ20(1.570796327) - _IQ20asin(A)) +#define _IQ19acos(A) (_IQ19(1.570796327) - _IQ19asin(A)) +#define _IQ18acos(A) (_IQ18(1.570796327) - _IQ18asin(A)) +#define _IQ17acos(A) (_IQ17(1.570796327) - _IQ17asin(A)) +#define _IQ16acos(A) (_IQ16(1.570796327) - _IQ16asin(A)) +#define _IQ15acos(A) (_IQ15(1.570796327) - _IQ15asin(A)) +#define _IQ14acos(A) (_IQ14(1.570796327) - _IQ14asin(A)) +#define _IQ13acos(A) (_IQ13(1.570796327) - _IQ13asin(A)) +#define _IQ12acos(A) (_IQ12(1.570796327) - _IQ12asin(A)) +#define _IQ11acos(A) (_IQ11(1.570796327) - _IQ11asin(A)) +#define _IQ10acos(A) (_IQ10(1.570796327) - _IQ10asin(A)) +#define _IQ9acos(A) (_IQ9(1.570796327) - _IQ9asin(A)) +#define _IQ8acos(A) (_IQ8(1.570796327) - _IQ8asin(A)) +#define _IQ7acos(A) (_IQ7(1.570796327) - _IQ7asin(A)) +#define _IQ6acos(A) (_IQ6(1.570796327) - _IQ6asin(A)) +#define _IQ5acos(A) (_IQ5(1.570796327) - _IQ5asin(A)) +#define _IQ4acos(A) (_IQ4(1.570796327) - _IQ4asin(A)) +#define _IQ3acos(A) (_IQ3(1.570796327) - _IQ3asin(A)) +#define _IQ2acos(A) (_IQ2(1.570796327) - _IQ2asin(A)) +#define _IQ1acos(A) (_IQ1(1.570796327) - _IQ1asin(A)) + +#if GLOBAL_IQ == 29 +#define _IQacos(A) _IQ29acos(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQacos(A) _IQ28acos(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQacos(A) _IQ27acos(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQacos(A) _IQ26acos(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQacos(A) _IQ25acos(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQacos(A) _IQ24acos(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQacos(A) _IQ23acos(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQacos(A) _IQ22acos(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQacos(A) _IQ21acos(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQacos(A) _IQ20acos(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQacos(A) _IQ19acos(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQacos(A) _IQ18acos(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQacos(A) _IQ17acos(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQacos(A) _IQ16acos(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQacos(A) _IQ15acos(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQacos(A) _IQ14acos(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQacos(A) _IQ13acos(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQacos(A) _IQ12acos(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQacos(A) _IQ11acos(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQacos(A) _IQ10acos(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQacos(A) _IQ9acos(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQacos(A) _IQ8acos(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQacos(A) _IQ7acos(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQacos(A) _IQ6acos(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQacos(A) _IQ5acos(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQacos(A) _IQ4acos(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQacos(A) _IQ3acos(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQacos(A) _IQ2acos(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQacos(A) _IQ1acos(A) +#endif + +//***************************************************************************** +// +// Computes the arctan of a coordinate specified by two IQ numbers. +// +//***************************************************************************** +extern _iq29 _IQ29atan2(_iq29 A, _iq29 B); +extern _iq28 _IQ28atan2(_iq28 A, _iq28 B); +extern _iq27 _IQ27atan2(_iq27 A, _iq27 B); +extern _iq26 _IQ26atan2(_iq26 A, _iq26 B); +extern _iq25 _IQ25atan2(_iq25 A, _iq25 B); +extern _iq24 _IQ24atan2(_iq24 A, _iq24 B); +extern _iq23 _IQ23atan2(_iq23 A, _iq23 B); +extern _iq22 _IQ22atan2(_iq22 A, _iq22 B); +extern _iq21 _IQ21atan2(_iq21 A, _iq21 B); +extern _iq20 _IQ20atan2(_iq20 A, _iq20 B); +extern _iq19 _IQ19atan2(_iq19 A, _iq19 B); +extern _iq18 _IQ18atan2(_iq18 A, _iq18 B); +extern _iq17 _IQ17atan2(_iq17 A, _iq17 B); +extern _iq16 _IQ16atan2(_iq16 A, _iq16 B); +extern _iq15 _IQ15atan2(_iq15 A, _iq15 B); +extern _iq14 _IQ14atan2(_iq14 A, _iq14 B); +extern _iq13 _IQ13atan2(_iq13 A, _iq13 B); +extern _iq12 _IQ12atan2(_iq12 A, _iq12 B); +extern _iq11 _IQ11atan2(_iq11 A, _iq11 B); +extern _iq10 _IQ10atan2(_iq10 A, _iq10 B); +extern _iq9 _IQ9atan2(_iq9 A, _iq9 B); +extern _iq8 _IQ8atan2(_iq8 A, _iq8 B); +extern _iq7 _IQ7atan2(_iq7 A, _iq7 B); +extern _iq6 _IQ6atan2(_iq6 A, _iq6 B); +extern _iq5 _IQ5atan2(_iq5 A, _iq5 B); +extern _iq4 _IQ4atan2(_iq4 A, _iq4 B); +extern _iq3 _IQ3atan2(_iq3 A, _iq3 B); +extern _iq2 _IQ2atan2(_iq2 A, _iq2 B); +extern _iq1 _IQ1atan2(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 29 +#define _IQatan2(A, B) _IQ29atan2(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQatan2(A, B) _IQ28atan2(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQatan2(A, B) _IQ27atan2(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQatan2(A, B) _IQ26atan2(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQatan2(A, B) _IQ25atan2(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQatan2(A, B) _IQ24atan2(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQatan2(A, B) _IQ23atan2(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQatan2(A, B) _IQ22atan2(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQatan2(A, B) _IQ21atan2(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQatan2(A, B) _IQ20atan2(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQatan2(A, B) _IQ19atan2(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQatan2(A, B) _IQ18atan2(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQatan2(A, B) _IQ17atan2(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQatan2(A, B) _IQ16atan2(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQatan2(A, B) _IQ15atan2(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQatan2(A, B) _IQ14atan2(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQatan2(A, B) _IQ13atan2(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQatan2(A, B) _IQ12atan2(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQatan2(A, B) _IQ11atan2(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQatan2(A, B) _IQ10atan2(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQatan2(A, B) _IQ9atan2(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQatan2(A, B) _IQ8atan2(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQatan2(A, B) _IQ7atan2(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQatan2(A, B) _IQ6atan2(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQatan2(A, B) _IQ5atan2(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQatan2(A, B) _IQ4atan2(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQatan2(A, B) _IQ3atan2(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQatan2(A, B) _IQ2atan2(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQatan2(A, B) _IQ1atan2(A, B) +#endif + +//***************************************************************************** +// +// Computes the arctan of a coordinate specified by two IQ numbers, returning +// the value in cycles per unit instead of radians. +// +//***************************************************************************** +extern _iq30 _IQ30atan2PU(_iq30 A, _iq30 B); +extern _iq29 _IQ29atan2PU(_iq29 A, _iq29 B); +extern _iq28 _IQ28atan2PU(_iq28 A, _iq28 B); +extern _iq27 _IQ27atan2PU(_iq27 A, _iq27 B); +extern _iq26 _IQ26atan2PU(_iq26 A, _iq26 B); +extern _iq25 _IQ25atan2PU(_iq25 A, _iq25 B); +extern _iq24 _IQ24atan2PU(_iq24 A, _iq24 B); +extern _iq23 _IQ23atan2PU(_iq23 A, _iq23 B); +extern _iq22 _IQ22atan2PU(_iq22 A, _iq22 B); +extern _iq21 _IQ21atan2PU(_iq21 A, _iq21 B); +extern _iq20 _IQ20atan2PU(_iq20 A, _iq20 B); +extern _iq19 _IQ19atan2PU(_iq19 A, _iq19 B); +extern _iq18 _IQ18atan2PU(_iq18 A, _iq18 B); +extern _iq17 _IQ17atan2PU(_iq17 A, _iq17 B); +extern _iq16 _IQ16atan2PU(_iq16 A, _iq16 B); +extern _iq15 _IQ15atan2PU(_iq15 A, _iq15 B); +extern _iq14 _IQ14atan2PU(_iq14 A, _iq14 B); +extern _iq13 _IQ13atan2PU(_iq13 A, _iq13 B); +extern _iq12 _IQ12atan2PU(_iq12 A, _iq12 B); +extern _iq11 _IQ11atan2PU(_iq11 A, _iq11 B); +extern _iq10 _IQ10atan2PU(_iq10 A, _iq10 B); +extern _iq9 _IQ9atan2PU(_iq9 A, _iq9 B); +extern _iq8 _IQ8atan2PU(_iq8 A, _iq8 B); +extern _iq7 _IQ7atan2PU(_iq7 A, _iq7 B); +extern _iq6 _IQ6atan2PU(_iq6 A, _iq6 B); +extern _iq5 _IQ5atan2PU(_iq5 A, _iq5 B); +extern _iq4 _IQ4atan2PU(_iq4 A, _iq4 B); +extern _iq3 _IQ3atan2PU(_iq3 A, _iq3 B); +extern _iq2 _IQ2atan2PU(_iq2 A, _iq2 B); +extern _iq1 _IQ1atan2PU(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 30 +#define _IQatan2PU(A, B) _IQ30atan2PU(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQatan2PU(A, B) _IQ29atan2PU(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQatan2PU(A, B) _IQ28atan2PU(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQatan2PU(A, B) _IQ27atan2PU(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQatan2PU(A, B) _IQ26atan2PU(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQatan2PU(A, B) _IQ25atan2PU(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQatan2PU(A, B) _IQ24atan2PU(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQatan2PU(A, B) _IQ23atan2PU(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQatan2PU(A, B) _IQ22atan2PU(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQatan2PU(A, B) _IQ21atan2PU(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQatan2PU(A, B) _IQ20atan2PU(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQatan2PU(A, B) _IQ19atan2PU(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQatan2PU(A, B) _IQ18atan2PU(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQatan2PU(A, B) _IQ17atan2PU(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQatan2PU(A, B) _IQ16atan2PU(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQatan2PU(A, B) _IQ15atan2PU(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQatan2PU(A, B) _IQ14atan2PU(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQatan2PU(A, B) _IQ13atan2PU(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQatan2PU(A, B) _IQ12atan2PU(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQatan2PU(A, B) _IQ11atan2PU(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQatan2PU(A, B) _IQ10atan2PU(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQatan2PU(A, B) _IQ9atan2PU(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQatan2PU(A, B) _IQ8atan2PU(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQatan2PU(A, B) _IQ7atan2PU(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQatan2PU(A, B) _IQ6atan2PU(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQatan2PU(A, B) _IQ5atan2PU(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQatan2PU(A, B) _IQ4atan2PU(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQatan2PU(A, B) _IQ3atan2PU(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQatan2PU(A, B) _IQ2atan2PU(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQatan2PU(A, B) _IQ1atan2PU(A, B) +#endif + +//***************************************************************************** +// +// Computes the arctan of an IQ number. +// +//***************************************************************************** +#define _IQ29atan(A) _IQ29atan2(A, _IQ29(1.0)) +#define _IQ28atan(A) _IQ28atan2(A, _IQ28(1.0)) +#define _IQ27atan(A) _IQ27atan2(A, _IQ27(1.0)) +#define _IQ26atan(A) _IQ26atan2(A, _IQ26(1.0)) +#define _IQ25atan(A) _IQ25atan2(A, _IQ25(1.0)) +#define _IQ24atan(A) _IQ24atan2(A, _IQ24(1.0)) +#define _IQ23atan(A) _IQ23atan2(A, _IQ23(1.0)) +#define _IQ22atan(A) _IQ22atan2(A, _IQ22(1.0)) +#define _IQ21atan(A) _IQ21atan2(A, _IQ21(1.0)) +#define _IQ20atan(A) _IQ20atan2(A, _IQ20(1.0)) +#define _IQ19atan(A) _IQ19atan2(A, _IQ19(1.0)) +#define _IQ18atan(A) _IQ18atan2(A, _IQ18(1.0)) +#define _IQ17atan(A) _IQ17atan2(A, _IQ17(1.0)) +#define _IQ16atan(A) _IQ16atan2(A, _IQ16(1.0)) +#define _IQ15atan(A) _IQ15atan2(A, _IQ15(1.0)) +#define _IQ14atan(A) _IQ14atan2(A, _IQ14(1.0)) +#define _IQ13atan(A) _IQ13atan2(A, _IQ13(1.0)) +#define _IQ12atan(A) _IQ12atan2(A, _IQ12(1.0)) +#define _IQ11atan(A) _IQ11atan2(A, _IQ11(1.0)) +#define _IQ10atan(A) _IQ10atan2(A, _IQ10(1.0)) +#define _IQ9atan(A) _IQ9atan2(A, _IQ9(1.0)) +#define _IQ8atan(A) _IQ8atan2(A, _IQ8(1.0)) +#define _IQ7atan(A) _IQ7atan2(A, _IQ7(1.0)) +#define _IQ6atan(A) _IQ6atan2(A, _IQ6(1.0)) +#define _IQ5atan(A) _IQ5atan2(A, _IQ5(1.0)) +#define _IQ4atan(A) _IQ4atan2(A, _IQ4(1.0)) +#define _IQ3atan(A) _IQ3atan2(A, _IQ3(1.0)) +#define _IQ2atan(A) _IQ2atan2(A, _IQ2(1.0)) +#define _IQ1atan(A) _IQ1atan2(A, _IQ1(1.0)) + +#if GLOBAL_IQ == 29 +#define _IQatan(A) _IQ29atan2(A, _IQ29(1.0)) +#endif +#if GLOBAL_IQ == 28 +#define _IQatan(A) _IQ28atan2(A, _IQ28(1.0)) +#endif +#if GLOBAL_IQ == 27 +#define _IQatan(A) _IQ27atan2(A, _IQ27(1.0)) +#endif +#if GLOBAL_IQ == 26 +#define _IQatan(A) _IQ26atan2(A, _IQ26(1.0)) +#endif +#if GLOBAL_IQ == 25 +#define _IQatan(A) _IQ25atan2(A, _IQ25(1.0)) +#endif +#if GLOBAL_IQ == 24 +#define _IQatan(A) _IQ24atan2(A, _IQ24(1.0)) +#endif +#if GLOBAL_IQ == 23 +#define _IQatan(A) _IQ23atan2(A, _IQ23(1.0)) +#endif +#if GLOBAL_IQ == 22 +#define _IQatan(A) _IQ22atan2(A, _IQ22(1.0)) +#endif +#if GLOBAL_IQ == 21 +#define _IQatan(A) _IQ21atan2(A, _IQ21(1.0)) +#endif +#if GLOBAL_IQ == 20 +#define _IQatan(A) _IQ20atan2(A, _IQ20(1.0)) +#endif +#if GLOBAL_IQ == 19 +#define _IQatan(A) _IQ19atan2(A, _IQ19(1.0)) +#endif +#if GLOBAL_IQ == 18 +#define _IQatan(A) _IQ18atan2(A, _IQ18(1.0)) +#endif +#if GLOBAL_IQ == 17 +#define _IQatan(A) _IQ17atan2(A, _IQ17(1.0)) +#endif +#if GLOBAL_IQ == 16 +#define _IQatan(A) _IQ16atan2(A, _IQ16(1.0)) +#endif +#if GLOBAL_IQ == 15 +#define _IQatan(A) _IQ15atan2(A, _IQ15(1.0)) +#endif +#if GLOBAL_IQ == 14 +#define _IQatan(A) _IQ14atan2(A, _IQ14(1.0)) +#endif +#if GLOBAL_IQ == 13 +#define _IQatan(A) _IQ13atan2(A, _IQ13(1.0)) +#endif +#if GLOBAL_IQ == 12 +#define _IQatan(A) _IQ12atan2(A, _IQ12(1.0)) +#endif +#if GLOBAL_IQ == 11 +#define _IQatan(A) _IQ11atan2(A, _IQ11(1.0)) +#endif +#if GLOBAL_IQ == 10 +#define _IQatan(A) _IQ10atan2(A, _IQ10(1.0)) +#endif +#if GLOBAL_IQ == 9 +#define _IQatan(A) _IQ9atan2(A, _IQ9(1.0)) +#endif +#if GLOBAL_IQ == 8 +#define _IQatan(A) _IQ8atan2(A, _IQ8(1.0)) +#endif +#if GLOBAL_IQ == 7 +#define _IQatan(A) _IQ7atan2(A, _IQ7(1.0)) +#endif +#if GLOBAL_IQ == 6 +#define _IQatan(A) _IQ6atan2(A, _IQ6(1.0)) +#endif +#if GLOBAL_IQ == 5 +#define _IQatan(A) _IQ5atan2(A, _IQ5(1.0)) +#endif +#if GLOBAL_IQ == 4 +#define _IQatan(A) _IQ4atan2(A, _IQ4(1.0)) +#endif +#if GLOBAL_IQ == 3 +#define _IQatan(A) _IQ3atan2(A, _IQ3(1.0)) +#endif +#if GLOBAL_IQ == 2 +#define _IQatan(A) _IQ2atan2(A, _IQ2(1.0)) +#endif +#if GLOBAL_IQ == 1 +#define _IQatan(A) _IQ1atan2(A, _IQ1(1.0)) +#endif + +//***************************************************************************** +// +// Computes the square root of an IQ number. +// +//***************************************************************************** +extern _iq30 _IQ30sqrt(_iq30 A); +extern _iq29 _IQ29sqrt(_iq29 A); +extern _iq28 _IQ28sqrt(_iq28 A); +extern _iq27 _IQ27sqrt(_iq27 A); +extern _iq26 _IQ26sqrt(_iq26 A); +extern _iq25 _IQ25sqrt(_iq25 A); +extern _iq24 _IQ24sqrt(_iq24 A); +extern _iq23 _IQ23sqrt(_iq23 A); +extern _iq22 _IQ22sqrt(_iq22 A); +extern _iq21 _IQ21sqrt(_iq21 A); +extern _iq20 _IQ20sqrt(_iq20 A); +extern _iq19 _IQ19sqrt(_iq19 A); +extern _iq18 _IQ18sqrt(_iq18 A); +extern _iq17 _IQ17sqrt(_iq17 A); +extern _iq16 _IQ16sqrt(_iq16 A); +extern _iq15 _IQ15sqrt(_iq15 A); +extern _iq14 _IQ14sqrt(_iq14 A); +extern _iq13 _IQ13sqrt(_iq13 A); +extern _iq12 _IQ12sqrt(_iq12 A); +extern _iq11 _IQ11sqrt(_iq11 A); +extern _iq10 _IQ10sqrt(_iq10 A); +extern _iq9 _IQ9sqrt(_iq9 A); +extern _iq8 _IQ8sqrt(_iq8 A); +extern _iq7 _IQ7sqrt(_iq7 A); +extern _iq6 _IQ6sqrt(_iq6 A); +extern _iq5 _IQ5sqrt(_iq5 A); +extern _iq4 _IQ4sqrt(_iq4 A); +extern _iq3 _IQ3sqrt(_iq3 A); +extern _iq2 _IQ2sqrt(_iq2 A); +extern _iq1 _IQ1sqrt(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQsqrt(A) _IQ30sqrt(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQsqrt(A) _IQ29sqrt(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQsqrt(A) _IQ28sqrt(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQsqrt(A) _IQ27sqrt(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQsqrt(A) _IQ26sqrt(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQsqrt(A) _IQ25sqrt(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQsqrt(A) _IQ24sqrt(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQsqrt(A) _IQ23sqrt(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQsqrt(A) _IQ22sqrt(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQsqrt(A) _IQ21sqrt(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQsqrt(A) _IQ20sqrt(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQsqrt(A) _IQ19sqrt(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQsqrt(A) _IQ18sqrt(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQsqrt(A) _IQ17sqrt(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQsqrt(A) _IQ16sqrt(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQsqrt(A) _IQ15sqrt(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQsqrt(A) _IQ14sqrt(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQsqrt(A) _IQ13sqrt(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQsqrt(A) _IQ12sqrt(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQsqrt(A) _IQ11sqrt(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQsqrt(A) _IQ10sqrt(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQsqrt(A) _IQ9sqrt(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQsqrt(A) _IQ8sqrt(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQsqrt(A) _IQ7sqrt(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQsqrt(A) _IQ6sqrt(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQsqrt(A) _IQ5sqrt(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQsqrt(A) _IQ4sqrt(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQsqrt(A) _IQ3sqrt(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQsqrt(A) _IQ2sqrt(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQsqrt(A) _IQ1sqrt(A) +#endif + +//***************************************************************************** +// +// Computes 1 over the square root of an IQ number. +// +//***************************************************************************** +extern _iq30 _IQ30isqrt(_iq30 A); +extern _iq29 _IQ29isqrt(_iq29 A); +extern _iq28 _IQ28isqrt(_iq28 A); +extern _iq27 _IQ27isqrt(_iq27 A); +extern _iq26 _IQ26isqrt(_iq26 A); +extern _iq25 _IQ25isqrt(_iq25 A); +extern _iq24 _IQ24isqrt(_iq24 A); +extern _iq23 _IQ23isqrt(_iq23 A); +extern _iq22 _IQ22isqrt(_iq22 A); +extern _iq21 _IQ21isqrt(_iq21 A); +extern _iq20 _IQ20isqrt(_iq20 A); +extern _iq19 _IQ19isqrt(_iq19 A); +extern _iq18 _IQ18isqrt(_iq18 A); +extern _iq17 _IQ17isqrt(_iq17 A); +extern _iq16 _IQ16isqrt(_iq16 A); +extern _iq15 _IQ15isqrt(_iq15 A); +extern _iq14 _IQ14isqrt(_iq14 A); +extern _iq13 _IQ13isqrt(_iq13 A); +extern _iq12 _IQ12isqrt(_iq12 A); +extern _iq11 _IQ11isqrt(_iq11 A); +extern _iq10 _IQ10isqrt(_iq10 A); +extern _iq9 _IQ9isqrt(_iq9 A); +extern _iq8 _IQ8isqrt(_iq8 A); +extern _iq7 _IQ7isqrt(_iq7 A); +extern _iq6 _IQ6isqrt(_iq6 A); +extern _iq5 _IQ5isqrt(_iq5 A); +extern _iq4 _IQ4isqrt(_iq4 A); +extern _iq3 _IQ3isqrt(_iq3 A); +extern _iq2 _IQ2isqrt(_iq2 A); +extern _iq1 _IQ1isqrt(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQisqrt(A) _IQ30isqrt(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQisqrt(A) _IQ29isqrt(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQisqrt(A) _IQ28isqrt(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQisqrt(A) _IQ27isqrt(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQisqrt(A) _IQ26isqrt(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQisqrt(A) _IQ25isqrt(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQisqrt(A) _IQ24isqrt(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQisqrt(A) _IQ23isqrt(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQisqrt(A) _IQ22isqrt(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQisqrt(A) _IQ21isqrt(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQisqrt(A) _IQ20isqrt(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQisqrt(A) _IQ19isqrt(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQisqrt(A) _IQ18isqrt(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQisqrt(A) _IQ17isqrt(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQisqrt(A) _IQ16isqrt(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQisqrt(A) _IQ15isqrt(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQisqrt(A) _IQ14isqrt(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQisqrt(A) _IQ13isqrt(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQisqrt(A) _IQ12isqrt(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQisqrt(A) _IQ11isqrt(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQisqrt(A) _IQ10isqrt(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQisqrt(A) _IQ9isqrt(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQisqrt(A) _IQ8isqrt(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQisqrt(A) _IQ7isqrt(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQisqrt(A) _IQ6isqrt(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQisqrt(A) _IQ5isqrt(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQisqrt(A) _IQ4isqrt(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQisqrt(A) _IQ3isqrt(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQisqrt(A) _IQ2isqrt(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQisqrt(A) _IQ1isqrt(A) +#endif + +//***************************************************************************** +// +// Computes e^x of an IQ number. +// +//***************************************************************************** +extern _iq30 _IQ30exp(_iq30 A); +extern _iq29 _IQ29exp(_iq29 A); +extern _iq28 _IQ28exp(_iq28 A); +extern _iq27 _IQ27exp(_iq27 A); +extern _iq26 _IQ26exp(_iq26 A); +extern _iq25 _IQ25exp(_iq25 A); +extern _iq24 _IQ24exp(_iq24 A); +extern _iq23 _IQ23exp(_iq23 A); +extern _iq22 _IQ22exp(_iq22 A); +extern _iq21 _IQ21exp(_iq21 A); +extern _iq20 _IQ20exp(_iq20 A); +extern _iq19 _IQ19exp(_iq19 A); +extern _iq18 _IQ18exp(_iq18 A); +extern _iq17 _IQ17exp(_iq17 A); +extern _iq16 _IQ16exp(_iq16 A); +extern _iq15 _IQ15exp(_iq15 A); +extern _iq14 _IQ14exp(_iq14 A); +extern _iq13 _IQ13exp(_iq13 A); +extern _iq12 _IQ12exp(_iq12 A); +extern _iq11 _IQ11exp(_iq11 A); +extern _iq10 _IQ10exp(_iq10 A); +extern _iq9 _IQ9exp(_iq9 A); +extern _iq8 _IQ8exp(_iq8 A); +extern _iq7 _IQ7exp(_iq7 A); +extern _iq6 _IQ6exp(_iq6 A); +extern _iq5 _IQ5exp(_iq5 A); +extern _iq4 _IQ4exp(_iq4 A); +extern _iq3 _IQ3exp(_iq3 A); +extern _iq2 _IQ2exp(_iq2 A); +extern _iq1 _IQ1exp(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQexp(A) _IQ30exp(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQexp(A) _IQ29exp(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQexp(A) _IQ28exp(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQexp(A) _IQ27exp(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQexp(A) _IQ26exp(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQexp(A) _IQ25exp(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQexp(A) _IQ24exp(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQexp(A) _IQ23exp(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQexp(A) _IQ22exp(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQexp(A) _IQ21exp(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQexp(A) _IQ20exp(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQexp(A) _IQ19exp(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQexp(A) _IQ18exp(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQexp(A) _IQ17exp(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQexp(A) _IQ16exp(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQexp(A) _IQ15exp(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQexp(A) _IQ14exp(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQexp(A) _IQ13exp(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQexp(A) _IQ12exp(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQexp(A) _IQ11exp(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQexp(A) _IQ10exp(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQexp(A) _IQ9exp(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQexp(A) _IQ8exp(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQexp(A) _IQ7exp(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQexp(A) _IQ6exp(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQexp(A) _IQ5exp(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQexp(A) _IQ4exp(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQexp(A) _IQ3exp(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQexp(A) _IQ2exp(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQexp(A) _IQ1exp(A) +#endif + +//***************************************************************************** +// +// Computes log(x) of an IQ number. +// +//***************************************************************************** +extern _iq30 _IQ30log(_iq30 A); +extern _iq29 _IQ29log(_iq29 A); +extern _iq28 _IQ28log(_iq28 A); +extern _iq27 _IQ27log(_iq27 A); +extern _iq26 _IQ26log(_iq26 A); +extern _iq25 _IQ25log(_iq25 A); +extern _iq24 _IQ24log(_iq24 A); +extern _iq23 _IQ23log(_iq23 A); +extern _iq22 _IQ22log(_iq22 A); +extern _iq21 _IQ21log(_iq21 A); +extern _iq20 _IQ20log(_iq20 A); +extern _iq19 _IQ19log(_iq19 A); +extern _iq18 _IQ18log(_iq18 A); +extern _iq17 _IQ17log(_iq17 A); +extern _iq16 _IQ16log(_iq16 A); +extern _iq15 _IQ15log(_iq15 A); +extern _iq14 _IQ14log(_iq14 A); +extern _iq13 _IQ13log(_iq13 A); +extern _iq12 _IQ12log(_iq12 A); +extern _iq11 _IQ11log(_iq11 A); +extern _iq10 _IQ10log(_iq10 A); +extern _iq9 _IQ9log(_iq9 A); +extern _iq8 _IQ8log(_iq8 A); +extern _iq7 _IQ7log(_iq7 A); +extern _iq6 _IQ6log(_iq6 A); +extern _iq5 _IQ5log(_iq5 A); +extern _iq4 _IQ4log(_iq4 A); +extern _iq3 _IQ3log(_iq3 A); +extern _iq2 _IQ2log(_iq2 A); +extern _iq1 _IQ1log(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQlog(A) _IQ30log(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQlog(A) _IQ29log(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQlog(A) _IQ28log(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQlog(A) _IQ27log(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQlog(A) _IQ26log(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQlog(A) _IQ25log(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQlog(A) _IQ24log(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQlog(A) _IQ23log(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQlog(A) _IQ22log(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQlog(A) _IQ21log(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQlog(A) _IQ20log(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQlog(A) _IQ19log(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQlog(A) _IQ18log(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQlog(A) _IQ17log(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQlog(A) _IQ16log(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQlog(A) _IQ15log(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQlog(A) _IQ14log(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQlog(A) _IQ13log(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQlog(A) _IQ12log(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQlog(A) _IQ11log(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQlog(A) _IQ10log(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQlog(A) _IQ9log(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQlog(A) _IQ8log(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQlog(A) _IQ7log(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQlog(A) _IQ6log(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQlog(A) _IQ5log(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQlog(A) _IQ4log(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQlog(A) _IQ3log(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQlog(A) _IQ2log(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQlog(A) _IQ1log(A) +#endif + +//***************************************************************************** +// +// Returns the integer portion of an IQ number. +// +//***************************************************************************** +#define _IQ30int(A) ((A) >> 30) +#define _IQ29int(A) ((A) >> 29) +#define _IQ28int(A) ((A) >> 28) +#define _IQ27int(A) ((A) >> 27) +#define _IQ26int(A) ((A) >> 26) +#define _IQ25int(A) ((A) >> 25) +#define _IQ24int(A) ((A) >> 24) +#define _IQ23int(A) ((A) >> 23) +#define _IQ22int(A) ((A) >> 22) +#define _IQ21int(A) ((A) >> 21) +#define _IQ20int(A) ((A) >> 20) +#define _IQ19int(A) ((A) >> 19) +#define _IQ18int(A) ((A) >> 18) +#define _IQ17int(A) ((A) >> 17) +#define _IQ16int(A) ((A) >> 16) +#define _IQ15int(A) ((A) >> 15) +#define _IQ14int(A) ((A) >> 14) +#define _IQ13int(A) ((A) >> 13) +#define _IQ12int(A) ((A) >> 12) +#define _IQ11int(A) ((A) >> 11) +#define _IQ10int(A) ((A) >> 10) +#define _IQ9int(A) ((A) >> 9) +#define _IQ8int(A) ((A) >> 8) +#define _IQ7int(A) ((A) >> 7) +#define _IQ6int(A) ((A) >> 6) +#define _IQ5int(A) ((A) >> 5) +#define _IQ4int(A) ((A) >> 4) +#define _IQ3int(A) ((A) >> 3) +#define _IQ2int(A) ((A) >> 2) +#define _IQ1int(A) ((A) >> 1) +#define _IQint(A) ((A) >> GLOBAL_IQ) + +//***************************************************************************** +// +// Computes the fractional portion of an IQ number. +// +//***************************************************************************** +extern _iq30 _IQ30frac(_iq30 A); +extern _iq29 _IQ29frac(_iq29 A); +extern _iq28 _IQ28frac(_iq28 A); +extern _iq27 _IQ27frac(_iq27 A); +extern _iq26 _IQ26frac(_iq26 A); +extern _iq25 _IQ25frac(_iq25 A); +extern _iq24 _IQ24frac(_iq24 A); +extern _iq23 _IQ23frac(_iq23 A); +extern _iq22 _IQ22frac(_iq22 A); +extern _iq21 _IQ21frac(_iq21 A); +extern _iq20 _IQ20frac(_iq20 A); +extern _iq19 _IQ19frac(_iq19 A); +extern _iq18 _IQ18frac(_iq18 A); +extern _iq17 _IQ17frac(_iq17 A); +extern _iq16 _IQ16frac(_iq16 A); +extern _iq15 _IQ15frac(_iq15 A); +extern _iq14 _IQ14frac(_iq14 A); +extern _iq13 _IQ13frac(_iq13 A); +extern _iq12 _IQ12frac(_iq12 A); +extern _iq11 _IQ11frac(_iq11 A); +extern _iq10 _IQ10frac(_iq10 A); +extern _iq9 _IQ9frac(_iq9 A); +extern _iq8 _IQ8frac(_iq8 A); +extern _iq7 _IQ7frac(_iq7 A); +extern _iq6 _IQ6frac(_iq6 A); +extern _iq5 _IQ5frac(_iq5 A); +extern _iq4 _IQ4frac(_iq4 A); +extern _iq3 _IQ3frac(_iq3 A); +extern _iq2 _IQ2frac(_iq2 A); +extern _iq1 _IQ1frac(_iq1 A); + +#if GLOBAL_IQ == 30 +#define _IQfrac(A) _IQ30frac(A) +#endif +#if GLOBAL_IQ == 29 +#define _IQfrac(A) _IQ29frac(A) +#endif +#if GLOBAL_IQ == 28 +#define _IQfrac(A) _IQ28frac(A) +#endif +#if GLOBAL_IQ == 27 +#define _IQfrac(A) _IQ27frac(A) +#endif +#if GLOBAL_IQ == 26 +#define _IQfrac(A) _IQ26frac(A) +#endif +#if GLOBAL_IQ == 25 +#define _IQfrac(A) _IQ25frac(A) +#endif +#if GLOBAL_IQ == 24 +#define _IQfrac(A) _IQ24frac(A) +#endif +#if GLOBAL_IQ == 23 +#define _IQfrac(A) _IQ23frac(A) +#endif +#if GLOBAL_IQ == 22 +#define _IQfrac(A) _IQ22frac(A) +#endif +#if GLOBAL_IQ == 21 +#define _IQfrac(A) _IQ21frac(A) +#endif +#if GLOBAL_IQ == 20 +#define _IQfrac(A) _IQ20frac(A) +#endif +#if GLOBAL_IQ == 19 +#define _IQfrac(A) _IQ19frac(A) +#endif +#if GLOBAL_IQ == 18 +#define _IQfrac(A) _IQ18frac(A) +#endif +#if GLOBAL_IQ == 17 +#define _IQfrac(A) _IQ17frac(A) +#endif +#if GLOBAL_IQ == 16 +#define _IQfrac(A) _IQ16frac(A) +#endif +#if GLOBAL_IQ == 15 +#define _IQfrac(A) _IQ15frac(A) +#endif +#if GLOBAL_IQ == 14 +#define _IQfrac(A) _IQ14frac(A) +#endif +#if GLOBAL_IQ == 13 +#define _IQfrac(A) _IQ13frac(A) +#endif +#if GLOBAL_IQ == 12 +#define _IQfrac(A) _IQ12frac(A) +#endif +#if GLOBAL_IQ == 11 +#define _IQfrac(A) _IQ11frac(A) +#endif +#if GLOBAL_IQ == 10 +#define _IQfrac(A) _IQ10frac(A) +#endif +#if GLOBAL_IQ == 9 +#define _IQfrac(A) _IQ9frac(A) +#endif +#if GLOBAL_IQ == 8 +#define _IQfrac(A) _IQ8frac(A) +#endif +#if GLOBAL_IQ == 7 +#define _IQfrac(A) _IQ7frac(A) +#endif +#if GLOBAL_IQ == 6 +#define _IQfrac(A) _IQ6frac(A) +#endif +#if GLOBAL_IQ == 5 +#define _IQfrac(A) _IQ5frac(A) +#endif +#if GLOBAL_IQ == 4 +#define _IQfrac(A) _IQ4frac(A) +#endif +#if GLOBAL_IQ == 3 +#define _IQfrac(A) _IQ3frac(A) +#endif +#if GLOBAL_IQ == 2 +#define _IQfrac(A) _IQ2frac(A) +#endif +#if GLOBAL_IQ == 1 +#define _IQfrac(A) _IQ1frac(A) +#endif + +//***************************************************************************** +// +// Multiplies two IQ numbers in the specified iQ formats, returning the result +// in another IQ format. +// +//***************************************************************************** +extern int32_t _IQ30mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ29mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ28mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ27mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ26mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ25mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ24mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ23mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ22mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ21mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ20mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ19mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ18mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ17mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ16mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ15mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ14mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ13mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ12mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ11mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ10mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ9mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ8mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ7mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ6mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ5mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ4mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ3mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ2mpyIQX(int32_t A, int n1, int32_t B, int n2); +extern int32_t _IQ1mpyIQX(int32_t A, int n1, int32_t B, int n2); + +#if GLOBAL_IQ == 30 +#define _IQmpyIQX(A, n1, B, n2) _IQ30mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 29 +#define _IQmpyIQX(A, n1, B, n2) _IQ29mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 28 +#define _IQmpyIQX(A, n1, B, n2) _IQ28mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 27 +#define _IQmpyIQX(A, n1, B, n2) _IQ27mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 26 +#define _IQmpyIQX(A, n1, B, n2) _IQ26mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 25 +#define _IQmpyIQX(A, n1, B, n2) _IQ25mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 24 +#define _IQmpyIQX(A, n1, B, n2) _IQ24mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 23 +#define _IQmpyIQX(A, n1, B, n2) _IQ23mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 22 +#define _IQmpyIQX(A, n1, B, n2) _IQ22mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 21 +#define _IQmpyIQX(A, n1, B, n2) _IQ21mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 20 +#define _IQmpyIQX(A, n1, B, n2) _IQ20mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 19 +#define _IQmpyIQX(A, n1, B, n2) _IQ19mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 18 +#define _IQmpyIQX(A, n1, B, n2) _IQ18mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 17 +#define _IQmpyIQX(A, n1, B, n2) _IQ17mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 16 +#define _IQmpyIQX(A, n1, B, n2) _IQ16mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 15 +#define _IQmpyIQX(A, n1, B, n2) _IQ15mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 14 +#define _IQmpyIQX(A, n1, B, n2) _IQ14mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 13 +#define _IQmpyIQX(A, n1, B, n2) _IQ13mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 12 +#define _IQmpyIQX(A, n1, B, n2) _IQ12mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 11 +#define _IQmpyIQX(A, n1, B, n2) _IQ11mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 10 +#define _IQmpyIQX(A, n1, B, n2) _IQ10mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 9 +#define _IQmpyIQX(A, n1, B, n2) _IQ9mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 8 +#define _IQmpyIQX(A, n1, B, n2) _IQ8mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 7 +#define _IQmpyIQX(A, n1, B, n2) _IQ7mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 6 +#define _IQmpyIQX(A, n1, B, n2) _IQ6mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 5 +#define _IQmpyIQX(A, n1, B, n2) _IQ5mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 4 +#define _IQmpyIQX(A, n1, B, n2) _IQ4mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 3 +#define _IQmpyIQX(A, n1, B, n2) _IQ3mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 2 +#define _IQmpyIQX(A, n1, B, n2) _IQ2mpyIQX(A, n1, B, n2) +#endif +#if GLOBAL_IQ == 1 +#define _IQmpyIQX(A, n1, B, n2) _IQ1mpyIQX(A, n1, B, n2) +#endif + +//***************************************************************************** +// +// Multiplies an IQ number by an integer. +// +//***************************************************************************** +#define _IQ30mpyI32(A, B) ((A) * (B)) +#define _IQ29mpyI32(A, B) ((A) * (B)) +#define _IQ28mpyI32(A, B) ((A) * (B)) +#define _IQ27mpyI32(A, B) ((A) * (B)) +#define _IQ26mpyI32(A, B) ((A) * (B)) +#define _IQ25mpyI32(A, B) ((A) * (B)) +#define _IQ24mpyI32(A, B) ((A) * (B)) +#define _IQ23mpyI32(A, B) ((A) * (B)) +#define _IQ22mpyI32(A, B) ((A) * (B)) +#define _IQ21mpyI32(A, B) ((A) * (B)) +#define _IQ20mpyI32(A, B) ((A) * (B)) +#define _IQ19mpyI32(A, B) ((A) * (B)) +#define _IQ18mpyI32(A, B) ((A) * (B)) +#define _IQ17mpyI32(A, B) ((A) * (B)) +#define _IQ16mpyI32(A, B) ((A) * (B)) +#define _IQ15mpyI32(A, B) ((A) * (B)) +#define _IQ14mpyI32(A, B) ((A) * (B)) +#define _IQ13mpyI32(A, B) ((A) * (B)) +#define _IQ12mpyI32(A, B) ((A) * (B)) +#define _IQ11mpyI32(A, B) ((A) * (B)) +#define _IQ10mpyI32(A, B) ((A) * (B)) +#define _IQ9mpyI32(A, B) ((A) * (B)) +#define _IQ8mpyI32(A, B) ((A) * (B)) +#define _IQ7mpyI32(A, B) ((A) * (B)) +#define _IQ6mpyI32(A, B) ((A) * (B)) +#define _IQ5mpyI32(A, B) ((A) * (B)) +#define _IQ4mpyI32(A, B) ((A) * (B)) +#define _IQ3mpyI32(A, B) ((A) * (B)) +#define _IQ2mpyI32(A, B) ((A) * (B)) +#define _IQ1mpyI32(A, B) ((A) * (B)) +#define _IQmpyI32(A, B) ((A) * (B)) + +//***************************************************************************** +// +// Multiplies an IQ number by an integer, and returns the integer portion. +// +//***************************************************************************** +#define _IQ30mpyI32int(A, B) _IQ30int(_IQ30mpyI32(A, B)) +#define _IQ29mpyI32int(A, B) _IQ29int(_IQ29mpyI32(A, B)) +#define _IQ28mpyI32int(A, B) _IQ28int(_IQ28mpyI32(A, B)) +#define _IQ27mpyI32int(A, B) _IQ27int(_IQ27mpyI32(A, B)) +#define _IQ26mpyI32int(A, B) _IQ26int(_IQ26mpyI32(A, B)) +#define _IQ25mpyI32int(A, B) _IQ25int(_IQ25mpyI32(A, B)) +#define _IQ24mpyI32int(A, B) _IQ24int(_IQ24mpyI32(A, B)) +#define _IQ23mpyI32int(A, B) _IQ23int(_IQ23mpyI32(A, B)) +#define _IQ22mpyI32int(A, B) _IQ22int(_IQ22mpyI32(A, B)) +#define _IQ21mpyI32int(A, B) _IQ21int(_IQ21mpyI32(A, B)) +#define _IQ20mpyI32int(A, B) _IQ20int(_IQ20mpyI32(A, B)) +#define _IQ19mpyI32int(A, B) _IQ19int(_IQ19mpyI32(A, B)) +#define _IQ18mpyI32int(A, B) _IQ18int(_IQ18mpyI32(A, B)) +#define _IQ17mpyI32int(A, B) _IQ17int(_IQ17mpyI32(A, B)) +#define _IQ16mpyI32int(A, B) _IQ16int(_IQ16mpyI32(A, B)) +#define _IQ15mpyI32int(A, B) _IQ15int(_IQ15mpyI32(A, B)) +#define _IQ14mpyI32int(A, B) _IQ14int(_IQ14mpyI32(A, B)) +#define _IQ13mpyI32int(A, B) _IQ13int(_IQ13mpyI32(A, B)) +#define _IQ12mpyI32int(A, B) _IQ12int(_IQ12mpyI32(A, B)) +#define _IQ11mpyI32int(A, B) _IQ11int(_IQ11mpyI32(A, B)) +#define _IQ10mpyI32int(A, B) _IQ10int(_IQ10mpyI32(A, B)) +#define _IQ9mpyI32int(A, B) _IQ9int(_IQ9mpyI32(A, B)) +#define _IQ8mpyI32int(A, B) _IQ8int(_IQ8mpyI32(A, B)) +#define _IQ7mpyI32int(A, B) _IQ7int(_IQ7mpyI32(A, B)) +#define _IQ6mpyI32int(A, B) _IQ6int(_IQ6mpyI32(A, B)) +#define _IQ5mpyI32int(A, B) _IQ5int(_IQ5mpyI32(A, B)) +#define _IQ4mpyI32int(A, B) _IQ4int(_IQ4mpyI32(A, B)) +#define _IQ3mpyI32int(A, B) _IQ3int(_IQ3mpyI32(A, B)) +#define _IQ2mpyI32int(A, B) _IQ2int(_IQ2mpyI32(A, B)) +#define _IQ1mpyI32int(A, B) _IQ1int(_IQ1mpyI32(A, B)) + +#if GLOBAL_IQ == 30 +#define _IQmpyI32int(A, B) _IQ30mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQmpyI32int(A, B) _IQ29mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQmpyI32int(A, B) _IQ28mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQmpyI32int(A, B) _IQ27mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQmpyI32int(A, B) _IQ26mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQmpyI32int(A, B) _IQ25mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQmpyI32int(A, B) _IQ24mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQmpyI32int(A, B) _IQ23mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQmpyI32int(A, B) _IQ22mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQmpyI32int(A, B) _IQ21mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQmpyI32int(A, B) _IQ20mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQmpyI32int(A, B) _IQ19mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQmpyI32int(A, B) _IQ18mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQmpyI32int(A, B) _IQ17mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQmpyI32int(A, B) _IQ16mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQmpyI32int(A, B) _IQ15mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQmpyI32int(A, B) _IQ14mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQmpyI32int(A, B) _IQ13mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQmpyI32int(A, B) _IQ12mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQmpyI32int(A, B) _IQ11mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQmpyI32int(A, B) _IQ10mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQmpyI32int(A, B) _IQ9mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQmpyI32int(A, B) _IQ8mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQmpyI32int(A, B) _IQ7mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQmpyI32int(A, B) _IQ6mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQmpyI32int(A, B) _IQ5mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQmpyI32int(A, B) _IQ4mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQmpyI32int(A, B) _IQ3mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQmpyI32int(A, B) _IQ2mpyI32int(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQmpyI32int(A, B) _IQ1mpyI32int(A, B) +#endif + +//***************************************************************************** +// +// Multiplies an IQ number by an integer, and returns the fractional portion. +// +//***************************************************************************** +#define _IQ30mpyI32frac(A, B) _IQ30frac(_IQ30mpyI32(A, B)) +#define _IQ29mpyI32frac(A, B) _IQ29frac(_IQ29mpyI32(A, B)) +#define _IQ28mpyI32frac(A, B) _IQ28frac(_IQ28mpyI32(A, B)) +#define _IQ27mpyI32frac(A, B) _IQ27frac(_IQ27mpyI32(A, B)) +#define _IQ26mpyI32frac(A, B) _IQ26frac(_IQ26mpyI32(A, B)) +#define _IQ25mpyI32frac(A, B) _IQ25frac(_IQ25mpyI32(A, B)) +#define _IQ24mpyI32frac(A, B) _IQ24frac(_IQ24mpyI32(A, B)) +#define _IQ23mpyI32frac(A, B) _IQ23frac(_IQ23mpyI32(A, B)) +#define _IQ22mpyI32frac(A, B) _IQ22frac(_IQ22mpyI32(A, B)) +#define _IQ21mpyI32frac(A, B) _IQ21frac(_IQ21mpyI32(A, B)) +#define _IQ20mpyI32frac(A, B) _IQ20frac(_IQ20mpyI32(A, B)) +#define _IQ19mpyI32frac(A, B) _IQ19frac(_IQ19mpyI32(A, B)) +#define _IQ18mpyI32frac(A, B) _IQ18frac(_IQ18mpyI32(A, B)) +#define _IQ17mpyI32frac(A, B) _IQ17frac(_IQ17mpyI32(A, B)) +#define _IQ16mpyI32frac(A, B) _IQ16frac(_IQ16mpyI32(A, B)) +#define _IQ15mpyI32frac(A, B) _IQ15frac(_IQ15mpyI32(A, B)) +#define _IQ14mpyI32frac(A, B) _IQ14frac(_IQ14mpyI32(A, B)) +#define _IQ13mpyI32frac(A, B) _IQ13frac(_IQ13mpyI32(A, B)) +#define _IQ12mpyI32frac(A, B) _IQ12frac(_IQ12mpyI32(A, B)) +#define _IQ11mpyI32frac(A, B) _IQ11frac(_IQ11mpyI32(A, B)) +#define _IQ10mpyI32frac(A, B) _IQ10frac(_IQ10mpyI32(A, B)) +#define _IQ9mpyI32frac(A, B) _IQ9frac(_IQ9mpyI32(A, B)) +#define _IQ8mpyI32frac(A, B) _IQ8frac(_IQ8mpyI32(A, B)) +#define _IQ7mpyI32frac(A, B) _IQ7frac(_IQ7mpyI32(A, B)) +#define _IQ6mpyI32frac(A, B) _IQ6frac(_IQ6mpyI32(A, B)) +#define _IQ5mpyI32frac(A, B) _IQ5frac(_IQ5mpyI32(A, B)) +#define _IQ4mpyI32frac(A, B) _IQ4frac(_IQ4mpyI32(A, B)) +#define _IQ3mpyI32frac(A, B) _IQ3frac(_IQ3mpyI32(A, B)) +#define _IQ2mpyI32frac(A, B) _IQ2frac(_IQ2mpyI32(A, B)) +#define _IQ1mpyI32frac(A, B) _IQ1frac(_IQ1mpyI32(A, B)) + +#if GLOBAL_IQ == 30 +#define _IQmpyI32frac(A, B) _IQ30mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQmpyI32frac(A, B) _IQ29mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQmpyI32frac(A, B) _IQ28mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQmpyI32frac(A, B) _IQ27mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQmpyI32frac(A, B) _IQ26mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQmpyI32frac(A, B) _IQ25mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQmpyI32frac(A, B) _IQ24mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQmpyI32frac(A, B) _IQ23mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQmpyI32frac(A, B) _IQ22mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQmpyI32frac(A, B) _IQ21mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQmpyI32frac(A, B) _IQ20mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQmpyI32frac(A, B) _IQ19mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQmpyI32frac(A, B) _IQ18mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQmpyI32frac(A, B) _IQ17mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQmpyI32frac(A, B) _IQ16mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQmpyI32frac(A, B) _IQ15mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQmpyI32frac(A, B) _IQ14mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQmpyI32frac(A, B) _IQ13mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQmpyI32frac(A, B) _IQ12mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQmpyI32frac(A, B) _IQ11mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQmpyI32frac(A, B) _IQ10mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQmpyI32frac(A, B) _IQ9mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQmpyI32frac(A, B) _IQ8mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQmpyI32frac(A, B) _IQ7mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQmpyI32frac(A, B) _IQ6mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQmpyI32frac(A, B) _IQ5mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQmpyI32frac(A, B) _IQ4mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQmpyI32frac(A, B) _IQ3mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQmpyI32frac(A, B) _IQ2mpyI32frac(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQmpyI32frac(A, B) _IQ1mpyI32frac(A, B) +#endif + +//***************************************************************************** +// +// Computes the square root of A^2 + B^2 using IQ numbers. +// +//***************************************************************************** +extern int32_t _IQmag(int32_t A, int32_t B); +#define _IQ30mag(A, B) _IQmag(A, B) +#define _IQ29mag(A, B) _IQmag(A, B) +#define _IQ28mag(A, B) _IQmag(A, B) +#define _IQ27mag(A, B) _IQmag(A, B) +#define _IQ26mag(A, B) _IQmag(A, B) +#define _IQ25mag(A, B) _IQmag(A, B) +#define _IQ24mag(A, B) _IQmag(A, B) +#define _IQ23mag(A, B) _IQmag(A, B) +#define _IQ22mag(A, B) _IQmag(A, B) +#define _IQ21mag(A, B) _IQmag(A, B) +#define _IQ20mag(A, B) _IQmag(A, B) +#define _IQ19mag(A, B) _IQmag(A, B) +#define _IQ18mag(A, B) _IQmag(A, B) +#define _IQ17mag(A, B) _IQmag(A, B) +#define _IQ16mag(A, B) _IQmag(A, B) +#define _IQ15mag(A, B) _IQmag(A, B) +#define _IQ14mag(A, B) _IQmag(A, B) +#define _IQ13mag(A, B) _IQmag(A, B) +#define _IQ12mag(A, B) _IQmag(A, B) +#define _IQ11mag(A, B) _IQmag(A, B) +#define _IQ10mag(A, B) _IQmag(A, B) +#define _IQ9mag(A, B) _IQmag(A, B) +#define _IQ8mag(A, B) _IQmag(A, B) +#define _IQ7mag(A, B) _IQmag(A, B) +#define _IQ6mag(A, B) _IQmag(A, B) +#define _IQ5mag(A, B) _IQmag(A, B) +#define _IQ4mag(A, B) _IQmag(A, B) +#define _IQ3mag(A, B) _IQmag(A, B) +#define _IQ2mag(A, B) _IQmag(A, B) +#define _IQ1mag(A, B) _IQmag(A, B) + +//***************************************************************************** +// +// Computes the inverse square root of A^2 + B^2 using IQ numbers. +// +//***************************************************************************** +extern _iq29 _IQ30imag(_iq30 A, _iq30 B); +extern _iq29 _IQ29imag(_iq29 A, _iq29 B); +extern _iq28 _IQ28imag(_iq28 A, _iq28 B); +extern _iq27 _IQ27imag(_iq27 A, _iq27 B); +extern _iq26 _IQ26imag(_iq26 A, _iq26 B); +extern _iq25 _IQ25imag(_iq25 A, _iq25 B); +extern _iq24 _IQ24imag(_iq24 A, _iq24 B); +extern _iq23 _IQ23imag(_iq23 A, _iq23 B); +extern _iq22 _IQ22imag(_iq22 A, _iq22 B); +extern _iq21 _IQ21imag(_iq21 A, _iq21 B); +extern _iq20 _IQ20imag(_iq20 A, _iq20 B); +extern _iq19 _IQ19imag(_iq19 A, _iq19 B); +extern _iq18 _IQ18imag(_iq18 A, _iq18 B); +extern _iq17 _IQ17imag(_iq17 A, _iq17 B); +extern _iq16 _IQ16imag(_iq16 A, _iq16 B); +extern _iq15 _IQ15imag(_iq15 A, _iq15 B); +extern _iq14 _IQ14imag(_iq14 A, _iq14 B); +extern _iq13 _IQ13imag(_iq13 A, _iq13 B); +extern _iq12 _IQ12imag(_iq12 A, _iq12 B); +extern _iq11 _IQ11imag(_iq11 A, _iq11 B); +extern _iq10 _IQ10imag(_iq10 A, _iq10 B); +extern _iq9 _IQ9imag(_iq9 A, _iq9 B); +extern _iq8 _IQ8imag(_iq8 A, _iq8 B); +extern _iq7 _IQ7imag(_iq7 A, _iq7 B); +extern _iq6 _IQ6imag(_iq6 A, _iq6 B); +extern _iq5 _IQ5imag(_iq5 A, _iq5 B); +extern _iq4 _IQ4imag(_iq4 A, _iq4 B); +extern _iq3 _IQ3imag(_iq3 A, _iq3 B); +extern _iq2 _IQ2imag(_iq2 A, _iq2 B); +extern _iq1 _IQ1imag(_iq1 A, _iq1 B); + +#if GLOBAL_IQ == 30 +#define _IQimag(A, B) _IQ30imag(A, B) +#endif +#if GLOBAL_IQ == 29 +#define _IQimag(A, B) _IQ29imag(A, B) +#endif +#if GLOBAL_IQ == 28 +#define _IQimag(A, B) _IQ28imag(A, B) +#endif +#if GLOBAL_IQ == 27 +#define _IQimag(A, B) _IQ27imag(A, B) +#endif +#if GLOBAL_IQ == 26 +#define _IQimag(A, B) _IQ26imag(A, B) +#endif +#if GLOBAL_IQ == 25 +#define _IQimag(A, B) _IQ25imag(A, B) +#endif +#if GLOBAL_IQ == 24 +#define _IQimag(A, B) _IQ24imag(A, B) +#endif +#if GLOBAL_IQ == 23 +#define _IQimag(A, B) _IQ23imag(A, B) +#endif +#if GLOBAL_IQ == 22 +#define _IQimag(A, B) _IQ22imag(A, B) +#endif +#if GLOBAL_IQ == 21 +#define _IQimag(A, B) _IQ21imag(A, B) +#endif +#if GLOBAL_IQ == 20 +#define _IQimag(A, B) _IQ20imag(A, B) +#endif +#if GLOBAL_IQ == 19 +#define _IQimag(A, B) _IQ19imag(A, B) +#endif +#if GLOBAL_IQ == 18 +#define _IQimag(A, B) _IQ18imag(A, B) +#endif +#if GLOBAL_IQ == 17 +#define _IQimag(A, B) _IQ17imag(A, B) +#endif +#if GLOBAL_IQ == 16 +#define _IQimag(A, B) _IQ16imag(A, B) +#endif +#if GLOBAL_IQ == 15 +#define _IQimag(A, B) _IQ15imag(A, B) +#endif +#if GLOBAL_IQ == 14 +#define _IQimag(A, B) _IQ14imag(A, B) +#endif +#if GLOBAL_IQ == 13 +#define _IQimag(A, B) _IQ13imag(A, B) +#endif +#if GLOBAL_IQ == 12 +#define _IQimag(A, B) _IQ12imag(A, B) +#endif +#if GLOBAL_IQ == 11 +#define _IQimag(A, B) _IQ11imag(A, B) +#endif +#if GLOBAL_IQ == 10 +#define _IQimag(A, B) _IQ10imag(A, B) +#endif +#if GLOBAL_IQ == 9 +#define _IQimag(A, B) _IQ9imag(A, B) +#endif +#if GLOBAL_IQ == 8 +#define _IQimag(A, B) _IQ8imag(A, B) +#endif +#if GLOBAL_IQ == 7 +#define _IQimag(A, B) _IQ7imag(A, B) +#endif +#if GLOBAL_IQ == 6 +#define _IQimag(A, B) _IQ6imag(A, B) +#endif +#if GLOBAL_IQ == 5 +#define _IQimag(A, B) _IQ5imag(A, B) +#endif +#if GLOBAL_IQ == 4 +#define _IQimag(A, B) _IQ4imag(A, B) +#endif +#if GLOBAL_IQ == 3 +#define _IQimag(A, B) _IQ3imag(A, B) +#endif +#if GLOBAL_IQ == 2 +#define _IQimag(A, B) _IQ2imag(A, B) +#endif +#if GLOBAL_IQ == 1 +#define _IQimag(A, B) _IQ1imag(A, B) +#endif + +//***************************************************************************** +// +// Converts a string into an IQ number. +// +//***************************************************************************** +extern _iq30 _atoIQ30(const char *A); +extern _iq29 _atoIQ29(const char *A); +extern _iq28 _atoIQ28(const char *A); +extern _iq27 _atoIQ27(const char *A); +extern _iq26 _atoIQ26(const char *A); +extern _iq25 _atoIQ25(const char *A); +extern _iq24 _atoIQ24(const char *A); +extern _iq23 _atoIQ23(const char *A); +extern _iq22 _atoIQ22(const char *A); +extern _iq21 _atoIQ21(const char *A); +extern _iq20 _atoIQ20(const char *A); +extern _iq19 _atoIQ19(const char *A); +extern _iq18 _atoIQ18(const char *A); +extern _iq17 _atoIQ17(const char *A); +extern _iq16 _atoIQ16(const char *A); +extern _iq15 _atoIQ15(const char *A); +extern _iq14 _atoIQ14(const char *A); +extern _iq13 _atoIQ13(const char *A); +extern _iq12 _atoIQ12(const char *A); +extern _iq11 _atoIQ11(const char *A); +extern _iq10 _atoIQ10(const char *A); +extern _iq9 _atoIQ9(const char *A); +extern _iq8 _atoIQ8(const char *A); +extern _iq7 _atoIQ7(const char *A); +extern _iq6 _atoIQ6(const char *A); +extern _iq5 _atoIQ5(const char *A); +extern _iq4 _atoIQ4(const char *A); +extern _iq3 _atoIQ3(const char *A); +extern _iq2 _atoIQ2(const char *A); +extern _iq1 _atoIQ1(const char *A); + +#if GLOBAL_IQ == 30 +#define _atoIQ(A) _atoIQ30(A) +#endif +#if GLOBAL_IQ == 29 +#define _atoIQ(A) _atoIQ29(A) +#endif +#if GLOBAL_IQ == 28 +#define _atoIQ(A) _atoIQ28(A) +#endif +#if GLOBAL_IQ == 27 +#define _atoIQ(A) _atoIQ27(A) +#endif +#if GLOBAL_IQ == 26 +#define _atoIQ(A) _atoIQ26(A) +#endif +#if GLOBAL_IQ == 25 +#define _atoIQ(A) _atoIQ25(A) +#endif +#if GLOBAL_IQ == 24 +#define _atoIQ(A) _atoIQ24(A) +#endif +#if GLOBAL_IQ == 23 +#define _atoIQ(A) _atoIQ23(A) +#endif +#if GLOBAL_IQ == 22 +#define _atoIQ(A) _atoIQ22(A) +#endif +#if GLOBAL_IQ == 21 +#define _atoIQ(A) _atoIQ21(A) +#endif +#if GLOBAL_IQ == 20 +#define _atoIQ(A) _atoIQ20(A) +#endif +#if GLOBAL_IQ == 19 +#define _atoIQ(A) _atoIQ19(A) +#endif +#if GLOBAL_IQ == 18 +#define _atoIQ(A) _atoIQ18(A) +#endif +#if GLOBAL_IQ == 17 +#define _atoIQ(A) _atoIQ17(A) +#endif +#if GLOBAL_IQ == 16 +#define _atoIQ(A) _atoIQ16(A) +#endif +#if GLOBAL_IQ == 15 +#define _atoIQ(A) _atoIQ15(A) +#endif +#if GLOBAL_IQ == 14 +#define _atoIQ(A) _atoIQ14(A) +#endif +#if GLOBAL_IQ == 13 +#define _atoIQ(A) _atoIQ13(A) +#endif +#if GLOBAL_IQ == 12 +#define _atoIQ(A) _atoIQ12(A) +#endif +#if GLOBAL_IQ == 11 +#define _atoIQ(A) _atoIQ11(A) +#endif +#if GLOBAL_IQ == 10 +#define _atoIQ(A) _atoIQ10(A) +#endif +#if GLOBAL_IQ == 9 +#define _atoIQ(A) _atoIQ9(A) +#endif +#if GLOBAL_IQ == 8 +#define _atoIQ(A) _atoIQ8(A) +#endif +#if GLOBAL_IQ == 7 +#define _atoIQ(A) _atoIQ7(A) +#endif +#if GLOBAL_IQ == 6 +#define _atoIQ(A) _atoIQ6(A) +#endif +#if GLOBAL_IQ == 5 +#define _atoIQ(A) _atoIQ5(A) +#endif +#if GLOBAL_IQ == 4 +#define _atoIQ(A) _atoIQ4(A) +#endif +#if GLOBAL_IQ == 3 +#define _atoIQ(A) _atoIQ3(A) +#endif +#if GLOBAL_IQ == 2 +#define _atoIQ(A) _atoIQ2(A) +#endif +#if GLOBAL_IQ == 1 +#define _atoIQ(A) _atoIQ1(A) +#endif + +//***************************************************************************** +// +// Converts an IQ number into a string. +// +//***************************************************************************** +extern int16_t _IQ30toa(char *string, const char *format, _iq30 input); +extern int16_t _IQ29toa(char *string, const char *format, _iq29 input); +extern int16_t _IQ28toa(char *string, const char *format, _iq28 input); +extern int16_t _IQ27toa(char *string, const char *format, _iq27 input); +extern int16_t _IQ26toa(char *string, const char *format, _iq26 input); +extern int16_t _IQ25toa(char *string, const char *format, _iq25 input); +extern int16_t _IQ24toa(char *string, const char *format, _iq24 input); +extern int16_t _IQ23toa(char *string, const char *format, _iq23 input); +extern int16_t _IQ22toa(char *string, const char *format, _iq22 input); +extern int16_t _IQ21toa(char *string, const char *format, _iq21 input); +extern int16_t _IQ20toa(char *string, const char *format, _iq20 input); +extern int16_t _IQ19toa(char *string, const char *format, _iq19 input); +extern int16_t _IQ18toa(char *string, const char *format, _iq18 input); +extern int16_t _IQ17toa(char *string, const char *format, _iq17 input); +extern int16_t _IQ16toa(char *string, const char *format, _iq16 input); +extern int16_t _IQ15toa(char *string, const char *format, _iq15 input); +extern int16_t _IQ14toa(char *string, const char *format, _iq14 input); +extern int16_t _IQ13toa(char *string, const char *format, _iq13 input); +extern int16_t _IQ12toa(char *string, const char *format, _iq12 input); +extern int16_t _IQ11toa(char *string, const char *format, _iq11 input); +extern int16_t _IQ10toa(char *string, const char *format, _iq10 input); +extern int16_t _IQ9toa(char *string, const char *format, _iq9 input); +extern int16_t _IQ8toa(char *string, const char *format, _iq8 input); +extern int16_t _IQ7toa(char *string, const char *format, _iq7 input); +extern int16_t _IQ6toa(char *string, const char *format, _iq6 input); +extern int16_t _IQ5toa(char *string, const char *format, _iq5 input); +extern int16_t _IQ4toa(char *string, const char *format, _iq4 input); +extern int16_t _IQ3toa(char *string, const char *format, _iq3 input); +extern int16_t _IQ2toa(char *string, const char *format, _iq2 input); +extern int16_t _IQ1toa(char *string, const char *format, _iq1 input); + +#if GLOBAL_IQ == 30 +#define _IQtoa(A, B, C) _IQ30toa(A, B, C) +#endif +#if GLOBAL_IQ == 29 +#define _IQtoa(A, B, C) _IQ29toa(A, B, C) +#endif +#if GLOBAL_IQ == 28 +#define _IQtoa(A, B, C) _IQ28toa(A, B, C) +#endif +#if GLOBAL_IQ == 27 +#define _IQtoa(A, B, C) _IQ27toa(A, B, C) +#endif +#if GLOBAL_IQ == 26 +#define _IQtoa(A, B, C) _IQ26toa(A, B, C) +#endif +#if GLOBAL_IQ == 25 +#define _IQtoa(A, B, C) _IQ25toa(A, B, C) +#endif +#if GLOBAL_IQ == 24 +#define _IQtoa(A, B, C) _IQ24toa(A, B, C) +#endif +#if GLOBAL_IQ == 23 +#define _IQtoa(A, B, C) _IQ23toa(A, B, C) +#endif +#if GLOBAL_IQ == 22 +#define _IQtoa(A, B, C) _IQ22toa(A, B, C) +#endif +#if GLOBAL_IQ == 21 +#define _IQtoa(A, B, C) _IQ21toa(A, B, C) +#endif +#if GLOBAL_IQ == 20 +#define _IQtoa(A, B, C) _IQ20toa(A, B, C) +#endif +#if GLOBAL_IQ == 19 +#define _IQtoa(A, B, C) _IQ19toa(A, B, C) +#endif +#if GLOBAL_IQ == 18 +#define _IQtoa(A, B, C) _IQ18toa(A, B, C) +#endif +#if GLOBAL_IQ == 17 +#define _IQtoa(A, B, C) _IQ17toa(A, B, C) +#endif +#if GLOBAL_IQ == 16 +#define _IQtoa(A, B, C) _IQ16toa(A, B, C) +#endif +#if GLOBAL_IQ == 15 +#define _IQtoa(A, B, C) _IQ15toa(A, B, C) +#endif +#if GLOBAL_IQ == 14 +#define _IQtoa(A, B, C) _IQ14toa(A, B, C) +#endif +#if GLOBAL_IQ == 13 +#define _IQtoa(A, B, C) _IQ13toa(A, B, C) +#endif +#if GLOBAL_IQ == 12 +#define _IQtoa(A, B, C) _IQ12toa(A, B, C) +#endif +#if GLOBAL_IQ == 11 +#define _IQtoa(A, B, C) _IQ11toa(A, B, C) +#endif +#if GLOBAL_IQ == 10 +#define _IQtoa(A, B, C) _IQ10toa(A, B, C) +#endif +#if GLOBAL_IQ == 9 +#define _IQtoa(A, B, C) _IQ9toa(A, B, C) +#endif +#if GLOBAL_IQ == 8 +#define _IQtoa(A, B, C) _IQ8toa(A, B, C) +#endif +#if GLOBAL_IQ == 7 +#define _IQtoa(A, B, C) _IQ7toa(A, B, C) +#endif +#if GLOBAL_IQ == 6 +#define _IQtoa(A, B, C) _IQ6toa(A, B, C) +#endif +#if GLOBAL_IQ == 5 +#define _IQtoa(A, B, C) _IQ5toa(A, B, C) +#endif +#if GLOBAL_IQ == 4 +#define _IQtoa(A, B, C) _IQ4toa(A, B, C) +#endif +#if GLOBAL_IQ == 3 +#define _IQtoa(A, B, C) _IQ3toa(A, B, C) +#endif +#if GLOBAL_IQ == 2 +#define _IQtoa(A, B, C) _IQ2toa(A, B, C) +#endif +#if GLOBAL_IQ == 1 +#define _IQtoa(A, B, C) _IQ1toa(A, B, C) +#endif + +//***************************************************************************** +// +// Computes the absolute value of an IQ number. +// +//***************************************************************************** +#define _IQ30abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ29abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ28abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ27abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ26abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ25abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ24abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ23abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ22abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ21abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ20abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ19abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ18abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ17abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ16abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ15abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ14abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ13abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ12abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ11abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ10abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ9abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ8abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ7abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ6abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ5abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ4abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ3abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ2abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQ1abs(A) (((A) < 0) ? - (A) : (A)) +#define _IQabs(A) (((A) < 0) ? - (A) : (A)) + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif // __IQMATHLIB_H__ diff --git a/Include/QmathLib.h b/Include/QmathLib.h new file mode 100755 index 0000000..21c5cb1 --- /dev/null +++ b/Include/QmathLib.h @@ -0,0 +1,2100 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __QMATHLIB_H__ +#define __QMATHLIB_H__ + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// The IQ format to be used when the IQ format is not explicitly specified +// (such as _IQcos instead of _IQ16cos). This value must be between 1 and 30, +// inclusive. +// +//***************************************************************************** +#ifndef GLOBAL_Q +#define GLOBAL_Q 3 +#endif + +//***************************************************************************** +// +// Include some standard headers. +// +//***************************************************************************** +#include +#include +#include + +//***************************************************************************** +// +// Various Useful Constant Definitions: +// +//***************************************************************************** +#define Q15 15 +#define Q14 14 +#define Q13 13 +#define Q12 12 +#define Q11 11 +#define Q10 10 +#define Q9 9 +#define Q8 8 +#define Q7 7 +#define Q6 6 +#define Q5 5 +#define Q4 4 +#define Q3 3 +#define Q2 2 +#define Q1 1 +#ifndef QG +#define QG GLOBAL_Q +#endif + +#define MAX_Q_POS INT16_MAX +#define MAX_Q_NEG INT16_MIN +#define MIN_Q_POS 1 +#define MIN_Q_NEG -1 + +//***************************************************************************** +// +// The types for the various Q formats. +// +//***************************************************************************** +typedef int16_t _q15; +typedef int16_t _q14; +typedef int16_t _q13; +typedef int16_t _q12; +typedef int16_t _q11; +typedef int16_t _q10; +typedef int16_t _q9; +typedef int16_t _q8; +typedef int16_t _q7; +typedef int16_t _q6; +typedef int16_t _q5; +typedef int16_t _q4; +typedef int16_t _q3; +typedef int16_t _q2; +typedef int16_t _q1; +typedef int16_t _q; + +//***************************************************************************** +// +// Simple multiplies or divides, which are accomplished with simple shifts. +// +//***************************************************************************** +#define _Qmpy2(A) ((A) << 1) +#define _Qmpy4(A) ((A) << 2) +#define _Qmpy8(A) ((A) << 3) +#define _Qmpy16(A) ((A) << 4) +#define _Qmpy32(A) ((A) << 5) +#define _Qmpy64(A) ((A) << 6) +#define _Qdiv2(A) ((A) >> 1) +#define _Qdiv4(A) ((A) >> 2) +#define _Qdiv8(A) ((A) >> 3) +#define _Qdiv16(A) ((A) >> 4) +#define _Qdiv32(A) ((A) >> 5) +#define _Qdiv64(A) ((A) >> 6) + +//***************************************************************************** +// +// Convert a value into an Q number. +// +//***************************************************************************** +#define _Q15(A) ((_q15)((A) * ((int32_t)1 << 15))) +#define _Q14(A) ((_q14)((A) * ((_q14)1 << 14))) +#define _Q13(A) ((_q13)((A) * ((_q13)1 << 13))) +#define _Q12(A) ((_q12)((A) * ((_q12)1 << 12))) +#define _Q11(A) ((_q11)((A) * ((_q11)1 << 11))) +#define _Q10(A) ((_q10)((A) * ((_q10)1 << 10))) +#define _Q9(A) ((_q9)((A) * ((_q9)1 << 9))) +#define _Q8(A) ((_q8)((A) * ((_q8)1 << 8))) +#define _Q7(A) ((_q7)((A) * ((_q7)1 << 7))) +#define _Q6(A) ((_q6)((A) * ((_q6)1 << 6))) +#define _Q5(A) ((_q5)((A) * ((_q5)1 << 5))) +#define _Q4(A) ((_q4)((A) * ((_q4)1 << 4))) +#define _Q3(A) ((_q3)((A) * ((_q3)1 << 3))) +#define _Q2(A) ((_q2)((A) * ((_q2)1 << 2))) +#define _Q1(A) ((_q1)((A) * ((_q1)1 << 1))) + +#if GLOBAL_Q == 15 +#define _Q(A) _Q15(A) +#endif +#if GLOBAL_Q == 14 +#define _Q(A) _Q14(A) +#endif +#if GLOBAL_Q == 13 +#define _Q(A) _Q13(A) +#endif +#if GLOBAL_Q == 12 +#define _Q(A) _Q12(A) +#endif +#if GLOBAL_Q == 11 +#define _Q(A) _Q11(A) +#endif +#if GLOBAL_Q == 10 +#define _Q(A) _Q10(A) +#endif +#if GLOBAL_Q == 9 +#define _Q(A) _Q9(A) +#endif +#if GLOBAL_Q == 8 +#define _Q(A) _Q8(A) +#endif +#if GLOBAL_Q == 7 +#define _Q(A) _Q7(A) +#endif +#if GLOBAL_Q == 6 +#define _Q(A) _Q6(A) +#endif +#if GLOBAL_Q == 5 +#define _Q(A) _Q5(A) +#endif +#if GLOBAL_Q == 4 +#define _Q(A) _Q4(A) +#endif +#if GLOBAL_Q == 3 +#define _Q(A) _Q3(A) +#endif +#if GLOBAL_Q == 2 +#define _Q(A) _Q2(A) +#endif +#if GLOBAL_Q == 1 +#define _Q(A) _Q1(A) +#endif + +//***************************************************************************** +// +// Convert an Q number to a floating point value. +// +//***************************************************************************** +extern float _Q15toF(_q15 A); +extern float _Q14toF(_q14 A); +extern float _Q13toF(_q13 A); +extern float _Q12toF(_q12 A); +extern float _Q11toF(_q11 A); +extern float _Q10toF(_q10 A); +extern float _Q9toF(_q9 A); +extern float _Q8toF(_q8 A); +extern float _Q7toF(_q7 A); +extern float _Q6toF(_q6 A); +extern float _Q5toF(_q5 A); +extern float _Q4toF(_q4 A); +extern float _Q3toF(_q3 A); +extern float _Q2toF(_q2 A); +extern float _Q1toF(_q1 A); + +#if GLOBAL_Q == 15 +#define _QtoF(A) _Q15toF(A) +#endif +#if GLOBAL_Q == 14 +#define _QtoF(A) _Q14toF(A) +#endif +#if GLOBAL_Q == 13 +#define _QtoF(A) _Q13toF(A) +#endif +#if GLOBAL_Q == 12 +#define _QtoF(A) _Q12toF(A) +#endif +#if GLOBAL_Q == 11 +#define _QtoF(A) _Q11toF(A) +#endif +#if GLOBAL_Q == 10 +#define _QtoF(A) _Q10toF(A) +#endif +#if GLOBAL_Q == 9 +#define _QtoF(A) _Q9toF(A) +#endif +#if GLOBAL_Q == 8 +#define _QtoF(A) _Q8toF(A) +#endif +#if GLOBAL_Q == 7 +#define _QtoF(A) _Q7toF(A) +#endif +#if GLOBAL_Q == 6 +#define _QtoF(A) _Q6toF(A) +#endif +#if GLOBAL_Q == 5 +#define _QtoF(A) _Q5toF(A) +#endif +#if GLOBAL_Q == 4 +#define _QtoF(A) _Q4toF(A) +#endif +#if GLOBAL_Q == 3 +#define _QtoF(A) _Q3toF(A) +#endif +#if GLOBAL_Q == 2 +#define _QtoF(A) _Q2toF(A) +#endif +#if GLOBAL_Q == 1 +#define _QtoF(A) _Q1toF(A) +#endif + +//***************************************************************************** +// +// Saturates an Q number in a given range. +// +//***************************************************************************** +#define _Qsat(A, Pos, Neg) (((A) > (Pos)) ? \ + (Pos) : \ + (((A) < (Neg)) ? (Neg) : (A))) + +//***************************************************************************** +// +// Converts an Q number between the global Q format and a specified Q +// format. +// +//***************************************************************************** + +#if (GLOBAL_Q >= 15) +#define _QtoQ15(A) ((_q15)(A) >> (GLOBAL_Q - 15)) +#define _Q15toQ(A) ((_q15)(A) << (GLOBAL_Q - 15)) +#else +#define _QtoQ15(A) ((_q15)(A) << (15 - GLOBAL_Q)) +#define _Q15toQ(A) ((_q15)(A) >> (15 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 14) +#define _QtoQ14(A) ((_q14)(A) >> (GLOBAL_Q - 14)) +#define _Q14toQ(A) ((_q14)(A) << (GLOBAL_Q - 14)) +#else +#define _QtoQ14(A) ((_q14)(A) << (14 - GLOBAL_Q)) +#define _Q14toQ(A) ((_q14)(A) >> (14 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 13) +#define _QtoQ13(A) ((_q13)(A) >> (GLOBAL_Q - 13)) +#define _Q13toQ(A) ((_q13)(A) << (GLOBAL_Q - 13)) +#else +#define _QtoQ13(A) ((_q13)(A) << (13 - GLOBAL_Q)) +#define _Q13toQ(A) ((_q13)(A) >> (13 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 12) +#define _QtoQ12(A) ((_q12)(A) >> (GLOBAL_Q - 12)) +#define _Q12toQ(A) ((_q12)(A) << (GLOBAL_Q - 12)) +#else +#define _QtoQ12(A) ((_q12)(A) << (12 - GLOBAL_Q)) +#define _Q12toQ(A) ((_q12)(A) >> (12 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 11) +#define _QtoQ11(A) ((_q11)(A) >> (GLOBAL_Q - 11)) +#define _Q11toQ(A) ((_q11)(A) << (GLOBAL_Q - 11)) +#else +#define _QtoQ11(A) ((_q11)(A) << (11 - GLOBAL_Q)) +#define _Q11toQ(A) ((_q11)(A) >> (11 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 10) +#define _QtoQ10(A) ((_q10)(A) >> (GLOBAL_Q - 10)) +#define _Q10toQ(A) ((_q10)(A) << (GLOBAL_Q - 10)) +#else +#define _QtoQ10(A) ((_q10)(A) << (10 - GLOBAL_Q)) +#define _Q10toQ(A) ((_q10)(A) >> (10 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 9) +#define _QtoQ9(A) ((_q9)(A) >> (GLOBAL_Q - 9)) +#define _Q9toQ(A) ((_q9)(A) << (GLOBAL_Q - 9)) +#else +#define _QtoQ9(A) ((_q9)(A) << (9 - GLOBAL_Q)) +#define _Q9toQ(A) ((_q9)(A) >> (9 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 8) +#define _QtoQ8(A) ((_q8)(A) >> (GLOBAL_Q - 8)) +#define _Q8toQ(A) ((_q8)(A) << (GLOBAL_Q - 8)) +#else +#define _QtoQ8(A) ((_q8)(A) << (8 - GLOBAL_Q)) +#define _Q8toQ(A) ((_q8)(A) >> (8 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 7) +#define _QtoQ7(A) ((_q7)(A) >> (GLOBAL_Q - 7)) +#define _Q7toQ(A) ((_q7)(A) << (GLOBAL_Q - 7)) +#else +#define _QtoQ7(A) ((_q7)(A) << (7 - GLOBAL_Q)) +#define _Q7toQ(A) ((_q7)(A) >> (7 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 6) +#define _QtoQ6(A) ((_q6)(A) >> (GLOBAL_Q - 6)) +#define _Q6toQ(A) ((_q6)(A) << (GLOBAL_Q - 6)) +#else +#define _QtoQ6(A) ((_q6)(A) << (6 - GLOBAL_Q)) +#define _Q6toQ(A) ((_q6)(A) >> (6 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 5) +#define _QtoQ5(A) ((_q5)(A) >> (GLOBAL_Q - 5)) +#define _Q5toQ(A) ((_q5)(A) << (GLOBAL_Q - 5)) +#else +#define _QtoQ5(A) ((_q5)(A) << (5 - GLOBAL_Q)) +#define _Q5toQ(A) ((_q5)(A) >> (5 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 4) +#define _QtoQ4(A) ((_q4)(A) >> (GLOBAL_Q - 4)) +#define _Q4toQ(A) ((_q4)(A) << (GLOBAL_Q - 4)) +#else +#define _QtoQ4(A) ((_q4)(A) << (4 - GLOBAL_Q)) +#define _Q4toQ(A) ((_q4)(A) >> (4 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 3) +#define _QtoQ3(A) ((_q3)(A) >> (GLOBAL_Q - 3)) +#define _Q3toQ(A) ((_q3)(A) << (GLOBAL_Q - 3)) +#else +#define _QtoQ3(A) ((_q3)(A) << (3 - GLOBAL_Q)) +#define _Q3toQ(A) ((_q3)(A) >> (3 - GLOBAL_Q)) +#endif + +#if (GLOBAL_Q >= 2) +#define _QtoQ2(A) ((_q2)(A) >> (GLOBAL_Q - 2)) +#define _Q2toQ(A) ((_q2)(A) << (GLOBAL_Q - 2)) +#else +#define _QtoQ2(A) ((_q2)(A) << (2 - GLOBAL_Q)) +#define _Q2toQ(A) ((_q2)(A) >> (2 - GLOBAL_Q)) +#endif + +#define _QtoQ1(A) ((_q1)(A) >> (GLOBAL_Q - 1)) +#define _Q1toQ(A) ((_q1)(A) << (GLOBAL_Q - 1)) + + +//***************************************************************************** +// +// Multiplies two Q numbers. +// +//***************************************************************************** +extern _q15 _Q15mpy(_q15 A, _q15 B); +extern _q14 _Q14mpy(_q14 A, _q14 B); +extern _q13 _Q13mpy(_q13 A, _q13 B); +extern _q12 _Q12mpy(_q12 A, _q12 B); +extern _q11 _Q11mpy(_q11 A, _q11 B); +extern _q10 _Q10mpy(_q10 A, _q10 B); +extern _q9 _Q9mpy(_q9 A, _q9 B); +extern _q8 _Q8mpy(_q8 A, _q8 B); +extern _q7 _Q7mpy(_q7 A, _q7 B); +extern _q6 _Q6mpy(_q6 A, _q6 B); +extern _q5 _Q5mpy(_q5 A, _q5 B); +extern _q4 _Q4mpy(_q4 A, _q4 B); +extern _q3 _Q3mpy(_q3 A, _q3 B); +extern _q2 _Q2mpy(_q2 A, _q2 B); +extern _q1 _Q1mpy(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qmpy(A, B) _Q15mpy(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qmpy(A, B) _Q14mpy(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qmpy(A, B) _Q13mpy(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qmpy(A, B) _Q12mpy(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qmpy(A, B) _Q11mpy(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qmpy(A, B) _Q10mpy(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qmpy(A, B) _Q9mpy(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qmpy(A, B) _Q8mpy(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qmpy(A, B) _Q7mpy(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qmpy(A, B) _Q6mpy(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qmpy(A, B) _Q5mpy(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qmpy(A, B) _Q4mpy(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qmpy(A, B) _Q3mpy(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qmpy(A, B) _Q2mpy(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qmpy(A, B) _Q1mpy(A, B) +#endif + +//***************************************************************************** +// +// Multiplies two Q numbers, with rounding. +// +//***************************************************************************** +extern _q15 _Q15rmpy(_q15 A, _q15 B); +extern _q14 _Q14rmpy(_q14 A, _q14 B); +extern _q13 _Q13rmpy(_q13 A, _q13 B); +extern _q12 _Q12rmpy(_q12 A, _q12 B); +extern _q11 _Q11rmpy(_q11 A, _q11 B); +extern _q10 _Q10rmpy(_q10 A, _q10 B); +extern _q9 _Q9rmpy(_q9 A, _q9 B); +extern _q8 _Q8rmpy(_q8 A, _q8 B); +extern _q7 _Q7rmpy(_q7 A, _q7 B); +extern _q6 _Q6rmpy(_q6 A, _q6 B); +extern _q5 _Q5rmpy(_q5 A, _q5 B); +extern _q4 _Q4rmpy(_q4 A, _q4 B); +extern _q3 _Q3rmpy(_q3 A, _q3 B); +extern _q2 _Q2rmpy(_q2 A, _q2 B); +extern _q1 _Q1rmpy(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qrmpy(A, B) _Q15rmpy(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qrmpy(A, B) _Q14rmpy(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qrmpy(A, B) _Q13rmpy(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qrmpy(A, B) _Q12rmpy(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qrmpy(A, B) _Q11rmpy(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qrmpy(A, B) _Q10rmpy(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qrmpy(A, B) _Q9rmpy(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qrmpy(A, B) _Q8rmpy(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qrmpy(A, B) _Q7rmpy(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qrmpy(A, B) _Q6rmpy(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qrmpy(A, B) _Q5rmpy(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qrmpy(A, B) _Q4rmpy(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qrmpy(A, B) _Q3rmpy(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qrmpy(A, B) _Q2rmpy(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qrmpy(A, B) _Q1rmpy(A, B) +#endif + +//***************************************************************************** +// +// Multiplies two Q numbers, with rounding and saturation. +// +//***************************************************************************** +extern _q15 _Q15rsmpy(_q15 A, _q15 B); +extern _q14 _Q14rsmpy(_q14 A, _q14 B); +extern _q13 _Q13rsmpy(_q13 A, _q13 B); +extern _q12 _Q12rsmpy(_q12 A, _q12 B); +extern _q11 _Q11rsmpy(_q11 A, _q11 B); +extern _q10 _Q10rsmpy(_q10 A, _q10 B); +extern _q9 _Q9rsmpy(_q9 A, _q9 B); +extern _q8 _Q8rsmpy(_q8 A, _q8 B); +extern _q7 _Q7rsmpy(_q7 A, _q7 B); +extern _q6 _Q6rsmpy(_q6 A, _q6 B); +extern _q5 _Q5rsmpy(_q5 A, _q5 B); +extern _q4 _Q4rsmpy(_q4 A, _q4 B); +extern _q3 _Q3rsmpy(_q3 A, _q3 B); +extern _q2 _Q2rsmpy(_q2 A, _q2 B); +extern _q1 _Q1rsmpy(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qrsmpy(A, B) _Q15rsmpy(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qrsmpy(A, B) _Q14rsmpy(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qrsmpy(A, B) _Q13rsmpy(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qrsmpy(A, B) _Q12rsmpy(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qrsmpy(A, B) _Q11rsmpy(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qrsmpy(A, B) _Q10rsmpy(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qrsmpy(A, B) _Q9rsmpy(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qrsmpy(A, B) _Q8rsmpy(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qrsmpy(A, B) _Q7rsmpy(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qrsmpy(A, B) _Q6rsmpy(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qrsmpy(A, B) _Q5rsmpy(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qrsmpy(A, B) _Q4rsmpy(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qrsmpy(A, B) _Q3rsmpy(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qrsmpy(A, B) _Q2rsmpy(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qrsmpy(A, B) _Q1rsmpy(A, B) +#endif + +//***************************************************************************** +// +// Divides two Q numbers. +// +//***************************************************************************** +extern _q15 _Q15div(_q15 A, _q15 B); +extern _q14 _Q14div(_q14 A, _q14 B); +extern _q13 _Q13div(_q13 A, _q13 B); +extern _q12 _Q12div(_q12 A, _q12 B); +extern _q11 _Q11div(_q11 A, _q11 B); +extern _q10 _Q10div(_q10 A, _q10 B); +extern _q9 _Q9div(_q9 A, _q9 B); +extern _q8 _Q8div(_q8 A, _q8 B); +extern _q7 _Q7div(_q7 A, _q7 B); +extern _q6 _Q6div(_q6 A, _q6 B); +extern _q5 _Q5div(_q5 A, _q5 B); +extern _q4 _Q4div(_q4 A, _q4 B); +extern _q3 _Q3div(_q3 A, _q3 B); +extern _q2 _Q2div(_q2 A, _q2 B); +extern _q1 _Q1div(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qdiv(A, B) _Q15div(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qdiv(A, B) _Q14div(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qdiv(A, B) _Q13div(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qdiv(A, B) _Q12div(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qdiv(A, B) _Q11div(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qdiv(A, B) _Q10div(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qdiv(A, B) _Q9div(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qdiv(A, B) _Q8div(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qdiv(A, B) _Q7div(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qdiv(A, B) _Q6div(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qdiv(A, B) _Q5div(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qdiv(A, B) _Q4div(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qdiv(A, B) _Q3div(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qdiv(A, B) _Q2div(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qdiv(A, B) _Q1div(A, B) +#endif + +//***************************************************************************** +// +// Computes the sin of an Q number. +// +//***************************************************************************** +extern _q15 _Q15sin(_q15 A); +extern _q14 _Q14sin(_q14 A); +extern _q13 _Q13sin(_q13 A); +extern _q12 _Q12sin(_q12 A); +extern _q11 _Q11sin(_q11 A); +extern _q10 _Q10sin(_q10 A); +extern _q9 _Q9sin(_q9 A); +extern _q8 _Q8sin(_q8 A); +extern _q7 _Q7sin(_q7 A); +extern _q6 _Q6sin(_q6 A); +extern _q5 _Q5sin(_q5 A); +extern _q4 _Q4sin(_q4 A); +extern _q3 _Q3sin(_q3 A); +extern _q2 _Q2sin(_q2 A); +extern _q1 _Q1sin(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qsin(A) _Q15sin(A) +#endif +#if GLOBAL_Q == 14 +#define _Qsin(A) _Q14sin(A) +#endif +#if GLOBAL_Q == 13 +#define _Qsin(A) _Q13sin(A) +#endif +#if GLOBAL_Q == 12 +#define _Qsin(A) _Q12sin(A) +#endif +#if GLOBAL_Q == 11 +#define _Qsin(A) _Q11sin(A) +#endif +#if GLOBAL_Q == 10 +#define _Qsin(A) _Q10sin(A) +#endif +#if GLOBAL_Q == 9 +#define _Qsin(A) _Q9sin(A) +#endif +#if GLOBAL_Q == 8 +#define _Qsin(A) _Q8sin(A) +#endif +#if GLOBAL_Q == 7 +#define _Qsin(A) _Q7sin(A) +#endif +#if GLOBAL_Q == 6 +#define _Qsin(A) _Q6sin(A) +#endif +#if GLOBAL_Q == 5 +#define _Qsin(A) _Q5sin(A) +#endif +#if GLOBAL_Q == 4 +#define _Qsin(A) _Q4sin(A) +#endif +#if GLOBAL_Q == 3 +#define _Qsin(A) _Q3sin(A) +#endif +#if GLOBAL_Q == 2 +#define _Qsin(A) _Q2sin(A) +#endif +#if GLOBAL_Q == 1 +#define _Qsin(A) _Q1sin(A) +#endif + +//***************************************************************************** +// +// Computes the sin of an Q number, using cycles per unit instead of radians. +// +//***************************************************************************** +extern _q15 _Q15sinPU(_q15 A); +extern _q14 _Q14sinPU(_q14 A); +extern _q13 _Q13sinPU(_q13 A); +extern _q12 _Q12sinPU(_q12 A); +extern _q11 _Q11sinPU(_q11 A); +extern _q10 _Q10sinPU(_q10 A); +extern _q9 _Q9sinPU(_q9 A); +extern _q8 _Q8sinPU(_q8 A); +extern _q7 _Q7sinPU(_q7 A); +extern _q6 _Q6sinPU(_q6 A); +extern _q5 _Q5sinPU(_q5 A); +extern _q4 _Q4sinPU(_q4 A); +extern _q3 _Q3sinPU(_q3 A); +extern _q2 _Q2sinPU(_q2 A); +extern _q1 _Q1sinPU(_q1 A); + +#if GLOBAL_Q == 15 +#define _QsinPU(A) _Q15sinPU(A) +#endif +#if GLOBAL_Q == 14 +#define _QsinPU(A) _Q14sinPU(A) +#endif +#if GLOBAL_Q == 13 +#define _QsinPU(A) _Q13sinPU(A) +#endif +#if GLOBAL_Q == 12 +#define _QsinPU(A) _Q12sinPU(A) +#endif +#if GLOBAL_Q == 11 +#define _QsinPU(A) _Q11sinPU(A) +#endif +#if GLOBAL_Q == 10 +#define _QsinPU(A) _Q10sinPU(A) +#endif +#if GLOBAL_Q == 9 +#define _QsinPU(A) _Q9sinPU(A) +#endif +#if GLOBAL_Q == 8 +#define _QsinPU(A) _Q8sinPU(A) +#endif +#if GLOBAL_Q == 7 +#define _QsinPU(A) _Q7sinPU(A) +#endif +#if GLOBAL_Q == 6 +#define _QsinPU(A) _Q6sinPU(A) +#endif +#if GLOBAL_Q == 5 +#define _QsinPU(A) _Q5sinPU(A) +#endif +#if GLOBAL_Q == 4 +#define _QsinPU(A) _Q4sinPU(A) +#endif +#if GLOBAL_Q == 3 +#define _QsinPU(A) _Q3sinPU(A) +#endif +#if GLOBAL_Q == 2 +#define _QsinPU(A) _Q2sinPU(A) +#endif +#if GLOBAL_Q == 1 +#define _QsinPU(A) _Q1sinPU(A) +#endif + +//***************************************************************************** +// +// Computes the arcsin of an Q number. +// +//***************************************************************************** +extern _q14 _Q14asin(_q14 A); +extern _q13 _Q13asin(_q13 A); +extern _q12 _Q12asin(_q12 A); +extern _q11 _Q11asin(_q11 A); +extern _q10 _Q10asin(_q10 A); +extern _q9 _Q9asin(_q9 A); +extern _q8 _Q8asin(_q8 A); +extern _q7 _Q7asin(_q7 A); +extern _q6 _Q6asin(_q6 A); +extern _q5 _Q5asin(_q5 A); +extern _q4 _Q4asin(_q4 A); +extern _q3 _Q3asin(_q3 A); +extern _q2 _Q2asin(_q2 A); +extern _q1 _Q1asin(_q1 A); + +#if GLOBAL_Q == 14 +#define _Qasin(A) _Q14asin(A) +#endif +#if GLOBAL_Q == 13 +#define _Qasin(A) _Q13asin(A) +#endif +#if GLOBAL_Q == 12 +#define _Qasin(A) _Q12asin(A) +#endif +#if GLOBAL_Q == 11 +#define _Qasin(A) _Q11asin(A) +#endif +#if GLOBAL_Q == 10 +#define _Qasin(A) _Q10asin(A) +#endif +#if GLOBAL_Q == 9 +#define _Qasin(A) _Q9asin(A) +#endif +#if GLOBAL_Q == 8 +#define _Qasin(A) _Q8asin(A) +#endif +#if GLOBAL_Q == 7 +#define _Qasin(A) _Q7asin(A) +#endif +#if GLOBAL_Q == 6 +#define _Qasin(A) _Q6asin(A) +#endif +#if GLOBAL_Q == 5 +#define _Qasin(A) _Q5asin(A) +#endif +#if GLOBAL_Q == 4 +#define _Qasin(A) _Q4asin(A) +#endif +#if GLOBAL_Q == 3 +#define _Qasin(A) _Q3asin(A) +#endif +#if GLOBAL_Q == 2 +#define _Qasin(A) _Q2asin(A) +#endif +#if GLOBAL_Q == 1 +#define _Qasin(A) _Q1asin(A) +#endif + +//***************************************************************************** +// +// Computes the cos of an Q number. +// +//***************************************************************************** +extern _q15 _Q15cos(_q15 A); +extern _q14 _Q14cos(_q14 A); +extern _q13 _Q13cos(_q13 A); +extern _q12 _Q12cos(_q12 A); +extern _q11 _Q11cos(_q11 A); +extern _q10 _Q10cos(_q10 A); +extern _q9 _Q9cos(_q9 A); +extern _q8 _Q8cos(_q8 A); +extern _q7 _Q7cos(_q7 A); +extern _q6 _Q6cos(_q6 A); +extern _q5 _Q5cos(_q5 A); +extern _q4 _Q4cos(_q4 A); +extern _q3 _Q3cos(_q3 A); +extern _q2 _Q2cos(_q2 A); +extern _q1 _Q1cos(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qcos(A) _Q15cos(A) +#endif +#if GLOBAL_Q == 14 +#define _Qcos(A) _Q14cos(A) +#endif +#if GLOBAL_Q == 13 +#define _Qcos(A) _Q13cos(A) +#endif +#if GLOBAL_Q == 12 +#define _Qcos(A) _Q12cos(A) +#endif +#if GLOBAL_Q == 11 +#define _Qcos(A) _Q11cos(A) +#endif +#if GLOBAL_Q == 10 +#define _Qcos(A) _Q10cos(A) +#endif +#if GLOBAL_Q == 9 +#define _Qcos(A) _Q9cos(A) +#endif +#if GLOBAL_Q == 8 +#define _Qcos(A) _Q8cos(A) +#endif +#if GLOBAL_Q == 7 +#define _Qcos(A) _Q7cos(A) +#endif +#if GLOBAL_Q == 6 +#define _Qcos(A) _Q6cos(A) +#endif +#if GLOBAL_Q == 5 +#define _Qcos(A) _Q5cos(A) +#endif +#if GLOBAL_Q == 4 +#define _Qcos(A) _Q4cos(A) +#endif +#if GLOBAL_Q == 3 +#define _Qcos(A) _Q3cos(A) +#endif +#if GLOBAL_Q == 2 +#define _Qcos(A) _Q2cos(A) +#endif +#if GLOBAL_Q == 1 +#define _Qcos(A) _Q1cos(A) +#endif + +//***************************************************************************** +// +// Computes the cos of an Q number, using cycles per unit instead of radians. +// +//***************************************************************************** +extern _q15 _Q15cosPU(_q15 A); +extern _q14 _Q14cosPU(_q14 A); +extern _q13 _Q13cosPU(_q13 A); +extern _q12 _Q12cosPU(_q12 A); +extern _q11 _Q11cosPU(_q11 A); +extern _q10 _Q10cosPU(_q10 A); +extern _q9 _Q9cosPU(_q9 A); +extern _q8 _Q8cosPU(_q8 A); +extern _q7 _Q7cosPU(_q7 A); +extern _q6 _Q6cosPU(_q6 A); +extern _q5 _Q5cosPU(_q5 A); +extern _q4 _Q4cosPU(_q4 A); +extern _q3 _Q3cosPU(_q3 A); +extern _q2 _Q2cosPU(_q2 A); +extern _q1 _Q1cosPU(_q1 A); + +#if GLOBAL_Q == 15 +#define _QcosPU(A) _Q15cosPU(A) +#endif +#if GLOBAL_Q == 14 +#define _QcosPU(A) _Q14cosPU(A) +#endif +#if GLOBAL_Q == 13 +#define _QcosPU(A) _Q13cosPU(A) +#endif +#if GLOBAL_Q == 12 +#define _QcosPU(A) _Q12cosPU(A) +#endif +#if GLOBAL_Q == 11 +#define _QcosPU(A) _Q11cosPU(A) +#endif +#if GLOBAL_Q == 10 +#define _QcosPU(A) _Q10cosPU(A) +#endif +#if GLOBAL_Q == 9 +#define _QcosPU(A) _Q9cosPU(A) +#endif +#if GLOBAL_Q == 8 +#define _QcosPU(A) _Q8cosPU(A) +#endif +#if GLOBAL_Q == 7 +#define _QcosPU(A) _Q7cosPU(A) +#endif +#if GLOBAL_Q == 6 +#define _QcosPU(A) _Q6cosPU(A) +#endif +#if GLOBAL_Q == 5 +#define _QcosPU(A) _Q5cosPU(A) +#endif +#if GLOBAL_Q == 4 +#define _QcosPU(A) _Q4cosPU(A) +#endif +#if GLOBAL_Q == 3 +#define _QcosPU(A) _Q3cosPU(A) +#endif +#if GLOBAL_Q == 2 +#define _QcosPU(A) _Q2cosPU(A) +#endif +#if GLOBAL_Q == 1 +#define _QcosPU(A) _Q1cosPU(A) +#endif + +//***************************************************************************** +// +// Computes the arccos of an Q number. +// +//***************************************************************************** +#define _Q14acos(A) (_Q14(1.570796327) - _Q14asin(A)) +#define _Q13acos(A) (_Q13(1.570796327) - _Q13asin(A)) +#define _Q12acos(A) (_Q12(1.570796327) - _Q12asin(A)) +#define _Q11acos(A) (_Q11(1.570796327) - _Q11asin(A)) +#define _Q10acos(A) (_Q10(1.570796327) - _Q10asin(A)) +#define _Q9acos(A) (_Q9(1.570796327) - _Q9asin(A)) +#define _Q8acos(A) (_Q8(1.570796327) - _Q8asin(A)) +#define _Q7acos(A) (_Q7(1.570796327) - _Q7asin(A)) +#define _Q6acos(A) (_Q6(1.570796327) - _Q6asin(A)) +#define _Q5acos(A) (_Q5(1.570796327) - _Q5asin(A)) +#define _Q4acos(A) (_Q4(1.570796327) - _Q4asin(A)) +#define _Q3acos(A) (_Q3(1.570796327) - _Q3asin(A)) +#define _Q2acos(A) (_Q2(1.570796327) - _Q2asin(A)) +#define _Q1acos(A) (_Q1(1.570796327) - _Q1asin(A)) + +#if GLOBAL_Q == 14 +#define _Qacos(A) _Q14acos(A) +#endif +#if GLOBAL_Q == 13 +#define _Qacos(A) _Q13acos(A) +#endif +#if GLOBAL_Q == 12 +#define _Qacos(A) _Q12acos(A) +#endif +#if GLOBAL_Q == 11 +#define _Qacos(A) _Q11acos(A) +#endif +#if GLOBAL_Q == 10 +#define _Qacos(A) _Q10acos(A) +#endif +#if GLOBAL_Q == 9 +#define _Qacos(A) _Q9acos(A) +#endif +#if GLOBAL_Q == 8 +#define _Qacos(A) _Q8acos(A) +#endif +#if GLOBAL_Q == 7 +#define _Qacos(A) _Q7acos(A) +#endif +#if GLOBAL_Q == 6 +#define _Qacos(A) _Q6acos(A) +#endif +#if GLOBAL_Q == 5 +#define _Qacos(A) _Q5acos(A) +#endif +#if GLOBAL_Q == 4 +#define _Qacos(A) _Q4acos(A) +#endif +#if GLOBAL_Q == 3 +#define _Qacos(A) _Q3acos(A) +#endif +#if GLOBAL_Q == 2 +#define _Qacos(A) _Q2acos(A) +#endif +#if GLOBAL_Q == 1 +#define _Qacos(A) _Q1acos(A) +#endif + +//***************************************************************************** +// +// Computes the arctan of a coordinate specified by two Q numbers. +// +//***************************************************************************** +extern _q15 _Q15atan2(_q15 A, _q15 B); +extern _q14 _Q14atan2(_q14 A, _q14 B); +extern _q13 _Q13atan2(_q13 A, _q13 B); +extern _q12 _Q12atan2(_q12 A, _q12 B); +extern _q11 _Q11atan2(_q11 A, _q11 B); +extern _q10 _Q10atan2(_q10 A, _q10 B); +extern _q9 _Q9atan2(_q9 A, _q9 B); +extern _q8 _Q8atan2(_q8 A, _q8 B); +extern _q7 _Q7atan2(_q7 A, _q7 B); +extern _q6 _Q6atan2(_q6 A, _q6 B); +extern _q5 _Q5atan2(_q5 A, _q5 B); +extern _q4 _Q4atan2(_q4 A, _q4 B); +extern _q3 _Q3atan2(_q3 A, _q3 B); +extern _q2 _Q2atan2(_q2 A, _q2 B); +extern _q1 _Q1atan2(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qatan2(A, B) _Q15atan2(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qatan2(A, B) _Q14atan2(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qatan2(A, B) _Q13atan2(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qatan2(A, B) _Q12atan2(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qatan2(A, B) _Q11atan2(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qatan2(A, B) _Q10atan2(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qatan2(A, B) _Q9atan2(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qatan2(A, B) _Q8atan2(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qatan2(A, B) _Q7atan2(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qatan2(A, B) _Q6atan2(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qatan2(A, B) _Q5atan2(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qatan2(A, B) _Q4atan2(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qatan2(A, B) _Q3atan2(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qatan2(A, B) _Q2atan2(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qatan2(A, B) _Q1atan2(A, B) +#endif + +//***************************************************************************** +// +// Computes the arctan of a coordinate specified by two Q numbers, returning +// the value in cycles per unit instead of radians. +// +//***************************************************************************** +extern _q15 _Q15atan2PU(_q15 A, _q15 B); +extern _q14 _Q14atan2PU(_q14 A, _q14 B); +extern _q13 _Q13atan2PU(_q13 A, _q13 B); +extern _q12 _Q12atan2PU(_q12 A, _q12 B); +extern _q11 _Q11atan2PU(_q11 A, _q11 B); +extern _q10 _Q10atan2PU(_q10 A, _q10 B); +extern _q9 _Q9atan2PU(_q9 A, _q9 B); +extern _q8 _Q8atan2PU(_q8 A, _q8 B); +extern _q7 _Q7atan2PU(_q7 A, _q7 B); +extern _q6 _Q6atan2PU(_q6 A, _q6 B); +extern _q5 _Q5atan2PU(_q5 A, _q5 B); +extern _q4 _Q4atan2PU(_q4 A, _q4 B); +extern _q3 _Q3atan2PU(_q3 A, _q3 B); +extern _q2 _Q2atan2PU(_q2 A, _q2 B); +extern _q1 _Q1atan2PU(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qatan2PU(A, B) _Q15atan2PU(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qatan2PU(A, B) _Q14atan2PU(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qatan2PU(A, B) _Q13atan2PU(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qatan2PU(A, B) _Q12atan2PU(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qatan2PU(A, B) _Q11atan2PU(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qatan2PU(A, B) _Q10atan2PU(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qatan2PU(A, B) _Q9atan2PU(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qatan2PU(A, B) _Q8atan2PU(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qatan2PU(A, B) _Q7atan2PU(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qatan2PU(A, B) _Q6atan2PU(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qatan2PU(A, B) _Q5atan2PU(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qatan2PU(A, B) _Q4atan2PU(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qatan2PU(A, B) _Q3atan2PU(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qatan2PU(A, B) _Q2atan2PU(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qatan2PU(A, B) _Q1atan2PU(A, B) +#endif + +//***************************************************************************** +// +// Computes the arctan of an Q number. +// +//***************************************************************************** +#define _Q14atan(A) _Q14atan2(A, _Q14(1.0)) +#define _Q13atan(A) _Q13atan2(A, _Q13(1.0)) +#define _Q12atan(A) _Q12atan2(A, _Q12(1.0)) +#define _Q11atan(A) _Q11atan2(A, _Q11(1.0)) +#define _Q10atan(A) _Q10atan2(A, _Q10(1.0)) +#define _Q9atan(A) _Q9atan2(A, _Q9(1.0)) +#define _Q8atan(A) _Q8atan2(A, _Q8(1.0)) +#define _Q7atan(A) _Q7atan2(A, _Q7(1.0)) +#define _Q6atan(A) _Q6atan2(A, _Q6(1.0)) +#define _Q5atan(A) _Q5atan2(A, _Q5(1.0)) +#define _Q4atan(A) _Q4atan2(A, _Q4(1.0)) +#define _Q3atan(A) _Q3atan2(A, _Q3(1.0)) +#define _Q2atan(A) _Q2atan2(A, _Q2(1.0)) +#define _Q1atan(A) _Q1atan2(A, _Q1(1.0)) + +#if GLOBAL_Q == 15 +#define _Qatan(A) _Q15atan2(A, _Q15(1.0)) +#endif +#if GLOBAL_Q == 14 +#define _Qatan(A) _Q14atan2(A, _Q14(1.0)) +#endif +#if GLOBAL_Q == 13 +#define _Qatan(A) _Q13atan2(A, _Q13(1.0)) +#endif +#if GLOBAL_Q == 12 +#define _Qatan(A) _Q12atan2(A, _Q12(1.0)) +#endif +#if GLOBAL_Q == 11 +#define _Qatan(A) _Q11atan2(A, _Q11(1.0)) +#endif +#if GLOBAL_Q == 10 +#define _Qatan(A) _Q10atan2(A, _Q10(1.0)) +#endif +#if GLOBAL_Q == 9 +#define _Qatan(A) _Q9atan2(A, _Q9(1.0)) +#endif +#if GLOBAL_Q == 8 +#define _Qatan(A) _Q8atan2(A, _Q8(1.0)) +#endif +#if GLOBAL_Q == 7 +#define _Qatan(A) _Q7atan2(A, _Q7(1.0)) +#endif +#if GLOBAL_Q == 6 +#define _Qatan(A) _Q6atan2(A, _Q6(1.0)) +#endif +#if GLOBAL_Q == 5 +#define _Qatan(A) _Q5atan2(A, _Q5(1.0)) +#endif +#if GLOBAL_Q == 4 +#define _Qatan(A) _Q4atan2(A, _Q4(1.0)) +#endif +#if GLOBAL_Q == 3 +#define _Qatan(A) _Q3atan2(A, _Q3(1.0)) +#endif +#if GLOBAL_Q == 2 +#define _Qatan(A) _Q2atan2(A, _Q2(1.0)) +#endif +#if GLOBAL_Q == 1 +#define _Qatan(A) _Q1atan2(A, _Q1(1.0)) +#endif + +//***************************************************************************** +// +// Computes the square root of an Q number. +// +//***************************************************************************** +extern _q15 _Q15sqrt(_q15 A); +extern _q14 _Q14sqrt(_q14 A); +extern _q13 _Q13sqrt(_q13 A); +extern _q12 _Q12sqrt(_q12 A); +extern _q11 _Q11sqrt(_q11 A); +extern _q10 _Q10sqrt(_q10 A); +extern _q9 _Q9sqrt(_q9 A); +extern _q8 _Q8sqrt(_q8 A); +extern _q7 _Q7sqrt(_q7 A); +extern _q6 _Q6sqrt(_q6 A); +extern _q5 _Q5sqrt(_q5 A); +extern _q4 _Q4sqrt(_q4 A); +extern _q3 _Q3sqrt(_q3 A); +extern _q2 _Q2sqrt(_q2 A); +extern _q1 _Q1sqrt(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qsqrt(A) _Q15sqrt(A) +#endif +#if GLOBAL_Q == 14 +#define _Qsqrt(A) _Q14sqrt(A) +#endif +#if GLOBAL_Q == 13 +#define _Qsqrt(A) _Q13sqrt(A) +#endif +#if GLOBAL_Q == 12 +#define _Qsqrt(A) _Q12sqrt(A) +#endif +#if GLOBAL_Q == 11 +#define _Qsqrt(A) _Q11sqrt(A) +#endif +#if GLOBAL_Q == 10 +#define _Qsqrt(A) _Q10sqrt(A) +#endif +#if GLOBAL_Q == 9 +#define _Qsqrt(A) _Q9sqrt(A) +#endif +#if GLOBAL_Q == 8 +#define _Qsqrt(A) _Q8sqrt(A) +#endif +#if GLOBAL_Q == 7 +#define _Qsqrt(A) _Q7sqrt(A) +#endif +#if GLOBAL_Q == 6 +#define _Qsqrt(A) _Q6sqrt(A) +#endif +#if GLOBAL_Q == 5 +#define _Qsqrt(A) _Q5sqrt(A) +#endif +#if GLOBAL_Q == 4 +#define _Qsqrt(A) _Q4sqrt(A) +#endif +#if GLOBAL_Q == 3 +#define _Qsqrt(A) _Q3sqrt(A) +#endif +#if GLOBAL_Q == 2 +#define _Qsqrt(A) _Q2sqrt(A) +#endif +#if GLOBAL_Q == 1 +#define _Qsqrt(A) _Q1sqrt(A) +#endif + +//***************************************************************************** +// +// Computes 1 over the square root of an Q number. +// +//***************************************************************************** +extern _q15 _Q15isqrt(_q15 A); +extern _q14 _Q14isqrt(_q14 A); +extern _q13 _Q13isqrt(_q13 A); +extern _q12 _Q12isqrt(_q12 A); +extern _q11 _Q11isqrt(_q11 A); +extern _q10 _Q10isqrt(_q10 A); +extern _q9 _Q9isqrt(_q9 A); +extern _q8 _Q8isqrt(_q8 A); +extern _q7 _Q7isqrt(_q7 A); +extern _q6 _Q6isqrt(_q6 A); +extern _q5 _Q5isqrt(_q5 A); +extern _q4 _Q4isqrt(_q4 A); +extern _q3 _Q3isqrt(_q3 A); +extern _q2 _Q2isqrt(_q2 A); +extern _q1 _Q1isqrt(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qisqrt(A) _Q15isqrt(A) +#endif +#if GLOBAL_Q == 14 +#define _Qisqrt(A) _Q14isqrt(A) +#endif +#if GLOBAL_Q == 13 +#define _Qisqrt(A) _Q13isqrt(A) +#endif +#if GLOBAL_Q == 12 +#define _Qisqrt(A) _Q12isqrt(A) +#endif +#if GLOBAL_Q == 11 +#define _Qisqrt(A) _Q11isqrt(A) +#endif +#if GLOBAL_Q == 10 +#define _Qisqrt(A) _Q10isqrt(A) +#endif +#if GLOBAL_Q == 9 +#define _Qisqrt(A) _Q9isqrt(A) +#endif +#if GLOBAL_Q == 8 +#define _Qisqrt(A) _Q8isqrt(A) +#endif +#if GLOBAL_Q == 7 +#define _Qisqrt(A) _Q7isqrt(A) +#endif +#if GLOBAL_Q == 6 +#define _Qisqrt(A) _Q6isqrt(A) +#endif +#if GLOBAL_Q == 5 +#define _Qisqrt(A) _Q5isqrt(A) +#endif +#if GLOBAL_Q == 4 +#define _Qisqrt(A) _Q4isqrt(A) +#endif +#if GLOBAL_Q == 3 +#define _Qisqrt(A) _Q3isqrt(A) +#endif +#if GLOBAL_Q == 2 +#define _Qisqrt(A) _Q2isqrt(A) +#endif +#if GLOBAL_Q == 1 +#define _Qisqrt(A) _Q1isqrt(A) +#endif + +//***************************************************************************** +// +// Computes e^x of an Q number. +// +//***************************************************************************** +extern _q15 _Q15exp(_q15 A); +extern _q14 _Q14exp(_q14 A); +extern _q13 _Q13exp(_q13 A); +extern _q12 _Q12exp(_q12 A); +extern _q11 _Q11exp(_q11 A); +extern _q10 _Q10exp(_q10 A); +extern _q9 _Q9exp(_q9 A); +extern _q8 _Q8exp(_q8 A); +extern _q7 _Q7exp(_q7 A); +extern _q6 _Q6exp(_q6 A); +extern _q5 _Q5exp(_q5 A); +extern _q4 _Q4exp(_q4 A); +extern _q3 _Q3exp(_q3 A); +extern _q2 _Q2exp(_q2 A); +extern _q1 _Q1exp(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qexp(A) _Q15exp(A) +#endif +#if GLOBAL_Q == 14 +#define _Qexp(A) _Q14exp(A) +#endif +#if GLOBAL_Q == 13 +#define _Qexp(A) _Q13exp(A) +#endif +#if GLOBAL_Q == 12 +#define _Qexp(A) _Q12exp(A) +#endif +#if GLOBAL_Q == 11 +#define _Qexp(A) _Q11exp(A) +#endif +#if GLOBAL_Q == 10 +#define _Qexp(A) _Q10exp(A) +#endif +#if GLOBAL_Q == 9 +#define _Qexp(A) _Q9exp(A) +#endif +#if GLOBAL_Q == 8 +#define _Qexp(A) _Q8exp(A) +#endif +#if GLOBAL_Q == 7 +#define _Qexp(A) _Q7exp(A) +#endif +#if GLOBAL_Q == 6 +#define _Qexp(A) _Q6exp(A) +#endif +#if GLOBAL_Q == 5 +#define _Qexp(A) _Q5exp(A) +#endif +#if GLOBAL_Q == 4 +#define _Qexp(A) _Q4exp(A) +#endif +#if GLOBAL_Q == 3 +#define _Qexp(A) _Q3exp(A) +#endif +#if GLOBAL_Q == 2 +#define _Qexp(A) _Q2exp(A) +#endif +#if GLOBAL_Q == 1 +#define _Qexp(A) _Q1exp(A) +#endif + +//***************************************************************************** +// +// Computes log(x) of an Q number. +// +//***************************************************************************** +extern _q15 _Q15log(_q15 A); +extern _q14 _Q14log(_q14 A); +extern _q13 _Q13log(_q13 A); +extern _q12 _Q12log(_q12 A); +extern _q11 _Q11log(_q11 A); +extern _q10 _Q10log(_q10 A); +extern _q9 _Q9log(_q9 A); +extern _q8 _Q8log(_q8 A); +extern _q7 _Q7log(_q7 A); +extern _q6 _Q6log(_q6 A); +extern _q5 _Q5log(_q5 A); +extern _q4 _Q4log(_q4 A); +extern _q3 _Q3log(_q3 A); +extern _q2 _Q2log(_q2 A); +extern _q1 _Q1log(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qlog(A) _Q15log(A) +#endif +#if GLOBAL_Q == 14 +#define _Qlog(A) _Q14log(A) +#endif +#if GLOBAL_Q == 13 +#define _Qlog(A) _Q13log(A) +#endif +#if GLOBAL_Q == 12 +#define _Qlog(A) _Q12log(A) +#endif +#if GLOBAL_Q == 11 +#define _Qlog(A) _Q11log(A) +#endif +#if GLOBAL_Q == 10 +#define _Qlog(A) _Q10log(A) +#endif +#if GLOBAL_Q == 9 +#define _Qlog(A) _Q9log(A) +#endif +#if GLOBAL_Q == 8 +#define _Qlog(A) _Q8log(A) +#endif +#if GLOBAL_Q == 7 +#define _Qlog(A) _Q7log(A) +#endif +#if GLOBAL_Q == 6 +#define _Qlog(A) _Q6log(A) +#endif +#if GLOBAL_Q == 5 +#define _Qlog(A) _Q5log(A) +#endif +#if GLOBAL_Q == 4 +#define _Qlog(A) _Q4log(A) +#endif +#if GLOBAL_Q == 3 +#define _Qlog(A) _Q3log(A) +#endif +#if GLOBAL_Q == 2 +#define _Qlog(A) _Q2log(A) +#endif +#if GLOBAL_Q == 1 +#define _Qlog(A) _Q1log(A) +#endif + +//***************************************************************************** +// +// Returns the integer portion of an Q number. +// +//***************************************************************************** +#define _Q15int(A) ((A) >> 15) +#define _Q14int(A) ((A) >> 14) +#define _Q13int(A) ((A) >> 13) +#define _Q12int(A) ((A) >> 12) +#define _Q11int(A) ((A) >> 11) +#define _Q10int(A) ((A) >> 10) +#define _Q9int(A) ((A) >> 9) +#define _Q8int(A) ((A) >> 8) +#define _Q7int(A) ((A) >> 7) +#define _Q6int(A) ((A) >> 6) +#define _Q5int(A) ((A) >> 5) +#define _Q4int(A) ((A) >> 4) +#define _Q3int(A) ((A) >> 3) +#define _Q2int(A) ((A) >> 2) +#define _Q1int(A) ((A) >> 1) +#define _Qint(A) ((A) >> GLOBAL_Q) + +//***************************************************************************** +// +// Computes the fractional portion of an Q number. +// +//***************************************************************************** +extern _q15 _Q15frac(_q15 A); +extern _q14 _Q14frac(_q14 A); +extern _q13 _Q13frac(_q13 A); +extern _q12 _Q12frac(_q12 A); +extern _q11 _Q11frac(_q11 A); +extern _q10 _Q10frac(_q10 A); +extern _q9 _Q9frac(_q9 A); +extern _q8 _Q8frac(_q8 A); +extern _q7 _Q7frac(_q7 A); +extern _q6 _Q6frac(_q6 A); +extern _q5 _Q5frac(_q5 A); +extern _q4 _Q4frac(_q4 A); +extern _q3 _Q3frac(_q3 A); +extern _q2 _Q2frac(_q2 A); +extern _q1 _Q1frac(_q1 A); + +#if GLOBAL_Q == 15 +#define _Qfrac(A) _Q15frac(A) +#endif +#if GLOBAL_Q == 14 +#define _Qfrac(A) _Q14frac(A) +#endif +#if GLOBAL_Q == 13 +#define _Qfrac(A) _Q13frac(A) +#endif +#if GLOBAL_Q == 12 +#define _Qfrac(A) _Q12frac(A) +#endif +#if GLOBAL_Q == 11 +#define _Qfrac(A) _Q11frac(A) +#endif +#if GLOBAL_Q == 10 +#define _Qfrac(A) _Q10frac(A) +#endif +#if GLOBAL_Q == 9 +#define _Qfrac(A) _Q9frac(A) +#endif +#if GLOBAL_Q == 8 +#define _Qfrac(A) _Q8frac(A) +#endif +#if GLOBAL_Q == 7 +#define _Qfrac(A) _Q7frac(A) +#endif +#if GLOBAL_Q == 6 +#define _Qfrac(A) _Q6frac(A) +#endif +#if GLOBAL_Q == 5 +#define _Qfrac(A) _Q5frac(A) +#endif +#if GLOBAL_Q == 4 +#define _Qfrac(A) _Q4frac(A) +#endif +#if GLOBAL_Q == 3 +#define _Qfrac(A) _Q3frac(A) +#endif +#if GLOBAL_Q == 2 +#define _Qfrac(A) _Q2frac(A) +#endif +#if GLOBAL_Q == 1 +#define _Qfrac(A) _Q1frac(A) +#endif + +//***************************************************************************** +// +// Multiplies two Q numbers in the specified iQ formats, returning the result +// in another Q format. +// +//***************************************************************************** +extern int16_t _Q15mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q14mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q13mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q12mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q11mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q10mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q9mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q8mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q7mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q6mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q5mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q4mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q3mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q2mpyQX(int16_t A, int n1, int16_t B, int n2); +extern int16_t _Q1mpyQX(int16_t A, int n1, int16_t B, int n2); + +#if GLOBAL_Q == 15 +#define _QmpyQX(A, n1, B, n2) _Q15mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 14 +#define _QmpyQX(A, n1, B, n2) _Q14mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 13 +#define _QmpyQX(A, n1, B, n2) _Q13mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 12 +#define _QmpyQX(A, n1, B, n2) _Q12mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 11 +#define _QmpyQX(A, n1, B, n2) _Q11mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 10 +#define _QmpyQX(A, n1, B, n2) _Q10mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 9 +#define _QmpyQX(A, n1, B, n2) _Q9mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 8 +#define _QmpyQX(A, n1, B, n2) _Q8mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 7 +#define _QmpyQX(A, n1, B, n2) _Q7mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 6 +#define _QmpyQX(A, n1, B, n2) _Q6mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 5 +#define _QmpyQX(A, n1, B, n2) _Q5mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 4 +#define _QmpyQX(A, n1, B, n2) _Q4mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 3 +#define _QmpyQX(A, n1, B, n2) _Q3mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 2 +#define _QmpyQX(A, n1, B, n2) _Q2mpyQX(A, n1, B, n2) +#endif +#if GLOBAL_Q == 1 +#define _QmpyQX(A, n1, B, n2) _Q1mpyQX(A, n1, B, n2) +#endif + + +//***************************************************************************** +// +// Multiplies a Q number by an integer. +// +//***************************************************************************** +#define _Q15mpyI16(A, B) ((A) * (B)) +#define _Q14mpyI16(A, B) ((A) * (B)) +#define _Q13mpyI16(A, B) ((A) * (B)) +#define _Q12mpyI16(A, B) ((A) * (B)) +#define _Q11mpyI16(A, B) ((A) * (B)) +#define _Q10mpyI16(A, B) ((A) * (B)) +#define _Q9mpyI16(A, B) ((A) * (B)) +#define _Q8mpyI16(A, B) ((A) * (B)) +#define _Q7mpyI16(A, B) ((A) * (B)) +#define _Q6mpyI16(A, B) ((A) * (B)) +#define _Q5mpyI16(A, B) ((A) * (B)) +#define _Q4mpyI16(A, B) ((A) * (B)) +#define _Q3mpyI16(A, B) ((A) * (B)) +#define _Q2mpyI16(A, B) ((A) * (B)) +#define _Q1mpyI16(A, B) ((A) * (B)) +#define _QmpyI16(A, B) ((A) * (B)) + +//***************************************************************************** +// +// Multiplies a Q number by an integer, and returns the integer portion. +// +//***************************************************************************** +#define _Q15mpyI16int(A, B) _Q15int(_Q15mpyI16(A, B)) +#define _Q14mpyI16int(A, B) _Q14int(_Q14mpyI16(A, B)) +#define _Q13mpyI16int(A, B) _Q13int(_Q13mpyI16(A, B)) +#define _Q12mpyI16int(A, B) _Q12int(_Q12mpyI16(A, B)) +#define _Q11mpyI16int(A, B) _Q11int(_Q11mpyI16(A, B)) +#define _Q10mpyI16int(A, B) _Q10int(_Q10mpyI16(A, B)) +#define _Q9mpyI16int(A, B) _Q9int(_Q9mpyI16(A, B)) +#define _Q8mpyI16int(A, B) _Q8int(_Q8mpyI16(A, B)) +#define _Q7mpyI16int(A, B) _Q7int(_Q7mpyI16(A, B)) +#define _Q6mpyI16int(A, B) _Q6int(_Q6mpyI16(A, B)) +#define _Q5mpyI16int(A, B) _Q5int(_Q5mpyI16(A, B)) +#define _Q4mpyI16int(A, B) _Q4int(_Q4mpyI16(A, B)) +#define _Q3mpyI16int(A, B) _Q3int(_Q3mpyI16(A, B)) +#define _Q2mpyI16int(A, B) _Q2int(_Q2mpyI16(A, B)) +#define _Q1mpyI16int(A, B) _Q1int(_Q1mpyI16(A, B)) + +#if GLOBAL_Q == 15 +#define _QmpyI16int(A, B) _Q15mpyI16int(A, B) +#endif +#if GLOBAL_Q == 14 +#define _QmpyI16int(A, B) _Q14mpyI16int(A, B) +#endif +#if GLOBAL_Q == 13 +#define _QmpyI16int(A, B) _Q13mpyI16int(A, B) +#endif +#if GLOBAL_Q == 12 +#define _QmpyI16int(A, B) _Q12mpyI16int(A, B) +#endif +#if GLOBAL_Q == 11 +#define _QmpyI16int(A, B) _Q11mpyI16int(A, B) +#endif +#if GLOBAL_Q == 10 +#define _QmpyI16int(A, B) _Q10mpyI16int(A, B) +#endif +#if GLOBAL_Q == 9 +#define _QmpyI16int(A, B) _Q9mpyI16int(A, B) +#endif +#if GLOBAL_Q == 8 +#define _QmpyI16int(A, B) _Q8mpyI16int(A, B) +#endif +#if GLOBAL_Q == 7 +#define _QmpyI16int(A, B) _Q7mpyI16int(A, B) +#endif +#if GLOBAL_Q == 6 +#define _QmpyI16int(A, B) _Q6mpyI16int(A, B) +#endif +#if GLOBAL_Q == 5 +#define _QmpyI16int(A, B) _Q5mpyI16int(A, B) +#endif +#if GLOBAL_Q == 4 +#define _QmpyI16int(A, B) _Q4mpyI16int(A, B) +#endif +#if GLOBAL_Q == 3 +#define _QmpyI16int(A, B) _Q3mpyI16int(A, B) +#endif +#if GLOBAL_Q == 2 +#define _QmpyI16int(A, B) _Q2mpyI16int(A, B) +#endif +#if GLOBAL_Q == 1 +#define _QmpyI16int(A, B) _Q1mpyI16int(A, B) +#endif + +//***************************************************************************** +// +// Multiplies a Q number by an integer, and returns the fractional portion. +// +//***************************************************************************** +#define _Q15mpyI16frac(A, B) _Q15frac(_Q15mpyI16(A, B)) +#define _Q14mpyI16frac(A, B) _Q14frac(_Q14mpyI16(A, B)) +#define _Q13mpyI16frac(A, B) _Q13frac(_Q13mpyI16(A, B)) +#define _Q12mpyI16frac(A, B) _Q12frac(_Q12mpyI16(A, B)) +#define _Q11mpyI16frac(A, B) _Q11frac(_Q11mpyI16(A, B)) +#define _Q10mpyI16frac(A, B) _Q10frac(_Q10mpyI16(A, B)) +#define _Q9mpyI16frac(A, B) _Q9frac(_Q9mpyI16(A, B)) +#define _Q8mpyI16frac(A, B) _Q8frac(_Q8mpyI16(A, B)) +#define _Q7mpyI16frac(A, B) _Q7frac(_Q7mpyI16(A, B)) +#define _Q6mpyI16frac(A, B) _Q6frac(_Q6mpyI16(A, B)) +#define _Q5mpyI16frac(A, B) _Q5frac(_Q5mpyI16(A, B)) +#define _Q4mpyI16frac(A, B) _Q4frac(_Q4mpyI16(A, B)) +#define _Q3mpyI16frac(A, B) _Q3frac(_Q3mpyI16(A, B)) +#define _Q2mpyI16frac(A, B) _Q2frac(_Q2mpyI16(A, B)) +#define _Q1mpyI16frac(A, B) _Q1frac(_Q1mpyI16(A, B)) + +#if GLOBAL_Q == 15 +#define _QmpyI16frac(A, B) _Q15mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 14 +#define _QmpyI16frac(A, B) _Q14mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 13 +#define _QmpyI16frac(A, B) _Q13mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 12 +#define _QmpyI16frac(A, B) _Q12mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 11 +#define _QmpyI16frac(A, B) _Q11mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 10 +#define _QmpyI16frac(A, B) _Q10mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 9 +#define _QmpyI16frac(A, B) _Q9mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 8 +#define _QmpyI16frac(A, B) _Q8mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 7 +#define _QmpyI16frac(A, B) _Q7mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 6 +#define _QmpyI16frac(A, B) _Q6mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 5 +#define _QmpyI16frac(A, B) _Q5mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 4 +#define _QmpyI16frac(A, B) _Q4mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 3 +#define _QmpyI16frac(A, B) _Q3mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 2 +#define _QmpyI16frac(A, B) _Q2mpyI16frac(A, B) +#endif +#if GLOBAL_Q == 1 +#define _QmpyI16frac(A, B) _Q1mpyI16frac(A, B) +#endif + +//***************************************************************************** +// +// Computes the square root of A^2 + B^2 using Q numbers. +// +//***************************************************************************** +extern int16_t _Qmag(int16_t A, int16_t B); +#define _Q15mag(A, B) _Qmag(A, B) +#define _Q14mag(A, B) _Qmag(A, B) +#define _Q13mag(A, B) _Qmag(A, B) +#define _Q12mag(A, B) _Qmag(A, B) +#define _Q11mag(A, B) _Qmag(A, B) +#define _Q10mag(A, B) _Qmag(A, B) +#define _Q9mag(A, B) _Qmag(A, B) +#define _Q8mag(A, B) _Qmag(A, B) +#define _Q7mag(A, B) _Qmag(A, B) +#define _Q6mag(A, B) _Qmag(A, B) +#define _Q5mag(A, B) _Qmag(A, B) +#define _Q4mag(A, B) _Qmag(A, B) +#define _Q3mag(A, B) _Qmag(A, B) +#define _Q2mag(A, B) _Qmag(A, B) +#define _Q1mag(A, B) _Qmag(A, B) + +//***************************************************************************** +// +// Computes the inverse square root of A^2 + B^2 using Q numbers. +// +//***************************************************************************** +extern _q15 _Q15imag(_q15 A, _q15 B); +extern _q14 _Q14imag(_q14 A, _q14 B); +extern _q13 _Q13imag(_q13 A, _q13 B); +extern _q12 _Q12imag(_q12 A, _q12 B); +extern _q11 _Q11imag(_q11 A, _q11 B); +extern _q10 _Q10imag(_q10 A, _q10 B); +extern _q9 _Q9imag(_q9 A, _q9 B); +extern _q8 _Q8imag(_q8 A, _q8 B); +extern _q7 _Q7imag(_q7 A, _q7 B); +extern _q6 _Q6imag(_q6 A, _q6 B); +extern _q5 _Q5imag(_q5 A, _q5 B); +extern _q4 _Q4imag(_q4 A, _q4 B); +extern _q3 _Q3imag(_q3 A, _q3 B); +extern _q2 _Q2imag(_q2 A, _q2 B); +extern _q1 _Q1imag(_q1 A, _q1 B); + +#if GLOBAL_Q == 15 +#define _Qimag(A, B) _Q15imag(A, B) +#endif +#if GLOBAL_Q == 14 +#define _Qimag(A, B) _Q14imag(A, B) +#endif +#if GLOBAL_Q == 13 +#define _Qimag(A, B) _Q13imag(A, B) +#endif +#if GLOBAL_Q == 12 +#define _Qimag(A, B) _Q12imag(A, B) +#endif +#if GLOBAL_Q == 11 +#define _Qimag(A, B) _Q11imag(A, B) +#endif +#if GLOBAL_Q == 10 +#define _Qimag(A, B) _Q10imag(A, B) +#endif +#if GLOBAL_Q == 9 +#define _Qimag(A, B) _Q9imag(A, B) +#endif +#if GLOBAL_Q == 8 +#define _Qimag(A, B) _Q8imag(A, B) +#endif +#if GLOBAL_Q == 7 +#define _Qimag(A, B) _Q7imag(A, B) +#endif +#if GLOBAL_Q == 6 +#define _Qimag(A, B) _Q6imag(A, B) +#endif +#if GLOBAL_Q == 5 +#define _Qimag(A, B) _Q5imag(A, B) +#endif +#if GLOBAL_Q == 4 +#define _Qimag(A, B) _Q4imag(A, B) +#endif +#if GLOBAL_Q == 3 +#define _Qimag(A, B) _Q3imag(A, B) +#endif +#if GLOBAL_Q == 2 +#define _Qimag(A, B) _Q2imag(A, B) +#endif +#if GLOBAL_Q == 1 +#define _Qimag(A, B) _Q1imag(A, B) +#endif + +//***************************************************************************** +// +// Converts a string into an Q number. +// +//***************************************************************************** +extern _q15 _atoQ15(const char *A); +extern _q14 _atoQ14(const char *A); +extern _q13 _atoQ13(const char *A); +extern _q12 _atoQ12(const char *A); +extern _q11 _atoQ11(const char *A); +extern _q10 _atoQ10(const char *A); +extern _q9 _atoQ9(const char *A); +extern _q8 _atoQ8(const char *A); +extern _q7 _atoQ7(const char *A); +extern _q6 _atoQ6(const char *A); +extern _q5 _atoQ5(const char *A); +extern _q4 _atoQ4(const char *A); +extern _q3 _atoQ3(const char *A); +extern _q2 _atoQ2(const char *A); +extern _q1 _atoQ1(const char *A); + +#if GLOBAL_Q == 15 +#define _atoQ(A) _atoQ15(A) +#endif +#if GLOBAL_Q == 14 +#define _atoQ(A) _atoQ14(A) +#endif +#if GLOBAL_Q == 13 +#define _atoQ(A) _atoQ13(A) +#endif +#if GLOBAL_Q == 12 +#define _atoQ(A) _atoQ12(A) +#endif +#if GLOBAL_Q == 11 +#define _atoQ(A) _atoQ11(A) +#endif +#if GLOBAL_Q == 10 +#define _atoQ(A) _atoQ10(A) +#endif +#if GLOBAL_Q == 9 +#define _atoQ(A) _atoQ9(A) +#endif +#if GLOBAL_Q == 8 +#define _atoQ(A) _atoQ8(A) +#endif +#if GLOBAL_Q == 7 +#define _atoQ(A) _atoQ7(A) +#endif +#if GLOBAL_Q == 6 +#define _atoQ(A) _atoQ6(A) +#endif +#if GLOBAL_Q == 5 +#define _atoQ(A) _atoQ5(A) +#endif +#if GLOBAL_Q == 4 +#define _atoQ(A) _atoQ4(A) +#endif +#if GLOBAL_Q == 3 +#define _atoQ(A) _atoQ3(A) +#endif +#if GLOBAL_Q == 2 +#define _atoQ(A) _atoQ2(A) +#endif +#if GLOBAL_Q == 1 +#define _atoQ(A) _atoQ1(A) +#endif + +//***************************************************************************** +// +// Converts an Q number into a string. +// +//***************************************************************************** +extern int16_t _Q15toa(char *string, const char *format, _q15 input); +extern int16_t _Q14toa(char *string, const char *format, _q14 input); +extern int16_t _Q13toa(char *string, const char *format, _q13 input); +extern int16_t _Q12toa(char *string, const char *format, _q12 input); +extern int16_t _Q11toa(char *string, const char *format, _q11 input); +extern int16_t _Q10toa(char *string, const char *format, _q10 input); +extern int16_t _Q9toa(char *string, const char *format, _q9 input); +extern int16_t _Q8toa(char *string, const char *format, _q8 input); +extern int16_t _Q7toa(char *string, const char *format, _q7 input); +extern int16_t _Q6toa(char *string, const char *format, _q6 input); +extern int16_t _Q5toa(char *string, const char *format, _q5 input); +extern int16_t _Q4toa(char *string, const char *format, _q4 input); +extern int16_t _Q3toa(char *string, const char *format, _q3 input); +extern int16_t _Q2toa(char *string, const char *format, _q2 input); +extern int16_t _Q1toa(char *string, const char *format, _q1 input); + +#if GLOBAL_Q == 15 +#define _Qtoa(A, B, C) _Q15toa(A, B, C) +#endif +#if GLOBAL_Q == 14 +#define _Qtoa(A, B, C) _Q14toa(A, B, C) +#endif +#if GLOBAL_Q == 13 +#define _Qtoa(A, B, C) _Q13toa(A, B, C) +#endif +#if GLOBAL_Q == 12 +#define _Qtoa(A, B, C) _Q12toa(A, B, C) +#endif +#if GLOBAL_Q == 11 +#define _Qtoa(A, B, C) _Q11toa(A, B, C) +#endif +#if GLOBAL_Q == 10 +#define _Qtoa(A, B, C) _Q10toa(A, B, C) +#endif +#if GLOBAL_Q == 9 +#define _Qtoa(A, B, C) _Q9toa(A, B, C) +#endif +#if GLOBAL_Q == 8 +#define _Qtoa(A, B, C) _Q8toa(A, B, C) +#endif +#if GLOBAL_Q == 7 +#define _Qtoa(A, B, C) _Q7toa(A, B, C) +#endif +#if GLOBAL_Q == 6 +#define _Qtoa(A, B, C) _Q6toa(A, B, C) +#endif +#if GLOBAL_Q == 5 +#define _Qtoa(A, B, C) _Q5toa(A, B, C) +#endif +#if GLOBAL_Q == 4 +#define _Qtoa(A, B, C) _Q4toa(A, B, C) +#endif +#if GLOBAL_Q == 3 +#define _Qtoa(A, B, C) _Q3toa(A, B, C) +#endif +#if GLOBAL_Q == 2 +#define _Qtoa(A, B, C) _Q2toa(A, B, C) +#endif +#if GLOBAL_Q == 1 +#define _Qtoa(A, B, C) _Q1toa(A, B, C) +#endif + +//***************************************************************************** +// +// Computes the absolute value of an Q number. +// +//***************************************************************************** +#define _Q15abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q14abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q13abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q12abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q11abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q10abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q9abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q8abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q7abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q6abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q5abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q4abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q3abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q2abs(A) (((A) < 0) ? - (A) : (A)) +#define _Q1abs(A) (((A) < 0) ? - (A) : (A)) +#define _Qabs(A) (((A) < 0) ? - (A) : (A)) + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif // __QMATHLIB_H__ diff --git a/README.html b/README.html new file mode 100755 index 0000000..bc4e49c --- /dev/null +++ b/README.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + +
+
+ +
+ +
+
+

+

Table of Contents

+ +
+

gc_simple_json

+
+

Example Summary

+

This example demonstrates basic usage of how to send data using JSON formatted strings. In addition, it showcases how to connect target objects with GUI widgets. For details about the architecture of the example or about implementation, please view the User’s Guide.

+

Example Usage

+
    +
  • Please read the Quick Start Guide on how to flash your LaunchPad with the code example, and how to import the provided GUI zip into GUI Composer.

  • +
  • This example uses the MSP430_SimpleGUI_JSON.zip GUI. This can be found: +
  • +
  • Run the example and the GUI.

  • +
+

The demo should start running with the following functionality:

+
    +
  • “Counters” plot shows an 8-bit, 16-bits and 32-bits counters

    + +
      +
    • The 8-bit counter corresponds to variable u8Counter and it’s bound to JSON token “c1”. It increments by 50 when switch S1 is pressed.
    • +
    • The 16-bit counter corresponds to variable u16Counter and it’s bound to JSON token “c2”. It increments by 5,000 when switch S2 is pressed.
    • +
    • The 32-bit counter corresponds to variable u32Counter and it’s bound to JSON token “c3”. It increments by 10,000 periodically on TB0 interrupt
    • +
  • +
  • The gauge shows a floating point number, which in this case is sent as fractional (QMath/IQMath)

    + +
      +
    • The counter corresponds to variable qCounter and it’s bound to JSON token “c4”. It increments by qIncrement on TB0 interrupt and only when bEnableSwitch==true.
    • +
  • +
  • The increment for the gauge is set by the horizontal slider

    + +
      +
    • The increments corresponds to variable qIncrement and it’s bound to JSON token “u16Data”. The value is sent by the GUI to the device when the slider changes.
    • +
  • +
  • The “Enable Float” switch enables incrementing the gauge increments

    + +
      +
    • The switch corresponds to variable bEnableSwitch and it’s bound to JSON token “bEnable”. The switch is sent by the GUI to the device when the value changes.
    • +
  • +
+

Notes:

+
    +
  • This example does not implement push-button debounce, so you might see multiple increments when pressing the button.
  • +
  • The increments (50, 5000, 10000) are only meant to show the difference between variable type sizes.
  • +
  • The example is sending ALL variables every time it wakes up due to button press or timer interrupt.
  • +
  • It’s recommended to keep the JSON tokens short, especially when sending them often. Longer tokens will result in longer transmission times.
  • +
+

Additional Information

+

For more information on modifying the GUI and serial communication, please view the GUI Composer User’s Guide.

+ +
+ + + diff --git a/callbacks_JSON.c b/callbacks_JSON.c new file mode 100755 index 0000000..8f86595 --- /dev/null +++ b/callbacks_JSON.c @@ -0,0 +1,64 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2020, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// callbacks_JSON.c +// +// Application level callbacks using JSON +// Texas Instruments, Inc. + +#include + +static bool getBoolFromString(char * string); + +// ***** Application Callback Functions to Process data ***** +void GUICallback_boolEnable(char * string) +{ + // Example to receive a boolean + bEnableSwitch = getBoolFromString(string); +} + +void GUICallback_QMathData(char * string) +{ + qIncrement = strtol(string, NULL, 10); +} + +static bool getBoolFromString(char * string) +{ + if (strncmp(string, "true", 4) == 0) + { + return true; + } + else + { + return false; + } +} diff --git a/include/Config_Common.h b/include/Config_Common.h new file mode 100755 index 0000000..b619e18 --- /dev/null +++ b/include/Config_Common.h @@ -0,0 +1,71 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// Config_Common.h +// +// Configuration definitions +// Texas Instruments, Inc. +#ifndef __CONFIG_COMMON_H__ +#define __CONFIG_COMMON_H__ + +#include +#include +#include + +#if defined(__TI_COMPILER_VERSION__) +#define __persistent +#define __no_init +#elif defined (__IAR_SYSTEMS_ICC__) +#else +#error Compiler not supported! +#endif + +//! \brief CPU Active Frequency in Hz. +//! +#define CPU_FREQ_HZ (8000000) +//! \brief CPU Active Frequency in MHz. +//! +#define CPU_FREQ_MHZ (CPU_FREQ_HZ/1000000) +//! \brief High Speed Bus Frequency in Hz. +//! Used by High Speed peripherals such as UART. +//! +#define HSBUS_FREQ_HZ (8000000) +//! \brief High Speed Bus Frequency in MHz. +//! Used by High Speed peripherals such as UART. +//! +#define HSBUS_FREQ_MHZ (HSBUS_FREQ_HZ/1000000) +//! \brief Low Speed Bus Frequency in Hz. +//! Used by Low Speed peripherals such as LPM timers. +//! +#define LSBUS_FREQ_HZ (32768) + +#endif //__CONFIG_COMMON_H__ diff --git a/include/GUI_JSON.h b/include/GUI_JSON.h new file mode 100755 index 0000000..3f22d1e --- /dev/null +++ b/include/GUI_JSON.h @@ -0,0 +1,112 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// GUI Interface +// +// API to send and receive data from GUI using GUI Composer +// Texas Instruments, Inc. +// ****************************************************************************** + +#ifndef __GUI_H__ +#define __GUI_H__ +#include +#include +#include +#include +#include + +//! \brief Maximum string for RX +#ifndef MAX_STR_LEN +#define MAX_STR_LEN 64 +#endif + +//! \brief Enable GUI Reception of commands +#define GUI_RXCMD_ENABLE (1) + +#if (GUI_RXCMD_ENABLE) +//! \brief Callback for RX Commands (called when command is received from GUI) +typedef void (*tGUI_RxCmdCallback)(char *); + +//! \brief Structure for RX commands. +typedef struct +{ + //!< RX Command (received from GUI) + char *stringCMD; + //!< Function executed if command is detected. + tGUI_RxCmdCallback callback; +} tGUI_RxCmd; +#endif + +//! \brief Structure for TX commands. +typedef struct +{ + //!< TX Command including sprintf formatting. + char *formattingStringCMD; + //!< Parameter sent with TX command. + void **param; +} tGUI_TxCmd; + +//! \brief Initializes the GUI communication and protocol. +//! +//! \return none +extern void GUI_Init(void); + +#if (GUI_RXCMD_ENABLE) +//! \brief Initializes structure to receive and process commands +//! +//! \param[in] RxCmdArray is a pointer to the array of RX Commands. +//! These commands will execute a callback function when received. +//! \param[in] size is the size of RxCmdArray. +//! +//! \return none +extern void GUI_InitRxCmd(const tGUI_RxCmd *RxCmdArray, + uint16_t size); +#endif + +//! \brief Transmits an array of TX commands. +//! +//! \param[in] TXACmdrray is a pointer to the array of TX commands. +//! These commands will be sent with corresponding formatted data. +//! \param[in] size is the size of TxCmdArray. +//! +//! \return none +extern void GUI_TransmitData(const tGUI_TxCmd *TXCmdrray, + uint16_t size); + +//! \brief Transmits a string to GUI. +//! +//! \param[in] str is the string to be sent. +//! +//! \return none +extern void GUI_TransmitStringBlocking(char *str); + +#endif // __GUI_H__ diff --git a/include/callbacks_JSON.h b/include/callbacks_JSON.h new file mode 100755 index 0000000..72be882 --- /dev/null +++ b/include/callbacks_JSON.h @@ -0,0 +1,58 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2020, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// callbacks_JSON.h +// +// Application level callbacks using JSON +// Texas Instruments, Inc. + +#include +#include +#include +#include +#include +#include +#include + + +#ifndef INCLUDE_CALLBACKS_H_ +#define INCLUDE_CALLBACKS_H_ + +// Global variables for the callbacks +volatile bool bEnableSwitch; +volatile _q qIncrement; + +// Functions to receive data from GUI +extern void GUICallback_QMathData(char * string); +extern void GUICallback_boolEnable(char * string); + +#endif /* INCLUDE_CALLBACKS_H_ */ diff --git a/lnk_msp430fr2355.cmd b/lnk_msp430fr2355.cmd new file mode 100644 index 0000000..d27b01b --- /dev/null +++ b/lnk_msp430fr2355.cmd @@ -0,0 +1,250 @@ +/****************************************************************************** +* +* Copyright (C) 2012 - 2021 Texas Instruments Incorporated - http://www.ti.com/ +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the +* distribution. +* +* Neither the name of Texas Instruments Incorporated nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* Default linker command file for Texas Instruments MSP430FR2355 +* +*****************************************************************************/ + +/******************************************************************************/ +/* */ +/* Usage: lnk430 -o -m lnk.cmd */ +/* cl430 -z -o -m lnk.cmd */ +/* */ +/*----------------------------------------------------------------------------*/ +/* These linker options are for command line linking only. For IDE linking, */ +/* you should set your linker options in Project Properties */ +/* -c LINK USING C CONVENTIONS */ +/* -stack 0x0100 SOFTWARE STACK SIZE */ +/* -heap 0x0100 HEAP AREA SIZE */ +/* */ +/*----------------------------------------------------------------------------*/ +/* 1.213 */ +/*----------------------------------------------------------------------------*/ + +/****************************************************************************/ +/* SPECIFY THE SYSTEM MEMORY MAP */ +/****************************************************************************/ + +MEMORY +{ + TINYRAM : origin = 0x6, length = 0x1A + BSL0 : origin = 0x1000, length = 0x800 + INFO : origin = 0x1800, length = 0x200 + TLVMEM : origin = 0x1A00, length = 0x200 + BOOTCODE : origin = 0x1C00, length = 0x400 + RAM : origin = 0x2000, length = 0x1000 + FRAM : origin = 0x8000, length = 0x7F80 + ROMLIB : origin = 0xFAC00, length = 0x5000 + BSL1 : origin = 0xFFC00, length = 0x400 + JTAGSIGNATURE : origin = 0xFF80, length = 0x0004, fill = 0xFFFF + BSLSIGNATURE : origin = 0xFF84, length = 0x0004, fill = 0xFFFF + BSLCONFIGURATIONSIGNATURE: origin = 0xFF88, length = 0x0002, fill = 0xFFFF + BSLCONFIGURATION : origin = 0xFF8A, length = 0x0002, fill = 0xFFFF + BSLI2CADDRESS : origin = 0xFFA0, length = 0x0002, fill = 0xFFFF + INT00 : origin = 0xFFA2, length = 0x0002 + INT01 : origin = 0xFFA4, length = 0x0002 + INT02 : origin = 0xFFA6, length = 0x0002 + INT03 : origin = 0xFFA8, length = 0x0002 + INT04 : origin = 0xFFAA, length = 0x0002 + INT05 : origin = 0xFFAC, length = 0x0002 + INT06 : origin = 0xFFAE, length = 0x0002 + INT07 : origin = 0xFFB0, length = 0x0002 + INT08 : origin = 0xFFB2, length = 0x0002 + INT09 : origin = 0xFFB4, length = 0x0002 + INT10 : origin = 0xFFB6, length = 0x0002 + INT11 : origin = 0xFFB8, length = 0x0002 + INT12 : origin = 0xFFBA, length = 0x0002 + INT13 : origin = 0xFFBC, length = 0x0002 + INT14 : origin = 0xFFBE, length = 0x0002 + INT15 : origin = 0xFFC0, length = 0x0002 + INT16 : origin = 0xFFC2, length = 0x0002 + INT17 : origin = 0xFFC4, length = 0x0002 + INT18 : origin = 0xFFC6, length = 0x0002 + INT19 : origin = 0xFFC8, length = 0x0002 + INT20 : origin = 0xFFCA, length = 0x0002 + INT21 : origin = 0xFFCC, length = 0x0002 + INT22 : origin = 0xFFCE, length = 0x0002 + INT23 : origin = 0xFFD0, length = 0x0002 + INT24 : origin = 0xFFD2, length = 0x0002 + INT25 : origin = 0xFFD4, length = 0x0002 + INT26 : origin = 0xFFD6, length = 0x0002 + INT27 : origin = 0xFFD8, length = 0x0002 + INT28 : origin = 0xFFDA, length = 0x0002 + INT29 : origin = 0xFFDC, length = 0x0002 + INT30 : origin = 0xFFDE, length = 0x0002 + INT31 : origin = 0xFFE0, length = 0x0002 + INT32 : origin = 0xFFE2, length = 0x0002 + INT33 : origin = 0xFFE4, length = 0x0002 + INT34 : origin = 0xFFE6, length = 0x0002 + INT35 : origin = 0xFFE8, length = 0x0002 + INT36 : origin = 0xFFEA, length = 0x0002 + INT37 : origin = 0xFFEC, length = 0x0002 + INT38 : origin = 0xFFEE, length = 0x0002 + INT39 : origin = 0xFFF0, length = 0x0002 + INT40 : origin = 0xFFF2, length = 0x0002 + INT41 : origin = 0xFFF4, length = 0x0002 + INT42 : origin = 0xFFF6, length = 0x0002 + INT43 : origin = 0xFFF8, length = 0x0002 + INT44 : origin = 0xFFFA, length = 0x0002 + INT45 : origin = 0xFFFC, length = 0x0002 + RESET : origin = 0xFFFE, length = 0x0002 +} + +/****************************************************************************/ +/* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */ +/****************************************************************************/ + +SECTIONS +{ + GROUP(ALL_FRAM) + { + GROUP(READ_WRITE_MEMORY) + { + .TI.persistent : {} /* For #pragma persistent */ + .cio : {} /* C I/O Buffer */ + .sysmem : {} /* Dynamic memory allocation area */ + } PALIGN(0x0400), RUN_START(fram_rw_start) RUN_END(fram_rx_start) + + GROUP(READ_ONLY_MEMORY) + { + .cinit : {} /* Initialization tables */ + .pinit : {} /* C++ constructor tables */ + .binit : {} /* Boot-time Initialization tables */ + .init_array : {} /* C++ constructor tables */ + .mspabi.exidx : {} /* C++ constructor tables */ + .mspabi.extab : {} /* C++ constructor tables */ + .const : {} /* Constant data */ + } + + GROUP(EXECUTABLE_MEMORY) + { + .text : {} /* Code */ + .text:_isr : {} /* Code ISRs */ + } + } > FRAM + + #ifdef __TI_COMPILER_VERSION__ + #if __TI_COMPILER_VERSION__ >= 15009000 + .TI.ramfunc : {} load=FRAM, run=RAM, table(BINIT) + #endif + #endif + + .jtagsignature : {} > JTAGSIGNATURE + .bslsignature : {} > BSLSIGNATURE + .bslconfigsignature : {} > BSLCONFIGURATIONSIGNATURE + .bslconfig : {} > BSLCONFIGURATION + .bsli2caddress : {} > BSLI2CADDRESS + + .bss : {} > RAM /* Global & static vars */ + .data : {} > RAM /* Global & static vars */ + .TI.noinit : {} > RAM /* For #pragma noinit */ + .stack : {} > RAM (HIGH) /* Software system stack */ + + .tinyram : {} > TINYRAM /* Tiny RAM */ + + /* MSP430 INFO memory segments */ + .info : type = NOINIT{} > INFO + + + /* MSP430 interrupt vectors */ + + .int00 : {} > INT00 + .int01 : {} > INT01 + .int02 : {} > INT02 + .int03 : {} > INT03 + .int04 : {} > INT04 + .int05 : {} > INT05 + .int06 : {} > INT06 + .int07 : {} > INT07 + .int08 : {} > INT08 + .int09 : {} > INT09 + .int10 : {} > INT10 + .int11 : {} > INT11 + .int12 : {} > INT12 + .int13 : {} > INT13 + .int14 : {} > INT14 + .int15 : {} > INT15 + .int16 : {} > INT16 + .int17 : {} > INT17 + .int18 : {} > INT18 + .int19 : {} > INT19 + .int20 : {} > INT20 + .int21 : {} > INT21 + PORT4 : { * ( .int22 ) } > INT22 type = VECT_INIT + PORT3 : { * ( .int23 ) } > INT23 type = VECT_INIT + PORT2 : { * ( .int24 ) } > INT24 type = VECT_INIT + PORT1 : { * ( .int25 ) } > INT25 type = VECT_INIT + SAC1_SAC3 : { * ( .int26 ) } > INT26 type = VECT_INIT + SAC0_SAC2 : { * ( .int27 ) } > INT27 type = VECT_INIT + ECOMP0_ECOMP1: { * ( .int28 ) } > INT28 type = VECT_INIT + ADC : { * ( .int29 ) } > INT29 type = VECT_INIT + EUSCI_B1 : { * ( .int30 ) } > INT30 type = VECT_INIT + EUSCI_B0 : { * ( .int31 ) } > INT31 type = VECT_INIT + EUSCI_A1 : { * ( .int32 ) } > INT32 type = VECT_INIT + EUSCI_A0 : { * ( .int33 ) } > INT33 type = VECT_INIT + WDT : { * ( .int34 ) } > INT34 type = VECT_INIT + RTC : { * ( .int35 ) } > INT35 type = VECT_INIT + TIMER3_B1 : { * ( .int36 ) } > INT36 type = VECT_INIT + TIMER3_B0 : { * ( .int37 ) } > INT37 type = VECT_INIT + TIMER2_B1 : { * ( .int38 ) } > INT38 type = VECT_INIT + TIMER2_B0 : { * ( .int39 ) } > INT39 type = VECT_INIT + TIMER1_B1 : { * ( .int40 ) } > INT40 type = VECT_INIT + TIMER1_B0 : { * ( .int41 ) } > INT41 type = VECT_INIT + TIMER0_B1 : { * ( .int42 ) } > INT42 type = VECT_INIT + TIMER0_B0 : { * ( .int43 ) } > INT43 type = VECT_INIT + UNMI : { * ( .int44 ) } > INT44 type = VECT_INIT + SYSNMI : { * ( .int45 ) } > INT45 type = VECT_INIT + .reset : {} > RESET /* MSP430 reset vector */ + +} +/****************************************************************************/ +/* FRAM WRITE PROTECTION SEGMENT DEFINITONS */ +/****************************************************************************/ + +#ifdef _FRWP_ENABLE + __mpu_enable=1; + start_protection_offset_address = (fram_rx_start - fram_rw_start) >> 10; + program_fram_protection = 0x1; + #ifdef _INFO_FRWP_ENABLE + info_fram_protection = 0x1; + #else + info_fram_protection = 0x0; + #endif +#endif + +/****************************************************************************/ +/* INCLUDE PERIPHERALS MEMORY MAP */ +/****************************************************************************/ + +-l msp430fr2355.cmd + + diff --git a/main.c b/main.c new file mode 100755 index 0000000..1c2d80e --- /dev/null +++ b/main.c @@ -0,0 +1,168 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2020, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// GUI Composer Simple JSON Demo using MSP430 +// +// Texas Instruments, Inc. +// ****************************************************************************** + +#include +#include +#include +#include +#include +#include +#include +#include + +// Q8 is used in this demo because the variable qCounter ranges 0.0-100.0 + +#define STR_LEN_TWO 2 +#define STR_LEN_SEVEN 7 + +// Global variable use to track the of state of GUI and counter values +volatile uint8_t u8Counter; +volatile uint16_t u16Counter; +volatile uint32_t u32Counter; +volatile _q qCounter; +volatile bool bUpdateGUI; + +//! \brief RX Command structure. +//! The corresponding callback will be called when the command is +//! received from GUI. +//! Note: shorter command names take less time to process +const tGUI_RxCmd GUI_RXCommands[] = +{ + {"bEnable", GUICallback_boolEnable}, + {"u16Data", GUICallback_QMathData}, +}; + +//! \brief Increments counters using MSP430 and sends data to GUI. +//! +//! \return none +void main(void) +{ + WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer + + // Initialize clock, GPIOs + HAL_System_Init(); + + // Initialize GUI layer + GUI_Init(); + GUI_InitRxCmd( &GUI_RXCommands[0], + (sizeof(GUI_RXCommands)/sizeof(GUI_RXCommands[0])) ); + + // Initialize variables + bUpdateGUI = false; // Update GUI first time + u8Counter = 50; // Counter8 will be updated on SW1 press in increments of 50 + u16Counter = 5000; // Counter16 will be updated on button press in increments of 5000 + u32Counter = 10000; // Counter32 will be updated on timer in increments of 10000 + bEnableSwitch = true; // Switch enables updating QMath + qCounter = _Q(0.5); // QMath counter updated on timer based on boolean in increments of qIncrement + qIncrement = _Q(0.5); + + // Configure SW1 and SW2 for interrupts (pins set as input with pull-up during GPIO initialization) + HAL_IO_InitButtons(); + + // Initialize a timer to update the counter + HAL_Timer_Init(); + + // Send default value of variables + GUIComm_sendUInt8("c1", STR_LEN_TWO, u8Counter); + GUIComm_sendUInt16("c2", STR_LEN_TWO, u16Counter); + GUIComm_sendUInt32("c3", STR_LEN_TWO, u32Counter); + GUIComm_sendInt16("c4", STR_LEN_TWO, (int16_t) qCounter); + GUIComm_sendInt16("u16Data", STR_LEN_SEVEN, (int16_t) qIncrement); + GUIComm_sendBool("bEnable", STR_LEN_SEVEN, bEnableSwitch); + + __bis_SR_register(LPM3_bits | GIE); // Enter LPM3 w/interrupt + __enable_interrupt(); + + while (1) + { + while (bUpdateGUI == true) + { + GUIComm_sendUInt8("c1", STR_LEN_TWO, u8Counter); + GUIComm_sendUInt16("c2", STR_LEN_TWO, u16Counter); + GUIComm_sendUInt32("c3", STR_LEN_TWO, u32Counter); + if (bEnableSwitch == true) + { + GUIComm_sendInt16("c4", STR_LEN_TWO, (int16_t) qCounter); + } + + bUpdateGUI = false; + } + + __disable_interrupt(); + if (bUpdateGUI == false) + { + __bis_SR_register(LPM3_bits | GIE); // Enter LPM3 w/interrupt + __no_operation(); // For debug + } + } +} + +//! \brief Function called by HAL when there is a periodic timer interrupt +//! +//! \return none +void TimerCallback(void) +{ + // Update 32-bit counter + u32Counter += 10000; + bUpdateGUI = true; + if (bEnableSwitch == true) + { + qCounter += qIncrement; + + if (qCounter > _Q(100.0)) + { + qCounter = 0; + } + } +} + +//! \brief Function called by HAL when SW1 is pressed +//! +//! \return none +void ButtonCallback_SW1(void) +{ + u8Counter += 50; +} + +//! \brief Function called by HAL when SW2 is pressed +//! +//! \return none +void ButtonCallback_SW2(void) +{ + u16Counter += 5000; +} + diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib.a b/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib.a new file mode 100755 index 0000000000000000000000000000000000000000..2df7a17cb72e949e014c29f6f4b1b3bce38c6a4d GIT binary patch literal 1702 zcmd6nO-sW-5QaCKR!Y#bdP|`PPfZ)wet-xySO`?DSV2$Q-Db6c#Fp$9dh_PlpX_YY z$a*OFamkR`d1sg%HqT+|=PaAeFC5Qvzgf%3a&4Zj>vy}`j;RygrA*C7F{eRrPp`*M zr#?MfuW1K77(YDHgk>*+&K8l_%7`h}Ok%D*etlkeznYN=sj_&cL`45LNTw`F{xT!K zxcQ-7GaS!E2&~$~htKbIp>DD)+WZdrBKmeU8d{cx3bRm*itGc5+O-kn!g+#hgwa6D zNr)qI42czKWBGG6iJ$N(qUY zat@dk1~U;trqyrZK literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..3f0d92c516bf371552db6d3e872c8a274c781e88 GIT binary patch literal 515270 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%0D*lLyKceD~sQ4o){)mb{qT-LJ>G!7L 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 z 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%0A40EpomAhlP$1Zvn ziL@CIZFbJg6>XXecs2=WQzbp*sU*^)SM+#grc3n574Vdz^r(&o(ep{9LDzVyFtNE^ z%C9frc_l7?&r4ofzyL!P)+_K@VKc6m!u%~4a{+!F7!P4<#+_4GuP_OGF@78v^Vs2P zL5wqW4))hO_)_e@E5WnrYV5z)!8c)_IUM-=JDyq?2)B|ku*V7@uHh(=W0k-8g&`MxieuLPfTK%(h z3DQf6{4AA#t^6GQJ+PIZll2HzzeeJ99Z}32gZ-bO5j!7f)fm29KxN`nJ%qz{`^Sc{)wy&(j6Kw!A!D0c_hN zPuHpZt#pgZ-%7Uw+y2%n-zdL4DX*2bs{C#Agv#G0^Zm9zw$V#SzbeV!Ms;ad|90vG zw)JnP1AuLRZKpBdO-cTCI#%WHpwm?T4!Qu?_J@t$#Ni0BrkHH;nI63P1S!~89{_Ci@1rqbtA8IItMd2LX)1p| zT>xy`ub-{}w(ZwXJYQqWAD~-Q{sFojcy*%RfP5dq_QwI*iuB1Oy+BU@FL&^EV0-=+ z=p|r#{uZdNCMILU>(Lq&PI=#lNYju?$ND0LXVZxa*U%b;YiWbRSdXUg9QwGz_4EaW z8|bSFXX)Dt=jbO2H`1>aZlawE91;*xt#6G}e=4>I~xJU7$7x z^ZKO$h3C+l6t1B~3fE$Q!OCO*2FEF!qf-^Gr*jo-Z2H7ed#5a4HgG2UU&Y53Um6X zm+oRtAM?^(Eb@muLeY&7#)!{wBZT1!6(!vWW(@n)P!Ymd-H74Av0+ud zf}CGPaDEkm{O;i#(NOZc>5|`#K>l%Ez6&M48zK4Kh~dF;_xO!y$oW+|=T{NP@19b~ z??TD%Mo4})0{Pv;f&4C%{BDHgcO#JBtq$_LQ1ZJGlHZLO9z4uFzehCW{3@OEb42W- z*LtRryMS7W%=ZWzf%TSN#JC?Z=0_~{BNq7)qkhDQA2IAl6#a-HF9J(wwWe4i>qYpQ zVqvYv@HNFkUXS5xiUpV+!`BqcY&FAI)YsEj)7R2h($~>faTg6EeWKO4q8jhUQg}C3 zfOq4vc{i>X@5VLa-MBE`jmzQPxQe_R*ABamfJ6hE-IgEM4>@eq zad|eAIno?!)i6hfW33|Qh;pn`ge@0KsZD8Eo-Dg>oLK6rVVXNxwrviOjqp3IIRKWi zOSg@i-7@}MPpm)TDrXD@sx_CR_Ek>yIGqE(Lh`cpvq6D=-EXlJ{wk_kCxq3Q38)FL}H(Fs2i#@7F!vv*3lw z{h`NOhXZZKxR8{T`;5nX4m>lK#@y|z~QkBGgik`!|OyNyY0LR z@6@GOmdiWH<2?%A-vxMwdAyVHj(kIa=YPLs8+be)VS>@`9iF`P^+caEBy0`uVvm=F zC()Y&ybpN1PlI=3fcFuPw=f$%KlmH(_@A7=UjZ*9?;kzhGWc)_>G!W5?@91N_5Gg5 zTi+Ni_op6@KS&We&!6{r*MYYw&@O-Uc=gTUewD+4!6}<`&1=95t#M|XOLGjlxckA| zfxfUm_DdXrfGF{;iBlr+m2+25c#Sjr*u<%r@a_c<|91(iBK@ckr#uGIIVjf+sH*tj RL_HGTp@ZPL3L}kq{|5qg?PdS~ literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_restricted_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_restricted_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..7416cabf18982f9375b4d85de4aa54cde37bd4c6 GIT binary patch literal 510830 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 literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..f226c10083b2c134c4189ed0f78e19bee5f3f32f GIT binary patch literal 506794 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 vW3&t(cRVdq^p3O4{A08XA9p-0 zGvOU)nF}wxr*iDkK=#(e#~mNbY~=U?Zm4x2%c3tT| zTX|3AqFGM4ej(!>50!9Wu5U|qxiUE z^B&(ax2tPZ*$J{tn=_`iuih)l$L?)9vR=Dag!eg*?#eA~DvmaFC)!kdXpy(8P08KJ z5$AV@d%xBmO&|F;hkL)){>?GQZ+MRm$IaR*4;xRbt1-D(h9RTXBM{(&+TMYzOXnko%o*Xu+J&`slIXP@p zcOq?+c&FLu+$3I1IfcJf3f}dK#foSlOc8v$%X}$#68?B$=5LqIR-}0)wy&_5zh&BQ zF~2-j&o38Y;p0Dyb(h7rf#aNrC5CUEHe(%pi_CmCxSJEPFyD_gzw^oq^B1vRrbzQw zu>F$7k6^n!EN=pR3p~lP6;W$l;(h?{8Bm}ykC{h<(JY$U@5

mpe5?F2`Y2e+FH_%&N%>`jY1pmu%ZTThk@Cyv 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�o!{^9a-+lNOvfh8X4^NYa`ujhI{~~LB$M7Oq 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 EAMlaE3jhEB literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_small_code_small_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/IQmathLib_CCS_MPY32_5xx_6xx_CPUX_small_code_small_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..1f9934a49ab1347a636c02a21dfdae5d6c46a361 GIT binary patch literal 506298 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

wT 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

Qpo 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 literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib.a b/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib.a new file mode 100755 index 0000000000000000000000000000000000000000..bde48feb2dce1288ea4da37b094b7e9810c49ccc GIT binary patch literal 1698 zcmd6n&r8EF6vvZvlTq}n-ZI$1)7rJQV<5sD4hmBzPS8`9tkD%(H`)w#^XAz<*_U;7 z^&t4;(nnw3H;>mx`k{HvGoH@o=cZ-RFJ_l^xh}7iI$d{LF*R=!uI8giu)*MtU5y`I zhn=q1%m*Kg?;lvq(`U(Mi%@Q5$Q5tLkv`A&9(rBh+$o|zQOL!drp+)}Q z=4-xdVOnK;z^UUo@Yr3uM`@X3QRevGC(YN((GX*d3d1Nu#qJ%F+O>Iz!g_)XL{MML zNr3P%#Cku=WFlgjqDI}U?UOe`jv$|8OD>?-0q7dpBMo92h_Ok)#43tI#uacCDR%;Yo1lPkGE1!p+<9;^}i@8YY)cgQ+w*l<{ literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..0a195fb25b18c60d17f29b404dbb35615b7d0af3 GIT binary patch literal 217680 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 literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_restricted_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_restricted_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..0120b91137c4a6dff53e1147666a8d78669912e8 GIT binary patch literal 214744 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 VZX|~@kk7e|=Nh%5=xM;2x^LYvo_hcQ literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..1701a888a746cd8bd739912a66e6fb7737d2f26b GIT binary patch literal 212688 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 Dgu}#} literal 0 HcmV?d00001 diff --git a/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_small_code_small_data.lib b/src/IQMathLib/CCS/MPY32/5xx_6xx/QmathLib_CCS_MPY32_5xx_6xx_CPUX_small_code_small_data.lib new file mode 100755 index 0000000000000000000000000000000000000000..65b8467b30967922ef7205c99e0b0f8e9d8c23f7 GIT binary patch literal 212448 zcmeFa3!Gn7buYg1oA=D`HLs9_JSH%K5b~JcV_soiVG;^tk`O|yN|GUwAi;!C5)>_u zF$%?79w`B<7QEC8m0HnO#nxM~Tog-d5~`J6?Wf#}BG!KkidFjedO_}Y?Y;I{d!IQI zf`k}`oKGg_eE0dDwbou|ul@V|&RKi!xqX|je8;5&^-J2qt;2)%*#Ez+t+U)+w3LhL ziKcvnsP*30{x|eNqSyMj<>y3i#=mF(f#?YRO_}y{dd+`JKSEQE#NTh-K~rAq-=+7` zl-K$<_83ih6aJ;>@1r+S>NoNC`SU1sr2by`1*Kl&Uq$9AGJj1&RPpQn&Ayr{ ze%-&*JE-E<`y1W7d*|8$nO({5igwp&cV)Zlw!1F7>$STc8XaA}d+V;<*q>(vWDQO= zE^12!i`RC`RkADCeU~Li0n#C-WiKL~=(3!ZedpGzuYf&;g58(RE>hepXFKe^Bv3Bu zv9M@%+FA-$$l7jU%T6xt5@@eN%e~~v&F_E(W!V=>a?t4t9GZB zQmpJ1y+7s3@NT1tFC!E?d}bP-JAG6WE3x^XyR}I_ijyO3@L^w>%ucieAyv zA$w+`xFnE`69v%`n`X=SB74Mqd&IRfM_pD@LFyMt;;I-zw>#)^2a)7RTqLar95L5i z%vcl}J=$Kyz3dwHvh$q1zQEo=apXAlnk(zMJef#f-c7>Iz~xKdZnP-F-ne6wk1&;>2Zv* zV?=tTpw}@v9iy<#6?H^MrRb;_9d$-WWq0H(?GQ7fW*-?SqMbRe&XLYYQKTnQ6KUyo z>bl%PuRG{*2d*~GW$?cBcb8OCJcZj5)ms?$c63Ye>fxQcMt1Ie*HzrvTg{`}9WHQx zKDzDl-CN(e^~#8~8vW7ej%}B3+i}$nzOm*;j=p2()=Mto_ORN!W(|tAnr6Ts6yqfE z=fSu_`&Hz;^)ZQ_!U-y+Ge^`wZ#2X1nHL=uqoY!ERE~~1 zqa$|^@gsV~j>uh(-0co}+(EBBu)k4PFW%{%(H6=@{Ojl};t8z(RMtJSEp+r2y3E7b zi|VgmF>=)_BL+Id&1edTbf zZ|1rShwIKPK2k9}&(Beyly13sei14`u7ge4^CgXucEzgh{n$E>l=Fc`Zaxf&V9Br zbxy_b{(VH1ZTmB4PfKrD4xNl&JUP@m^8+*bKEXDudAM?5=snb05gN5LPpE7>3Qzj1%G9fm)ukAgq) zBkYgrBk7OXXdg38`*??G9~T{>W&H3|_f2E9iISB;l<+r=)#x*ZUY9t@L~*kEkbT9$ zR~;d9;DK4j1D6;NyyFlaShVk%Lq-PsU=@6D=Ii2vT;zi}>qaY99nuf`Utd4m{>pwB zISPJQvTn3y8XQ z>*k5W`KH)-hdY+d#2=Twe7!5}LrEHc zr;p6S)w4$`Y0gMB?Qi%-?u_T3zy6H9&tKoz*7vjipYc^W$f|~{%C-z-rahUC!E!@} zlfSGDj}$IAho(%&zG~U7U0Zi-*}nBks;#Q8Os8&4rKX{L$F3_jZ^4s_42~;P)l+Jx z)K}mz+}v{vF0D-c^yND2vqDLwDk+EKCJ(pbxZT4i;`kB|&&Ba}51)$TJsw_!abE4Mru%`_ z-fH?Ru-aQqUj$bFR?|bk>fdVm8nF7en!W+7{;j5O0jqzj>AS${-)edaSp8c~{|c=3 z*3gfE)!rI<0a)#=p%;PG-WsZaFVx-|BU|mQp+=lnduwPKu-aQgbAZ*}8af47?X96j zz-n&|m4VgXS~>$*?X9IVfz{qxItN(ot)=sT)!thAZD6&xmNo&ay|uIzSnaK)?Z9ep zE$sqUdu!=^z-n(Ty&qWZt)rWO)!sU~4Os21qYneCy>)aqu-aQk_X3aM9`Ke*)zO~; zYx}LE&jBB_r_K2<0sp6m9|o?(A8&m9-{M%?a~&N7R(tE|31GFip8f?`?X9P$fjQ=Q zOQq`R-+jp#_(5Q`KTQt-|H?c6D6ra_p##8bZ-$-#R(mt_B=E)2^%;5w z_%aVa2R!EC7l5^WXXqv1gWmZneB}My!x`XI)E+X_3asrtL$iR@-Ym@nR(rFw2w3gS zQYWz5o27nWwKq#EfYshCtpZkiv$P&q?ak6gV6`_(TY=TyEbRbRd$V*Eu-coWYk}3? z9Nhq{_U7moV6`_#cLJ-uIl3EI?ak4Bz-n)f9spK*bMzpv+MAB-*#te+>1bQQ4n7mai+u-e;1Hvp@>O>_%zdnB)k?gZZA;k$v=-X^*a_)72m z1HjrpH_?N@_ju;k{-KEu0IR)C^aQZ>Z%yT)0$%Fjsw)3{3uS=yd<(S#4@CSHng#q;56=VM;NeBUZmURDP$|HbG!)<}S{2}G zdV7Ft=$!$srQHFpqxT26o^B0r1N~8e)AXkS&d^^5I7^QPI7j~&;5>aVz>V~i05{Q# z0dA&-YUd52ic||t5AYP48{iZz@NiSAi3$O(r=9>e&|rXT>8t?P(W(Gf(**&pp$h|C zNm~M371-MZ`+a+xQq8n2;5X9m1UOIc4RDU$AK)x~D8L!|g8-+^`(gW2PW>1^>gX+( z%Y_bVA8sEhnE#9B|C0H?Z2s>w|96@HyUqVS=Ko&vzq{C8jTCJo%3hBIZG)_Yf)!D) zG745m!AdDw6N+Mkl~S})idIU|N-0_?MJuIfr4+4{l9f`jQc6-4E2U(ml&qAJl~S@& zN>)nAN-0|@Wh9kTht&~nHrPE63v{E{) zluj$9(@N>GQo5{^E-R(WO6jsvx~!BgE2Yay>9SI~tdwpmrQ1sBwo9JCJtdt%rrN>I?u~K@hlwK>P*GlQNQhKeFUMr>7 zO6j#ydaaaRE2Y;;DRfvdg$^sH&|w7?I;^BZhZR-mu(AprR#>6KN-K0&amdB6O*Cr8 zBF{Bsj5RP#*fnL0HLzIZxz_BOv$W@eH0Xk~=t5EKlQvzDMqQ9rU65v7kak^=hFy@B zU67_-khWcr#$70hebT%O(!LAQzzfpC3(~|3(#8wY$P3cSk+5RxCGEUW7XL|0FGy1_ zNLw#RV=qW+FGzDQNP90xgD*&nFG!OwNSiN6qc2FSFG#a5NV_jc!!Jn7FG$lbNZT(+ z<1a|-FG%w*Nc%5H02Cww3K9YZiGhLyK|!LRAYo9DI4DRU6eJP~2!+MFw_d&5{=d`= zbm{ehoVRDX{WD!Y==4F^2PGdAeSkJ+bX(bIi9QN0L#y@A6#~=|AO~EAnq247+M>Nn zV0(=Nd|u^v9?h={>~lu5v`Ov#3(gtca@Dr&7o(ja>u<|d7#&56cfEJV?#)|h@dfAb z;g+4-7jNFaZ8J`A!Pa-|Mvma(OSW%*CsTJ{X{fs{m819v{~<8{gl+WBmvLN+zp429 zCjR(5z6ujR&-HnIz>fDV96KKWM&M)j^<+7Y{f*D@#t)X`ysSHkbNKmfwt4v9=baDW zzUMQ+@rp6tCY(r;$IpR%dE4oQmwbB*wcP4$3Fg zcUO$}iJD~ISd8~M+zj`78K)w>x5jv1z>Rdj`+Oe%cJ%%7<@#jar((RXH6-)?D#qKN zPWH>!W4wRDTZSY*^KU`lz8~PnX_EiG=XlaEevTIp?spkZMSgic#w+HDE@Fagu3hmn zC^V5PT>0(b@wk_E24}fO`K_JF z`K>+Ooi@F-?a=wH_u>T)|MBMXTNlu2=ANRSX3zc1vHiYmMr(RsRZrjEDXF@J^}}_2 zoSDifwQvTqanr;7eVqGuFx@vqW9eJ__Tp#!!VMLFj!yAldci*)$euktlYcxj=c}Ws z!Sje3Oy=%%WX+n)+0_qMZmif?eLG%7+1%Ng$emrXZsBcv&OsjT%8KCypRa1)kQyAy z|6T6p{kcAqDVxsE_dx zk25!pntjNEOt!Bsu&>Uuk8^B}ntjMhOt!Bou&>Iqk8`1pntjL;Ot!Bgu&=_ik8{?J zntjN@7;j&yr+&D?^vg4b(KC;w=5w!nFg=JK+4P#PZ=bxEppi#UB=sv(hWuV{%8={z zmiBE(9UZUDT(_Yj(XzI{vNq4M>Z4=X!gU*J5-rOImgPOm>W`9T=Wl38w5&F;tk$zE zdvq-8JAXqi(Xz_GvPx%Je;?=KA0^w)6Nn%QtHG zFy|Z1_b`7I)%QJ>G#6Ok=Ts8s8|nEfS`?hGBF;A&z#ng%-^0HN^nFhi@$XE1-&1As zjrjXNZ>dx@;Y%LjtGd}3Ux1^NJk0qevQdDQu#IJ z-Mq@Lp&P(g`8C9{Rep`hH&XdE=H0EzuQmBbD!#$SlW)`qnY^V^wI<)_zgTE6 z=No;@!(YR(%C9r|Mk>F~mM{05V6r1Bfg?>m*>VDgPreuK$3Qu`ZBzLCmL zn|vdcpEmhMDnD)VjZ}Wx##(Jq(OT7G_JOawgwM_2o>y zk^BA3=Q-bqpLOxZnDdSHSZFZk8>zmW$v3*gJJ0z>DnC!0Z>06f6XzRgee%TlMt#xs z$R7aKc*vW4qYr!MIp0X-HxlO?sr*KhZ*)?`Z#4NvD!8>#$8lW(N*kxvlFZ!-Bt zD!<9(8>##z;(Q~O-(>QQRDP4mH&XdcCf`WyZ#MZxD!#$elW(N*n@zrv%5OIL zMk>FVINwO+x0rk*mEU6WjZ}UMalX+&H7h0rhgA`CXnBR z&)1&?=aE0);XHg@#Sf2UYl43=0dAzJ0dAn#0nXE@0mc|yIvNUa zEu9_U8amIzZ0|)LZo=nx4{Xo9pJ;^lXqcDCexmX&;h!tKi(i31k(}4Ne6iShrr5VZ z_7mBEq{=6%7rJF^{3X;JB>vaY-Hlhd^3K`3DYfrQ?b}!TuGGF6w(o`I&9`B?H`emv z*zV+YtGvCHm#y+{Szay6n`(JcZKWK~lNdRkCo%HtI<6dX;OonzcDSH7XG;s%RddO&=NX!yuCq8oXL}Knkd##%%QcT1oEKaC9m}s6z zJCUSLl4Cvo3a`E2Y&Y$YZ^5tJy4~G$X|7(0G+D1inyptNP1h@tcITBy)ALHC^?4=I zl)VyZgMP_)(XLthtntEK^Y&Q@;%#GoeKQ02cQ&tG81<3d3<&fdNx8pE+$I8!V*arSx#oHeIUBm~nNilT-8=jPZANzacn0JmhjANg- z2jCti$mV!!fqfqTF8jD6VefdOG2X*CaZdtoM~rt7zIP_^emBNr=O^(#6yx190q+lE zyrHUOdH2P5Pffu4e2h1SchDa}ncJLS9zlWcziBo49EiD&_stmZa})5Mit$F!NZoTK zoQmZAB*y#U1iW9xcw=bb_n^#e&b|yPfm?NjD{re$&I>phJa-LqH-PsPbkD~z-&5ZB zckJolaV)v5ui56vaJ;$K`M8YwW4sGI9$aKL=BAU@OT-I_t!DriyqI7V_^FZ#CR<& z>SrFK${X{Zit!eDJonszc|VKsmU}$ce=?8zDc^q^JRbLryfJTjjJMn4p-N_B-ohB~ zW{-!%h&Kox+E0{6axYH$b}*6Uod+I5JK{Y6o_k(qgvozfz(c#IHo<=j-lhCO;B9aT zT^8dlK_bj|;CMq#pSush)G?jpo~jGy5va{ZG$YciBHap3dA=F`qL_s`~b44&?agvTr?} z<{7dM<_4aB@#TT@h%zR_Md3SI<5lGqkNlhRLdm;mbZ( z*^W1*L%CZI<}UlZIUeKVf%7<*Bb$Fa$_AdEy>5SYO5gr$Ju*&?hK2jHGd&wO)L1KT zx|rYRS}R>fjD6?ycFBl2TJ{~D2gm5v{OZ-mx(9joy)^E#%_%yzJjfX_$9@~MSx?8P z2a&UL?0e8=W*ws*L{`zU??H}~V>XJB_w)wvpvi7KM%y4Vv)%w6H2HVOjt49Fn+?9r zq=%2&bhzL82sw6dfR<)5Dc|gOm1kOByl%-R_g#L}d`})2y6NKVZI5R!`+PbR$l^fQO!ZR&WNI^L%E^Y}OMee`(r9gn`_(HB13rlHkugkL#k zJl64FImdtH9NxQ~<30WB-_xIlcXOG2r}yyNxPo~bcQDOwc^=OW;td>+@gDyMZd1*s z>f2YlH*gr=y~cmLwcLzdeC0QNuU^lRHT!eErs!Q?^cKyIkUW|_%p0+d>RZv->o!#! zuem&JA1fqmKU$vRCCPx@OnF@_n7qG`I{P!ZU6C@<73ft1Ltqb z9owGcG114Q=gipNWBt9rLX6u!HoeC=7RS2xcx<`vy=84kmUQ%-C(Ur^bxk9*gwXn6cYBHnPTy-Bx>Q%vuquzt*f3q55mh*lpEcYsPM? z{#rA3TlLq{Q_!vcs5N7^)gQHH?6&H!HDkBcAGK!ew%Su?#%`-Ub!P0g+EZu7ZmT_Y zX6&}wQ)k9*t3T?@*lqPkof*5W_SBiN+p53bjNMlK^=9n0>aRCrw^e_=8N03e>&@70 z^+&xKyRH7HkB!}~H)FTeAN3|zSM6yqW4G0w1~YbB?P)M$x7D5oGj?0;X)t5A)gKLJ z?6&%&!HnHje>9k}+p0fp#%`Cgt`qO6Yw(3utvD>OYZN_e^KhkFGw)!J&#%`W_>WyRH7nn6)C*o{Sm0 zt@^WO?6&I9nz7reKWoNrtNyGRyRG`M769^S)gM_ic3b_CHDk9`f7XoMR)1v8*lo2Z zXU1-;JvlRWTkXl2vD<17)&_unwI^rBZmU0XX6&~5BWK2Lt35e0c3bu5&Dd?#pEqN- zRe#=$-B$g1Gj?0`=grt{^+%p~?6&$NZ`O)X{a7mi=hYurD*#ySX*6p^s6CCuYelF% zjl^q3s6CBltq8TJk*bg&t^R1F46yp6(X17r_B5KcB2<5qSt~;IH<`5}RDY9MD?;@* znYAKRf0J1&LjBQX){0PnG?}#`RDY9MD?X0uj=`lH#b6`}rUHfu$wJ-iq57wqwIWpiRI^ru>Yr-XiqQ5j)vOhv z{-0{riqQ5jm3AOeUhO%-tQDd5oM6_9PXCY{OM+`2)!TEiPws_-8;`~ zMX3H6)CsKmXHY+|>YqU?fK~qtvv!2)pF!(!Uh6-DHUew?XV6yQy^;PIv;$c6pGa2$ ztNs(|T42?GBHaM2`cI@=fK~sAbSJRZ|3tbQSnGcx-3P4oKam~)R{b;SL15KClO6(A z{WHzl6smtF9l&|jKa-vS*80z+CxNy8GwB)Ny;1#V(sRJ7e-^y}tomosOTems7FAXI z^`AuQajtNz*453KrU(+c2IBKv2XwJlWt zY+8@=TL0O!5%@-rzZH0|hj#$0{yB6Nu%8$AhpqsM;+ zc&~?_16KWW=>=fbKbKwtR{e9S3Ip*@iLReZ8DP~vms)|f{&Q&-u-1Pr%>&l@&!t7c zs{bVF1XlegQ9rQiKZ#ZVtNxQ{6|m|*iPi&a{ZFEez&A$roJpiow+v!1I)!$AJ0jvIY zdK6gox6=V&)!$A}0Bil*=}BO%e>*(`yf>9y#%cK=TTLyuYVq8 zfK~rIY6aH%&!btuH%0p9(L7+S|2$d*tol!(PGHr43iSi4{!?fLu-5++S_Q27Poed| zTK`jMBe2&06xs^BH?rpx+5xQkPo=AXRsX4UEwJi8m2Lo5{io6`z^eaLx)WIIe=6M# zd{dwhXe0Id4w(}TdOe?C0~torBEqrj?vJ{KaE;}wf?8kEa00WeW%epV6FdY zv#k2xg^)IGX zz^Z>Stp`^9i)kaU`eQL|1-{XfzXN!$hpz(0KeMG$OXykv)xU&p09O4==oVnrzl81t zR{cxpZeVQ>OXxmey&p^H0bp$pOXxvh{1g2h^bmmR@1RG4ReuK^09O4S^aQZ#@1Q4v zwf-IS46xR}gPsH4>*;#|82?0nfnEYo{ROJRKzG$&pbW6;FHkG6>MzhNV6A_F<^gN{ z3$zGW>tCQwVAWrweqhyKq!qxbzeuZqRezDz1FQZbZ3Nc(7ilZ7*1t$QfcHlAEz(uM zs=q|n0;~QK-2klmOLPmc>Mzlqz^cDQcLQtvOLQNw*1tp#0BikA^dRtCBYVp95bzcc zKMH)QhYtYn_V5$Hs;^8>0`K?EKLh+74?hR|l!spc*7|qSOTb$HPO3`#_3xw%u-3nm zT7k9xoiqzr?dha>z*_%KS_G{1@1#y()!#+^z^cECRsgI2yJ!`#>hGfUz^cECHUjJY z@1m{1s=teN0K2(7QmHPw3ixA@Kf35zV6~^4ZU9z$y6F~RwWpiz1Xg>x>26@PrUBtor+?3KNc~{yxe8t3Udv6^QR)6%-B4D+rpE`lno_^{FR(tws1+d!FPpg2{o_<;ntp4byjlk-Ue%cDG z_Vm*ZVAVfBR{^X30lF4g^$*Yuz^Z?MZUI*P19T^_`eT6Z23CIz(0#ynMeTEd9st(% zIzSHst38AC5U|=aNRI-mJ%e-rSnV04CxF$SL3$Ec{V_<-0INR+={aEa#~{4`ton!O zC1BM*L{*qbM)eO-23YkEQ7f?OAEH^n>W?9s2dw@WqD8>!k0I&=R(}jpKd{=fj8*`v zJZMr?*L=%_W*kz#xRQK%58McFgQbP0nSn(z&RQUaGur%xREXj za1;GbfSYM7z%9gUM!Bsb)k^mUcq%;@;1lR;0iH(x6yWLf!vN2qUj+C>s&x|&nflJ8 z83CR}3j#cw`T{(MMgrVMn*uzSE)VcYG#22KX>Wkr=@S8-N1qGuDfG1fpGw~j@O=7V zfKQ|U4DbS~ZF1h_`+Yi13-CfZEx?PYC%}v8+yF13w+Fa`wgzS|)1L+y&+h^}js8b~@xCs=Mfz@lhv=CAPo?Jr zTucAg!#vk=CFZDdTT|*3$_IExP#>OadZu@tuV3upCdBX30GH{k057HU1H70v1vpFF z0=$HF1-L-h26&KuFTl&_4+4A!{ZWAX>AnDW(`N(ROJ53biM|@(PC5|aHu|oI*&qL( zhnrIPJ`~`Npgr*1*;9D&4cVG7_jo$M3+aRapF}4Ics?x&a2K5s;CebMz|-lx0G~*2 z5AbPpaez;!%L6=*t`6|2v?suG>E-~ROdk&LEV?JabLdk6o=IN}@B(@yz&&&@z%}$g z1B}nV01wc!0bWEe1h|=g72p%7h9?z_?njRD0dAz}0ZvnUfU$N(fHTw;;3irY;A*oD zLhiRxv=BOZKfwEyDf1hi_a{ktaDIcF$3F4=@#~Lm|Gm=vd8PBm@4vmj$J_t$_)qE| zk7E4r$2<4i?b2_%{`(3kf1m96HzN1veuI^E`t9z8~>KR!XOp(rKl1S}C2f z$cUBFX{8)r3**;Z3!{CweWcJKi?DRaDl8qc3`>Ws!_pxOv2@5vEFH2GONXrJ;$om+ z?^mH9@(LoaAo2<#uORXYBCjCw3L;Mycfmq4vPO)^D~i0L$SaDxqR1k)Z9BCki}^@_Y+k=HBodPSZr6I19FdA%a9SLF4Iyk0A>*kR=rJFL8-#79x$qbTuF zl=vu0d=w=cgDDhF0_$W$z6eT{25+6m0kD|m!QR1WM7C(~sC>Cvf zixMA2iI1YhM^WOVDDhF0_$W$z6eT{25+9gF+_dMS#79x$qbTuFl=vu0d=w=QIz;7N_-S0K8g|_MTw81#79x$qbTuFl=vu0d=w=QIz;7N_-S0 zK8g|_MTw81#79x$qbTuFlK3b|e3T?UN)jI>iI0-RM@izNB=J#__$Wzyl;rcHB=J#_ z_$Wzylq5b%5+5arkCMbkN#dg<@llfaC`o*jBtA+KA0>&8lEgiI0-RM@izNB=J#__$Wzylq5b%5+5ar zkCMbkN#dg<@qu*!O#GH4K1vcFC5exc#79Zuqa^WBlK3b|e3T?UN)jI>iI0-RM@izN zB=J#__$Wzylq5b%5+5arkCMbkN#dg<@llfaC`o*jBtA+KA0>&8lEgiI0-RM@izNB=J#__$W(!lqEjO z5+7xWkFvx^S>mHC@llreC`){lB|hA5jIzW>S>mHC@llreC`){lB|gd$A7zP;vcyMO z;-f6_QI_~9OMH|iKFSgwWr>fn#79};qb%`JmiQ=3e3T_V$`T)CiI1|xM_J;dEb&p6 z_$a&I5bj5W`xW7SMnu0O?DvDR`z7IiO1R$=?#G10M_J;dEb&p6_$W(!lqEjO5+7xW zkFvx^S>mHC@llreC`){lB|gd$A7zP;vcyMO;-f6_QI_~9OMH|iKFSgwWr>fn#79}; zqb%`JmiQ=3e3T_V$`T)CiI1|xM_J;dEb&p6_$W(!lqEjO5+7xWkFvx^S>mHC@llre zC`){lB|gd$A7zP;vcyMO;-f6_(JArKDe=)M@zE*q(JArKDe=)M@zE*q(TVslE1tQf z@Lp*-I9^2My!DQaMg6!Sf;|R$=WRiBzB_*27DVT};^%EabiOlw-WEjX%klHJAUa=) zpSJ~izA%o^5icnw7eq3O)+e45q(m9x+*FMDsW{G2Qlc`(xvCiRRdJlNq(o(mb5}9u zui`j|Nr}oB?+#m{jB!3K+7e}q_pvRB7~@35BoxN^TuM~JIG-0{J}->(xs<4kaXv4^ ze2x_uV*w&1Dr20_v1VToLs$qhE+f`Tv3_5i5%W3Los2W$9vkO#EM95saO-xCx~^b! ztu!q(X&gu9;W%>p=-N`G63bpjuEcSq2z+PN=-TLZjILi>=)8E_yIHh%ULwM%v|c`M zy{>Fo@`TDguuRW5Z4GXn}#Fl!f+&w z0TuD}nNl@fZyv5tFRYE)1&Y;L2}tXCuUs42=vvR&uBU+sQRQ5;q0HT3cN5j;d=ypA z^#Ul1D(8BasLYz=-v_S-k&h!Qv_-o5L8Y{7$dslhHwvdB|3)$ADvFblqrKZ5HO1Gs z-f1juq$X}v(CCJR1yOiM_rjeQ2RazlCM<}qj~b3UFE_=($j4zpbbaIycV1i^!Ke*I zCDAQ(B~cWH1(6Po`iKzok_KG6OI_;+~t~f#2DwW z;~#MT_dD08Ie%%t6Dx^YhxCl-9wLUsa)ihE-1W5)V_Xw-eQ?AW*N$Bu9x=wXYyE&b z{561GZ{RJJ>)N_kq`ktpLR#z%k81S^|dpzm%e0drG9?$g{UXg~uxWYiM-WZSP zdJw-zz3-Q*$GuX$mE#Hn-CnQa6BE4c^)5cs^)P-}qQj$}#%CtFJnC_LW}?%hp2ue< zx;^TFd}gBKqn^lTCcD#?hW<>vNAAmj--_gG0Y|K_$==PNEK#H_40-mh#U#3KUcMIn z29!`5%1peM?%P*zb>h8@dNQw$UT-$OG}NAWFWtAmKzri7jCwdK^2R*Q9dVl!)2S%%d3%5_awO~>uM@|<-tPl{B7t{SjQ2rYbWZ|reT>%*MM?55 ziSfP;UXr}4V!TT*k5H1l8)Lj$I6q0=oiX11;3diXlNj$@%tw+W@4*=F-@r?f_w^X> z=IUg5PsDf&F%LqLydTDR2f@1sWo}E!!3)^?_xEx%z9f0oAo;vJ8ty$#81_zHYmE2j z;N6kHJ2l2zj=?lZyxth^JK!bRcW#XLJ`71ovhQs%-i&mz-gm`#p8@Z~3HA8h7;ibo zr6twlmKg6l;3dhsJI1>l zLoLbj-WKD18@wcW+hV-ST9f7dZj8tIit(zF=#`}@SV>!I>{+bxCcD3qt_Au|Z7;nDEbK_~5cW;b$w#UOqyV;ocmoeU@9uFVc z5pREtcaz7%M{&ga-!b0(9xv*c`wI!mwG&O{SmJf!RPC}$>X6*k9eoWc=vlebmQ@gdpw?RFz}zpo9FSq z8ROmW@lNr0{~F^x=JEKqF>h?&|Bdl}#Zz{T^?z$K&}0{rW!U@s@bJKaTN!S>1&{ZQ7;nDED|)=|#dv3XypqS`c?JD?Tnb(f&hzJG+2b{!G5EZDJb9fS zZ%&N&u*d82c%3ocQy#C|(AKx{Pm4(eLw5}8DEuytZK-rY|B7q+LP%REH`90`Sq=teZB3E zr?bNqeH&AwsqE$bdui;KrytDl3Ud3i8@_tY*cfd{_2E;p;mqPA6~i;me75ov_}f%* z-PjPV-n4r4rWCIv_i*K&RgYCtU&Zjkb&E%4@7WK=p4BK_V@qdZW%xbkK3kbuSut!^ z0;@lvW7&+>$1`*GRhKjSe!G3}={f5z9G=p*ayY%OqTKiN%ykz&of#g4J=It}EVE-Y z#mB!q{m+|-vcuVZy{K<@+rb=LdLX;;tJlKPjj4WET5l|!KCz`@)1q}tR?UH>qZNDB zz|s-V(sN+xxfR2G&{(x_<-YoMwx_0V<-Uscz9Aa3HJCn0YB0;(fw#B!KRs*Q9moxH zi{Lwu+X?TQJ8*OUw*1IX(mz?V#@>eUFpen^FVg?!#!s^=L6` zM%SzvP2G-ft=eK1uUoSE_zDz6!qp{qt2+0(QUCQ<&F{pFO-4 zf4ni~-{u<(viK|pZHz>dZQiY7gcugTC33{yMYH<0&5gF^=7H zvs9|itn>H<@BE86R(*Dz$49*L^=NRauimWlsP(Tm>pZqa{Ccy_qt?IPtn;Y#uQ%&F zYW?fYI*(d^yUwH9W7m09{S9WFN7dh8)_GL@4fNZvSM@iTbsklJgIVWM^*5Mx9#wyX zS?5vp+jSmQf7-0`sQS}pok!K5HtRg9{pW`w<;^;eYERy*^EjLAmcl%YJ5&BVzIOkN-jNzu;lc_xLLh-wv$$8_hb8s=v{!^Qih8%{q@7|BYsyN7dhG)_MF)B)`$D z^Qih7%{q@?_Re#Dhw5)K>pZIdCbQ0?>TfdZJgWXCv(BUHZ!+sVelC*VWY&39eNASa z$A`W1yw0QQYc}gV>iusv>pZqa{ARPxqu&2!v(97LJKqU;djFfvI*)q)o6S0pdjFfv zI*+Qq#jNwF`diF8kE*}Ltn;Y)Tg*C-s=vjo^Qih;%sP*%zs0QcsQO#XI*+Qq)vWWV z`diI9kE*}btn;Y)Tg^I;s=w8&^Qih;%{q^&ztybssQO#YI*+Pltn(uf(Q~v_q-yDH0j{G<0*rNk1KdDk0ZyBB7@fe1RE9nloX^rH1DvBT z1UOHR1h|p@A;3-azXIG$&jz@Kei`6as^y3EvQ?y}nspHsPciEvDo)WU9-rr-?TX>E zV)!jFd`S$yJBDxca1;E0OMo+UM}V8?t^n84e+zImeLBF|png2h@aKc`&Ggp+uA@gh z%=P`IhntXO`JDi_&{F}f5B$gT@cwIXek%Rg!z`ck2i(RuU+oZ%f#=3>F@}d@_yP~} zyvZ8^+(7RLaGu^3;51zs;6~zi(zyqT&X#=_?>~tjD}t}|%kLjw{#H5vZlCuj<9SBz z!xNPM%>?D>h!X91Xo7Nlki_|Tm1F9+UH0e8{tDT@MfSU8Z|wZD@p4T0pH5JY4lS4D>vnqk?kf_bMskQZ)D9@Z8&r-!vgX7rE=J!C!)na)FI z^N`6rWG)Yx%0p)Ikcm8G9uJwuLuT=iNjzi@51GP4X7G>+JY@b3nZ842?~utmWbO`` zxyXJhWUdaGszYY#kcm2E zo(`F&LuToaNjhYX4w<4uX6TR!I%Iy1g3QlRkoh@|&krb}R+3ng23~j-^8=a@o^Euh zo1{R7eU2{Qy>-`achXHQ;KqdZ@;n0$^!T9L2VFiea}&60%Kn*>4~jl01R#)52t*VD z8HG?tD5b-fX~6i28b){Qx?=N|ZKJ!c+`fIZ7X#sa+!e#!F{f3c1SvJO#E^aqrDDF_n29N@2&QO?6~MHhs+iO%R#1o+ zbg=za+gh1^!c9YA?hwwJJ+8A&Dw+<%v<26S-qg+SFo#h`QRt0mw2|l)*l6?$Y(#nm zHY&XW8&_U|4K1(0MweG$1I#P1G3FPHlPVGGbH>S)$n`nnCEE!0IJV$|a~AJ^Un$LN)FTL2zO;31_o;PIHuB;KYN?}y-hJwYB)(*k*)#&7;4c~{4Hm&5r=ioie z1ldxue*$~|zI_1=@@tNSz2iL{<6T{!Y~N2~yrm7vyq9CV7boClV4QE?SMUNSslGEn z!ma0@Qf7M}23ojWR9D9P4)9!^7=Ho0iy(6$j{k%Uu;uaB10Khw+gfJWa*i+OdydnU zF5AKP0e-Yz-+T+2M5$};0?`s|}>+$|E#`_nK$L|k$<9hrc#``&Ve4p6QyyuO1 z{~6;|;w7Wwxqg;;wP*y+pL}hL$K$@1H|EWV@!G+2_qW-wEN@|q*XQwCJl;Tz$72AU zJbpjQ8|ytU#@p`krW%&zZ3YkR@p>tu4}#~{i_2NwmEfU^ig>qx2N#ap_#FV^h}z`L zC&7E4Yw%JA7t_r#-rSQgrVwTR#ysQ*Z@v18gdE{ga*l9MXJ^r76CXN9_&YG3|9Epb z!VBm$(^sILW{)oZ7|#)&(K_??CQ6ml!z=ps+|@+L%^iCA`oX?~>4E28p0Z+EcGH3E zIny$Yk7ov-fAM8x>7EzQz}u<-)Y@1_yBC>&(tUF_r&+J)g%a*K}bN>Fy zv!|sSH>75t*@PU@^rqWKOrEHpLoAuOHurYs?RjI_a#)rZ%LZWC>aU)4gzdUHf3vYG zf0%YApivRbc|4Iuaa+#_t+h77m<+QYP~IDGIkB4w@8Uy{pc-b|7_KfwrUDnl{!qTW=B@dj;tC$ADeyg zNcIz}rOnSiOsi%__i(0n50TlAaVkgBu2o{!%)_*6Mr79v->&K-ZP$p{HRCYtniknL z&9e(u^qcN^!zd^o^WCbv+}V@>$rd<}giz{oufa2PE<;3ird;AS&_p6WxcRd9X^T@~OIUFYGZR6X6`Va~<) zBM&#Fn(4mV?4hoyhQnUSpTZ*x$IT) zuXtsCVE?*T$$$H+^b!dXDEJjr`_vkq-X_{MueT^mVW5*Y^0J+Xr1f==4F^2PGdA zeNYHMAfXV5Co1eA|wzb~pjpo4RnKMAD^va-2M4G_Ewa z0#_!I_|}ZO(s&99C`sq6i;-x8lMv3-ao6+X|Ir{GXnd*EFX5(+Zv$_x065Gn6Nz;%y~4)3S72k_E3k3z71+r2 z3QQdN(|gX^JfHF?3^b7t~;{}hGZ2E}TcUEuvndshG;%kDLBZ}YU zO~u~@_~V~E{Jo3c_xZd&V8^=%$Bx$|$L@9Ba$tXRKcV<{A0JoadnRwpJJLBMA2X8e zf1-xY1T=c(+%*6nN#J3ElYrL(0ZH;U#CV^XfQPR)fxNTvT|P-3f2a2C`#yL{_I)76 zdmnC65^rye*Mt|BNxZvbyibAmVU)Se`R`LG@a-GIjZWhIRgCvf;3et(dW?5D5*m_t z-;VLB(fE>h-;eP=J^}Cf7_SQrJn4S?3Ow9`E3h-$KY*8%^U(sQI3F=FjRc82>M|e4 zcx`I7JpP{v9>`*5BVG=T z%H1C>{IbVuu{2}fT=39-qTGvT!Sk1Qrec6wXjy<;&AS1;ehR%cIG>`;9_DAwmj$?i zt_*M!@j4W4<7d|&2ykPdkDoQ)9GtJCI|7_H^AM=KTDmVdpQFzNxF)clp9Oz0IA0yS zOWUk}c=(&GWn(EkiD##sh9ZTcx2Y|hH@`;ML-ELAK+-R!6|^S_J=GsmwuPVUwG zzT_TTpRfd|J3w6l>I_ghK&1c`15^l6D6|ktErenVq1-}Da7=QCQIzobMXtjNm6m~r z7;<2><5_?^W35AhJ7Yb90(YiIF70))++NhLwMOC!YaX7t7{+URCSXLEo4gc{VgfWN z?%5%q7`(2-EliBM?|K}aW&H71j}!2B3jR2x`MU;x@A7%>w=(k<;?ME;`yd~?@BPbh z>~F4%z*j2ElkZi`JJP?E-FJJ|@4mhbJH1?p?OFUK@z$c;uLpnDB=JULJiaK2hgU;^ zJbo{p#QWVCk3Ykbcpr-KW>3KT!x(S=1ibrVJpOEyub?=i{`-84w-h|*Tc7txjMq1T z-fzZuXHCF+D#kl+0^UzzythxlH^UVWX|}6@lYUdP zUwwal0k{Jf^6!peSUx-O#1D^<0$;!KF@)d^xJ16cu+%aqJ!7G_z}wd zjp5c9?XY|vjE&A=#nf%+Qr`&N^zkQa&c>d$9Ol|moKIS)g1Lmji zv)So`LvLwW#B(+e)hrww`_fx8yD)P#(EmC88|kyBH{=gC3?M@t8H{5?G=6^KJtGfS zURZNs{Tb&y{POK9U8eftb!V(T5pzWIS(mBKb6GFEb&q7CL&u-fSoXSsr*j)Jm+#N< z{M3@29@&-KaqQXkTYUpVk3G6X{51f7feD>-2i_SdO z?j_r`_5H`DU9ua-7-*EtaZ6<#(6ZW;? z>H*w$@Q9#(?rZUQ+l~NQysm%sEZ5h{Y67#+*Dku%tsHPLgWemxE%zR|P5X0p4FPN2 zN?38CjW86;mC9>GXmxDv6*U$3q z^|AB0`hzXUrd@ac^|52uGX7$BM4rO>UrpaA`RwlZoSRFR-;?p?^4Z%hjPlv<@bDHK z>-EWV>FV`0=9#TtZ|Bn0>uo-}>aR8V?0UU@rt98GrtpmSV}XAAjF*4Q^Tu=2-j6*$ zH{gviKlA;tK^A`z$Ev^H5QXP+9`mp1wAT7Qg2L<3X*rAG05VZ0(p&Q9KFhGH2Li+uhBfiR(Xvk-~HZ5UZa^y zSM6(}&q2P*Ycg}`s=OvMm#)fdGIQyweNARAU6t2t=F(Mp&1NoL^?$ROOIPn-vzbd* zuWyOXrQ2fW($(u*Og_C{-xB49a25F-OqgF^Y39zA>f?NsnJZUuHFc#N;_GW-`SrDC z{JUdRApSN6{Cc`9zzy`C0H=w^vAd1u!u*2(XX)bs&e5j>oTvXD;6{2Zz)kc|0dA%r z1h|F%BfwMWmjT8INq&eSTNB>#Gz7SYnmo+;-g7<7`S9}t++?1;sJz-hKfiJ{MZdkv5FL>vfUsdVOB3A^sHHPQKaAyqn;PTwN@xER5xAXqJ zcD=uG+m9QoFXd_1g8v}5}ON(w~vN10&+nxBOn(9GXio!Fe4xr*ckz>F5?7f zmc8);pzM3aAci`jp{<$DLkO9{6pX;Z6pX;Z6pX;Z#D>7Z%!j}wBuV}H(-E#Uc1Q1h zxe^Y%VH(sSU+sF?)3&N!foX7l4z{hb$FOna71&7d3T!ZV1vVbM0vi%ufsG2kV4PHm zF`qL|uEd(p886wy-0PeS&YyGsd+RbVzt^0Kzf17P=lLthMDMqmcZJ70mfmlF1a`R% zU$xA3CjRF-RaB~pc@Fv{-lt;nmcxd~eNp2+md}_JQ}5_^_%zIZP9OpoXKPv*sQ!OP&ap`7n8OfVbs;3$BXBJe-J$X zJ~EZ{#&f}M0dI!L@ptiD@K1ubfjf`n37Zt=DJFdr7@MW9He?^I7v=QqO12dr6g_Gw&tU zzMOe4sps?Ny`-McoA;7>zR|pw)bowzy`-MU8he5LP3FC%o^LkqCH4Ad^IlTVx0v^m zdcMWHmxM^O@p~uE7j_$u{o(K9ZsYe(Jdc*!c<`~x{9bA~$T>V@;26pc$omgq zZljFj=U)k*De@+|K7KxqUrGLJJ#U-eE4)wX!MFa`I@XC_3gB6=*-ef$!CuW92J;&$ zdJ5bV!tM}ug|IV(6j3d1&0JNI-Obbh-E%Guj9_dU3FQ`}WuPnBPit&-N$Z zT|MlV0OAPmvAJ`GSLB+xSLB+ySLB+gSL9l$SL7P1SLE8NSLB+jUz8xF7 zS(1t*9n!L2=T`*gxvP7|g^!tN3>-hxT7f_A+bi+M&zpRn8w1C@^YG_*{2YvrtMSJh zf42CW{j9Lh;S3L-pS&>-AC1u_#jk12A-2nHP9E#=?c*^?s~rh@$6FWUje(aWZ%d5# z4-@cyC&p`oq9l1^G2Rv6CE0gdjQ5oZD)Atn?cw-! z_Arlst2hiuEglb|&BnZs#(3=>&woeo=@_r<@zS2Wzlrgddp!Rg0sr>#?YqF^`R@px ziSaJ>c>X(r{}bcw_IT_c-nhOQ#Fwx4gC5WIi_GI^^*-+okLSN5=#261^>}z3Z#I^9 zPK@^jkLSN5;9N(vpJ*PKuYu>=!2(&{<=~-NM!W;yCA}jU0}mlfZTREuU%~qql=&N6 zM>oZIU&T$hJ%NWYle@NEjs%Qd_AP;XM^G*#zauCYJ38!3f zPwr-nvN7)xrl0w2|1cV@yo`@3OZ&o*ggiRY=-{ z@tQI^bLGD3_WfC2iH2)h(Z^EuXYG59&<9H}KJBK9Q}g@AZn}6wYR(6KaWZ3g1o*9xM5iolt|981t59S`vj;2D-STCGCJ)0kZ4{VJespL8yfFClA{qTeJjP(PLZDOzB z-HiBP7JRTjGw+CbVSiTrP}T0dkb)P|jgb$^>>1Yrsur%4kvOgB1LNXyLXn?Aii*#kPeDpMG6h1AK7AS_8MN z!)Xm(uP`!lbAB@S3cPZb?G>R_UA6-xqkbKif0hn!k0zo}qfu_YBStsXjgm{4Xy=D{(ix>0PYu@KSECoCbomg*DJW%$6ABeD_}L#N!=^(s;IVCz)H~*^$J6E zlm7dH^FykSkHTnhZD8{E3$_h#zu^24dSY;bmN5Bx23P-Bd+>S&tiL>|dj?*|+4c-r zt9`f@s@9$Xuk{5^wh1Kcw>e}tYG97=8pldorR^^dg&uV+|2 z$$JL0dg&Qf9inGQPx_w0`61QEM`1j;HZb{n2HOU>XK?-qJux_x+!7{V&*17GYY$$} zU}l1!l=)4mb{?~BbDHW+Ue_wg>)JRR&br)Zva}AS&xvIyJ)T}ME!Q}R?4;4u?Q2|? z7Uy-@?4&-<(i)L$FO#KZ@?MY`HeS}Nkc8|OH?Q-meW~`rr{}D5Gdd$P%VZ_lyEfS) z*}sFX=Jw9blAOCEa_3A&)e*UKoKdyv*~-+)isAjaj%D#|!VT4vHEXD{ebW?WToqrR=KkmJWf8&YJ z3(5C?vONz=Yz1B~fYD!*`u!Q&x;!Oceu$^!ytd$E?hC5gogY$td=y54YXg(LKd5Z8 zZGfMWJAZ_p7#vD&36rf?NNNwu+Avi4O*;pln_s}q!RN-`yS2gCIlM8x5c|ajS-b_u zZZ2&;zYX~N-uWwV{7VnNhmUyxJ2vKDhrQ~rF>~;#{u(m}pBulQ!rDXoz@Nz%V`I#^ z)t(wN2j38%#K!0E$NnyZEdDHxf9T;a;+W^I;EnkY@j+x?jhTZ_?W;9&@XclpHeQ?T zTi7o!$l~wfxa{GlaD0!4{}snS^6-ywtom!s9DLQ0{#tWR_1Bp>_}u&ryw(}7>CJOV z@W!|i_!J8bo(8pK(2YG1us8%*zC zeQa&8`qdo3<+J5TI+F;s#>dkx_dVlK8T=S~G!K@9Y`WuMX26OW@q*4uL zZ7{um4Q6ey4qF}6r@^cZcBY5##q}Te@Sg$e{cA95gZ;`o|0SGH;g2_#_b`stzO-2z zO!cSD+F%PT9sIOe8%*0z+N=$Bk9Yp*K!4h-4W{=eZPo_U_LDYigQ@}58UR-N zva|wN?_bu;h20j}lcjYyul8i=?ZDdqWN9<-_dWilz}kMYv=dm{PnO;dton0i&O_Co zGi#G+`^nMogRl25XXf0{_LHNJ;{2JB{v6!{tp3T-CxO*JIr^@ z{WMYrSldq{wE}DVX{1@edcPWJ9`KowJ&m*oSpCyToxo~eBlQETe;R28u==ObtbL~T zHPL#U*ZbE*8-d#*eND6#SnX+|9l+Xtn&>Lv?|b}ffwlcK(G9@bewyeOVAbDDcLJ;a zX1W_#+fOsy2dww6nH~Vv_R~xc0;_+T=^9}B`)Q$BIIsF!X&$h) zpH^A~tnH_jcx^UqKdsactoN(c%$KkJX{A*-ul{MJ^}uRhD{TZ;|FqIpVD(Qc?EqH$ zrqWfwdjF=I<&s4e-SliE3x*J&A&s4e(SliE3dH`7UpFj@+ ztNs({Az=Ofa{@gIJTtQA1Udk$_MAXZ01tWRp9H?k!_NTg=lcot9I)QM6X*qCweJLa z30Uo$Mpc;HN88Ud$^b8j*nf1(^o-`FK=RZAZI#|wsdQuy>*~?E)Y6naG^rR(Vsh^&- z6fF7cNh`rpKRsy`Sn}74)`6w{deM4t*h{Y$Z2(Jq^`ebn=|8<_6Il9BFWL;2{?m)L zf+hW4v>hzz7ts!|q+dik!Lt7;qFrEVzarWLuJ!U)MEk&_G(G?p|0<&76ute5C<`q9 zRYZkg@vkB(0ZaahsS+&d7gIHOpqE}T#lg~lim3^FuNFTBEd8gLTEWsj#WWQx{im3w zgC+eEY6E9`_DZN7Ec>4lS^}2+PYEprOM8{jO0d*V39SN4{glu;u;j0V)`O*fN@xRE z>ZgP@f+c^Yvv=uD*DW&aT=|82k11$Zgly-up|CG`$u=Jl&+5?vK z%V-~1(l4U}VCg?)l#GwyN&A&i7FhaE85M%1e#)o>EcH`Hm0+o#GO7kk{ghE0EcH`H zO<>7in8tu5{V=tH2YU4rrm0}*KVg~)EIZcD)1xx+(q3K}B zUj?;+CH)F&2M_e@RnQW!^q&e^3cgp1UkU!J#;d^6e=2AlSo%)|tp`i`m9zmY{il*P zf~Egd(k5_!&weFs21|QY(pIq4PbF;!OZ`;R4)9;K?RSEueky4fSn8*e_JAdSeQ6(9 z+OIDi0Eaz$eJL3qH8`cfrW`cGe~221+=C=QnN`%x2E z`cFR^1D5vdN3CG#KmBMbSn8)AO$ST;^rJTLU%m45qjs>=Pd{1$mip;OOTm)A{G!8q;DMgK{z2j8p3ZvadB{b?gu`cHq_1eX5OpEiRf{Q>d#R0xpv z8%QN!sjq=l36}G*fm98?!^`hLii6+KxCy*h<1t|TZ--E55VZm%y+Je;e3=$M9sG#K zZQv~$w}bJ&9YUchS^_B6cqv%wvx-)NBU=0_u+(1_tpopAi(e1^r^Xw=sUBC;M(~9i zZvsD{@n$gow?imYLt6n--Wu8tmin!s9bl>78rlh#`mLc|;5RgTd%*8&ybt_=#s|Ro z-wvVBU`poipsE#$v%r%6U@8P(CZ801IzIzM(topKTb=)(%x}e3YPkh z(@Joym;X4e0^g$XI`DsMydEs&jnfA3ZY_QzSkkYfO<<}2I@%1D^y_FVxXRnUj<$oP z{p)B4_zf+7Cs^9Qj&^~i{p)BCSkkYjePBtyo(_O}dG_il86Sm~_Nb>U@K7zj5d3wG zOTcevTnU!_O+8hEC4co42TOh$s0l3np@GJLCH)3!1xtTups8T#4-GUOEd8N@+Q8Bu z8mJvC{h@)DfF=DQv=m(6<$nmR1cxaf+hV%S_zi(pGH~*mh_uw9T+ZShft`A z)`Pogya6ozrHM9ztF-t{;AV|CgQb3&Xe(Iir-`y`Xi_kEa{J+YOwg%2#SNH z{YFp|xYoEi4Nq;150;9_95DJZ?&EOsyZw1T# zZzOF8OM8u^9bl=Sk+c&m^)r%ofhB(-L5mH}q!k8d(Q1RU>01Wp&_f32(tjD8N6#6Y zPro&|E4^iK0ljB%p)pxYVyGMCxRVsv_0^q<4emjM4DLw{2KS;f3@)N61{c%C2A9wR zgG;Hy;4-?!;4s~7a5+6-aBupN!F}jigDdD|gDdF`gZt9|7~GHc8{D5V+=GW*KLe-HzSA*-Q#Nd8ZVQ?A^GI%6K4UW<2ZS# z=%)tvr{@d~)2|J#pw|q}qCXm(N^cvSN$(k4Z}e9+C*;RQd?kgji*`ePs5_+@Y*C)U zdDKH=RX>#)=ZA(-wZYw}&fs1&!r%ck*5GV9+u(dU&)~i^%ivPF+~D4{$lxNn+Tavg zVKC;jH8@Ud4KAd+4emnUHh2Vm&)_nejmpef7NRTEa&CyOQ_FKg_B}VX+`{W$R7>bw z{nfnwMzw_QQC>dH>wl$|&|l8$ui^DK@%qPk`Ey?Xidw>sZ68a+KJ3``u{7+vdaVDf z`M-qIHSz;Hk8%3Xa(;fpx}(j%Z6Edw`^cYdA4|jj>HORGo>aU4|E2y<_kYK)59hz9 z`@gdvdxZBVTX=us?mtiOe@<-wxrq1Ei@Bbct0nd)5A*UVUcXH(vHy+max||$S1qAm z#>-oI{XJ?4{bjt~e>^(e{(K~IgjnQ{dKis*t?h4yY+jt`M2xa%@@u$?0P}{+jgt zMdc5A`?w7|S1N`byI!z-l=HuZbw`{38Entr-yULnPpT!-eV%o0`+U~?+xC%v!#?tD z+sD$d51o5F`mEPVh{&4$$+dlM$eYf7RH0(p? z=I68K-|de^eqiS@l`kxx<$V5z^Le!Sx9!7@VITRn?PF=!hb{r>IIkYrKLY=$ZK${E zPS4@qU{63F9bzwHwa&tsl|JUoN*{|lD`U5_hb`9V>CiO5Cwh=UAz8tkgMH>KrR|j+HvcN}Xe+&aqPGSgCWY)H_z{9V_*Y zm3qfYyqRvH{D4UUxt$I1}L z$`HrO5XZ_8$I1}L$`HrO5XZ_8$I1}L$`HqjRqL3sY8^XPtz*clbu3x6jw!3wv1Qdd z#;jV$npNwVvufF%>jM_sv)G=+_AIt%u|13JS!~Z@dluV^aQ-4}FT(aBY%jw0B5W_h z_9ARA!uBF;FUt0!Y%j|8qHHh9_M&Vr%J!mcFUt0~k6YZytr*+mZf#`p#ogWF{%&!Hx46e!+~qCq^A>k{i+jDr-QMDUZ*j-R&dK&Ii@UzXec$5F zZ*lLpxcgh&|1EX^i#@<%7qHj|EOr8my})8Ou-FeQb_9z(!D3gi*cU8z28+GHVt26E zA1rnVi#@_(m$29;EOrWuy~1L*u-Gpwb_|O>!(!L4*f%V84vW3RV)wAvKQPsVBb{UgHu5n=y`uzy6@KO*cO5%!M=`$vTR zBf|a>VgHD*e?-_nBJ3X#_KyhrM}++&!u}Cq|A?@EMA$zf>>m;Kj|lrmg#9DJ{t;pS zh_HV|*gqod9})JC2>VBb{UgHu5n=y`uzy6@KO*cO5%!M=`$vTRBf|a>VgHD*e?-_n zBJ3X#_KyhrM}++&!u}Cq|A?@EMA$zf>>m;Kj|lrmg#9DJ{t;pSh_HV|*gqod9})JC z2>VBb{UgHu5n=y`uzy6@KO*cO5%!M=`$vTRBf|a>VgHD*e?-_nBJ3X#_KyhrM}++& z!u}Cq|A?@EMA$zf>>m;Kj|lrmg#9DR{t;#Wh_Zh~**~J}A5r#?DEmj0{Ugf$5oP~~ zvVTO`Kceg(QTC50`$v@hBg*~}W&en>e?-|oqU;}0_Kzt0N0j{|%Ki~$|A?}GMA<*0 z>>p9~k0|>`l>H;h{t;#Wh_Zh~**~J}A5r#?DEmj0{Ugf$5oP~~vVTO`Kceg(QTC50 z`$v@hBg*~}W&en>e?-|oqU;}0_Kzt0N0j{|%Ki~$|A?}GMA<*0>>p9~k0|>`l>H;h z{t;#Wh_Zh~**~J}A5r#?DEmj0{Ugf$5oP~~vVTO`Kceg(QTC50`$v@hBg*~}W&en> ze?-|oqU;}0_Kzt0N0j{|%Ki~$|A?}GMA<*0>>p9~k0|>`l>H;h{t;#Wh_Zh~**{|J zA2Ifi82d+z{UgTy5o7;|v46zaKVs}3G4_ub`$vrZBgXy_WB-V;f5g~7V(cF=_Kz6* zM~wXgbICjB-0UAQ_Kz6*M~wX=#{Lmw|A?`F#MnP#>>n}qj~M$$jQu0V{t;vUh_Qdf z*gsfRczlyPc#MnP#>>n}qj~M$$jQu0V{t;vUh_Qdf z*gs>n}qj~M$$jQu0V{t;vUh_Qdf*gs>qLVk2w2Boc$xt{t;*Yh_iph*+1g!A941NIQvJO{Ugr)5r==&EN;7U zvGecHnKQ?ZUfi}w(4a{}7R{M=&Qw=xqrk=U7wK_8FRsDdPNBq^+coIh)tlQX^tP)v zw^QiF)tTEVlsI#{I(@sixt&69ySTZXLN6|6Zl_S<%6-QAuPC#o{8eSvRjsd*6-%yaed#KunKKc>m^sOI zP^YXBt*}lyo?Xu@yFRvq!YPUS!!z#Lws$B_=548BXB)0JyX8@*P9dERh-z~ZpE!BW zJjoGP1bYLj7~6R1qlS2Y>RkkD9RX5aYO&vX(zTK4VTdt6sR!46;?vGxa>QydqPtZ}~oL=h1 z>D#f_x^Z@=^uXNC+%x$q=Ja0NI0Be;bxeElDdT2dv}DfQ*)wM?Uc7M5MN4ohMKz1A zYF|9-BC1)~HrH(>_dLqC%G7X6>KeNjXe-?FD&H!@4)5>u>;?1{hnCCf;kqWEqIs`ir~*tmdrn;y zP}zL0XQ%>f9a7)!Nr+wv_Byi`0;-(P0reCEDxJ>-4OKwC>@x!+4?z`wXwCCkkGUo6 zo4I%QFnTWRW4y7Qd%kF>Y+F;tsa?xO^XJygnmcC}jH?xG7cZVOe_qWcb7x(uc0G$1 z+Pj`bm+`N_hraIN-Ea1;P3p9^ZHE^e&f|`L)Qp)bysP+e5_YCQ}Cz4 zXlLR5>pY`&-b1l<*j5Fl8*cw{{^8Zs52)*wgD-R>_P?$!4${+o6P)BGhTpDErK9Wq z3<%Oq^6B1&0rh=EH@NmL#0uTs`}oFHkiB-F?gLb6kWM}8*X`|3mUny*<(1>BJ{>+c z8JNF2e7a0Dn)}X>Zf}E6myZSy%AXp0py#h!da%8p`E8|b-Z0|mwuCpjOe~7X|TOleY(5Kg7f!RpYA*1 zV0-&~y6=?-=PwD42dTGzez(27&I&q-buLK+rZHF)Ubl3DJd;Anfd+E;c>1qeayNpWf+H;R}?(wZ=puEGX z>u&Jb%N-Ql9^dfk3aaFtZr$DnpYDC=K2ZV=ZvNCaKlS!~x0>i5t_Vw4_l!^XMon=3 zUiRtU8Z6&XQD$9xfAr~IsSVEGJ3ifSEP3Zww|CH|+ZGAVUk;A9dU<~p4YpU}(>)(U zYHC9cZaJ#`I`_oFryJ(i)dlzavwXT=)x%Igy65|K4Z-D|0K(9sXb7*4NuO0YuV=gzrP-)}@N9Xu?16rR7+h%@H_+(hs4-DTWs+FxU}Y z#y;2S(p2c^r# zd7QhQT3K+Zlmn+cc2K%9pKi3K!zquai}-YlH62cQJY9=V_Z>}#Qyx$E1)uH}P3OLj zt@3xNPnUF=ltZV zPI>I0bWi(q?`t~ubu*=V*{7?RBjv>@j~$fm&pzE0O@~t+PxpU)y6ZF@PI)|CI?m_y z{_>cn!zquaEAr{y(sVfG@pLslT>%CeyMBaI9#1#IryH&5aLVK9&h_aQYdW0rc)E*y zy6B=?T_kFtAny$B|d&;L-=}*_)4AspO80L*-CLRtr!sa>x(=VNV1bkar!t=IYd+m*O@~t%Pq)FR zTde8Ssf-FL-5>dM-_dmLeJrJW!KZsg(~VHZ5R^`RTh-`)UzTz-D-nXyz2noxG~GyB z<>(S2MwjW}RWutq-M(6{>=oc2?20^HJ9O^x#obmd`$C6PA_^-&xB+<>(U8HR5l@nwq?AKGi>kP zj$y0!cI1T{-)nkLZIuICDX^6k&Vo(MLGIaf70RxuaP9XhOdl0_IlN6hlSTuRqn*GBvP$!rVJ5kLYm0no9rmkUHsHr)TLXFc>N>(%? zhaV4m33Gbq_86Bo_Y4!GeftZt#UXm(XFeR$u$$T z9Aa+urp_+Zd1s%|BYVd3iB5gpK5ARimLzjsDb~%0DrctJdPd@iX4;Z-t6Rgx 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 TTmiBD6VE;Ku-%~?u1Nj>GfQOJ literal 0 HcmV?d00001 diff --git a/src/MSP430_GUI/GUI_JSON.c b/src/MSP430_GUI/GUI_JSON.c new file mode 100755 index 0000000..92cf70a --- /dev/null +++ b/src/MSP430_GUI/GUI_JSON.c @@ -0,0 +1,201 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// GUI Interface +// +// API to send and receive data from GUI using JSON protocol +// +// Texas Instruments, Inc. + +#include +#include +#include "./jsmn/jsmn.h" + +/**** Local Variables *********************************************************/ +static char txString[MAX_STR_LEN]; // String to transmit data +#if (GUI_RXCMD_ENABLE) +static char rxString[MAX_STR_LEN]; // String to receive data +static jsmn_parser p; // parses JSON data +static jsmntok_t t[64]; // We expect no more than 64 tokens +static const tGUI_RxCmd *RxCmdsArray; // Pointer to array of + // RX commands +static uint16_t RxCmdsArraySize; // Size of RX commands +#endif + +/**** Local Function Prototypes************************************************/ +#if (GUI_RXCMD_ENABLE) +static bool GUI_ParseString(void); +static int jsoneq(const char *json, jsmntok_t *tok, const char *s); +#endif +static bool GUI_RxCharHALCallback(char data); + +/**** Functions ***************************************************************/ +void GUI_Init(void) +{ + HAL_GUI_Init(GUI_RxCharHALCallback); + RxCmdsArraySize= 0; + RxCmdsArray = NULL; +} + +#if (GUI_RXCMD_ENABLE) +void GUI_InitRxCmd(const tGUI_RxCmd *CommandArray, + uint16_t size) +{ + RxCmdsArray = CommandArray; + RxCmdsArraySize = size; +} +#endif + + +void GUI_TransmitStringBlocking(char *str) +{ + uint16_t i; + + for(i = 0; i < strlen(str); i++) + { + if (str[i] != 0) + { + HAL_GUI_TransmitCharBlocking(str[i]); + } + } +} + +void GUI_TransmitData(const tGUI_TxCmd *TXCmdrray, + uint16_t size) +{ + uint16_t i; + + for (i=0; i < size; i++) + { + sprintf(txString, TXCmdrray[i].formattingStringCMD, + *TXCmdrray[i].param); + GUI_TransmitStringBlocking(txString); + } +} + + +/**** Local Functions**********************************************************/ +//! \brief Callback function for GUI HAL. Called when byte is received. +//! +//! \param[in] data is the byte received from GUI Comm interface. +//! +//! \return true to wake-up MCU, false to stay in LPM +static bool GUI_RxCharHALCallback(char data) +{ +#if (GUI_RXCMD_ENABLE) + static bool rxInProgress = false; + static uint16_t charCnt = 0; + bool ret = false; + + if(!rxInProgress){ + if ((data != '\n') ){ + rxInProgress = true; + charCnt = 0; + rxString[charCnt] = data; + } + }else{ // in progress + charCnt++; + if((data != '\n')){ + if (charCnt >= MAX_STR_LEN){ + rxInProgress = false; + }else{ + rxString[charCnt] = data; + } + }else{ + rxInProgress = false; + rxString[charCnt] = '\0'; + // String receive complete + if (GUI_ParseString() == true) + { + ret = true; // wake-up MCU + } + } + } + return ret; +#else + return true; +#endif +} + +#if (GUI_RXCMD_ENABLE) +//! \brief Parses a string looking for JSON objects +//! +//! \return true to wake-up MCU when a command is received, false to stay in LPM +static bool GUI_ParseString(void) +{ + int i; + int r; + int j; + bool ret = false; + + jsmn_init(&p); + + r = jsmn_parse(&p, rxString, strlen(rxString), t, sizeof(t)/sizeof(t[0])); + + // Loop over keys of JSON object + if (RxCmdsArray != NULL) + { + for (i = 1; i < r; i++) { + for (j=0; j < RxCmdsArraySize; j++) + { + if (jsoneq(rxString, &t[i], RxCmdsArray[j].stringCMD) == 0) + { + if (RxCmdsArray[j].callback != NULL) + { + RxCmdsArray[j].callback(rxString+t[i+1].start); + } + i++; + ret = true; + } + } + } + } + + return ret; +} + + +//! \brief Compare JSON keys +//! +//! \param[in] json is the JSON string. +//! \param[in] tok is the JSON token. +//! \param[in] s is the string to check for equality. +//! +//! \return 0 if string found. -1 if not. +static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { + if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start && + strncmp(json + tok->start, s, tok->end - tok->start) == 0) { + return 0; + } + return -1; +} +#endif diff --git a/src/MSP430_GUI/jsmn/jsmn.c b/src/MSP430_GUI/jsmn/jsmn.c new file mode 100755 index 0000000..1d540ba --- /dev/null +++ b/src/MSP430_GUI/jsmn/jsmn.c @@ -0,0 +1,335 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2010 Serge A. Zaitsev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * --/COPYRIGHT--*/ + +#include "jsmn.h" + +/** + * Allocates a fresh unused token from the token pull. + */ +static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, + jsmntok_t *tokens, size_t num_tokens) { + jsmntok_t *tok; + if (parser->toknext >= num_tokens) { + return NULL; + } + tok = &tokens[parser->toknext++]; + tok->start = tok->end = -1; + tok->size = 0; +#ifdef JSMN_PARENT_LINKS + tok->parent = -1; +#endif + return tok; +} + +/** + * Fills token type and boundaries. + */ +static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type, + int start, int end) { + token->type = type; + token->start = start; + token->end = end; + token->size = 0; +} + +/** + * Fills next available token with JSON primitive. + */ +static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, + size_t len, jsmntok_t *tokens, size_t num_tokens) { + jsmntok_t *token; + int start; + + start = parser->pos; + + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + switch (js[parser->pos]) { +#ifndef JSMN_STRICT + /* In strict mode primitive must be followed by "," or "}" or "]" */ + case ':': +#endif + case '\t' : case '\r' : case '\n' : case ' ' : + case ',' : case ']' : case '}' : + goto found; + } + if (js[parser->pos] < 32 || js[parser->pos] >= 127) { + parser->pos = start; + return JSMN_ERROR_INVAL; + } + } +#ifdef JSMN_STRICT + /* In strict mode primitive must be followed by a comma/object/array */ + parser->pos = start; + return JSMN_ERROR_PART; +#endif + +found: + if (tokens == NULL) { + parser->pos--; + return 0; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + parser->pos = start; + return JSMN_ERROR_NOMEM; + } + jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos); +#ifdef JSMN_PARENT_LINKS + token->parent = parser->toksuper; +#endif + parser->pos--; + return 0; +} + +/** + * Fills next token with JSON string. + */ +static int jsmn_parse_string(jsmn_parser *parser, const char *js, + size_t len, jsmntok_t *tokens, size_t num_tokens) { + jsmntok_t *token; + + int start = parser->pos; + + parser->pos++; + + /* Skip starting quote */ + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + char c = js[parser->pos]; + + /* Quote: end of string */ + if (c == '\"') { + if (tokens == NULL) { + return 0; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + parser->pos = start; + return JSMN_ERROR_NOMEM; + } + jsmn_fill_token(token, JSMN_STRING, start+1, parser->pos); +#ifdef JSMN_PARENT_LINKS + token->parent = parser->toksuper; +#endif + return 0; + } + + /* Backslash: Quoted symbol expected */ + if (c == '\\' && parser->pos + 1 < len) { + int i; + parser->pos++; + switch (js[parser->pos]) { + /* Allowed escaped symbols */ + case '\"': case '/' : case '\\' : case 'b' : + case 'f' : case 'r' : case 'n' : case 't' : + break; + /* Allows escaped symbol \uXXXX */ + case 'u': + parser->pos++; + for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) { + /* If it isn't a hex character we have an error */ + if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ + (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ + (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ + parser->pos = start; + return JSMN_ERROR_INVAL; + } + parser->pos++; + } + parser->pos--; + break; + /* Unexpected symbol */ + default: + parser->pos = start; + return JSMN_ERROR_INVAL; + } + } + } + parser->pos = start; + return JSMN_ERROR_PART; +} + +/** + * Parse JSON string and fill tokens. + */ +int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, + jsmntok_t *tokens, unsigned int num_tokens) { + int r; + int i; + jsmntok_t *token; + int count = parser->toknext; + + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + char c; + jsmntype_t type; + + c = js[parser->pos]; + switch (c) { + case '{': case '[': + count++; + if (tokens == NULL) { + break; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) + return JSMN_ERROR_NOMEM; + if (parser->toksuper != -1) { + tokens[parser->toksuper].size++; +#ifdef JSMN_PARENT_LINKS + token->parent = parser->toksuper; +#endif + } + token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY); + token->start = parser->pos; + parser->toksuper = parser->toknext - 1; + break; + case '}': case ']': + if (tokens == NULL) + break; + type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY); +#ifdef JSMN_PARENT_LINKS + if (parser->toknext < 1) { + return JSMN_ERROR_INVAL; + } + token = &tokens[parser->toknext - 1]; + for (;;) { + if (token->start != -1 && token->end == -1) { + if (token->type != type) { + return JSMN_ERROR_INVAL; + } + token->end = parser->pos + 1; + parser->toksuper = token->parent; + break; + } + if (token->parent == -1) { + if(token->type != type || parser->toksuper == -1) { + return JSMN_ERROR_INVAL; + } + break; + } + token = &tokens[token->parent]; + } +#else + for (i = parser->toknext - 1; i >= 0; i--) { + token = &tokens[i]; + if (token->start != -1 && token->end == -1) { + if (token->type != type) { + return JSMN_ERROR_INVAL; + } + parser->toksuper = -1; + token->end = parser->pos + 1; + break; + } + } + /* Error if unmatched closing bracket */ + if (i == -1) return JSMN_ERROR_INVAL; + for (; i >= 0; i--) { + token = &tokens[i]; + if (token->start != -1 && token->end == -1) { + parser->toksuper = i; + break; + } + } +#endif + break; + case '\"': + r = jsmn_parse_string(parser, js, len, tokens, num_tokens); + if (r < 0) return r; + count++; + if (parser->toksuper != -1 && tokens != NULL) + tokens[parser->toksuper].size++; + break; + case '\t' : case '\r' : case '\n' : case ' ': + break; + case ':': + parser->toksuper = parser->toknext - 1; + break; + case ',': + if (tokens != NULL && parser->toksuper != -1 && + tokens[parser->toksuper].type != JSMN_ARRAY && + tokens[parser->toksuper].type != JSMN_OBJECT) { +#ifdef JSMN_PARENT_LINKS + parser->toksuper = tokens[parser->toksuper].parent; +#else + for (i = parser->toknext - 1; i >= 0; i--) { + if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) { + if (tokens[i].start != -1 && tokens[i].end == -1) { + parser->toksuper = i; + break; + } + } + } +#endif + } + break; +#ifdef JSMN_STRICT + /* In strict mode primitives are: numbers and booleans */ + case '-': case '0': case '1' : case '2': case '3' : case '4': + case '5': case '6': case '7' : case '8': case '9': + case 't': case 'f': case 'n' : + /* And they must not be keys of the object */ + if (tokens != NULL && parser->toksuper != -1) { + jsmntok_t *t = &tokens[parser->toksuper]; + if (t->type == JSMN_OBJECT || + (t->type == JSMN_STRING && t->size != 0)) { + return JSMN_ERROR_INVAL; + } + } +#else + /* In non-strict mode every unquoted value is a primitive */ + default: +#endif + r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); + if (r < 0) return r; + count++; + if (parser->toksuper != -1 && tokens != NULL) + tokens[parser->toksuper].size++; + break; + +#ifdef JSMN_STRICT + /* Unexpected char in strict mode */ + default: + return JSMN_ERROR_INVAL; +#endif + } + } + + if (tokens != NULL) { + for (i = parser->toknext - 1; i >= 0; i--) { + /* Unmatched opened object or array */ + if (tokens[i].start != -1 && tokens[i].end == -1) { + return JSMN_ERROR_PART; + } + } + } + + return count; +} + +/** + * Creates a new parser based over a given buffer with an array of tokens + * available. + */ +void jsmn_init(jsmn_parser *parser) { + parser->pos = 0; + parser->toknext = 0; + parser->toksuper = -1; +} diff --git a/src/MSP430_GUI/jsmn/jsmn.h b/src/MSP430_GUI/jsmn/jsmn.h new file mode 100755 index 0000000..5332e16 --- /dev/null +++ b/src/MSP430_GUI/jsmn/jsmn.h @@ -0,0 +1,98 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2010 Serge A. Zaitsev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * --/COPYRIGHT--*/ + +#ifndef __JSMN_H_ +#define __JSMN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * JSON type identifier. Basic types are: + * o Object + * o Array + * o String + * o Other primitive: number, boolean (true/false) or null + */ +typedef enum { + JSMN_UNDEFINED = 0, + JSMN_OBJECT = 1, + JSMN_ARRAY = 2, + JSMN_STRING = 3, + JSMN_PRIMITIVE = 4 +} jsmntype_t; + +enum jsmnerr { + /* Not enough tokens were provided */ + JSMN_ERROR_NOMEM = -1, + /* Invalid character inside JSON string */ + JSMN_ERROR_INVAL = -2, + /* The string is not a full JSON packet, more bytes expected */ + JSMN_ERROR_PART = -3 +}; + +/** + * JSON token description. + * type type (object, array, string etc.) + * start start position in JSON data string + * end end position in JSON data string + */ +typedef struct { + jsmntype_t type; + int start; + int end; + int size; +#ifdef JSMN_PARENT_LINKS + int parent; +#endif +} jsmntok_t; + +/** + * JSON parser. Contains an array of token blocks available. Also stores + * the string being parsed now and current position in that string + */ +typedef struct { + unsigned int pos; /* offset in the JSON string */ + unsigned int toknext; /* next token to allocate */ + int toksuper; /* superior token node, e.g parent object or array */ +} jsmn_parser; + +/** + * Create JSON parser over an array of tokens + */ +void jsmn_init(jsmn_parser *parser); + +/** + * Run JSON parser. It parses a JSON data string into and array of tokens, each describing + * a single JSON object. + */ +int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, + jsmntok_t *tokens, unsigned int num_tokens); + +#ifdef __cplusplus +} +#endif + +#endif /* __JSMN_H_ */ diff --git a/src/MSP430_HAL/HAL_Config_Private.h b/src/MSP430_HAL/HAL_Config_Private.h new file mode 100755 index 0000000..a18f7df --- /dev/null +++ b/src/MSP430_HAL/HAL_Config_Private.h @@ -0,0 +1,84 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// MSP430 HAL Configuration +// +// Static and default configuration of Library +// Texas Instruments, Inc. +#ifndef __CONFIG_PRIVATE_H__ +#define __CONFIG_PRIVATE_H__ + +#include "Config_Common.h" + +//*********** GUI Communication ************************************************ +//! \brief baudrate of GUI Communication port +//! i.e. 19200 = 19,200bps +//! +#define HAL_GUICOMM_BAUDRATE (9600) + +//! \brief Select which eUSCI to use with UART +#define GUI_COMM_UART_EUSCI (1) + +#if (GUI_COMM_UART_EUSCI == 0) +#define UCAnBR0 (UCA0BR0) +#define UCAnBR1 (UCA0BR1) +#define UCAnCTLW0 (UCA0CTLW0) +#define UCAnIE (UCA0IE) +#define UCAnIFG (UCA0IFG) +#define UCAnIV (UCA0IV) +#define UCAnMCTLW (UCA0MCTLW) +#define UCAnSTATW (UCA0STATW) +#define UCAnTXBUF (UCA0TXBUF) +#define UCAnRXBUF (UCA0RXBUF) + +#define USCI_An_VECTOR (USCI_A0_VECTOR) +#define USCI_An_ISR (USCI_A0_ISR) +#elif (GUI_COMM_UART_EUSCI == 1) + +#define UCAnBR0 (UCA1BR0) +#define UCAnBR1 (UCA1BR1) +#define UCAnCTLW0 (UCA1CTLW0) +#define UCAnIE (UCA1IE) +#define UCAnIFG (UCA1IFG) +#define UCAnIV (UCA1IV) +#define UCAnMCTLW (UCA1MCTLW) +#define UCAnSTATW (UCA1STATW) +#define UCAnTXBUF (UCA1TXBUF) +#define UCAnRXBUF (UCA1RXBUF) + +#define USCI_An_VECTOR (USCI_A1_VECTOR) +#define USCI_An_ISR (USCI_A1_ISR) +#else +#error "eUSCI is not defined. Modify HAL layer" +#endif + +#endif //__CONFIG_PRIVATE_H__ diff --git a/src/MSP430_HAL/HAL_GUIComm_UART_FR235x.c b/src/MSP430_HAL/HAL_GUIComm_UART_FR235x.c new file mode 100755 index 0000000..83dca4d --- /dev/null +++ b/src/MSP430_HAL/HAL_GUIComm_UART_FR235x.c @@ -0,0 +1,145 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2020, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// GUI HAL for MSP430FR2xxx using UART +// +// Driver to send and receive data from GUI using FR2xxx UART +// Texas Instruments, Inc. +// ***************************************************************************** +#include "HAL_Config_Private.h" +#include "HAL.h" + +tGUICommRXCharCallback RxByteISRCallback; + +void HAL_GUI_Init(tGUICommRXCharCallback RxByteCallback) +{ + // Store callback for ISR RX Byte + RxByteISRCallback = RxByteCallback; + + // Configure UART for FR2xxx + UCAnCTLW0 |= UCSWRST; + UCAnCTLW0 |= UCSSEL__SMCLK; + +#if ((HAL_GUICOMM_BAUDRATE == 9600) && (HSBUS_FREQ_MHZ == 1)) + // Baud Rate calculation + // 1000000/(16*9600) = 6.51 + // Fractional portion = 0.51 + // User's Guide Table 17-4: UCBRSx = 0x20 + // UCBRFx = 8 + UCAnBR0 = 6; + UCAnBR1 = 0x00; + UCAnMCTLW = 0x2000 | UCOS16 | UCBRF_8; +#elif ((HAL_GUICOMM_BAUDRATE == 28800) && (HSBUS_FREQ_MHZ == 8)) + // Baud Rate calculation + // 8E6/(16*28800) = 17.36 + // Fractional portion = 0.36 + // From eUSCI Calculator: UCBRSx = 221 (0xDD) + // UCBRFx = 5 + UCAnBR0 = 17; + UCAnBR1 = 0x00; + UCAnMCTLW = (0xDD<<8) | UCOS16 | UCBRF_5; +#elif ((HAL_GUICOMM_BAUDRATE == 19200) && (HSBUS_FREQ_MHZ == 8)) + // Baud Rate calculation + // 8E6/(16*19200) = 26.04 + // Fractional portion = 0.04 + // User's Guide Table 17-4: UCBRSx = 0xB6 + // UCBRFx = 0 + UCAnBR0 = 26; + UCAnBR1 = 0x00; + UCAnMCTLW = (0xB6<<8) | UCOS16 | UCBRF_0; +#elif ((HAL_GUICOMM_BAUDRATE == 115200) && (HSBUS_FREQ_MHZ == 8)) + // Baud Rate calculation + // 8E6/(16*115200) = 4.34 + // Fractional portion = 0.34 + // User's Guide Table 22-5: UCBRSx = 0x55 + // UCBRFx = 5 + UCAnBR0 = 4; + UCAnBR1 = 0x00; + UCAnMCTLW = (0x55<<8) | UCOS16 | UCBRF_5; +#elif ((HAL_GUICOMM_BAUDRATE == 9600) && (HSBUS_FREQ_MHZ == 8)) + // Baud Rate calculation + // 8E6/(16*9600) = 52.0833 + // Fractional portion = 0.33 + // User's Guide Table 17-4: UCBRSx = 0x49 + // UCBRFx = 1 + UCAnBR0 = 52; + UCAnBR1 = 0x00; + UCAnMCTLW = (0x49<<8) | UCOS16 | UCBRF_1; +#else +#error "Define UART baudrate registers based on desired frequency" +#endif + + UCAnCTLW0 &= ~UCSWRST; // Initialize eUSCI + UCAnIE |= UCRXIE; +} + +void HAL_GUI_TransmitCharBlocking(char character) +{ + // Transmit Character + while (UCAnSTATW & UCBUSY) + ; + while (!(UCAnIFG & UCTXIFG)) + ; + UCAnTXBUF = character; + while (UCAnSTATW & UCBUSY) + ; +} + +// EUSCI interrupt service routine +#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) +#pragma vector=USCI_An_VECTOR +__interrupt void USCI_An_ISR(void) +#elif defined(__GNUC__) +void __attribute__ ((interrupt(USCI_An_VECTOR))) USCI_An_ISR (void) +#else +#error Compiler not supported! +#endif +{ + switch(__even_in_range(UCAnIV,USCI_UART_UCTXCPTIFG)) + { + case USCI_NONE: break; + case USCI_UART_UCRXIFG: + if (RxByteISRCallback != NULL) + { + if (RxByteISRCallback(UCAnRXBUF) == true) + { + __bic_SR_register_on_exit(LPM4_bits); // Exit LPM + } + } + break; + case USCI_UART_UCTXIFG: break; + case USCI_UART_UCSTTIFG: break; + case USCI_UART_UCTXCPTIFG: break; + default: break; + } +} + diff --git a/src/MSP430_HAL/HAL_IO_FR235x.c b/src/MSP430_HAL/HAL_IO_FR235x.c new file mode 100755 index 0000000..39aac17 --- /dev/null +++ b/src/MSP430_HAL/HAL_IO_FR235x.c @@ -0,0 +1,169 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// HAL IO functions +// +// Texas Instruments, Inc. +// ***************************************************************************** +#include +#include +#include +#include +#include "HAL_Config_Private.h" + +// Simple callbacks to functions in main +extern void ButtonCallback_SW1(void); +extern void ButtonCallback_SW2(void); + + +/**** Functions **************************************************************/ +void HAL_IO_Init(void) +{ + + // Port output low to save power consumption + // P1.0 = RED LED, Output Low + // P1.1 = Unused, Output Low + // P1.2 = Unused, Output Low + // P1.3 = Unused, Output Low + // P1.4 = Unused, Output Low + // P1.5 = Unused, Output Low + // P1.6 = Unused, Output Low + // P1.7 = Unused, Output Low + P1OUT = (0x00); + P1DIR = (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7); + + // P2.0 = Unused, Output Low + // P2.1 = Unused, Output Low + // P2.2 = Unused, Output Low + // P2.3 = SW2, Input Pull-up + // P2.4 = Unused, Output Low + // P2.5 = Unused, Output Low + // P2.6 = Unused, Output Low + // P2.7 = Unused, Output Low + P2OUT = (BIT3); + P2DIR = (BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT6 | BIT7); + P2REN |= (BIT3); + + // P3.0 = Unused, Output Low + // P3.1 = Unused, Output Low + // P3.2 = Unused, Output Low + // P3.3 = Unused, Output Low + // P3.4 = Unused, Output Low + // P3.5 = Unused, Output Low + // P3.6 = Unused, Output Low + // P3.7 = Unused, Output Low + P3OUT = (0x00); + P3DIR = (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7); + + // P4.0 = Unused, Output Low + // P4.1 = SW1, Input pull-up + // P4.2 = LP UART RXD, Input pull-up or UART + // P4.3 = LP UART TXD, Input pull-up or UART + // P4.4 = NC, Output Low + // P4.5 = NC, Output Low + // P4.6 = NC, Output Low + // P4.7 = NC, Output Low + P4OUT = (BIT1); + P4DIR = (BIT0 | BIT4 | BIT5 | BIT6 | BIT7); + P4REN |= (BIT1); + P4SEL0 |= (BIT2 | BIT3); + P4SEL1 &= ~(BIT2 | BIT3); + + // P5.0 = Unused, Output Low + // P5.1 = Unused, Output Low + // P5.2 = Unused, Output Low + // P5.3 = Unused, Output Low + // P5.4 = Unused, Output Low + // P5.5 = N/A, Output Low + // P5.6 = N/A, Output Low + // P5.7 = N/A, Output Low + P5OUT = (0x00); + P5DIR = (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7); + + // P6.0 = Unused, Output Low + // P6.1 = Unused, Output Low + // P6.2 = Unused, Output Low + // P6.3 = Unused, Output Low + // P6.4 = Unused, Output Low + // P6.5 = Unused, Output Low + // P6.6 = Unused, Output Low + // P6.7 = N/A, Output Low + P6OUT = (0x00); + P6DIR = (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7); + + PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default high-impedance mode + // to activate previously configured port settings + + +} + +void HAL_IO_InitButtons(void) +{ + // Configure SW1 and SW2 for interrupts (pins set as input-pullup during GPIO initialization) + P4IES = BIT1; // Hi/Low edge + P4IFG = 0; // Clear flags + P4IE = BIT1; // interrupt enabled + P2IES = BIT3; // Hi/Low edge + P2IFG = 0; // Clear flags + P2IE = BIT3; // interrupt enabled +} +// Port 4 interrupt service routine +#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) +#pragma vector=PORT4_VECTOR +__interrupt void Port_4(void) +#elif defined(__GNUC__) +void __attribute__ ((interrupt(PORT1_VECTOR))) Port_3 (void) +#else +#error Compiler not supported! +#endif +{ + ButtonCallback_SW1(); + P4IFG &= ~BIT1; // Clear IFG + __bic_SR_register_on_exit(LPM3_bits); // Exit LPM3 +} + +// Port 2 interrupt service routine +#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) +#pragma vector=PORT2_VECTOR +__interrupt void Port_2(void) +#elif defined(__GNUC__) +void __attribute__ ((interrupt(PORT1_VECTOR))) Port_2 (void) +#else +#error Compiler not supported! +#endif +{ + ButtonCallback_SW2(); + P2IFG &= ~BIT3; // Clear IFG + __bic_SR_register_on_exit(LPM3_bits); // Exit LPM3 +} + + diff --git a/src/MSP430_HAL/HAL_System_FR235x.c b/src/MSP430_HAL/HAL_System_FR235x.c new file mode 100755 index 0000000..8c4fc08 --- /dev/null +++ b/src/MSP430_HAL/HAL_System_FR235x.c @@ -0,0 +1,147 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// HAL functions to initialize the system +// +// Texas Instruments, Inc. +// ****************************************************************************** + +#include +#include "HAL.h" + +/**** Local Function Prototypes ***********************************************/ +static void HAL_System_Clock_Init(void); +static void Clock_Software_Trim(void); + +/**** Functions ***************************************************************/ +int8_t HAL_System_Init(void) +{ + HAL_IO_Init(); + HAL_System_Clock_Init(); + + return 0; // OK +} + +/**** Local Functions *********************************************************/ +//! \brief Initializes the system clock +//! +//! \return none +static void HAL_System_Clock_Init(void) +{ +#if ( (CPU_FREQ_HZ == 8000000) && (LSBUS_FREQ_HZ == 32768) ) + __bis_SR_register(SCG0); // disable FLL + CSCTL3 |= SELREF__REFOCLK; // Set REFO as FLL reference source + CSCTL1 = DCOFTRIMEN_1 | DCOFTRIM0 | DCOFTRIM1 | DCORSEL_3;// DCOFTRIM=3, DCO Range = 8MHz + CSCTL2 = FLLD_0 + 243; // DCODIV = 8MHz + __delay_cycles(3); + __bic_SR_register(SCG0); // enable FLL + Clock_Software_Trim(); // Software Trim to get the best DCOFTRIM value + + CSCTL4 = SELMS__DCOCLKDIV | SELA__REFOCLK; // set default REFO(~32768Hz) as ACLK source, ACLK = 32768Hz + // default DCODIV as MCLK and SMCLK source +#else +#error "Clock configuration is not supported. Modify DualRaySmoke_HAL_System.c" +#endif +} + +//! \brief Software trim for DCO+FLL to lock target frequency +//! +//! \return none +static void Clock_Software_Trim(void) +{ + unsigned int oldDcoTap = 0xffff; + unsigned int newDcoTap = 0xffff; + unsigned int newDcoDelta = 0xffff; + unsigned int bestDcoDelta = 0xffff; + unsigned int csCtl0Copy = 0; + unsigned int csCtl1Copy = 0; + unsigned int csCtl0Read = 0; + unsigned int csCtl1Read = 0; + unsigned int dcoFreqTrim = 3; + unsigned char endLoop = 0; + + do + { + CSCTL0 = 0x100; // DCO Tap = 256 + do + { + CSCTL7 &= ~DCOFFG; // Clear DCO fault flag + }while (CSCTL7 & DCOFFG); // Test DCO fault flag + + __delay_cycles((unsigned long)3000 * CPU_FREQ_MHZ);// Wait FLL lock status (FLLUNLOCK) to be stable + // Suggest to wait 24 cycles of divided FLL reference clock + while((CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1)) && ((CSCTL7 & DCOFFG) == 0)); + + csCtl0Read = CSCTL0; // Read CSCTL0 + csCtl1Read = CSCTL1; // Read CSCTL1 + + oldDcoTap = newDcoTap; // Record DCOTAP value of last time + newDcoTap = csCtl0Read & 0x01ff; // Get DCOTAP value of this time + dcoFreqTrim = (csCtl1Read & 0x0070)>>4;// Get DCOFTRIM value + + if(newDcoTap < 256) // DCOTAP < 256 + { + newDcoDelta = 256 - newDcoTap; // Delta value between DCPTAP and 256 + if((oldDcoTap != 0xffff) && (oldDcoTap >= 256)) // DCOTAP cross 256 + endLoop = 1; // Stop while loop + else + { + dcoFreqTrim--; + CSCTL1 = (csCtl1Read & (~DCOFTRIM)) | (dcoFreqTrim<<4); + } + } + else // DCOTAP >= 256 + { + newDcoDelta = newDcoTap - 256; // Delta value between DCPTAP and 256 + if(oldDcoTap < 256) // DCOTAP cross 256 + endLoop = 1; // Stop while loop + else + { + dcoFreqTrim++; + CSCTL1 = (csCtl1Read & (~DCOFTRIM)) | (dcoFreqTrim<<4); + } + } + + if(newDcoDelta < bestDcoDelta) // Record DCOTAP closest to 256 + { + csCtl0Copy = csCtl0Read; + csCtl1Copy = csCtl1Read; + bestDcoDelta = newDcoDelta; + } + + }while(endLoop == 0); // Poll until endLoop == 1 + + CSCTL0 = csCtl0Copy; // Reload locked DCOTAP + CSCTL1 = csCtl1Copy; // Reload locked DCOFTRIM + while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1)); // Poll until FLL is locked +} + diff --git a/src/MSP430_HAL/HAL_Timer_FR235x.c b/src/MSP430_HAL/HAL_Timer_FR235x.c new file mode 100755 index 0000000..e3270b1 --- /dev/null +++ b/src/MSP430_HAL/HAL_Timer_FR235x.c @@ -0,0 +1,71 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2019, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +//***************************************************************************** +// HAL Timer functions +// +// Texas Instruments, Inc. +// ***************************************************************************** +#include +#include +#include +#include +#include "HAL_Config_Private.h" + +// Simple callbacks to main function +extern void TimerCallback(void); + +/**** Functions **************************************************************/ +void HAL_Timer_Init(void) +{ + // Initialize a timer to update the counter + // Configure Timer + TB0CCR0 = LSBUS_FREQ_HZ / 2; // 0.5sec + TB0CCTL0 = CCIE; // TBCCR0 interrupt enabled + TB0CTL = TBSSEL__ACLK | // Use ACLK + MC__UP | // Up Mode + TBCLR; // Clear counter +} + + +// Timer B0 interrupt service routine +#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) +#pragma vector = TIMER0_B0_VECTOR +__interrupt void Timer(void) +#elif defined(__GNUC__) +void __attribute__ ((interrupt(TIMER0_B0_VECTOR))) Timer_B0 (void) +#else +#error Compiler not supported! +#endif +{ + TimerCallback(); + __bic_SR_register_on_exit(LPM3_bits); // Exit LPM3 +} diff --git a/targetConfigs/MSP430FR2355.ccxml b/targetConfigs/MSP430FR2355.ccxml new file mode 100644 index 0000000..12c07e4 --- /dev/null +++ b/targetConfigs/MSP430FR2355.ccxml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/targetConfigs/readme.txt b/targetConfigs/readme.txt new file mode 100644 index 0000000..af97b62 --- /dev/null +++ b/targetConfigs/readme.txt @@ -0,0 +1,9 @@ +The 'targetConfigs' folder contains target-configuration (.ccxml) files, automatically generated based +on the device and connection settings specified in your project on the Properties > General page. + +Please note that in automatic target-configuration management, changes to the project's device and/or +connection settings will either modify an existing or generate a new target-configuration file. Thus, +if you manually edit these auto-generated files, you may need to re-apply your changes. Alternatively, +you may create your own target-configuration file for this project and manage it manually. You can +always switch back to automatic target-configuration management by checking the "Manage the project's +target-configuration automatically" checkbox on the project's Properties > General page. \ No newline at end of file