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 * Copyright (c) 2012, STMicroelectronics.
rosarium 0:2ddc0583bcec 3 * All rights reserved.
rosarium 0:2ddc0583bcec 4 *
rosarium 0:2ddc0583bcec 5 * Redistribution and use in source and binary forms, with or without
rosarium 0:2ddc0583bcec 6 * modification, are permitted provided that the following conditions
rosarium 0:2ddc0583bcec 7 * are met:
rosarium 0:2ddc0583bcec 8 * 1. Redistributions of source code must retain the above copyright
rosarium 0:2ddc0583bcec 9 * notice, this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 10 * 2. Redistributions in binary form must reproduce the above copyright
rosarium 0:2ddc0583bcec 11 * notice, this list of conditions and the following disclaimer in the
rosarium 0:2ddc0583bcec 12 * documentation and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 13 * 3. Neither the name of the Institute nor the names of its contributors
rosarium 0:2ddc0583bcec 14 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 15 * without specific prior written permission.
rosarium 0:2ddc0583bcec 16 *
rosarium 0:2ddc0583bcec 17 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
rosarium 0:2ddc0583bcec 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
rosarium 0:2ddc0583bcec 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
rosarium 0:2ddc0583bcec 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
rosarium 0:2ddc0583bcec 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
rosarium 0:2ddc0583bcec 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
rosarium 0:2ddc0583bcec 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
rosarium 0:2ddc0583bcec 27 * SUCH DAMAGE.
rosarium 0:2ddc0583bcec 28 *
rosarium 0:2ddc0583bcec 29 * This file is part of the Contiki operating system.
rosarium 0:2ddc0583bcec 30 *
rosarium 0:2ddc0583bcec 31 */
rosarium 0:2ddc0583bcec 32 /*---------------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 33 #ifndef __SPIRIT_H__
rosarium 0:2ddc0583bcec 34 #define __SPIRIT_H__
rosarium 0:2ddc0583bcec 35 /*---------------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 36 #include "radio.h"
rosarium 0:2ddc0583bcec 37 #include "SPIRIT_Config.h"
rosarium 0:2ddc0583bcec 38 #include "spirit1-config.h"
rosarium 0:2ddc0583bcec 39 //#include "spirit1_appli.h"
rosarium 0:2ddc0583bcec 40 #include "spirit1-const.h"
rosarium 0:2ddc0583bcec 41 /*---------------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 42 extern const struct radio_driver spirit_radio_driver;
rosarium 0:2ddc0583bcec 43 void spirit1_interrupt_callback(void);
rosarium 0:2ddc0583bcec 44
rosarium 0:2ddc0583bcec 45 /* exported from spirit1appli.h */
rosarium 0:2ddc0583bcec 46
rosarium 0:2ddc0583bcec 47 #include "radio_shield_config.h"
rosarium 0:2ddc0583bcec 48 #include "MCU_Interface.h"
rosarium 0:2ddc0583bcec 49 #include "SPIRIT_Config.h"
rosarium 0:2ddc0583bcec 50 // betzw - WAS: #include "SPIRIT1_Util.h"
rosarium 0:2ddc0583bcec 51
rosarium 0:2ddc0583bcec 52
rosarium 0:2ddc0583bcec 53 #if defined(X_NUCLEO_IDS01A3)
rosarium 0:2ddc0583bcec 54 #define USE_SPIRIT1_433MHz
rosarium 0:2ddc0583bcec 55 #elif defined(X_NUCLEO_IDS01A4)
rosarium 0:2ddc0583bcec 56 #define USE_SPIRIT1_868MHz
rosarium 0:2ddc0583bcec 57 #elif defined(X_NUCLEO_IDS01A5)
rosarium 0:2ddc0583bcec 58 #define USE_SPIRIT1_915MHz
rosarium 0:2ddc0583bcec 59 #else
rosarium 0:2ddc0583bcec 60 #error SPIRIT1 Nucleo Shield undefined or unsupported
rosarium 0:2ddc0583bcec 61 #endif
rosarium 0:2ddc0583bcec 62
rosarium 0:2ddc0583bcec 63 /* Uncomment the Link Layer features to be used */
rosarium 0:2ddc0583bcec 64 // #define USE_AUTO_ACK
rosarium 0:2ddc0583bcec 65 // #define USE_AUTO_ACK_PIGGYBACKING
rosarium 0:2ddc0583bcec 66 // #define USE_AUTO_RETRANSMISSION
rosarium 0:2ddc0583bcec 67
rosarium 0:2ddc0583bcec 68 #if defined(USE_AUTO_ACK)&& defined(USE_AUTO_ACK_PIGGYBACKING)&& defined(USE_AUTO_RETRANSMISSION)
rosarium 0:2ddc0583bcec 69 #define USE_STack_PROTOCOL
rosarium 0:2ddc0583bcec 70
rosarium 0:2ddc0583bcec 71 /* LLP configuration parameters */
rosarium 0:2ddc0583bcec 72 #define EN_AUTOACK S_ENABLE
rosarium 0:2ddc0583bcec 73 #define EN_PIGGYBACKING S_ENABLE
rosarium 0:2ddc0583bcec 74 #define MAX_RETRANSMISSIONS PKT_N_RETX_2
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76 #else
rosarium 0:2ddc0583bcec 77 #define USE_BASIC_PROTOCOL
rosarium 0:2ddc0583bcec 78
rosarium 0:2ddc0583bcec 79 #endif
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 /* Uncomment the system Operating mode */
rosarium 0:2ddc0583bcec 82 //#define USE_LOW_POWER_MODE
rosarium 0:2ddc0583bcec 83
rosarium 0:2ddc0583bcec 84 #if defined (USE_LOW_POWER_MODE)
rosarium 0:2ddc0583bcec 85 #define LPM_ENABLE
rosarium 0:2ddc0583bcec 86 #define MCU_STOP_MODE
rosarium 0:2ddc0583bcec 87 //#define MCU_SLEEP_MODE
rosarium 0:2ddc0583bcec 88 //#define RF_STANDBY
rosarium 0:2ddc0583bcec 89 #endif
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91
rosarium 0:2ddc0583bcec 92 /* Exported constants --------------------------------------------------------*/
rosarium 0:2ddc0583bcec 93
rosarium 0:2ddc0583bcec 94 /* Radio configuration parameters */
rosarium 0:2ddc0583bcec 95 #define XTAL_OFFSET_PPM 0
rosarium 0:2ddc0583bcec 96 #define INFINITE_TIMEOUT 0.0
rosarium 0:2ddc0583bcec 97
rosarium 0:2ddc0583bcec 98 #ifdef USE_SPIRIT1_433MHz
rosarium 0:2ddc0583bcec 99 #define BASE_FREQUENCY 433.0e6
rosarium 0:2ddc0583bcec 100 #endif
rosarium 0:2ddc0583bcec 101
rosarium 0:2ddc0583bcec 102 #ifdef USE_SPIRIT1_868MHz
rosarium 0:2ddc0583bcec 103 #define BASE_FREQUENCY 868.0e6
rosarium 0:2ddc0583bcec 104 #endif
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106 #ifdef USE_SPIRIT1_915MHz
rosarium 0:2ddc0583bcec 107 //#define BASE_FREQUENCY 915.0e6
rosarium 0:2ddc0583bcec 108 #define BASE_FREQUENCY 902.0e6
rosarium 0:2ddc0583bcec 109 #endif
rosarium 0:2ddc0583bcec 110
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 /* Addresses configuration parameters */
rosarium 0:2ddc0583bcec 113 #define EN_FILT_MY_ADDRESS S_DISABLE
rosarium 0:2ddc0583bcec 114 #define MY_ADDRESS 0x24
rosarium 0:2ddc0583bcec 115 #define EN_FILT_MULTICAST_ADDRESS S_DISABLE
rosarium 0:2ddc0583bcec 116 #define MULTICAST_ADDRESS 0xEE
rosarium 0:2ddc0583bcec 117 #define EN_FILT_BROADCAST_ADDRESS S_DISABLE
rosarium 0:2ddc0583bcec 118 #define BROADCAST_ADDRESS 0xFF
rosarium 0:2ddc0583bcec 119 #define DESTINATION_ADDRESS 0x44
rosarium 0:2ddc0583bcec 120 #define EN_FILT_SOURCE_ADDRESS S_DISABLE
rosarium 0:2ddc0583bcec 121 #define SOURCE_ADDR_MASK 0xf0
rosarium 0:2ddc0583bcec 122 #define SOURCE_ADDR_REF 0x37
rosarium 0:2ddc0583bcec 123
rosarium 0:2ddc0583bcec 124 #define APPLI_CMD 0x11
rosarium 0:2ddc0583bcec 125 #define NWK_CMD 0x22
rosarium 0:2ddc0583bcec 126 #define LED_TOGGLE 0xff
rosarium 0:2ddc0583bcec 127 #define ACK_OK 0x01
rosarium 0:2ddc0583bcec 128 #define MAX_BUFFER_LEN 96
rosarium 0:2ddc0583bcec 129 #define TIME_TO_EXIT_RX 3000
rosarium 0:2ddc0583bcec 130 #define DELAY_RX_LED_TOGGLE 200
rosarium 0:2ddc0583bcec 131 #define DELAY_TX_LED_GLOW 1000
rosarium 0:2ddc0583bcec 132 #define LPM_WAKEUP_TIME 100
rosarium 0:2ddc0583bcec 133 #define DATA_SEND_TIME 30
rosarium 0:2ddc0583bcec 134
rosarium 0:2ddc0583bcec 135 #define PREAMBLE_LENGTH PKT_PREAMBLE_LENGTH_04BYTES
rosarium 0:2ddc0583bcec 136 #define SYNC_LENGTH PKT_SYNC_LENGTH_4BYTES
rosarium 0:2ddc0583bcec 137 #define CONTROL_LENGTH PKT_CONTROL_LENGTH_0BYTES
rosarium 0:2ddc0583bcec 138 #define EN_ADDRESS S_DISABLE
rosarium 0:2ddc0583bcec 139 #define EN_FEC S_DISABLE
rosarium 0:2ddc0583bcec 140 #define CHANNEL_NUMBER 1 // betzw - WAS: 0
rosarium 0:2ddc0583bcec 141 #define LENGTH_TYPE PKT_LENGTH_VAR
rosarium 0:2ddc0583bcec 142 #define POWER_INDEX 7
rosarium 0:2ddc0583bcec 143 #define RECEIVE_TIMEOUT 2000.0 /*change the value for required timeout period*/
rosarium 0:2ddc0583bcec 144 #define RSSI_THRESHOLD -120
rosarium 0:2ddc0583bcec 145
rosarium 0:2ddc0583bcec 146
rosarium 0:2ddc0583bcec 147
rosarium 0:2ddc0583bcec 148 #define POWER_DBM 11.6
rosarium 0:2ddc0583bcec 149 #define CHANNEL_SPACE 100e3
rosarium 0:2ddc0583bcec 150 #define FREQ_DEVIATION 127e3
rosarium 0:2ddc0583bcec 151 #define BANDWIDTH 540.0e3
rosarium 0:2ddc0583bcec 152 #define MODULATION_SELECT GFSK_BT1
rosarium 0:2ddc0583bcec 153 #define DATARATE 250000
rosarium 0:2ddc0583bcec 154 #define XTAL_OFFSET_PPM 0
rosarium 0:2ddc0583bcec 155 #define SYNC_WORD 0x88888888
rosarium 0:2ddc0583bcec 156 #define LENGTH_WIDTH 8 // betzw - NOTE: only 255 bytes for payload!!!
rosarium 0:2ddc0583bcec 157 #define CRC_MODE PKT_CRC_MODE_16BITS_2
rosarium 0:2ddc0583bcec 158 #define EN_WHITENING S_DISABLE
rosarium 0:2ddc0583bcec 159 #define INFINITE_TIMEOUT 0.0
rosarium 0:2ddc0583bcec 160
rosarium 0:2ddc0583bcec 161 // extern volatile FlagStatus xRxDoneFlag, xTxDoneFlag;
rosarium 0:2ddc0583bcec 162 // extern volatile FlagStatus PushButtonStatusWakeup;
rosarium 0:2ddc0583bcec 163 extern uint16_t wakeupCounter;
rosarium 0:2ddc0583bcec 164 extern uint16_t dataSendCounter ;
rosarium 0:2ddc0583bcec 165 // extern volatile FlagStatus PushButtonStatusData, datasendFlag;
rosarium 0:2ddc0583bcec 166
rosarium 0:2ddc0583bcec 167 typedef struct
rosarium 0:2ddc0583bcec 168 {
rosarium 0:2ddc0583bcec 169 uint8_t Cmdtag;
rosarium 0:2ddc0583bcec 170 uint8_t CmdType;
rosarium 0:2ddc0583bcec 171 uint8_t CmdLen;
rosarium 0:2ddc0583bcec 172 uint8_t Cmd;
rosarium 0:2ddc0583bcec 173 uint8_t DataLen;
rosarium 0:2ddc0583bcec 174 uint8_t* DataBuff;
rosarium 0:2ddc0583bcec 175 }AppliFrame_t;
rosarium 0:2ddc0583bcec 176
rosarium 0:2ddc0583bcec 177 /*---------------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 178 #endif /* __SPIRIT_H__ */
rosarium 0:2ddc0583bcec 179 /*---------------------------------------------------------------------------*/