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_Aes.h
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 AES Engine.
rosarium 0:2ddc0583bcec 8 *
rosarium 0:2ddc0583bcec 9 * @details
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * In order to encrypt data, the user must manage the AES_END IRQ.
rosarium 0:2ddc0583bcec 12 * The data have to be splitted in blocks of 16 bytes and written
rosarium 0:2ddc0583bcec 13 * into the <i>AES DATA IN registers</i>. Then, after the key is written
rosarium 0:2ddc0583bcec 14 * into the <i>AES KEY registers</i>, a command of <i>Execute encryption</i>
rosarium 0:2ddc0583bcec 15 * has to be sent.
rosarium 0:2ddc0583bcec 16 *
rosarium 0:2ddc0583bcec 17 * <b>Example:</b>
rosarium 0:2ddc0583bcec 18 * @code
rosarium 0:2ddc0583bcec 19 *
rosarium 0:2ddc0583bcec 20 * SpiritAesWriteDataIn(data_buff , N_BYTES);
rosarium 0:2ddc0583bcec 21 * SpiritAesExecuteEncryption();
rosarium 0:2ddc0583bcec 22 *
rosarium 0:2ddc0583bcec 23 * while(!aes_end_flag); // the flag is set by the ISR routine which manages the AES_END irq
rosarium 0:2ddc0583bcec 24 * aes_end_flag=RESET;
rosarium 0:2ddc0583bcec 25 *
rosarium 0:2ddc0583bcec 26 * SpiritAesReadDataOut(enc_data_buff , N_BYTES);
rosarium 0:2ddc0583bcec 27 *
rosarium 0:2ddc0583bcec 28 * @endcode
rosarium 0:2ddc0583bcec 29 *
rosarium 0:2ddc0583bcec 30 * In order to decrypt data, the user must manage the AES_END IRQ and have a decryption key.
rosarium 0:2ddc0583bcec 31 * There are two operative modes to make the data decryption:
rosarium 0:2ddc0583bcec 32 * <ul>
rosarium 0:2ddc0583bcec 33 * <li> Derive the decryption key from the encryption key and decrypt data directly
rosarium 0:2ddc0583bcec 34 * using the <i>SpiritAesDeriveDecKeyExecuteDec()</i> function
rosarium 0:2ddc0583bcec 35 *
rosarium 0:2ddc0583bcec 36 * <b>Example:</b>
rosarium 0:2ddc0583bcec 37 * @code
rosarium 0:2ddc0583bcec 38 *
rosarium 0:2ddc0583bcec 39 * SpiritAesWriteDataIn(enc_data_buff , N_BYTES);
rosarium 0:2ddc0583bcec 40 * SpiritAesDeriveDecKeyExecuteDec();
rosarium 0:2ddc0583bcec 41 *
rosarium 0:2ddc0583bcec 42 * while(!aes_end_flag); // the flag is set by the ISR routine which manages the AES_END irq
rosarium 0:2ddc0583bcec 43 * aes_end_flag=RESET;
rosarium 0:2ddc0583bcec 44 *
rosarium 0:2ddc0583bcec 45 * SpiritAesReadDataOut(data_buff , N_BYTES);
rosarium 0:2ddc0583bcec 46 *
rosarium 0:2ddc0583bcec 47 * @endcode
rosarium 0:2ddc0583bcec 48 * </li>
rosarium 0:2ddc0583bcec 49 *
rosarium 0:2ddc0583bcec 50 * <li> Derive the decryption key from the encryption key using the <i>SpiritAesDeriveDecKeyFromEnc()</i>
rosarium 0:2ddc0583bcec 51 * function, store it into the <i>AES KEY registers</i> and then decrypt data using the
rosarium 0:2ddc0583bcec 52 * <i>SpiritAesExecuteDecryption()</i> function
rosarium 0:2ddc0583bcec 53 *
rosarium 0:2ddc0583bcec 54 * <b>Example:</b>
rosarium 0:2ddc0583bcec 55 * @code
rosarium 0:2ddc0583bcec 56 *
rosarium 0:2ddc0583bcec 57 * SpiritAesWriteDataIn(key_enc , 16);
rosarium 0:2ddc0583bcec 58 * SpiritAesDeriveDecKeyFromEnc();
rosarium 0:2ddc0583bcec 59 *
rosarium 0:2ddc0583bcec 60 * while(!aes_end_flag); // the flag is set by the ISR routine which manages the AES_END irq
rosarium 0:2ddc0583bcec 61 * aes_end_flag=RESET;
rosarium 0:2ddc0583bcec 62 *
rosarium 0:2ddc0583bcec 63 * SpiritAesReadDataOut(key_dec , 16);
rosarium 0:2ddc0583bcec 64 *
rosarium 0:2ddc0583bcec 65 * SpiritAesWriteKey(key_dec);
rosarium 0:2ddc0583bcec 66 * SpiritAesWriteDataIn(enc_data_buff , 16);
rosarium 0:2ddc0583bcec 67 * SpiritAesExecuteDecryption();
rosarium 0:2ddc0583bcec 68 *
rosarium 0:2ddc0583bcec 69 * while(!aes_end_flag); // the flag is set by the ISR routine which manages the AES_END irq
rosarium 0:2ddc0583bcec 70 * aes_end_flag=RESET;
rosarium 0:2ddc0583bcec 71 *
rosarium 0:2ddc0583bcec 72 * SpiritAesReadDataOut(data_buff , N_BYTES);
rosarium 0:2ddc0583bcec 73 *
rosarium 0:2ddc0583bcec 74 * @endcode
rosarium 0:2ddc0583bcec 75 * </li>
rosarium 0:2ddc0583bcec 76 * </ul>
rosarium 0:2ddc0583bcec 77 *
rosarium 0:2ddc0583bcec 78 * @attention
rosarium 0:2ddc0583bcec 79 *
rosarium 0:2ddc0583bcec 80 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 81 *
rosarium 0:2ddc0583bcec 82 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 83 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 84 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 85 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 86 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 87 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 88 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 89 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 90 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 91 * without specific prior written permission.
rosarium 0:2ddc0583bcec 92 *
rosarium 0:2ddc0583bcec 93 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 94 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 95 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 96 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 97 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 98 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 99 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 100 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 101 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 102 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 103 *
rosarium 0:2ddc0583bcec 104 ******************************************************************************
rosarium 0:2ddc0583bcec 105 */
rosarium 0:2ddc0583bcec 106
rosarium 0:2ddc0583bcec 107 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 108 #ifndef __SPIRIT_AES_H
rosarium 0:2ddc0583bcec 109 #define __SPIRIT_AES_H
rosarium 0:2ddc0583bcec 110
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 113
rosarium 0:2ddc0583bcec 114 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 115 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 116
rosarium 0:2ddc0583bcec 117
rosarium 0:2ddc0583bcec 118 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 119 extern "C" {
rosarium 0:2ddc0583bcec 120 #endif
rosarium 0:2ddc0583bcec 121
rosarium 0:2ddc0583bcec 122
rosarium 0:2ddc0583bcec 123 /**
rosarium 0:2ddc0583bcec 124 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 125 * @{
rosarium 0:2ddc0583bcec 126 */
rosarium 0:2ddc0583bcec 127
rosarium 0:2ddc0583bcec 128
rosarium 0:2ddc0583bcec 129 /**
rosarium 0:2ddc0583bcec 130 * @defgroup SPIRIT_Aes AES
rosarium 0:2ddc0583bcec 131 * @brief Configuration and management of SPIRIT AES Engine.
rosarium 0:2ddc0583bcec 132 * @details See the file <i>@ref SPIRIT_Aes.h</i> for more details.
rosarium 0:2ddc0583bcec 133 * @{
rosarium 0:2ddc0583bcec 134 */
rosarium 0:2ddc0583bcec 135
rosarium 0:2ddc0583bcec 136 /**
rosarium 0:2ddc0583bcec 137 * @defgroup Aes_Exported_Types AES Exported Types
rosarium 0:2ddc0583bcec 138 * @{
rosarium 0:2ddc0583bcec 139 */
rosarium 0:2ddc0583bcec 140
rosarium 0:2ddc0583bcec 141 /**
rosarium 0:2ddc0583bcec 142 * @}
rosarium 0:2ddc0583bcec 143 */
rosarium 0:2ddc0583bcec 144
rosarium 0:2ddc0583bcec 145
rosarium 0:2ddc0583bcec 146 /**
rosarium 0:2ddc0583bcec 147 * @defgroup Aes_Exported_Constants AES Exported Constants
rosarium 0:2ddc0583bcec 148 * @{
rosarium 0:2ddc0583bcec 149 */
rosarium 0:2ddc0583bcec 150
rosarium 0:2ddc0583bcec 151
rosarium 0:2ddc0583bcec 152 /**
rosarium 0:2ddc0583bcec 153 * @}
rosarium 0:2ddc0583bcec 154 */
rosarium 0:2ddc0583bcec 155
rosarium 0:2ddc0583bcec 156
rosarium 0:2ddc0583bcec 157 /**
rosarium 0:2ddc0583bcec 158 * @defgroup Aes_Exported_Macros AES Exported Macros
rosarium 0:2ddc0583bcec 159 * @{
rosarium 0:2ddc0583bcec 160 */
rosarium 0:2ddc0583bcec 161
rosarium 0:2ddc0583bcec 162
rosarium 0:2ddc0583bcec 163 /**
rosarium 0:2ddc0583bcec 164 * @}
rosarium 0:2ddc0583bcec 165 */
rosarium 0:2ddc0583bcec 166
rosarium 0:2ddc0583bcec 167
rosarium 0:2ddc0583bcec 168 /**
rosarium 0:2ddc0583bcec 169 * @defgroup Aes_Exported_Functions AES Exported Functions
rosarium 0:2ddc0583bcec 170 * @{
rosarium 0:2ddc0583bcec 171 */
rosarium 0:2ddc0583bcec 172
rosarium 0:2ddc0583bcec 173 void SpiritAesMode(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 174 void SpiritAesWriteDataIn(uint8_t* pcBufferDataIn, uint8_t cDataLength);
rosarium 0:2ddc0583bcec 175 void SpiritAesReadDataOut(uint8_t* pcBufferDataOut, uint8_t cDataLength);
rosarium 0:2ddc0583bcec 176 void SpiritAesWriteKey(uint8_t* pcKey);
rosarium 0:2ddc0583bcec 177 void SpiritAesReadKey(uint8_t* pcKey);
rosarium 0:2ddc0583bcec 178 void SpiritAesDeriveDecKeyFromEnc(void);
rosarium 0:2ddc0583bcec 179 void SpiritAesExecuteEncryption(void);
rosarium 0:2ddc0583bcec 180 void SpiritAesExecuteDecryption(void);
rosarium 0:2ddc0583bcec 181 void SpiritAesDeriveDecKeyExecuteDec(void);
rosarium 0:2ddc0583bcec 182
rosarium 0:2ddc0583bcec 183 /**
rosarium 0:2ddc0583bcec 184 * @}
rosarium 0:2ddc0583bcec 185 */
rosarium 0:2ddc0583bcec 186
rosarium 0:2ddc0583bcec 187 /**
rosarium 0:2ddc0583bcec 188 * @}
rosarium 0:2ddc0583bcec 189 */
rosarium 0:2ddc0583bcec 190
rosarium 0:2ddc0583bcec 191
rosarium 0:2ddc0583bcec 192 /**
rosarium 0:2ddc0583bcec 193 * @}
rosarium 0:2ddc0583bcec 194 */
rosarium 0:2ddc0583bcec 195
rosarium 0:2ddc0583bcec 196
rosarium 0:2ddc0583bcec 197
rosarium 0:2ddc0583bcec 198
rosarium 0:2ddc0583bcec 199 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 200 }
rosarium 0:2ddc0583bcec 201 #endif
rosarium 0:2ddc0583bcec 202
rosarium 0:2ddc0583bcec 203 #endif
rosarium 0:2ddc0583bcec 204
rosarium 0:2ddc0583bcec 205 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/