A library implementing IEEE 802.15.4 PHY functionality for the MCR20A transceiver. The PHY sublayer provides two services: the PHY data service and the PHY management service interfacing to the PHY sublayer management entity (PLME) service access point (SAP) (known as PLME-SAP). The PHY data service enables the transmission and reception of PHY protocol data units (PSDUs) over the media (radio).

Fork of fsl_phy_mcr20a by Freescale

The Freescale PHY Layer deals with the physical burst which is to be sent and/or received. It performs modulation and demodulation, transmitter and receiver switching, fragmentation, scrambling, interleaving, and error correction coding. The communication to the upper protocol layers is carried out through the Layer 1 Interface.

The PHY Layer is capable of executing the following sequences:

  • I (Idle)
  • R (Receive Sequence conditionally followed by a TxAck)
  • T (Transmit Sequence)
  • C (Standalone CCA)
  • CCCA (Continuous CCA)
  • TR (Transmit/Receive Sequence - transmit unconditionally followed by either an R or RxAck)

In addition to these sequences the PHY Layer also integrates a packet processor which determines whether the packet is MAC-compliant, and if it is, whether it is addressed to the end device. Another feature of the packet processor is Source Address Matching which can be viewed as an extension of packet filtering; however its function is very specific to its intended application (data-polling and indirect queue management by a PAN Coordinator).

Documentation

MCR20A PHY Reference Manual

Committer:
andreikovacs
Date:
Tue Aug 18 12:41:42 2015 +0000
Revision:
0:764779eedf2d
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andreikovacs 0:764779eedf2d 1 /*!
andreikovacs 0:764779eedf2d 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
andreikovacs 0:764779eedf2d 3 * All rights reserved.
andreikovacs 0:764779eedf2d 4 *
andreikovacs 0:764779eedf2d 5 * \file ASP.h
andreikovacs 0:764779eedf2d 6 * This is a header file for the ASP module.
andreikovacs 0:764779eedf2d 7 *
andreikovacs 0:764779eedf2d 8 * Redistribution and use in source and binary forms, with or without modification,
andreikovacs 0:764779eedf2d 9 * are permitted provided that the following conditions are met:
andreikovacs 0:764779eedf2d 10 *
andreikovacs 0:764779eedf2d 11 * o Redistributions of source code must retain the above copyright notice, this list
andreikovacs 0:764779eedf2d 12 * of conditions and the following disclaimer.
andreikovacs 0:764779eedf2d 13 *
andreikovacs 0:764779eedf2d 14 * o Redistributions in binary form must reproduce the above copyright notice, this
andreikovacs 0:764779eedf2d 15 * list of conditions and the following disclaimer in the documentation and/or
andreikovacs 0:764779eedf2d 16 * other materials provided with the distribution.
andreikovacs 0:764779eedf2d 17 *
andreikovacs 0:764779eedf2d 18 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
andreikovacs 0:764779eedf2d 19 * contributors may be used to endorse or promote products derived from this
andreikovacs 0:764779eedf2d 20 * software without specific prior written permission.
andreikovacs 0:764779eedf2d 21 *
andreikovacs 0:764779eedf2d 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
andreikovacs 0:764779eedf2d 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
andreikovacs 0:764779eedf2d 24 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
andreikovacs 0:764779eedf2d 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
andreikovacs 0:764779eedf2d 26 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
andreikovacs 0:764779eedf2d 27 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
andreikovacs 0:764779eedf2d 28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
andreikovacs 0:764779eedf2d 29 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
andreikovacs 0:764779eedf2d 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
andreikovacs 0:764779eedf2d 31 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
andreikovacs 0:764779eedf2d 32 */
andreikovacs 0:764779eedf2d 33
andreikovacs 0:764779eedf2d 34 #ifndef __ASP_H__
andreikovacs 0:764779eedf2d 35 #define __ASP_H__
andreikovacs 0:764779eedf2d 36
andreikovacs 0:764779eedf2d 37 /************************************************************************************
andreikovacs 0:764779eedf2d 38 *************************************************************************************
andreikovacs 0:764779eedf2d 39 * Include
andreikovacs 0:764779eedf2d 40 *************************************************************************************
andreikovacs 0:764779eedf2d 41 ************************************************************************************/
andreikovacs 0:764779eedf2d 42
andreikovacs 0:764779eedf2d 43 #include "EmbeddedTypes.h"
andreikovacs 0:764779eedf2d 44 //#include "fsl_os_abstraction.h"
andreikovacs 0:764779eedf2d 45 #include "PhyInterface.h"
andreikovacs 0:764779eedf2d 46 #include "MpmInterface.h"
andreikovacs 0:764779eedf2d 47
andreikovacs 0:764779eedf2d 48 /************************************************************************************
andreikovacs 0:764779eedf2d 49 *************************************************************************************
andreikovacs 0:764779eedf2d 50 * Public macros
andreikovacs 0:764779eedf2d 51 *************************************************************************************
andreikovacs 0:764779eedf2d 52 ************************************************************************************/
andreikovacs 0:764779eedf2d 53 /* Enable/Disable the ASP module */
andreikovacs 0:764779eedf2d 54 #ifndef gAspCapability_d
andreikovacs 0:764779eedf2d 55 #ifndef gPHY_802_15_4g_d
andreikovacs 0:764779eedf2d 56 #define gAspCapability_d (1)
andreikovacs 0:764779eedf2d 57 #else
andreikovacs 0:764779eedf2d 58 #define gAspCapability_d (0)
andreikovacs 0:764779eedf2d 59 #endif // gPHY_802_15_4g_d
andreikovacs 0:764779eedf2d 60 #endif // gAspCapability_d
andreikovacs 0:764779eedf2d 61
andreikovacs 0:764779eedf2d 62 #define gAspInterfaceId (0)
andreikovacs 0:764779eedf2d 63
andreikovacs 0:764779eedf2d 64 /* Allowed ASP Power Levels */
andreikovacs 0:764779eedf2d 65 #define gAspPowerLevel_m40dBm_c (uint8_t)gAspPowerLevel_m40dBm
andreikovacs 0:764779eedf2d 66 #define gAspPowerLevel_m38dBm_c (uint8_t)gAspPowerLevel_m38dBm
andreikovacs 0:764779eedf2d 67 #define gAspPowerLevel_m36dBm_c (uint8_t)gAspPowerLevel_m36dBm
andreikovacs 0:764779eedf2d 68 #define gAspPowerLevel_m34dBm_c (uint8_t)gAspPowerLevel_m34dBm
andreikovacs 0:764779eedf2d 69 #define gAspPowerLevel_m32dBm_c (uint8_t)gAspPowerLevel_m32dBm
andreikovacs 0:764779eedf2d 70 #define gAspPowerLevel_m30dBm_c (uint8_t)gAspPowerLevel_m30dBm
andreikovacs 0:764779eedf2d 71 #define gAspPowerLevel_m28dBm_c (uint8_t)gAspPowerLevel_m28dBm
andreikovacs 0:764779eedf2d 72 #define gAspPowerLevel_m26dBm_c (uint8_t)gAspPowerLevel_m26dBm
andreikovacs 0:764779eedf2d 73 #define gAspPowerLevel_m24dBm_c (uint8_t)gAspPowerLevel_m24dBm
andreikovacs 0:764779eedf2d 74 #define gAspPowerLevel_m22dBm_c (uint8_t)gAspPowerLevel_m22dBm
andreikovacs 0:764779eedf2d 75 #define gAspPowerLevel_m20dBm_c (uint8_t)gAspPowerLevel_m20dBm
andreikovacs 0:764779eedf2d 76 #define gAspPowerLevel_m18dBm_c (uint8_t)gAspPowerLevel_m18dBm
andreikovacs 0:764779eedf2d 77 #define gAspPowerLevel_m16dBm_c (uint8_t)gAspPowerLevel_m16dBm
andreikovacs 0:764779eedf2d 78 #define gAspPowerLevel_m14dBm_c (uint8_t)gAspPowerLevel_m14dBm
andreikovacs 0:764779eedf2d 79 #define gAspPowerLevel_m12dBm_c (uint8_t)gAspPowerLevel_m12dBm
andreikovacs 0:764779eedf2d 80 #define gAspPowerLevel_m10dBm_c (uint8_t)gAspPowerLevel_m10dBm
andreikovacs 0:764779eedf2d 81 #define gAspPowerLevel_m8dBm_c (uint8_t)gAspPowerLevel_m8dBm
andreikovacs 0:764779eedf2d 82 #define gAspPowerLevel_m6dBm_c (uint8_t)gAspPowerLevel_m6dBm
andreikovacs 0:764779eedf2d 83 #define gAspPowerLevel_m4dBm_c (uint8_t)gAspPowerLevel_m4dBm
andreikovacs 0:764779eedf2d 84 #define gAspPowerLevel_m2dBm_c (uint8_t)gAspPowerLevel_m2dBm
andreikovacs 0:764779eedf2d 85 #define gAspPowerLevel_0dBm_c (uint8_t)gAspPowerLevel_0dBm
andreikovacs 0:764779eedf2d 86 #define gAspPowerLevel_2dBm_c (uint8_t)gAspPowerLevel_2dBm
andreikovacs 0:764779eedf2d 87 #define gAspPowerLevel_4dBm_c (uint8_t)gAspPowerLevel_4dBm
andreikovacs 0:764779eedf2d 88 #define gAspPowerLevel_6dBm_c (uint8_t)gAspPowerLevel_6dBm
andreikovacs 0:764779eedf2d 89 #define gAspPowerLevel_8dBm_c (uint8_t)gAspPowerLevel_8dBm
andreikovacs 0:764779eedf2d 90 #define gAspPowerLevel_10dBm_c (uint8_t)gAspPowerLevel_10dBm
andreikovacs 0:764779eedf2d 91 #define gAspPowerLevel_12dBm_c (uint8_t)gAspPowerLevel_12dBm
andreikovacs 0:764779eedf2d 92 #define gAspPowerLevel_14dBm_c (uint8_t)gAspPowerLevel_14dBm
andreikovacs 0:764779eedf2d 93 #define gAspPowerLevel_16dBm_c (uint8_t)gAspPowerLevel_16dBm
andreikovacs 0:764779eedf2d 94
andreikovacs 0:764779eedf2d 95 /* OpGroup codes used with FSCI */
andreikovacs 0:764779eedf2d 96 #define gFSCI_AspAppOpcodeGroup_c 0x94 /* ASP_APP_SapHandler */
andreikovacs 0:764779eedf2d 97 #define gFSCI_AppAspOpcodeGroup_c 0x95 /* APP_ASP_SapHandler */
andreikovacs 0:764779eedf2d 98
andreikovacs 0:764779eedf2d 99 /************************************************************************************
andreikovacs 0:764779eedf2d 100 *************************************************************************************
andreikovacs 0:764779eedf2d 101 * Public type definitions
andreikovacs 0:764779eedf2d 102 *************************************************************************************
andreikovacs 0:764779eedf2d 103 ************************************************************************************/
andreikovacs 0:764779eedf2d 104 /* ASP status messages */
andreikovacs 0:764779eedf2d 105 typedef enum{
andreikovacs 0:764779eedf2d 106 gAspSuccess_c = 0x00,
andreikovacs 0:764779eedf2d 107 gAspInvalidRequest_c = 0xC2,
andreikovacs 0:764779eedf2d 108 gAspDenied_c = 0xE2,
andreikovacs 0:764779eedf2d 109 gAspTooLong_c = 0xE5,
andreikovacs 0:764779eedf2d 110 gAspInvalidParameter_c = 0xE8
andreikovacs 0:764779eedf2d 111 }AspStatus_t;
andreikovacs 0:764779eedf2d 112
andreikovacs 0:764779eedf2d 113 /* Supported Power Levels */
andreikovacs 0:764779eedf2d 114 enum {
andreikovacs 0:764779eedf2d 115 gAspPowerLevel_m40dBm = 0x03,
andreikovacs 0:764779eedf2d 116 gAspPowerLevel_m38dBm = 0x04,
andreikovacs 0:764779eedf2d 117 gAspPowerLevel_m36dBm = 0x05,
andreikovacs 0:764779eedf2d 118 gAspPowerLevel_m34dBm = 0x06,
andreikovacs 0:764779eedf2d 119 gAspPowerLevel_m32dBm = 0x07,
andreikovacs 0:764779eedf2d 120 gAspPowerLevel_m30dBm = 0x08,
andreikovacs 0:764779eedf2d 121 gAspPowerLevel_m28dBm = 0x09,
andreikovacs 0:764779eedf2d 122 gAspPowerLevel_m26dBm = 0x0A,
andreikovacs 0:764779eedf2d 123 gAspPowerLevel_m24dBm = 0x0B,
andreikovacs 0:764779eedf2d 124 gAspPowerLevel_m22dBm = 0x0C,
andreikovacs 0:764779eedf2d 125 gAspPowerLevel_m20dBm = 0x0D,
andreikovacs 0:764779eedf2d 126 gAspPowerLevel_m18dBm = 0x0E,
andreikovacs 0:764779eedf2d 127 gAspPowerLevel_m16dBm = 0x0F,
andreikovacs 0:764779eedf2d 128 gAspPowerLevel_m14dBm = 0x10,
andreikovacs 0:764779eedf2d 129 gAspPowerLevel_m12dBm = 0x11,
andreikovacs 0:764779eedf2d 130 gAspPowerLevel_m10dBm = 0x12,
andreikovacs 0:764779eedf2d 131 gAspPowerLevel_m8dBm = 0x13,
andreikovacs 0:764779eedf2d 132 gAspPowerLevel_m6dBm = 0x14,
andreikovacs 0:764779eedf2d 133 gAspPowerLevel_m4dBm = 0x15,
andreikovacs 0:764779eedf2d 134 gAspPowerLevel_m2dBm = 0x16,
andreikovacs 0:764779eedf2d 135 gAspPowerLevel_0dBm = 0x17,
andreikovacs 0:764779eedf2d 136 gAspPowerLevel_2dBm = 0x18,
andreikovacs 0:764779eedf2d 137 gAspPowerLevel_4dBm = 0x19,
andreikovacs 0:764779eedf2d 138 gAspPowerLevel_6dBm = 0x1A,
andreikovacs 0:764779eedf2d 139 gAspPowerLevel_8dBm = 0x1B,
andreikovacs 0:764779eedf2d 140 gAspPowerLevel_10dBm = 0x1C,
andreikovacs 0:764779eedf2d 141 gAspPowerLevel_12dBm = 0x1D,
andreikovacs 0:764779eedf2d 142 gAspPowerLevel_14dBm = 0x1E,
andreikovacs 0:764779eedf2d 143 gAspPowerLevel_16dBm = 0x1F
andreikovacs 0:764779eedf2d 144 };
andreikovacs 0:764779eedf2d 145
andreikovacs 0:764779eedf2d 146 /* Radio test modes */
andreikovacs 0:764779eedf2d 147 enum {
andreikovacs 0:764779eedf2d 148 gTestForceIdle_c = 0,
andreikovacs 0:764779eedf2d 149 gTestPulseTxPrbs9_c = 1,
andreikovacs 0:764779eedf2d 150 gTestContinuousRx_c = 2,
andreikovacs 0:764779eedf2d 151 gTestContinuousTxMod_c = 3,
andreikovacs 0:764779eedf2d 152 gTestContinuousTxNoMod_c = 4,
andreikovacs 0:764779eedf2d 153 gTestContinuousTx2Mhz_c = 5,
andreikovacs 0:764779eedf2d 154 gTestContinuousTx200Khz_c = 6,
andreikovacs 0:764779eedf2d 155 gTestContinuousTx1MbpsPRBS9_c = 7,
andreikovacs 0:764779eedf2d 156 gTestContinuousTxExternalSrc_c = 8,
andreikovacs 0:764779eedf2d 157 gTestContinuousTxNoModZero_c = 9,
andreikovacs 0:764779eedf2d 158 gTestContinuousTxNoModOne_c = 10
andreikovacs 0:764779eedf2d 159 };
andreikovacs 0:764779eedf2d 160
andreikovacs 0:764779eedf2d 161 /* This enum matches with the FSCI OpCode used by ASP*/
andreikovacs 0:764779eedf2d 162 typedef enum {
andreikovacs 0:764779eedf2d 163 aspMsgTypeGetTimeReq_c = 0x00,
andreikovacs 0:764779eedf2d 164 aspMsgTypeGetInactiveTimeReq_c = 0x01,
andreikovacs 0:764779eedf2d 165 aspMsgTypeGetMacStateReq_c = 0x02,
andreikovacs 0:764779eedf2d 166 aspMsgTypeDozeReq_c = 0x03,
andreikovacs 0:764779eedf2d 167 aspMsgTypeAutoDozeReq_c = 0x04,
andreikovacs 0:764779eedf2d 168 aspMsgTypeAcomaReq_c = 0x05,
andreikovacs 0:764779eedf2d 169 aspMsgTypeHibernateReq_c = 0x06,
andreikovacs 0:764779eedf2d 170 aspMsgTypeWakeReq_c = 0x07,
andreikovacs 0:764779eedf2d 171 aspMsgTypeEventReq_c = 0x08,
andreikovacs 0:764779eedf2d 172 aspMsgTypeClkoReq_c = 0x09,
andreikovacs 0:764779eedf2d 173 aspMsgTypeTrimReq_c = 0x0A,
andreikovacs 0:764779eedf2d 174 aspMsgTypeDdrReq_c = 0x0B,
andreikovacs 0:764779eedf2d 175 aspMsgTypePortReq_c = 0x0C,
andreikovacs 0:764779eedf2d 176 aspMsgTypeSetMinDozeTimeReq_c = 0x0D,
andreikovacs 0:764779eedf2d 177 aspMsgTypeSetNotifyReq_c = 0x0E,
andreikovacs 0:764779eedf2d 178 aspMsgTypeSetPowerLevel_c = 0x0F,
andreikovacs 0:764779eedf2d 179 aspMsgTypeGetPowerLevel_c = 0x1F,
andreikovacs 0:764779eedf2d 180 aspMsgTypeTelecTest_c = 0x10,
andreikovacs 0:764779eedf2d 181 aspMsgTypeTelecSetFreq_c = 0x11,
andreikovacs 0:764779eedf2d 182 aspMsgTypeGetInactiveTimeCnf_c = 0x12,
andreikovacs 0:764779eedf2d 183 aspMsgTypeGetMacStateCnf_c = 0x13,
andreikovacs 0:764779eedf2d 184 aspMsgTypeDozeCnf_c = 0x14,
andreikovacs 0:764779eedf2d 185 aspMsgTypeAutoDozeCnf_c = 0x15,
andreikovacs 0:764779eedf2d 186 aspMsgTypeTelecSendRawData_c = 0x16,
andreikovacs 0:764779eedf2d 187 aspMsgTypeSetFADState_c = 0x17,
andreikovacs 0:764779eedf2d 188 aspMsgTypeSetFADThreshold_c = 0x18,
andreikovacs 0:764779eedf2d 189 aspMsgTypeGetFADThreshold_c = 0x19,
andreikovacs 0:764779eedf2d 190 aspMsgTypeGetFADState_c = 0x1A,
andreikovacs 0:764779eedf2d 191 aspMsgTypeSetActivePromState_c = 0x1B,
andreikovacs 0:764779eedf2d 192 aspMsgTypeXcvrWriteReq_c = 0x1C,
andreikovacs 0:764779eedf2d 193 aspMsgTypeXcvrReadReq_c = 0x1D,
andreikovacs 0:764779eedf2d 194 aspMsgTypeSetANTXState_c = 0x20,
andreikovacs 0:764779eedf2d 195 aspMsgTypeGetANTXState_c = 0x21,
andreikovacs 0:764779eedf2d 196 aspMsgTypeSetLQIMode_c = 0x22,
andreikovacs 0:764779eedf2d 197 aspMsgTypeGetRSSILevel_c = 0x23,
andreikovacs 0:764779eedf2d 198 aspMsgTypeSetMpmConfig_c = 0x24,
andreikovacs 0:764779eedf2d 199 aspMsgTypeGetMpmConfig_c = 0x25
andreikovacs 0:764779eedf2d 200 }AppAspMsgType_t;
andreikovacs 0:764779eedf2d 201
andreikovacs 0:764779eedf2d 202 typedef PACKED_STRUCT aspEventReq_tag
andreikovacs 0:764779eedf2d 203 { /* AspEvent.Request */
andreikovacs 0:764779eedf2d 204 uint32_t eventTime;
andreikovacs 0:764779eedf2d 205 } aspEventReq_t;
andreikovacs 0:764779eedf2d 206
andreikovacs 0:764779eedf2d 207 typedef PACKED_STRUCT aspGetTimeReq_tag
andreikovacs 0:764779eedf2d 208 { /* AspGetTime.Request */
andreikovacs 0:764779eedf2d 209 uint32_t time;
andreikovacs 0:764779eedf2d 210 } aspGetTimeReq_t;
andreikovacs 0:764779eedf2d 211
andreikovacs 0:764779eedf2d 212 typedef PACKED_STRUCT aspSetNotifyReq_tag
andreikovacs 0:764779eedf2d 213 { /* AspSetNotify.Request */
andreikovacs 0:764779eedf2d 214 uint8_t notifications;
andreikovacs 0:764779eedf2d 215 } aspSetNotifyReq_t;
andreikovacs 0:764779eedf2d 216
andreikovacs 0:764779eedf2d 217
andreikovacs 0:764779eedf2d 218 typedef PACKED_STRUCT aspSetPowerLevelReq_tag
andreikovacs 0:764779eedf2d 219 { /* AspSetPowerLevel.Request */
andreikovacs 0:764779eedf2d 220 uint8_t powerLevel;
andreikovacs 0:764779eedf2d 221 } aspSetPowerLevelReq_t;
andreikovacs 0:764779eedf2d 222
andreikovacs 0:764779eedf2d 223
andreikovacs 0:764779eedf2d 224 typedef PACKED_STRUCT aspGetPowerLevelReq_tag
andreikovacs 0:764779eedf2d 225 { /* AspGetPowerLevel.Request */
andreikovacs 0:764779eedf2d 226 uint8_t powerLevel;
andreikovacs 0:764779eedf2d 227 } aspGetPowerLevelReq_t;
andreikovacs 0:764779eedf2d 228
andreikovacs 0:764779eedf2d 229
andreikovacs 0:764779eedf2d 230 typedef PACKED_STRUCT aspTelecTest_tag
andreikovacs 0:764779eedf2d 231 { /* AspTelecTest.Request */
andreikovacs 0:764779eedf2d 232 uint8_t mode;
andreikovacs 0:764779eedf2d 233 } aspTelecTest_t;
andreikovacs 0:764779eedf2d 234
andreikovacs 0:764779eedf2d 235
andreikovacs 0:764779eedf2d 236 typedef PACKED_STRUCT aspTelecsetFreq_tag
andreikovacs 0:764779eedf2d 237 { /* AspTelecSetFreq.Request */
andreikovacs 0:764779eedf2d 238 uint8_t channel;
andreikovacs 0:764779eedf2d 239 } aspTelecsetFreq_t;
andreikovacs 0:764779eedf2d 240
andreikovacs 0:764779eedf2d 241
andreikovacs 0:764779eedf2d 242 typedef PACKED_STRUCT aspTelecSendRawData_tag
andreikovacs 0:764779eedf2d 243 { /* AspTelecSendRawData.Request */
andreikovacs 0:764779eedf2d 244 uint8_t length;
andreikovacs 0:764779eedf2d 245 uint8_t* dataPtr;
andreikovacs 0:764779eedf2d 246 } aspTelecSendRawData_t;
andreikovacs 0:764779eedf2d 247
andreikovacs 0:764779eedf2d 248 /* AspSetFADThreshold.Request */
andreikovacs 0:764779eedf2d 249 typedef uint8_t aspFADThreshold_t;
andreikovacs 0:764779eedf2d 250 /* AspSetLQIMode.Request */
andreikovacs 0:764779eedf2d 251 typedef uint8_t aspLQIMode_t;
andreikovacs 0:764779eedf2d 252
andreikovacs 0:764779eedf2d 253 typedef PACKED_STRUCT aspXcvrReq_tag
andreikovacs 0:764779eedf2d 254 { /* AspXcvrWrite.Request / AspXcvrRead.Request */
andreikovacs 0:764779eedf2d 255 uint8_t mode;
andreikovacs 0:764779eedf2d 256 uint16_t addr;
andreikovacs 0:764779eedf2d 257 uint8_t len;
andreikovacs 0:764779eedf2d 258 uint8_t data[4]; /* more than 4 bytes can be read/written */
andreikovacs 0:764779eedf2d 259 } aspXcvrReq_t;
andreikovacs 0:764779eedf2d 260
andreikovacs 0:764779eedf2d 261
andreikovacs 0:764779eedf2d 262 typedef PACKED_STRUCT AppToAspMessage_tag
andreikovacs 0:764779eedf2d 263 {
andreikovacs 0:764779eedf2d 264 AppAspMsgType_t msgType;
andreikovacs 0:764779eedf2d 265 PACKED_UNION
andreikovacs 0:764779eedf2d 266 {
andreikovacs 0:764779eedf2d 267 aspEventReq_t aspEventReq;
andreikovacs 0:764779eedf2d 268 aspGetTimeReq_t aspGetTimeReq;
andreikovacs 0:764779eedf2d 269 aspSetPowerLevelReq_t aspSetPowerLevelReq;
andreikovacs 0:764779eedf2d 270 aspGetPowerLevelReq_t aspGetPowerLevelReq;
andreikovacs 0:764779eedf2d 271 aspTelecTest_t aspTelecTest;
andreikovacs 0:764779eedf2d 272 aspTelecsetFreq_t aspTelecsetFreq;
andreikovacs 0:764779eedf2d 273 aspTelecSendRawData_t aspTelecSendRawData;
andreikovacs 0:764779eedf2d 274 aspFADThreshold_t aspFADThreshold;
andreikovacs 0:764779eedf2d 275 bool_t aspFADState;
andreikovacs 0:764779eedf2d 276 bool_t aspANTXState;
andreikovacs 0:764779eedf2d 277 aspLQIMode_t aspLQIMode;
andreikovacs 0:764779eedf2d 278 bool_t aspActivePromState;
andreikovacs 0:764779eedf2d 279 aspXcvrReq_t aspXcvrData;
andreikovacs 0:764779eedf2d 280 mpmConfig_t MpmConfig;
andreikovacs 0:764779eedf2d 281 }msgData;
andreikovacs 0:764779eedf2d 282 } AppToAspMessage_t;
andreikovacs 0:764779eedf2d 283
andreikovacs 0:764779eedf2d 284 #ifdef __cplusplus
andreikovacs 0:764779eedf2d 285 extern "C" {
andreikovacs 0:764779eedf2d 286 #endif
andreikovacs 0:764779eedf2d 287
andreikovacs 0:764779eedf2d 288 /************************************************************************************
andreikovacs 0:764779eedf2d 289 *************************************************************************************
andreikovacs 0:764779eedf2d 290 * Public memory declarations
andreikovacs 0:764779eedf2d 291 *************************************************************************************
andreikovacs 0:764779eedf2d 292 ************************************************************************************/
andreikovacs 0:764779eedf2d 293
andreikovacs 0:764779eedf2d 294 /************************************************************************************
andreikovacs 0:764779eedf2d 295 *************************************************************************************
andreikovacs 0:764779eedf2d 296 * Public functions
andreikovacs 0:764779eedf2d 297 *************************************************************************************
andreikovacs 0:764779eedf2d 298 ************************************************************************************/
andreikovacs 0:764779eedf2d 299 #if gAspCapability_d
andreikovacs 0:764779eedf2d 300
andreikovacs 0:764779eedf2d 301 void ASP_Init( instanceId_t phyInstance, uint8_t interfaceId );
andreikovacs 0:764779eedf2d 302
andreikovacs 0:764779eedf2d 303 AspStatus_t APP_ASP_SapHandler(AppToAspMessage_t *pMsg, instanceId_t instanceId);
andreikovacs 0:764779eedf2d 304
andreikovacs 0:764779eedf2d 305 void Asp_GetTimeReq(uint32_t *time);
andreikovacs 0:764779eedf2d 306
andreikovacs 0:764779eedf2d 307 AspStatus_t Asp_XcvrWriteReq (uint8_t mode, uint16_t addr, uint8_t len, uint8_t* pData);
andreikovacs 0:764779eedf2d 308 AspStatus_t Asp_XcvrReadReq (uint8_t mode, uint16_t addr, uint8_t len, uint8_t* pData);
andreikovacs 0:764779eedf2d 309
andreikovacs 0:764779eedf2d 310 AspStatus_t Asp_SetPowerLevel(uint8_t powerLevel);
andreikovacs 0:764779eedf2d 311 uint8_t Asp_GetPowerLevel(void);
andreikovacs 0:764779eedf2d 312
andreikovacs 0:764779eedf2d 313 AspStatus_t Asp_SetActivePromState(bool_t state);
andreikovacs 0:764779eedf2d 314
andreikovacs 0:764779eedf2d 315 AspStatus_t Asp_SetFADState(bool_t state);
andreikovacs 0:764779eedf2d 316 AspStatus_t Asp_SetFADThreshold(uint8_t thresholdFAD);
andreikovacs 0:764779eedf2d 317
andreikovacs 0:764779eedf2d 318 AspStatus_t Asp_SetANTXState(bool_t state);
andreikovacs 0:764779eedf2d 319 uint8_t Asp_GetANTXState(void);
andreikovacs 0:764779eedf2d 320 uint8_t Asp_SetANTPadStateRequest(bool_t antAB_on, bool_t rxtxSwitch_on);
andreikovacs 0:764779eedf2d 321 uint8_t Asp_SetANTPadStrengthRequest(bool_t hiStrength);
andreikovacs 0:764779eedf2d 322 uint8_t Asp_SetANTPadInvertedRequest(bool_t invAntA, bool_t invAntB, bool_t invTx, bool_t invRx);
andreikovacs 0:764779eedf2d 323
andreikovacs 0:764779eedf2d 324 AspStatus_t Asp_SetLQIMode(bool_t mode);
andreikovacs 0:764779eedf2d 325 uint8_t Asp_GetRSSILevel(void);
andreikovacs 0:764779eedf2d 326
andreikovacs 0:764779eedf2d 327 AspStatus_t ASP_TelecSetFreq (uint8_t channel);
andreikovacs 0:764779eedf2d 328 AspStatus_t ASP_TelecSendRawData(uint8_t* dataPtr);
andreikovacs 0:764779eedf2d 329 AspStatus_t ASP_TelecTest (uint8_t mode);
andreikovacs 0:764779eedf2d 330
andreikovacs 0:764779eedf2d 331 #else /* gAspCapability_d */
andreikovacs 0:764779eedf2d 332
andreikovacs 0:764779eedf2d 333 #define ASP_Init(phyInstance,interfaceId)
andreikovacs 0:764779eedf2d 334 #define Asp_GetTimeReq(time)
andreikovacs 0:764779eedf2d 335
andreikovacs 0:764779eedf2d 336 #define APP_ASP_SapHandler(pMsg) (gAspDenied_c)
andreikovacs 0:764779eedf2d 337 #define Asp_XcvrWriteReq(mode, addr, len, pData) (gAspDenied_c)
andreikovacs 0:764779eedf2d 338 #define Asp_XcvrReadReq(mode, addr, len, pData) (gAspDenied_c)
andreikovacs 0:764779eedf2d 339 #define Asp_SetPowerLevel(powerLevel) (gAspDenied_c)
andreikovacs 0:764779eedf2d 340 #define Asp_SetActivePromState(state) (gAspDenied_c)
andreikovacs 0:764779eedf2d 341 #define Asp_SetFADState(state) (gAspDenied_c)
andreikovacs 0:764779eedf2d 342 #define Asp_SetFADThreshold(thresholdFAD) (gAspDenied_c)
andreikovacs 0:764779eedf2d 343 #define Asp_SetANTXState(state) (gAspDenied_c)
andreikovacs 0:764779eedf2d 344 #define Asp_SetLQIMode(mode) (gAspDenied_c)
andreikovacs 0:764779eedf2d 345 #define ASP_TelecSetFreq(channel) (gAspDenied_c)
andreikovacs 0:764779eedf2d 346 #define ASP_TelecSendRawData(dataPtr) (gAspDenied_c)
andreikovacs 0:764779eedf2d 347 #define ASP_TelecTest(mode) (gAspDenied_c)
andreikovacs 0:764779eedf2d 348
andreikovacs 0:764779eedf2d 349 #define Asp_GetPowerLevel() (0)
andreikovacs 0:764779eedf2d 350 #define Asp_GetANTXState() (0)
andreikovacs 0:764779eedf2d 351 #define Asp_GetRSSILevel() (0)
andreikovacs 0:764779eedf2d 352 #endif /* gAspCapability_d */
andreikovacs 0:764779eedf2d 353
andreikovacs 0:764779eedf2d 354 #ifdef __cplusplus
andreikovacs 0:764779eedf2d 355 }
andreikovacs 0:764779eedf2d 356 #endif
andreikovacs 0:764779eedf2d 357
andreikovacs 0:764779eedf2d 358 #endif /*__ASP_H__ */