HelloWorld_IDS01A4 mbed application for Spirit1 P2P demo.

Dependencies:   mbed

Fork of HelloWorld_IDS01A5_Program by rosarium pila

mbed 2.0 (a.k.a classic) HelloWorld example for Spirit1 to transfer data from one node to another.
To send the predefined data packet from the sender to the receiver, user needs to press User Button on the board. The LED on the receiver expansion board will toggle on reception of data successfully.
Data packets sent and received can be seen on USB serial terminal.

EVALUATION BOARDS RF FREQUENCY DESCRIPTION :
X-NUCLEO-IDS01A4 868 MHz 868 MHz RF expansion board based on SPIRIT1

Committer:
rosarium
Date:
Thu May 25 16:38:55 2017 +0000
Revision:
0:2ddc0583bcec
First draft version of HelloWorld_IDS01A5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosarium 0:2ddc0583bcec 1 /**
rosarium 0:2ddc0583bcec 2 ******************************************************************************
rosarium 0:2ddc0583bcec 3 * @file SPIRIT_DirectRF.c
rosarium 0:2ddc0583bcec 4 * @author VMA division - AMS
rosarium 0:2ddc0583bcec 5 * @version 3.2.2
rosarium 0:2ddc0583bcec 6 * @date 08-July-2015
rosarium 0:2ddc0583bcec 7 * @brief Configuration and management of SPIRIT direct transmission / receive modes.
rosarium 0:2ddc0583bcec 8 * @details
rosarium 0:2ddc0583bcec 9 * @attention
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 12 *
rosarium 0:2ddc0583bcec 13 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 14 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 15 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 16 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 18 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 19 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 21 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 22 * without specific prior written permission.
rosarium 0:2ddc0583bcec 23 *
rosarium 0:2ddc0583bcec 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 34 *
rosarium 0:2ddc0583bcec 35 ******************************************************************************
rosarium 0:2ddc0583bcec 36 */
rosarium 0:2ddc0583bcec 37
rosarium 0:2ddc0583bcec 38 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 39 #include "SPIRIT_DirectRF.h"
rosarium 0:2ddc0583bcec 40 #include "MCU_Interface.h"
rosarium 0:2ddc0583bcec 41
rosarium 0:2ddc0583bcec 42
rosarium 0:2ddc0583bcec 43
rosarium 0:2ddc0583bcec 44 /**
rosarium 0:2ddc0583bcec 45 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 46 * @{
rosarium 0:2ddc0583bcec 47 */
rosarium 0:2ddc0583bcec 48
rosarium 0:2ddc0583bcec 49
rosarium 0:2ddc0583bcec 50 /**
rosarium 0:2ddc0583bcec 51 * @addtogroup SPIRIT_DirectRf
rosarium 0:2ddc0583bcec 52 * @{
rosarium 0:2ddc0583bcec 53 */
rosarium 0:2ddc0583bcec 54
rosarium 0:2ddc0583bcec 55
rosarium 0:2ddc0583bcec 56 /**
rosarium 0:2ddc0583bcec 57 * @defgroup DirectRf_Private_TypesDefinitions Direct RF Private Types Definitions
rosarium 0:2ddc0583bcec 58 * @{
rosarium 0:2ddc0583bcec 59 */
rosarium 0:2ddc0583bcec 60
rosarium 0:2ddc0583bcec 61 /**
rosarium 0:2ddc0583bcec 62 *@}
rosarium 0:2ddc0583bcec 63 */
rosarium 0:2ddc0583bcec 64
rosarium 0:2ddc0583bcec 65
rosarium 0:2ddc0583bcec 66 /**
rosarium 0:2ddc0583bcec 67 * @defgroup DirectRf_Private_Defines Direct RF Private Defines
rosarium 0:2ddc0583bcec 68 * @{
rosarium 0:2ddc0583bcec 69 */
rosarium 0:2ddc0583bcec 70
rosarium 0:2ddc0583bcec 71 /**
rosarium 0:2ddc0583bcec 72 *@}
rosarium 0:2ddc0583bcec 73 */
rosarium 0:2ddc0583bcec 74
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76 /**
rosarium 0:2ddc0583bcec 77 * @defgroup DirectRf_Private_Macros Direct RF Private Macros
rosarium 0:2ddc0583bcec 78 * @{
rosarium 0:2ddc0583bcec 79 */
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 /**
rosarium 0:2ddc0583bcec 82 *@}
rosarium 0:2ddc0583bcec 83 */
rosarium 0:2ddc0583bcec 84
rosarium 0:2ddc0583bcec 85
rosarium 0:2ddc0583bcec 86 /**
rosarium 0:2ddc0583bcec 87 * @defgroup DirectRf_Private_Variables Direct RF Private Variables
rosarium 0:2ddc0583bcec 88 * @{
rosarium 0:2ddc0583bcec 89 */
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91 /**
rosarium 0:2ddc0583bcec 92 *@}
rosarium 0:2ddc0583bcec 93 */
rosarium 0:2ddc0583bcec 94
rosarium 0:2ddc0583bcec 95
rosarium 0:2ddc0583bcec 96
rosarium 0:2ddc0583bcec 97 /**
rosarium 0:2ddc0583bcec 98 * @defgroup DirectRf_Private_FunctionPrototypes Direct RF Private Function Prototypes
rosarium 0:2ddc0583bcec 99 * @{
rosarium 0:2ddc0583bcec 100 */
rosarium 0:2ddc0583bcec 101
rosarium 0:2ddc0583bcec 102 /**
rosarium 0:2ddc0583bcec 103 *@}
rosarium 0:2ddc0583bcec 104 */
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106
rosarium 0:2ddc0583bcec 107 /**
rosarium 0:2ddc0583bcec 108 * @defgroup DirectRf_Private_Functions Direct RF Private Functions
rosarium 0:2ddc0583bcec 109 * @{
rosarium 0:2ddc0583bcec 110 */
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 /**
rosarium 0:2ddc0583bcec 113 * @brief Sets the DirectRF RX mode of SPIRIT.
rosarium 0:2ddc0583bcec 114 * @param xDirectRx code of the desired mode.
rosarium 0:2ddc0583bcec 115 * This parameter can be any value of @ref DirectRx.
rosarium 0:2ddc0583bcec 116 * @retval None.
rosarium 0:2ddc0583bcec 117 */
rosarium 0:2ddc0583bcec 118 void SpiritDirectRfSetRxMode(DirectRx xDirectRx)
rosarium 0:2ddc0583bcec 119 {
rosarium 0:2ddc0583bcec 120 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 121
rosarium 0:2ddc0583bcec 122 /* Check the parameters */
rosarium 0:2ddc0583bcec 123 s_assert_param(IS_DIRECT_RX(xDirectRx));
rosarium 0:2ddc0583bcec 124
rosarium 0:2ddc0583bcec 125 /* Reads the register value */
rosarium 0:2ddc0583bcec 126 SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 127
rosarium 0:2ddc0583bcec 128 /* Build the value to be stored */
rosarium 0:2ddc0583bcec 129 tempRegValue &= ~PCKTCTRL3_RX_MODE_MASK;
rosarium 0:2ddc0583bcec 130 tempRegValue |= (uint8_t)xDirectRx;
rosarium 0:2ddc0583bcec 131
rosarium 0:2ddc0583bcec 132 /* Writes value on register */
rosarium 0:2ddc0583bcec 133 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 134
rosarium 0:2ddc0583bcec 135 }
rosarium 0:2ddc0583bcec 136
rosarium 0:2ddc0583bcec 137
rosarium 0:2ddc0583bcec 138 /**
rosarium 0:2ddc0583bcec 139 * @brief Returns the DirectRF RX mode of SPIRIT.
rosarium 0:2ddc0583bcec 140 * @param None.
rosarium 0:2ddc0583bcec 141 * @retval DirectRx Direct Rx mode.
rosarium 0:2ddc0583bcec 142 */
rosarium 0:2ddc0583bcec 143 DirectRx SpiritDirectRfGetRxMode(void)
rosarium 0:2ddc0583bcec 144 {
rosarium 0:2ddc0583bcec 145 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 146
rosarium 0:2ddc0583bcec 147 /* Reads the register value and mask the RX_Mode field */
rosarium 0:2ddc0583bcec 148 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 149
rosarium 0:2ddc0583bcec 150 /* Rebuild and return value */
rosarium 0:2ddc0583bcec 151 return (DirectRx)(tempRegValue & 0x30);
rosarium 0:2ddc0583bcec 152
rosarium 0:2ddc0583bcec 153 }
rosarium 0:2ddc0583bcec 154
rosarium 0:2ddc0583bcec 155
rosarium 0:2ddc0583bcec 156 /**
rosarium 0:2ddc0583bcec 157 * @brief Sets the TX mode of SPIRIT.
rosarium 0:2ddc0583bcec 158 * @param xDirectTx code of the desired source.
rosarium 0:2ddc0583bcec 159 * This parameter can be any value of @ref DirectTx.
rosarium 0:2ddc0583bcec 160 * @retval None.
rosarium 0:2ddc0583bcec 161 */
rosarium 0:2ddc0583bcec 162 void SpiritDirectRfSetTxMode(DirectTx xDirectTx)
rosarium 0:2ddc0583bcec 163 {
rosarium 0:2ddc0583bcec 164 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 165
rosarium 0:2ddc0583bcec 166 /* Check the parameters */
rosarium 0:2ddc0583bcec 167 s_assert_param(IS_DIRECT_TX(xDirectTx));
rosarium 0:2ddc0583bcec 168
rosarium 0:2ddc0583bcec 169 /* Reads the register value */
rosarium 0:2ddc0583bcec 170 SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 171
rosarium 0:2ddc0583bcec 172 /* Build the value to be stored */
rosarium 0:2ddc0583bcec 173 tempRegValue &= ~PCKTCTRL1_TX_SOURCE_MASK;
rosarium 0:2ddc0583bcec 174 tempRegValue |= (uint8_t)xDirectTx;
rosarium 0:2ddc0583bcec 175
rosarium 0:2ddc0583bcec 176 /* Writes value on register */
rosarium 0:2ddc0583bcec 177 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 178
rosarium 0:2ddc0583bcec 179 }
rosarium 0:2ddc0583bcec 180
rosarium 0:2ddc0583bcec 181
rosarium 0:2ddc0583bcec 182 /**
rosarium 0:2ddc0583bcec 183 * @brief Returns the DirectRF TX mode of SPIRIT.
rosarium 0:2ddc0583bcec 184 * @param None.
rosarium 0:2ddc0583bcec 185 * @retval DirectTx Direct Tx mode.
rosarium 0:2ddc0583bcec 186 */
rosarium 0:2ddc0583bcec 187 DirectTx SpiritDirectRfGetTxMode(void)
rosarium 0:2ddc0583bcec 188 {
rosarium 0:2ddc0583bcec 189 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 190
rosarium 0:2ddc0583bcec 191 /* Reads the register value and mask the RX_Mode field */
rosarium 0:2ddc0583bcec 192 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 193
rosarium 0:2ddc0583bcec 194 /* Returns value */
rosarium 0:2ddc0583bcec 195 return (DirectTx)(tempRegValue & 0x0C);
rosarium 0:2ddc0583bcec 196
rosarium 0:2ddc0583bcec 197 }
rosarium 0:2ddc0583bcec 198
rosarium 0:2ddc0583bcec 199
rosarium 0:2ddc0583bcec 200 /**
rosarium 0:2ddc0583bcec 201 *@}
rosarium 0:2ddc0583bcec 202 */
rosarium 0:2ddc0583bcec 203
rosarium 0:2ddc0583bcec 204 /**
rosarium 0:2ddc0583bcec 205 *@}
rosarium 0:2ddc0583bcec 206 */
rosarium 0:2ddc0583bcec 207
rosarium 0:2ddc0583bcec 208
rosarium 0:2ddc0583bcec 209 /**
rosarium 0:2ddc0583bcec 210 *@}
rosarium 0:2ddc0583bcec 211 */
rosarium 0:2ddc0583bcec 212
rosarium 0:2ddc0583bcec 213
rosarium 0:2ddc0583bcec 214
rosarium 0:2ddc0583bcec 215 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/