The Freescale MCR20A Simple Media Access Controller (MCR20A SMAC) is a simple ANSI C based codebase available as sample source code. The MCR20A SMAC is used for developing proprietary RF transceiver applications using Freescale’s MCR20A 2.4 GHz transceiver
Fork of fsl_smac by
The MCR20A SMAC is a small codebase that provides simple communication and test applications based on drivers, (802.15.4 compliant) PHY, and framework utilities available as source code. This environment is useful for hardware and RF debug, hardware standards certification, and developing proprietary applications. The MCR20A SMAC is provided as part of the Example Application Demos available for MCR20A and also as a standalone set of files.
SMAC features include:
- Compact footprint.
- Very low power, proprietary, bidirectional RF communication link.
- The MCR20A radio allows packet filtering by hardware by checking the preamble and the synchronization word, which reduces software overhead and memory footprint.
- Broadcast communication.
- Unicast communication — MCR20A SMAC includes a Node Address 16-bit field. This allows SMAC to perform unicast transmissions. To change the address of a node, modify this constant: gNodeAddress_c inside the SMAC_Config.h file, or call SMACSetShortSrcAddress(uint16_t nwShortAddress). The address is set to 0xBEAD by default. Some of the Demo Applications allow the user to change this address at runtime.
- Change of current PAN. The SMAC packet uses a short 802.15.4 compliant header with a hard-coded configuration for frame control which allows the user to switch between PANs. The PAN address has also 16 bits (gDefaultPanID_c). This address can be modified by changing the default value from SMAC_Config.h file or by calling SMACSetPanID(uint16_t nwShortPanID.
- There are no blocking functions within the MCR20A SMAC.
- Easy-to-use sample applications included.
- Light-weight, custom LBT algorithm.
- Light-weight, custom, AA mechanism which is transparent to the user after enabling the feature.
- Encryption using Advanced Encryption Standard in Cipher Block Chaining mode with configurable initial vector and key.
- Configurable number of retries and backoff interval.
- Inter-layer communication using SAPs.
- The MCR20A SMAC also filters packets that have correct addressing information (pass address filtering) but are not in the expected format (short addressing, no security, data frame).
Documentation
Diff: SMAC_Channels.h
- Revision:
- 0:401ba973869e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMAC_Channels.h Tue Aug 18 12:48:33 2015 +0000 @@ -0,0 +1,224 @@ +/*! +* Copyright (c) 2014, Freescale Semiconductor, Inc. +* All rights reserved. +* +* \file SMAC_Channels.h +* +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* +* o Redistributions of source code must retain the above copyright notice, this list +* of conditions and the following disclaimer. +* +* o 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. +* +* o Neither the name of Freescale Semiconductor, Inc. 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 HOLDER 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. +*/ + +#ifndef _SMAC_CHANNELS_H +#define _SMAC_CHANNELS_H + + +/************************************************************************************ +************************************************************************************* +* Include +************************************************************************************* +************************************************************************************/ + +/************************************************************************************ +************************************************************************************* +* Public macros +************************************************************************************* +************************************************************************************/ + +/************************************************************************************ +************************************************************************************* +* Public prototypes +************************************************************************************* +************************************************************************************/ + +/************************************************************************************ +************************************************************************************* +* Public type definitions +************************************************************************************* +************************************************************************************/ + +/************************************************************************************ +************************************************************************************* +* Public memory declarations +************************************************************************************* +************************************************************************************/ + +/************************************************************************************ +************************************************************************************* +* Public functions +************************************************************************************* +************************************************************************************/ + +/* 802.15.4-2006 maximum channel enumeration */ +#if defined (gPHY_802_15_4g_d) +gChannel0_c = 0, +gChannel1_c, +gChannel2_c, +gChannel3_c, +gChannel4_c, +gChannel5_c, +gChannel6_c, +gChannel7_c, +gChannel8_c, +gChannel9_c, +gChannel10_c, +gChannel11_c, +gChannel12_c, +gChannel13_c, +gChannel14_c, +gChannel15_c, +gChannel16_c, +gChannel17_c, +gChannel18_c, +gChannel19_c, +gChannel20_c, +gChannel21_c, +gChannel22_c, +gChannel23_c, +gChannel24_c, +gChannel25_c, +gChannel26_c, +gChannel27_c, +gChannel28_c, +gChannel29_c, +gChannel30_c, +gChannel31_c, +gChannel32_c, +gChannel33_c, +gChannel34_c, +gChannel35_c, +gChannel36_c, +gChannel37_c, +gChannel38_c, +gChannel39_c, +gChannel40_c, +gChannel41_c, +gChannel42_c, +gChannel43_c, +gChannel44_c, +gChannel45_c, +gChannel46_c, +gChannel47_c, +gChannel48_c, +gChannel49_c, +gChannel50_c, +gChannel51_c, +gChannel52_c, +gChannel53_c, +gChannel54_c, +gChannel55_c, +gChannel56_c, +gChannel57_c, +gChannel58_c, +gChannel59_c, +gChannel60_c, +gChannel61_c, +gChannel62_c, +gChannel63_c, +gChannel64_c, +gChannel65_c, +gChannel66_c, +gChannel67_c, +gChannel68_c, +gChannel69_c, +gChannel70_c, +gChannel71_c, +gChannel72_c, +gChannel73_c, +gChannel74_c, +gChannel75_c, +gChannel76_c, +gChannel77_c, +gChannel78_c, +gChannel79_c, +gChannel80_c, +gChannel81_c, +gChannel82_c, +gChannel83_c, +gChannel84_c, +gChannel85_c, +gChannel86_c, +gChannel87_c, +gChannel88_c, +gChannel89_c, +gChannel90_c, +gChannel91_c, +gChannel92_c, +gChannel93_c, +gChannel94_c, +gChannel95_c, +gChannel96_c, +gChannel97_c, +gChannel98_c, +gChannel99_c, +gChannel100_c, +gChannel101_c, +gChannel102_c, +gChannel103_c, +gChannel104_c, +gChannel105_c, +gChannel106_c, +gChannel107_c, +gChannel108_c, +gChannel109_c, +gChannel110_c, +gChannel111_c, +gChannel112_c, +gChannel113_c, +gChannel114_c, +gChannel115_c, +gChannel116_c, +gChannel117_c, +gChannel118_c, +gChannel119_c, +gChannel120_c, +gChannel121_c, +gChannel122_c, +gChannel123_c, +gChannel124_c, +gChannel125_c, +gChannel126_c, +gChannel127_c, +gChannel128_c +#else + +gChannel11_c = 0x0B, +gChannel12_c, +gChannel13_c, +gChannel14_c, +gChannel15_c, +gChannel16_c, +gChannel17_c, +gChannel18_c, +gChannel19_c, +gChannel20_c, +gChannel21_c, +gChannel22_c, +gChannel23_c, +gChannel24_c, +gChannel25_c, +gChannel26_c +#endif + +#endif /* _SMAC_CHANNELS_H */