/**
* \file phy_at86rf212b.h
*
* \brief Physical Layer Abstraction for AT86RF212B addon interface
*
* Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* Subject to your compliance with these terms, you may use Microchip
* software and any derivatives exclusively with Microchip products.
* It is your responsibility to comply with third party license terms applicable
* to your use of third party software (including open source software) that
* may accompany Microchip software.
*
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
* WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
* LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
* LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
* SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
* POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
* ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
* RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
* THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
*
* \asf_license_stop
*
*/
/*
* Support and FAQ: visit Microchip Support
*/
#ifndef _DRV_AT86RF212B_H_
#define _DRV_AT86RF212B_H_
#define AES_BLOCK_SIZE 16
#define AES_CORE_CYCLE_TIME 24 /* us */
#define RANDOM_NUMBER_UPDATE_INTERVAL 1 /* us */
/*- Types ------------------------------------------------------------------*/
#define CC_CTRL_0_REG 0x13
#define CC_CTRL_1_REG 0x14
#define RF_CTRL_0_REG 0x16
#define RF_CTRL_1_REG 0x19 /* Only in AT86RF212 */
#define AES_STATUS_REG 0x82
#define AES_CTRL_REG 0x83
#define AES_KEY_REG 0x84
#define AES_STATE_REG 0x84
#define AES_CTRL_M_REG 0x94
/* TRX_STATUS */
#define CCA_DONE 7
#define CCA_STATUS 6
#define TRX_STATUS 0
/* TRX_STATE */
#define TRAC_STATUS 5
#define TRX_CMD 0
/* TRX_CTRL_0 */
#define PAD_IO 6
#define PAD_IO_CLKM 4
#define CLKM_SHA_SEL 3
#define CLKM_CTRL 0
/* PHY_TX_PWR */
#define PA_BOOST 7
#define GC_PA 5
#define TX_PWR 0
/* PHY_RSSI */
#define RX_CRC_VALID 7
#define RND_VALUE 5
#define RSSI 0
/* PHY_CC_CCA */
#define CCA_REQUEST 7
#define CCA_MODE 5
#define CHANNEL 0
/* CCA_THRES */
#define CCA_CS_THRES 4 /* Only in AT86RF212B */
#define CCA_ED_THRES 0
/* RX_CTRL */
#define JCM_EN 5
/* TRX_CTRL_2 */
#define RX_SAFE_MODE 7
#define TRX_OFF_AVDD_EN 6
#define OQPSK_SCRAM_EN 5
#define OQPSK_SUB1_RC_EN 4 /* Only in AT86RF212 */
#define ALT_SPECTRUM 4 /* Only in AT86RF212B */
#define BPSK_OQPSK 3
#define SUB_MODE 2
#define OQPSK_DATA_RATE 0
#define PHY_MOD_BPSK20_CHAN_0 (0x00) //((0x00) || (0< 127)
#warning "Maximum application payload RX BUFFER SIZE is 94"
#endif
#else
#define RX_PACKET_SIZE (RX_BUFFER_SIZE+PROTOCOL_HEADER_SIZE+MY_ADDRESS_LENGTH+MY_ADDRESS_LENGTH+12)
#if (RX_PACKET_SIZE > 127)
#warning "Maximum application payload RX BUFFER SIZE is 99"
#endif
#endif
#if RX_PACKET_SIZE > 127
#undef RX_PACKET_SIZE
#define RX_PACKET_SIZE 127
#endif
#endif