| /** |
| \addtogroup INTERFACES |
| \{ |
| \addtogroup FTDF |
| \{ |
| \brief IEEE 802.15.4 Wireless |
| */ |
| /** |
| **************************************************************************************** |
| * |
| * @file ftdf.h |
| * |
| * @brief FTDF UMAC API header file |
| * |
| * Copyright (c) 2016, Dialog Semiconductor |
| * All rights reserved. |
| * Redistribution and use in source and binary forms, with or without modification, |
| * are permitted provided that the following conditions are met: |
| * 1. Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * 2. 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. |
| * 3. Neither the name of the copyright holder 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 FTDF_H_ |
| #define FTDF_H_ |
| |
| #include <stdint.h> |
| #ifdef FTDF_PHY_API |
| #include <ftdf_config_phy_api.h> |
| #else |
| #include <ftdf_config_mac_api.h> |
| #endif |
| |
| #define __private1 request |
| #define __private2 requestASN |
| #define __private3 requestSN |
| |
| #define FTDF_CAPABILITY_IS_FFD 0x02 |
| #define FTDF_CAPABILITY_AC_POWER 0x04 |
| #define FTDF_CAPABILITY_RECEIVER_ON_WHEN_IDLE 0x08 |
| #define FTDF_CAPABILITY_FAST_ASSOCIATION 0x10 |
| #define FTDF_CAPABILITY_SUPPORTS_SECURITY 0x40 |
| #define FTDF_CAPABILITY_WANTS_SHORT_ADDRESS 0x80 |
| |
| #define FTDF_TRANSPARENT_USE_WAIT_FOR_ACK 1 |
| |
| // Transparency options |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_0 0x00000001 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_1 0x00000002 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_2 0x00000004 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_3 0x00000008 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_4 0x00000010 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_5 0x00000020 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_6 0x00000040 |
| #define FTDF_TRANSPARENT_PASS_FRAME_TYPE_7 0x00000080 |
| #define FTDF_TRANSPARENT_PASS_ALL_FRAME_TYPES 0x000000ff |
| #define FTDF_TRANSPARENT_AUTO_ACK 0x00000100 |
| #define FTDF_TRANSPARENT_AUTO_FP_ACK 0x00000200 |
| #define FTDF_TRANSPARENT_PASS_CRC_ERROR 0x00000400 |
| #define FTDF_TRANSPARENT_PASS_ALL_FRAME_VERSION 0x00001000 |
| #define FTDF_TRANSPARENT_PASS_ALL_PAN_ID 0x00002000 |
| #define FTDF_TRANSPARENT_PASS_ALL_ADDR 0x00004000 |
| #define FTDF_TRANSPARENT_PASS_ALL_BEACON 0x00008000 |
| #define FTDF_TRANSPARENT_PASS_ALL_NO_DEST_ADDR 0x00010000 |
| #define FTDF_TRANSPARENT_ENABLE_CSMA_CA 0x01000000 |
| #define FTDF_TRANSPARENT_ENABLE_FCS_GENERATION 0x02000000 |
| #define FTDF_TRANSPARENT_ENABLE_SECURITY 0x04000000 |
| #if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK |
| #define FTDF_TRANSPARENT_WAIT_FOR_ACK 0x08000000 |
| #endif |
| |
| // Transparent TX statuses |
| #define FTDF_TRANSPARENT_SEND_SUCCESSFUL 0x00000000 |
| #define FTDF_TRANSPARENT_CSMACA_FAILURE 0x00000001 |
| #define FTDF_TRANSPARENT_OVERFLOW 0x00000002 |
| #if FTDF_TRANSPARENT_WAIT_FOR_ACK |
| #define FTDF_TRANSPARENT_NO_ACK 0x00000004 |
| #endif |
| |
| // Transparent RX statuses |
| #define FTDF_TRANSPARENT_RCV_SUCCESSFUL 0x00000000 |
| #define FTDF_TRANSPARENT_RCV_CRC_ERROR 0x00000001 |
| #define FTDF_TRANSPARENT_RCV_SECURITY_ERROR 0x00000002 |
| #define FTDF_TRANSPARENT_RCV_RES_FRAMETYPE 0x00000004 |
| #define FTDF_TRANSPARENT_RCV_RES_FRAME_VERSION 0x00000008 |
| #define FTDF_TRANSPARENT_RCV_UNEXP_DST_ADDR 0x00000010 |
| #define FTDF_TRANSPARENT_RCV_UNEXP_DST_PAN_ID 0x00000020 |
| #define FTDF_TRANSPARENT_RCV_UNEXP_BEACON 0x00000040 |
| #define FTDF_TRANSPARENT_RCV_UNEXP_NO_DEST_ADDR 0x00000080 |
| |
| typedef uint8_t FTDF_MsgId; |
| #define FTDF_DATA_REQUEST 1 |
| #define FTDF_DATA_INDICATION 2 |
| #define FTDF_DATA_CONFIRM 3 |
| #define FTDF_PURGE_REQUEST 4 |
| #define FTDF_PURGE_CONFIRM 5 |
| #define FTDF_ASSOCIATE_REQUEST 6 |
| #define FTDF_ASSOCIATE_INDICATION 7 |
| #define FTDF_ASSOCIATE_RESPONSE 8 |
| #define FTDF_ASSOCIATE_CONFIRM 9 |
| #define FTDF_DISASSOCIATE_REQUEST 10 |
| #define FTDF_DISASSOCIATE_INDICATION 11 |
| #define FTDF_DISASSOCIATE_CONFIRM 12 |
| #define FTDF_BEACON_NOTIFY_INDICATION 13 |
| #define FTDF_COMM_STATUS_INDICATION 14 |
| #define FTDF_GET_REQUEST 15 |
| #define FTDF_GET_CONFIRM 16 |
| #define FTDF_SET_REQUEST 17 |
| #define FTDF_SET_CONFIRM 18 |
| #define FTDF_GTS_REQUEST 19 |
| #define FTDF_GTS_CONFIRM 20 |
| #define FTDF_GTS_INDICATION 21 |
| #define FTDF_ORPHAN_INDICATION 22 |
| #define FTDF_ORPHAN_RESPONSE 23 |
| #define FTDF_RESET_REQUEST 24 |
| #define FTDF_RESET_CONFIRM 25 |
| #define FTDF_RX_ENABLE_REQUEST 26 |
| #define FTDF_RX_ENABLE_CONFIRM 27 |
| #define FTDF_SCAN_REQUEST 28 |
| #define FTDF_SCAN_CONFIRM 29 |
| #define FTDF_START_REQUEST 30 |
| #define FTDF_START_CONFIRM 31 |
| #define FTDF_SYNC_REQUEST 32 |
| #define FTDF_SYNC_LOSS_INDICATION 33 |
| #define FTDF_POLL_REQUEST 34 |
| #define FTDF_POLL_CONFIRM 35 |
| #define FTDF_SET_SLOTFRAME_REQUEST 36 |
| #define FTDF_SET_SLOTFRAME_CONFIRM 37 |
| #define FTDF_SET_LINK_REQUEST 38 |
| #define FTDF_SET_LINK_CONFIRM 39 |
| #define FTDF_TSCH_MODE_REQUEST 40 |
| #define FTDF_TSCH_MODE_CONFIRM 41 |
| #define FTDF_KEEP_ALIVE_REQUEST 42 |
| #define FTDF_KEEP_ALIVE_CONFIRM 43 |
| #define FTDF_BEACON_REQUEST 44 |
| #define FTDF_BEACON_CONFIRM 45 |
| #define FTDF_BEACON_REQUEST_INDICATION 46 |
| #define FTDF_TRANSPARENT_CONFIRM 47 |
| #define FTDF_TRANSPARENT_INDICATION 48 |
| #define FTDF_TRANSPARENT_REQUEST 49 |
| #define FTDF_TRANSPARENT_ENABLE_REQUEST 50 |
| #define FTDF_SLEEP_REQUEST 51 |
| #define FTDF_EXPLICIT_WAKE_UP 52 |
| #define FTDF_REMOTE_REQUEST 53 |
| #if FTDF_DBG_BUS_ENABLE |
| #define FTDF_DBG_MODE_SET_REQUEST 54 |
| #endif /* FTDF_DBG_BUS_ENABLE */ |
| #if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A |
| #define FTDF_FPPR_MODE_SET_REQUEST 55 |
| #endif /* dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A */ |
| /** |
| * \brief Request status |
| * \remark Valid statuses: |
| * - FTDF_SUCCESS: Successful |
| * - FTDF_CHANNEL_ACCESS_FAILURE: CCA failure |
| * - FTDF_NO_ACK: No ack received after macMaxFrameRetries |
| * - FTDF_NO_DATA: No data frames pending |
| * - FTDF_COUNTER_ERROR: Security frame counter error |
| * - FTDF_FRAME_TOO_LONG: Too long frame |
| * - FTDF_IMPROPER_KEY_TYPE: Improper key type |
| * - FTDF_IMPROPER_SECURITY_LEVEL: Improper security level |
| * - FTDF_SECURITY_ERROR: Security authentication error |
| * - FTDF_UNAVAILABLE_KEY: Unavailable key |
| * - FTDF_UNAVAILABLE_DEVICE: Unavailable device |
| * - FTDF_UNAVAILABLE_SECURITY_LEVEL: Unavailable security level |
| * - FTDF_UNSUPPORTED_LEGACY: Unsupported legacy |
| * - FTDF_UNSUPPORTED_SECURITY: Unsupporteds security |
| * - FTDF_INVALID_PARAMETER: Invalid parameter |
| * - FTDF_TRANSACTION_OVERFLOW: Transaction overflow |
| * - FTDF_TRANSACTION_EXPIRED: Transaction expired |
| * - FTDF_NO_BEACON: No beacon received |
| * - FTDF_SCAN_IN_PROGRESS: Scan in progress |
| * - FTDF_NO_SHORT_ADDRESS: FTDF does not have a short address |
| * - FTDF_SLOTFRAME_NOT_FOUND: Slotframe not found |
| * - FTDF_MAX_SLOTFRAMES_EXCEEDED: Max slotframes exceeded |
| * - FTDF_UNKNOWN_LINK: Unknown link |
| * - FTDF_MAX_LINKS_EXCEEDED: Max links exceeded |
| * - FTDF_UNSUPPORTED_ATTRIBUTE: Unsupported PIB attribute |
| * - FTDF_READ_ONLY: Read onli PIB attribute |
| * - FTDF_INVALID_HANDLE: Invalid handle |
| * - FTDF_PAN_AT_CAPACITY: PAN at capacity |
| * - FTDF_PAN_ACCESS_DENIED: PAN access denied |
| * - FTDF_HOPPING_SEQUENCE_OFFSET_DUPLICATION: Hopping sequence offset duplication |
| */ |
| typedef uint8_t FTDF_Status; |
| #define FTDF_SUCCESS 0 |
| #define FTDF_CHANNEL_ACCESS_FAILURE 1 |
| #define FTDF_NO_ACK 2 |
| #define FTDF_NO_DATA 3 |
| #define FTDF_COUNTER_ERROR 4 |
| #define FTDF_FRAME_TOO_LONG 5 |
| #define FTDF_IMPROPER_KEY_TYPE 6 |
| #define FTDF_IMPROPER_SECURITY_LEVEL 7 |
| #define FTDF_SECURITY_ERROR 8 |
| #define FTDF_UNAVAILABLE_KEY 9 |
| #define FTDF_UNAVAILABLE_DEVICE 10 |
| #define FTDF_UNAVAILABLE_SECURITY_LEVEL 11 |
| #define FTDF_UNSUPPORTED_LEGACY 12 |
| #define FTDF_UNSUPPORTED_SECURITY 13 |
| #define FTDF_INVALID_PARAMETER 14 |
| #define FTDF_TRANSACTION_OVERFLOW 15 |
| #define FTDF_TRANSACTION_EXPIRED 16 |
| #define FTDF_ON_TIME_TOO_LONG 17 |
| #define FTDF_LIMIT_REACHED 18 |
| #define FTDF_NO_BEACON 19 |
| #define FTDF_SCAN_IN_PROGRESS 20 |
| #define FTDF_INVALID_INDEX 21 |
| #define FTDF_NO_SHORT_ADDRESS 22 |
| #define FTDF_SUPERFRAME_OVERLAP 23 |
| #define FTDF_TRACKING_OFF 24 |
| #define FTDF_SLOTFRAME_NOT_FOUND 25 |
| #define FTDF_MAX_SLOTFRAMES_EXCEEDED 26 |
| #define FTDF_UNKNOWN_LINK 27 |
| #define FTDF_MAX_LINKS_EXCEEDED 28 |
| #define FTDF_UNSUPPORTED_ATTRIBUTE 29 |
| #define FTDF_READ_ONLY 30 |
| #define FTDF_INVALID_HANDLE 31 |
| #define FTDF_PAN_AT_CAPACITY 32 |
| #define FTDF_PAN_ACCESS_DENIED 33 |
| #define FTDF_HOPPING_SEQUENCE_OFFSET_DUPLICATION 34 |
| |
| /** |
| * \brief Association status |
| * \remark Supported statuses: |
| * - FTDF_ASSOCIATION_SUCCESSFUL: Associate request granted |
| * - FTDF_ASSOCIATION_PAN_AT_CAPACITY: Asscociate denied, PAN at capacity |
| * - FTDF_ASSOCIATION_PAN_ACCESS_DENIED: Associate denied |
| * - FTDF_FAST_ASSOCIATION_SUCCESSFUL: Associate request granted (fast) |
| */ |
| typedef uint8_t FTDF_AssociationStatus; |
| #define FTDF_ASSOCIATION_SUCCESSFUL 0x00 |
| #define FTDF_ASSOCIATION_PAN_AT_CAPACITY 0x01 |
| #define FTDF_ASSOCIATION_PAN_ACCESS_DENIED 0x02 |
| #define FTDF_ASSOCIATION_HOPPING_SEQUENCE_OFFSET_DUPLICATION 0x03 |
| #define FTDF_FAST_ASSOCIATION_SUCCESSFUL 0x80 |
| |
| /** |
| * \brief Address mode |
| * \remark Supported address modes: |
| * - FTDF_NO_ADDRESS |
| * - FTDF_SHORT_ADDRESS |
| * - FTDF_EXTENDED_ADDRESS |
| */ |
| typedef uint8_t FTDF_AddressMode; |
| #define FTDF_NO_ADDRESS 0 |
| #define FTDF_SIMPLE_ADDRESS 1 |
| #define FTDF_SHORT_ADDRESS 2 |
| #define FTDF_EXTENDED_ADDRESS 3 |
| |
| /** |
| * \brief PAN ID |
| * \remark Range 0.. 65535 |
| */ |
| typedef uint16_t FTDF_PANId; |
| |
| typedef uint8_t FTDF_SimpleAddress; |
| |
| /** |
| * \brief Short address |
| * \remark Range 00:00 - ff:ff |
| */ |
| typedef uint16_t FTDF_ShortAddress; |
| |
| /** |
| * \brief Extended address |
| * \remark Range 00:00:00:00:00:00:00:00 - ff:ff:ff:ff:ff:ff:ff:ff |
| */ |
| typedef uint64_t FTDF_ExtAddress; |
| |
| typedef union |
| { |
| /** \brief DO NOT USE */ |
| FTDF_SimpleAddress simpleAddress; |
| /** \brief Short address */ |
| FTDF_ShortAddress shortAddress; |
| /** \brief Extended address */ |
| FTDF_ExtAddress extAddress; |
| } FTDF_Address; |
| |
| #ifdef SIMULATOR |
| typedef uint16_t FTDF_DataLength; |
| #else |
| typedef uint8_t FTDF_DataLength; |
| #endif |
| |
| /** |
| * \brief Handle |
| * \remark Range 0..255 |
| */ |
| typedef uint8_t FTDF_Handle; |
| |
| /** |
| * \brief Boolean |
| * \remark Valid values: |
| * - FTDF_FALSE |
| * - FTDF_TRUE |
| */ |
| typedef uint8_t FTDF_Boolean; |
| #define FTDF_FALSE 0 |
| #define FTDF_TRUE 1 |
| |
| /** |
| * \brief Security level |
| * \remark Valid range 0..7 |
| */ |
| typedef uint8_t FTDF_SecurityLevel; |
| |
| /** |
| * \brief Security key ID mode |
| * \remark Valid range 0..3 |
| */ |
| typedef uint8_t FTDF_KeyIdMode; |
| |
| /** |
| * \brief Security key index |
| * \remark Valid range 0..255 |
| */ |
| typedef uint8_t FTDF_KeyIndex; |
| |
| /** |
| * \brief Sequence number |
| * \remark Valid range 0..255 |
| */ |
| typedef uint8_t FTDF_SN; |
| |
| /** |
| * \brief Sequence number |
| * \remark Valid range 0..0xffffffffff (5 octets) |
| */ |
| typedef uint64_t FTDF_ASN; |
| |
| /** |
| * \brief Order |
| */ |
| typedef uint8_t FTDF_Order; |
| |
| /** |
| * \brief Time |
| * \remark Timestamp in symbols which wraps around every 0x100000000 symbols |
| */ |
| typedef uint32_t FTDF_Time; |
| |
| /** |
| * \brief Real time |
| * \remark Timestamp in symbols which does not wrap (in the lifetime of the device) |
| */ |
| typedef uint64_t FTDF_Time64; |
| |
| typedef uint32_t FTDF_USec; |
| |
| typedef uint64_t FTDF_PSec; |
| |
| typedef uint32_t FTDF_NrLowPowerClockCycles; |
| |
| typedef uint8_t FTDF_NrBackoffPeriods; |
| |
| /** |
| * \brief Period of time |
| * \remark Range 0..65535 |
| */ |
| typedef uint16_t FTDF_Period; |
| |
| /** |
| * \brief Size type |
| */ |
| typedef uint8_t FTDF_Size; |
| |
| /** |
| * \brief Length type |
| */ |
| typedef uint8_t FTDF_Length; |
| |
| /** |
| * \brief Priority type |
| */ |
| typedef uint8_t FTDF_Priority; |
| |
| /** |
| * \brief Performance counter |
| * \remark Range 0..0xffffffff |
| */ |
| typedef uint32_t FTDF_Count; |
| |
| /** |
| * \brief Disassociate reason |
| * \remark Allowed values: |
| * - FTDF_COORD_WISH_DEVICE_LEAVE_PAN: Coordinator wishes that device leaves PAN |
| * - FTDF_DEVICE_WISH_LEAVE_PAN: Device wishes to leave PAN |
| */ |
| typedef uint8_t FTDF_DisassociateReason; |
| #define FTDF_COORD_WISH_DEVICE_LEAVE_PAN 1 |
| #define FTDF_DEVICE_WISH_LEAVE_PAN 2 |
| |
| /** |
| * \brief Beacon type |
| * \remark Allowed values: |
| * - FTDF_NORMAL_BEACON: Normal beacon |
| * - FTDF_ENHANCED_BEACON: Enhanced beacon |
| */ |
| typedef uint8_t FTDF_BeaconType; |
| #define FTDF_NORMAL_BEACON 0 |
| #define FTDF_ENHANCED_BEACON 1 |
| |
| // MAC constants |
| /** \brief aBaseSlotDuration */ |
| #define FTDF_BASE_SLOT_DURATION 60 |
| /** \brief aNumSuperframeSlots */ |
| #define FTDF_NUM_SUPERFRAME_SLOTS 16 |
| /** \brief aBaseSuperframeDuration */ |
| #define FTDF_BASE_SUPERFRAME_DURATION ( FTDF_BASE_SLOT_DURATION * FTDF_NUM_SUPERFRAME_SLOTS ) |
| /** \brief NOT USED */ |
| #define FTDF_GTS_PERSISTENCE_TIME 4 |
| /** \brief aMaxBeaconOverhead */ |
| #define FTDF_MAX_BEACON_OVERHEAD 75 |
| /** \brief aMaxBeaconOverhead */ |
| #define FTDF_MAX_PHY_PACKET_SIZE 127 |
| /** \brief aMaxPHYPacketSize */ |
| #define FTDF_MAX_BEACON_PAYLOAD_LENGTH ( FTDF_MAX_PHY_PACKET_SIZE - FTDF_MAX_BEACON_OVERHEAD ) |
| /** \brief NOT USED */ |
| #define FTDF_MAX_LOST_BEACONS 4 |
| /** \brief aMaxMPDUUnsecuredOverhead */ |
| #define FTDF_MAX_MPDU_UNSECURED_OVERHEAD 25 |
| /** \brief aMinMPDUOverhead */ |
| #define FTDF_MIN_MPDU_OVERHEAD 9 |
| /** \brief aMaxMACSafePayloadSize */ |
| #define FTDF_MAX_MAC_SAFE_PAYLOAD_SIZE ( FTDF_MAX_PHY_PACKET_SIZE - FTDF_MAX_MPDU_UNSECURED_OVERHEAD ) |
| /** \brief aMaxMACSafePayloadSize */ |
| #define FTDF_MAX_PAYLOAD_SIZE ( FTDF_MAX_PHY_PACKET_SIZE - FTDF_MIN_MPDU_OVERHEAD ) |
| /** \brief aMaxMACPayloadSize */ |
| #define FTDF_MAX_SIFS_FRAME_SIZE 18 |
| /** \brief NOT USED */ |
| #define FTDF_MIN_CAP_LENGTH 440 |
| /** \brief aUnitBackoffPeriod */ |
| #define FTDF_UNIT_BACKOFF_PERIOD 20 |
| |
| /** |
| * \brief PIB attribute ID |
| * \remark List of supported PIB attributes, their types/structures and description |
| * - FTDF_PIB_EXTENDED_ADDRESS, \link FTDF_ExtAddress \endlink, |
| * The extended address of the device |
| * - FTDF_PIB_ACK_WAIT_DURATION, \link FTDF_Period \endlink, The maximum time in symbols that is waited for an ack, Read only |
| * - FTDF_PIB_ASSOCIATION_PAN_COORD, \link FTDF_Boolean \endlink, Indication whether the device is associated with a PAN coordinator |
| * - FTDF_PIB_ASSOCIATION_PERMIT, \link FTDF_Boolean \endlink, Indication whether the PAN coordinator grats association requests |
| * - FTDF_PIB_AUTO_REQUEST, \link FTDF_Boolean \endlink, Indication whether beacon received while scanning are forwarded to the application or not |
| * - FTDF_PIB_BEACON_PAYLOAD, FTDF_Octet*, Pointer to the data to be included in a beacon as payload |
| * - FTDF_PIB_BEACON_PAYLOAD_LENGTH, \link FTDF_Size \endlink, Size of the data to be included in a beacon as payload |
| * - FTDF_PIB_BEACON_ORDER, \link FTDF_Order \endlink, Fixed to 15 indicating beaconless mode |
| * - FTDF_PIB_BSN, \link FTDF_SN \endlink, The current beacon sequence number |
| * - FTDF_PIB_COORD_EXTENDED_ADDRESS, \link FTDF_ExtAddress \endlink, The extended address of the coordinator |
| * - FTDF_PIB_COORD_SHORT_ADDRESS, \link FTDF_ShortAddress \endlink, The short address of the coordinator |
| * - FTDF_PIB_DSN, \link FTDF_SN \endlink, The current data sequence number |
| * - FTDF_PIB_MAX_BE, \link FTDF_BEExponent \endlink, The maximum backoff exponent |
| * - FTDF_PIB_MAX_CSMA_BACKOFFS, \link FTDF_Size \endlink, The maximum number of backoffs |
| * - FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME, \link FTDF_Period \endlink, The maximum time in symbols that RX is ON after that a frame is received with FP set. |
| * - FTDF_PIB_MAX_FRAME_RETRIES, \link FTDF_Size \endlink, The maximum number of frame retries |
| * - FTDF_PIB_MIN_BE, \link FTDF_BEExponent \endlink, The minimum backoff exponent |
| * - FTDF_PIB_LIFS_PERIOD, \link FTDF_Period \endlink, The long IFS period in number of symbols, Read oonly |
| * - FTDF_PIB_SIFS_PERIOD, \link FTDF_Period \endlink, The short IFS period in number of symbols, Read oonly |
| * - FTDF_PIB_PAN_ID, \link FTDF_PANId \endlink, The PAN ID of the device |
| * - FTDF_PIB_PROMISCUOUS_MODE, \link FTDF_Boolean \endlink, Indication whether the promiscuous is enable or not |
| * - FTDF_PIB_RESPONSE_WAIT_TIME, \link FTDF_Size \endlink, The maximum time in aBaseSuperFramePeriod's (960 symbols) that is waited for a command frame response |
| * - FTDF_PIB_RX_ON_WHEN_IDLE, \link FTDF_Boolean \endlink, Indication whether the receiver must be on when idle |
| * - FTDF_PIB_SECURITY_ENABLED, \link FTDF_Boolean \endlink, Indication whether the security is enabled |
| * - FTDF_PIB_SHORT_ADDRESS, \link FTDF_ShortAddress \endlink, The short address of the device |
| * - FTDF_PIB_SYNC_SYMBOL_OFFSET, \link FTDF_Period \endlink, The offset in symbols between the start of frame and that the timestamp is taken |
| * - FTDF_PIB_TIMESTAMP_SUPPORTED, \link FTDF_Boolean \endlink, Indication whether timestamping is supported |
| * - FTDF_PIB_TRANSACTION_PERSISTENCE_TIME, \link FTDF_Period \endlink, The maximum time in aBaseSuperFramePeriod's (960 symbols) that indirect data requests are queued |
| * - FTDF_PIB_ENH_ACK_WAIT_DURATION, \link FTDF_Period \endlink, The maximum time in symbols that is waited for an enhanced ack |
| * - FTDF_PIB_IMPLICIT_BROADCAST, \link FTDF_Boolean \endlink, Indication whether frames without a destination PAN are treated as broadcasts |
| * - FTDF_PIB_DISCONNECT_TIME, \link FTDF_Period \endlink, The time in timeslots that disassoctate frames are send before disconnecting |
| * - FTDF_PIB_JOIN_PRIORITY, \link FTDF_Priority \endlink, The join priority |
| * - FTDF_PIB_ASN, \link FTDF_ASN \endlink, The current ASN |
| * - FTDF_PIB_SLOTFRAME_TABLE, \link FTDF_SlotframeTable \endlink, The slotframe table, Read only |
| * - FTDF_PIB_LINK_TABLE, \link FTDF_LinkTable \endlink, The link table, Read only |
| * - FTDF_PIB_TIMESLOT_TEMPLATE, \link FTDF_TimeslotTemplate \endlink, The current timeslot template |
| * - FTDF_PIB_HOPPINGSEQUENCE_ID, \link FTDF_HoppingSequenceId \endlink, The ID of the current hopping sequence |
| * - FTDF_PIB_CHANNEL_PAGE, \link FTDF_ChannelPage \endlink, The current channel page |
| * - FTDF_PIB_HOPPING_SEQUENCE_LENGTH, \link FTDF_Length \endlink, Length of the current hopping sequence |
| * - FTDF_PIB_HOPPING_SEQUENCE_LIST, \link FTDF_ChannelNumber \endlink, Hopping sequence |
| * - FTDF_PIB_CURRENT_HOP, \link FTDF_Length \endlink, The current hop |
| * - FTDF_PIB_CSL_PERIOD, \link FTDF_Period \endlink, The CSL sample period in units of 10 symbols |
| * - FTDF_PIB_CSL_MAX_PERIOD, \link FTDF_Period \endlink, The maximum CSL sample period of devices in the PAN in units of 10 symbols |
| * - FTDF_PIB_CSL_CHANNEL_MASK, \link FTDF_Bitmap32 \endlink, Bitmapped list of channels to be sample in CSL mode |
| * - FTDF_PIB_CSL_FRAME_PENDING_WAIT_T, \link FTDF_Period \endlink, The maximum time in symbols that RX is ON after that a frame is received with FP set in CSL mode. |
| * - FTDF_PIB_PERFORMANCE_METRICS, \link FTDF_PerformanceMetrics \endlink, The performance metrics, Read only |
| * - FTDF_PIB_EB_IE_LIST, \link FTDF_IEList \endlink, Payload IE list to be added to an enhanced beacon |
| * - FTDF_PIB_EBSN, \link FTDF_SN \endlink, Current enhanced beacon sequence number |
| * - FTDF_PIB_EB_AUTO_SA, \link FTDF_AutoSA \endlink, Source address mode of auto generated enhanced beacons |
| * - FTDF_PIB_EACK_IE_LIST, \link FTDF_IEList \endlink, Payload IE list to be added to an enhanced ack |
| * - FTDF_PIB_KEY_TABLE, \link FTDF_KeyTable \endlink, Security key table |
| * - FTDF_PIB_DEVICE_TABLE, \link FTDF_DeviceTable \endlink, Security device table |
| * - FTDF_PIB_SECURITY_LEVEL_TABLE, \link FTDF_SecurityLevelTable \endlink, Security level table |
| * - FTDF_PIB_FRAME_COUNTER, \link FTDF_FrameCounter \endlink, Current security frame counter |
| * - FTDF_PIB_MT_DATA_SECURITY_LEVEL, \link FTDF_SecurityLevel \endlink, Security level for auto generated data frames |
| * - FTDF_PIB_MT_DATA_KEY_ID_MODE, \link FTDF_KeyIdMode \endlink, Security key ID mode for auto generated data frames |
| * - FTDF_PIB_MT_DATA_KEY_SOURCE, FTDF_Octet[ 8 ], Security key source for auto generated data frames |
| * - FTDF_PIB_MT_DATA_KEY_INDEX, \link FTDF_KeyIndex \endlink, Security key index for auto generated data frames |
| * - FTDF_PIB_DEFAULT_KEY_SOURCE, FTDF_Octet[ 8 ], Default key source |
| * - FTDF_PIB_FRAME_COUNTER_MODE, \link FTDF_FrameCounterMode \endlink, Security frame counter mode |
| * - FTDF_PIB_CSL_SYNC_TX_MARGIN, \link FTDF_Period \endlink, The margin in unit of 10 symbols used by FTDF in CSL mode in case of a synchronised transmission |
| * - FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO, \link FTDF_Period \endlink, The time in unit of 10 symbols after which FTDF discard the remote synchronisation info. |
| * - FTDF_PIB_TSCH_ENABLED, \link FTDF_Boolean \endlink, Indicates whether the TSCH mode is enabled or not, Read only |
| * - FTDF_PIB_LE_ENABLED, \link FTDF_Boolean \endlink, Indicates whether the CSL mode is enabled or not |
| * - FTDF_PIB_CURRENT_CHANNEL, \link FTDF_ChannelNumber \endlink, The current channel used by FTDF |
| * - FTDF_PIB_CHANNELS_SUPPORTED, \link FTDF_ChannelDescriptorList \endlink, List of channels supported by FTDF |
| * - FTDF_PIB_TX_POWER_TOLERANCE, \link FTDF_TXPowerTolerance \endlink, TX power tolerance |
| * - FTDF_PIB_TX_POWER, \link FTDF_DBm \endlink, TX power |
| * - FTDF_PIB_CCA_MODE, \link FTDF_CCAMode \endlink, CCA mode |
| * - FTDF_PIB_CURRENT_PAGE, \link FTDF_ChannelPage \endlink, Current channel page |
| * - FTDF_PIB_MAX_FRAME_DURATION, \link FTDF_Period \endlink, The maximum number of symbols in frame, Read only |
| * - FTDF_PIB_SHR_DURATION, \link FTDF_Period \endlink, Synchronisation header length in symbols, Read only |
| * - FTDF_PIB_TRAFFIC_COUNTERS, \link FTDF_TrafficCounters \endlink, Miscelaneous traffic counters, Read only |
| * - FTDF_PIB_LE_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports LE (CSL), Read only |
| * - FTDF_PIB_LL_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports LL, Read only |
| * - FTDF_PIB_DSME_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports DSME, Read only |
| * - FTDF_PIB_RFID_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports RFID, Read only |
| * - FTDF_PIB_AMCA_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports AMCA, Read only |
| * - FTDF_PIB_TSCH_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports FTDF, Read only |
| * - FTDF_PIB_METRICS_CAPABLE, \link FTDF_Boolean \endlink, Indicates whether FTDF supports metrics, Read only |
| * - FTDF_PIB_RANGING_SUPPORTED, \link FTDF_Boolean \endlink, Indicates whether FTDF supports ranging, Read only |
| * - FTDF_PIB_KEEP_PHY_ENABLED, \link FTDF_Boolean \endlink, Indicates whether the PHY must be kept enabled |
| * - FTDF_PIB_METRICS_ENABLED, \link FTDF_Boolean \endlink, Indicates whether metrics are enabled or not |
| * - FTDF_PIB_BEACON_AUTO_RESPOND, \link FTDF_Boolean \endlink, Indicates whether FTDF must send automatically a beacon at a BECAON_REQUEST command frame or must forward the request to the application using FTDF_BEACON_REQUEST_INDICATION. |
| * - FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD, \link FTDF_Period \endlink, The minimum TSCH slot sync offset in microseconds before resyncing |
| */ |
| typedef uint8_t FTDF_PIBAttribute; |
| // See Table 52 "MAC PIB attributes" of IEEE 802.15.4-2011 and IEEE 802.15.4e-2012 for more details |
| |
| // NOTE: Be careful with changing the order of these PIB attributes because initialization of related |
| // registers will be done in the order defined here. |
| #define FTDF_PIB_EXTENDED_ADDRESS 1 |
| #define FTDF_PIB_ACK_WAIT_DURATION 2 |
| #define FTDF_PIB_ASSOCIATION_PAN_COORD 3 |
| #define FTDF_PIB_ASSOCIATION_PERMIT 4 |
| #define FTDF_PIB_AUTO_REQUEST 5 |
| #define FTDF_PIB_BATT_LIFE_EXT 6 |
| #define FTDF_PIB_BATT_LIFE_EXT_PERIODS 7 |
| #define FTDF_PIB_BEACON_PAYLOAD 8 |
| #define FTDF_PIB_BEACON_PAYLOAD_LENGTH 9 |
| #define FTDF_PIB_BEACON_ORDER 10 |
| #define FTDF_PIB_BEACON_TX_TIME 11 |
| #define FTDF_PIB_BSN 12 |
| #define FTDF_PIB_COORD_EXTENDED_ADDRESS 13 |
| #define FTDF_PIB_COORD_SHORT_ADDRESS 14 |
| #define FTDF_PIB_DSN 15 |
| #define FTDF_PIB_GTS_PERMIT 16 |
| #define FTDF_PIB_MAX_BE 17 |
| #define FTDF_PIB_MAX_CSMA_BACKOFFS 18 |
| #define FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME 19 |
| #define FTDF_PIB_MAX_FRAME_RETRIES 20 |
| #define FTDF_PIB_MIN_BE 21 |
| #define FTDF_PIB_LIFS_PERIOD 22 |
| #define FTDF_PIB_SIFS_PERIOD 23 |
| #define FTDF_PIB_PAN_ID 24 |
| #define FTDF_PIB_PROMISCUOUS_MODE 25 |
| #define FTDF_PIB_RESPONSE_WAIT_TIME 26 |
| #define FTDF_PIB_RX_ON_WHEN_IDLE 27 |
| #define FTDF_PIB_SECURITY_ENABLED 28 |
| #define FTDF_PIB_SHORT_ADDRESS 29 |
| #define FTDF_PIB_SUPERFRAME_ORDER 30 |
| #define FTDF_PIB_SYNC_SYMBOL_OFFSET 31 |
| #define FTDF_PIB_TIMESTAMP_SUPPORTED 32 |
| #define FTDF_PIB_TRANSACTION_PERSISTENCE_TIME 33 |
| #define FTDF_PIB_TX_CONTROL_ACTIVE_DURATION 34 |
| #define FTDF_PIB_TX_CONTROL_PAUSE_DURATION 35 |
| #define FTDF_PIB_ENH_ACK_WAIT_DURATION 36 |
| #define FTDF_PIB_IMPLICIT_BROADCAST 37 |
| #define FTDF_PIB_SIMPLE_ADDRESS 38 |
| #define FTDF_PIB_DISCONNECT_TIME 39 |
| #define FTDF_PIB_JOIN_PRIORITY 40 |
| #define FTDF_PIB_ASN 41 |
| #define FTDF_PIB_NO_HL_BUFFERS 42 |
| #define FTDF_PIB_SLOTFRAME_TABLE 43 |
| #define FTDF_PIB_LINK_TABLE 44 |
| #define FTDF_PIB_TIMESLOT_TEMPLATE 45 |
| #define FTDF_PIB_HOPPINGSEQUENCE_ID 46 |
| #define FTDF_PIB_CHANNEL_PAGE 47 |
| #define FTDF_PIB_NUMBER_OF_CHANNELS 48 |
| #define FTDF_PIB_PHY_CONFIGURATION 49 |
| #define FTDF_PIB_EXTENTED_BITMAP 50 |
| #define FTDF_PIB_HOPPING_SEQUENCE_LENGTH 51 |
| #define FTDF_PIB_HOPPING_SEQUENCE_LIST 52 |
| #define FTDF_PIB_CURRENT_HOP 53 |
| #define FTDF_PIB_DWELL_TIME 54 |
| #define FTDF_PIB_CSL_PERIOD 55 |
| #define FTDF_PIB_CSL_MAX_PERIOD 56 |
| #define FTDF_PIB_CSL_CHANNEL_MASK 57 |
| #define FTDF_PIB_CSL_FRAME_PENDING_WAIT_T 58 |
| #define FTDF_PIB_LOW_ENERGY_SUPERFRAME_SUPPORTED 59 |
| #define FTDF_PIB_LOW_ENERGY_SUPERFRAME_SYNC_INTERVAL 60 |
| #define FTDF_PIB_PERFORMANCE_METRICS 61 |
| #define FTDF_PIB_USE_ENHANCED_BEACON 62 |
| #define FTDF_PIB_EB_IE_LIST 63 |
| #define FTDF_PIB_EB_FILTERING_ENABLED 64 |
| #define FTDF_PIB_EBSN 65 |
| #define FTDF_PIB_EB_AUTO_SA 66 |
| #define FTDF_PIB_EACK_IE_LIST 67 |
| #define FTDF_PIB_KEY_TABLE 68 |
| #define FTDF_PIB_DEVICE_TABLE 69 |
| #define FTDF_PIB_SECURITY_LEVEL_TABLE 70 |
| #define FTDF_PIB_FRAME_COUNTER 71 |
| #define FTDF_PIB_MT_DATA_SECURITY_LEVEL 72 |
| #define FTDF_PIB_MT_DATA_KEY_ID_MODE 73 |
| #define FTDF_PIB_MT_DATA_KEY_SOURCE 74 |
| #define FTDF_PIB_MT_DATA_KEY_INDEX 75 |
| #define FTDF_PIB_DEFAULT_KEY_SOURCE 76 |
| #define FTDF_PIB_PAN_COORD_EXTENDED_ADDRESS 77 |
| #define FTDF_PIB_PAN_COORD_SHORT_ADDRESS 78 |
| #define FTDF_PIB_FRAME_COUNTER_MODE 79 |
| #define FTDF_PIB_CSL_SYNC_TX_MARGIN 80 |
| #define FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO 81 |
| #define FTDF_PIB_TSCH_ENABLED 82 |
| #define FTDF_PIB_LE_ENABLED 83 |
| |
| // See Table 71 "PHY PIB attributes" of IEEE 802.15.4-2011 for more details |
| #define FTDF_PIB_CURRENT_CHANNEL 84 |
| #define FTDF_PIB_CHANNELS_SUPPORTED 85 |
| #define FTDF_PIB_TX_POWER_TOLERANCE 86 |
| #define FTDF_PIB_TX_POWER 87 |
| #define FTDF_PIB_CCA_MODE 88 |
| #define FTDF_PIB_CURRENT_PAGE 89 |
| #define FTDF_PIB_MAX_FRAME_DURATION 90 |
| #define FTDF_PIB_SHR_DURATION 91 |
| |
| #define FTDF_PIB_TRAFFIC_COUNTERS 92 |
| #define FTDF_PIB_LE_CAPABLE 93 |
| #define FTDF_PIB_LL_CAPABLE 94 |
| #define FTDF_PIB_DSME_CAPABLE 95 |
| #define FTDF_PIB_RFID_CAPABLE 96 |
| #define FTDF_PIB_AMCA_CAPABLE 97 |
| #define FTDF_PIB_METRICS_CAPABLE 98 |
| #define FTDF_PIB_RANGING_SUPPORTED 99 |
| #define FTDF_PIB_KEEP_PHY_ENABLED 100 |
| #define FTDF_PIB_METRICS_ENABLED 101 |
| #define FTDF_PIB_BEACON_AUTO_RESPOND 102 |
| #define FTDF_PIB_TSCH_CAPABLE 103 |
| #define FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD 104 |
| |
| /* Proprietary PIB. */ |
| #if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A |
| #define FTDF_PIB_BO_IRQ_THRESHOLD 105 |
| #define FTDF_PIB_PTI_CONFIG 106 |
| #endif /* dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A */ |
| |
| // Total number of PIB attributes |
| #if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A |
| #define FTDF_NR_OF_PIB_ATTRIBUTES 106 |
| #else /* dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A */ |
| #define FTDF_NR_OF_PIB_ATTRIBUTES 104 |
| #endif /* dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A */ |
| |
| /* Default values */ |
| #ifndef FTDF_BO_IRQ_THRESHOLD |
| #define FTDF_BO_IRQ_THRESHOLD 0xff |
| #endif |
| |
| #if FTDF_DBG_BUS_ENABLE |
| /** |
| * \brief Debug bus mode. |
| * |
| */ |
| typedef uint8_t FTDF_DbgMode; |
| |
| /** |
| * \brief Disable debug signals |
| */ |
| #define FTDF_DBG_DISABLE 0x00 |
| |
| /** |
| * \brief Legacy debug mode |
| * diagnose bus bit 7 = ed_request |
| * diagnose bus bit 6 = gen_irq |
| * diagnose bus bit 5 = tx_en |
| * diagnose bus bit 4 = rx_en |
| * diagnose bus bit 3 = phy_en |
| * diagnose bus bit 2 = tx_valid |
| * diagnose bus bit 1 = rx_sof |
| * diagnose bus bit 0 = rx_eof |
| */ |
| #define FTDF_DBG_LEGACY 0x01 |
| |
| /** |
| * \brief Clocks and reset |
| * diagnose bus bit 7-3 = "00000" |
| * diagnose bus bit 2 = lp_clk divide by 2 |
| * diagnose bus bit 1 = mac_clk divide by 2 |
| * diagnose bus bit 0 = hclk divided by 2 |
| */ |
| #define FTDF_DBG_CLK_RESET 0x02 |
| |
| /** |
| * \brief Rx phy signals |
| * diagnose_bus bit 7 = rx_enable towards the rx_pipeline |
| * diagnose bus bit 6 = rx_sof from phy |
| * diagnose bus bit 5-2 = rx_data from phy |
| * diagnose bus bit 1 = rx_eof to phy |
| * diagnose bus bit 0 = rx_sof event from rx_mac_timing block |
| */ |
| #define FTDF_DBG_RX_PHY_SIGNALS 0x10 |
| |
| /** |
| * \brief Rx sof and length |
| * diagnose_bus bit 7 = rx_sof |
| * diagnose bus bit 6-0 = rx_mac_length from rx_mac_timing block |
| */ |
| #define FTDF_DBG_RX_SOF_AND_LENGTH 0x11 |
| |
| /** |
| * \brief Rx mac timing output |
| * diagnose_bus bit 7 = Enable from rx_mac_timing block |
| * diagnose bus bit 6 = Sop from rx_mac_timing block |
| * diagnose bus bit 5 = Eop from rx_mac_timing block |
| * diagnose bus bit 4 = Crc from rx_mac_timing block |
| * diagnose bus bit 3 = Err from rx_mac_timing block |
| * diagnose bus bit 2 = Drop from rx_mac_timing block |
| * diagnose bus bit 1 = Forward from rx_mac_timing block |
| * diagnose bus bit 0 = rx_sof |
| */ |
| #define FTDF_DBG_RX_MAC_TIMING_OUTPUT 0x12 |
| |
| /** |
| * \brief Rx mac frame parser output |
| * diagnose_bus bit 7 = Enable from mac_frame_parser block |
| * diagnose bus bit 6 = Sop from mac_frame_parser block |
| * diagnose bus bit 5 = Eop from mac_frame_parser block |
| * diagnose bus bit 4 = Crc from mac_frame_parser block |
| * diagnose bus bit 3 = Err from mac_frame_parser block |
| * diagnose bus bit 2 = Drop from mac_frame_parser block |
| * diagnose bus bit 1 = Forward from mac_frame_parser block |
| * diagnose bus bit 0 = rx_sof |
| */ |
| #define FTDF_DBG_RX_MAC_FRAME_PARSER_OUTPUT 0x13 |
| |
| /** |
| * \brief Rx status to Umac |
| * diagnose_bus bit 7 = rx_frame_stat_umac.crc16_error |
| * diagnose bus bit 6 = rx_frame_stat_umac.res_frm_type_error |
| * diagnose bus bit 5 = rx_frame_stat_umac.res_frm_version_error |
| * diagnose bus bit 4 = rx_frame_stat_umac.dpanid_error |
| * diagnose bus bit 3 = rx_frame_stat_umac.daddr_error |
| * diagnose bus bit 2 = rx_frame_stat_umac.spanid_error |
| * diagnose bus bit 1 = rx_frame_stat_umac.ispan_coord_error |
| * diagnose bus bit 0 = rx_sof |
| */ |
| #define FTDF_DBG_RX_STATUS_TO_UMAC 0x14 |
| |
| /** |
| * \brief Rx status to lmac |
| * diagnose_bus bit 7 = rx_frame_stat.packet_valid |
| * diagnose bus bit 6 = rx_frame_stat.rx_sof_e |
| * diagnose bus bit 5 = rx_frame_stat.rx_eof_e |
| * diagnose bus bit 4 = rx_frame_stat.wakeup_frame |
| * diagnose bus bit 3-1 = rx_frame_stat.frame_type |
| * diagnose bus bit 0 = rx_frame_stat.rx_sqnr_valid |
| */ |
| #define FTDF_DBG_RX_STATUS_TO_LMAC 0x15 |
| |
| /** |
| * \brief Rx buffer control |
| * diagnose_bus bit 7-4 = prov_from_swio.rx_read_buf_ptr |
| * diagnose bus bit 3-0 = stat_to_swio.rx_write_buf_ptr |
| */ |
| #define FTDF_DBG_RX_BUFFER_CONTROL 0x16 |
| |
| /** |
| * \brief Rx interrupts |
| * diagnose_bus bit 7 = stat_to_swio.rx_buf_avail_e |
| * diagnose bus bit 6 = stat_to_swio.rx_buf_full |
| * diagnose bus bit 5 = stat_to_swio.rx_buf_overflow_e |
| * diagnose bus bit 4 = stat_to_swio.rx_sof_e |
| * diagnose bus bit 3 = stat_to_swio.rxbyte_e |
| * diagnose bus bit 2 = rx_frame_ctrl.rx_enable |
| * diagnose bus bit 1 = rx_eof |
| * diagnose bus bit 0 = rx_sof |
| */ |
| #define FTDF_DBG_RX_INTERRUPTS 0x17 |
| |
| /** |
| * \brief MAC frame parser events |
| * diagnose_bus bit 7-3 = |
| * Prt statements mac frame parser |
| * 0 Reset |
| * 1 Multipurpose frame with no destination PAN ID and macImplicitBroadcast is |
| * false and not PAN coordinator dropped |
| * 2 Multipurpose frame with no destination address and macImplicitBroadcast is |
| * false and not PAN coordinator dropped |
| * 3 RX unsupported frame type detected |
| * 4 RX non Beacon frame detected and dropped in RxBeaconOnly mode |
| * 5 RX frame passed due to macAlwaysPassFrmType set |
| * 6 RX unsupported da_mode = 01 for frame_version 0x0- detected |
| * 7 RX unsupported sa_mode = 01 for frame_version 0x0- detected |
| * 8 Data or command frame with no destination PAN ID and macImplicitBroadcast |
| * is false and not PAN coordinator dropped |
| * 9 Data or command frame with no destination address and macImplicitBroadcast |
| * is false and not PAN coordinator dropped |
| * 10 RX unsupported frame_version detected |
| * 11 Multipurpose frame with no destination PAN ID and macImplicitBroadcast is |
| * false and not PAN coordinator dropped |
| * 12 Multipurpose frame with no destination address and macImplicitBroadcast |
| * is false and not PAN coordinator dropped |
| * 13 RX unsupported frame_version detected |
| * 14 RX Destination PAN Id check failed |
| * 15 RX Destination address (1 byte) check failed |
| * 16 RX Destination address (2 byte) check failed |
| * 17 RX Destination address (8 byte) check failed |
| * 18 RX Source PAN Id check for Beacon frames failed |
| * 19 RX Source PAN Id check failed |
| * 20 Auxiliary Security Header security control word received |
| * 21 Auxiliary Security Header unsupported_legacy received frame_version 00 |
| * 22 Auxiliary Security Header unsupported_legacy security frame_version 11 |
| * 23 Auxiliary Security Header frame counter field received |
| * 24 Auxiliary Security Header Key identifier field received |
| * 25 Errored dDestination Wakeup frame found send to UMAC, not indicated |
| * towards LMAC controller |
| * 26 MacAlwaysPassWakeUpFrames = 1, Wakeup frame found send to UMAC, not |
| * indicated towards LMAC controller |
| * 27 Wakeup frame found send to LMAC controller and UMAC |
| * 28 Wakeup frame found send to LMAC controller, dropped towards UMAC |
| * 29 Command frame with data_request command received |
| * 30 Coordinator realignment frame received |
| * 31 Not Used |
| * diagnose bus bit 2-0 = frame_type |
| */ |
| #define FTDF_DBG_RX_MAC_FRAME_PARSER_EVENTS 0x18 |
| |
| /** |
| * \brief MAC frame parser states |
| * diagnose_bus bit 7-4 = |
| * Framestates mac frame parser |
| * 0 idle_state |
| * 1 fr_ctrl_state |
| * 2 fr_ctrl_long_state |
| * 3 seq_nr_state |
| * 4 dest_pan_id_state |
| * 5 dest_addr_state |
| * 6 src_pan_id_state |
| * 7 src_addr_state |
| * 8 aux_sec_hdr_state |
| * 9 hdr_ie_state |
| * 10 pyld_ie_state |
| * 11 ignore_state |
| * 12-16 Not used |
| * diagnose bus bit 3 = rx_mac_sof_e |
| * diagnose bus bit 2-0 = frame_type |
| */ |
| #define FTDF_DBG_RX_MAC_FRAME_PARSER_STATES 0x19 |
| |
| /** |
| * \brief Top and bottom interfaces tx datapath |
| * diagnose_bus bit 7 = tx_mac_ld_strb |
| * diagnose bus bit 6 = tx_mac_drdy |
| * diagnose bus bit 5 = tx_valid |
| * diagnose bus bit 4-1 = tx_data |
| * diagnose bus bit 0 = symbol_ena |
| */ |
| #define FTDF_DBG_TX_TOP_BOTTOM_INTERFACES 0x20 |
| |
| /** |
| * \brief Control signals for tx datapath |
| * diagnose_bus bit 7 = TxTransparentMode |
| * diagnose bus bit 6 = ctrl_lmac_to_tx.CRC16_ena |
| * diagnose bus bit 5 = ctrl_lmac_to_tx.tx_start |
| * diagnose bus bit 4 = ctrl_lmac_to_tx.gen_ack |
| * diagnose bus bit 3 = ctrl_lmac_to_tx.gen_wu |
| * diagnose bus bit 2-1 = ctrl_lmac_to_tx.tx_frame_nmbr |
| * diagnose bus bit 0 = tx_valid |
| */ |
| #define FTDF_DBG_TX_CONTROL_SIGNALS 0x21 |
| |
| /** |
| * \brief Control signals for wakeup frames |
| * diagnose_bus bit 7 = ctrl_lmac_to_tx.tx_start |
| * diagnose bus bit 6 = ctrl_lmac_to_tx.gen_wu |
| * diagnose bus bit 5-1 = ctrl_lmac_to_tx.gen_wu_RZ(4 DOWNTO 0) |
| * diagnose bus bit 0 = ctrl_tx_to_lmac.tx_rz_zero |
| */ |
| #define FTDF_DBG_TX_WAKEUP_CONTROL_SIGNALS 0x22 |
| |
| /** |
| * \brief Data signals for wakeup frame |
| * diagnose_bus bit 7 = ctrl_lmac_to_tx.tx_start |
| * diagnose bus bit 6 = ctrl_lmac_to_tx.gen_wu |
| * diagnose bus bit 5 = tx_valid |
| * diagnose bus bit 4-1 = tx_data |
| * diagnose bus bit 0 = ctrl_tx_to_lmac.tx_rz_zero |
| */ |
| #define FTDF_DBG_TX_WAKUP_DATA_SIGNALS 0x23 |
| |
| /** |
| * \brief Data and control ack frame |
| * diagnose_bus bit 7 = ctrl_lmac_to_tx.tx_start |
| * diagnose bus bit 6 = ctrl_lmac_to_tx.gen_ack |
| * diagnose bus bit 5 = tx_valid |
| * diagnose bus bit 4-1 = tx_data |
| * diagnose bus bit 0 = symbol_ena |
| */ |
| #define FTDF_DBG_TX_ACK_ 0x24 |
| |
| |
| /** |
| * \brief PHY signals |
| * diagnose_bus bit 7 = phy_en |
| * diagnose bus bit 6 = tx_en |
| * diagnose bus bit 5 = rx_en |
| * diagnose bus bit 4-1 = phyattr(3 downto 0) |
| * diagnose bus bit 0 = ed_request |
| */ |
| #define FTDF_DBG_LMAC_PHY_SIGNALS 0x30 |
| |
| /** |
| * \brief PHY enable and detailed state machine info |
| * diagnose_bus bit 7 = phy_en |
| * diagnose bus bit 6-0 = prt statements detailed state machine info |
| * 0 Reset |
| * 1 MAIN_STATE_IDLE TX_ACKnowledgement frame skip CSMA_CA |
| * 2 MAIN_STATE_IDLE : Wake-Up frame resides in buffer no |
| * 3 MAIN_STATE_IDLE : TX frame in TSCH mode |
| * 4 MAIN_STATE_IDLE : TX frame |
| * 5 MAIN_STATE_IDLE : goto SINGLE_CCA |
| * 6 MAIN_STATE_IDLE : goto Energy Detection |
| * 7 MAIN_STATE_IDLE : goto RX |
| * 8 MAIN_STATE_IDLE de-assert phy_en wait for |
| * 9 MAIN_STATE_IDLE Start phy_en and assert phy_en wait for : |
| * 10 MAIN_STATE_CSMA_CA_WAIT_FOR_METADATA framenr : |
| * 11 MAIN_STATE_CSMA_CA framenr : |
| * 12 MAIN_STATE_CSMA_CA start CSMA_CA |
| * 14 MAIN_STATE_CSMA_CA skip CSMA_CA |
| * 15 MAIN_STATE_WAIT_FOR_CSMA_CA csma_ca Failed for CSL mode |
| * 16 MAIN_STATE_WAIT_FOR_CSMA_CA csma_ca Failed |
| * 17 MAIN_STATE_WAIT_FOR_CSMA_CA csma_ca Success |
| * 18 MAIN_STATE_SINGLE_CCA CCA failed |
| * 19 MAIN_STATE_SINGLE_CCA CCA ok |
| * 20 MAIN_STATE_WAIT_ACK_DELAY wait time elapsed |
| * 21 MAIN_STATE_WAIT ACK_DELAY : Send Ack in TSCH mode |
| * 22 MAIN_STATE_WAIT ACK_DELAY : Ack not scheduled in time in TSCH mode |
| * 23 MAIN_STATE_TSCH_TX_FRAME macTSRxTx time elapsed |
| * 24 MAIN_STATE_TX_FRAME it is CSL mode, start the WU seq for macWUPeriod |
| * 25 MAIN_STATE_TX_FRAME1 |
| * 26 MAIN_STATE_TX_FRAME_W1 exit, waited for : |
| * 27 MAIN_STATE_TX_FRAME_W2 exit, waited for : |
| * 28 MAIN_STATE_TX_WAIT_LAST_SYMBOL exit |
| * 29 MAIN_STATE_TX_RAMPDOWN_W exit, waited for : |
| * 30 MAIN_STATE_TX_PHYTRXWAIT exit, waited for : |
| * 31 MAIN_STATE_GEN_IFS , Ack with frame pending received |
| * 32 MAIN_STATE_GEN_IFS , Ack requested but DisRXackReceivedca is set |
| * 33 MAIN_STATE_GEN_IFS , instead of generating an IFS, switch the rx-on for |
| * an ACK |
| * 34 MAIN_STATE_GEN_IFS , generating an SIFS (Short Inter Frame Space) |
| * 35 MAIN_STATE_GEN_IFS , generating an LIFS (Long Inter Frame Space) |
| * 36 MAIN_STATE_GEN_IFS_FINISH in CSL mode, 'cslperiod_timer_ready' is ready |
| * sent the data frame |
| * 37 MAIN_STATE_GEN_IFS_FINISH in CSL mode, 'Rendezvous zero time not yet |
| * transmitted sent another WU frame |
| * 38 MAIN_STATE_GEN_IFS_FINISH exit, corrected for : |
| * 39 MAIN_STATE_GEN_IFS_FINISH in CSL mode, rx_resume_after_tx is set |
| * 40 MAIN_STATE_SENT_STATUS CSLMode wu_sequence_done_flag : |
| * 41 MAIN_STATE_ADD_DELAY exit, goto RX for frame pending time |
| * 42 MAIN_STATE_ADD_DELAY exit, goto IDLE |
| * 43 MAIN_STATE_RX switch the RX from off to on |
| * 44 MAIN_STATE_RX_WAIT_PHYRXSTART waited for |
| * 45 MAIN_STATE_RX_WAIT_PHYRXLATENCY start the MacAckDuration timer |
| * 46 MAIN_STATE_RX_WAIT_PHYRXLATENCY start the ack wait timer |
| * 47 MAIN_STATE_RX_WAIT_PHYRXLATENCY NORMAL mode : start rx_duration |
| * 48 MAIN_STATE_RX_WAIT_PHYRXLATENCY TSCH mode : start macTSRxWait |
| * (macTSRxWait) timer |
| * 49 MAIN_STATE_RX_WAIT_PHYRXLATENCY CSL mode : start the csl_rx_duration |
| * (macCSLsamplePeriod) timer |
| * 50 MAIN_STATE_RX_WAIT_PHYRXLATENCY CSL mode : start the csl_rx_duration |
| * (macCSLdataPeriod) timer |
| * 51 MAIN_STATE_RX_CHK_EXPIRED 1 ackwait_timer_ready or ack_received_ind |
| * 52 MAIN_STATE_RX_CHK_EXPIRED 2 normal_mode. ACK with FP bit set, start frame |
| * pending timer |
| * 54 MAIN_STATE_RX_CHK_EXPIRED 4 RxAlwaysOn is set to 0 |
| * 55 MAIN_STATE_RX_CHK_EXPIRED 5 TSCH mode valid frame rxed |
| * 56 MAIN_STATE_RX_CHK_EXPIRED 6 TSCH mode macTSRxwait expired |
| * 57 MAIN_STATE_RX_CHK_EXPIRED 7 macCSLsamplePeriod timer ready |
| * 58 MAIN_STATE_RX_CHK_EXPIRED 8 csl_mode. Data frame recieved with FP bit |
| * set, increment RX duration time |
| * 59 MAIN_STATE_RX_CHK_EXPIRED 9 CSL mode : Received wu frame in data |
| * listening period restart macCSLdataPeriod timer |
| * 60 MAIN_STATE_RX_CHK_EXPIRED 10 csl_rx_duration_ready or csl data frame |
| * received: |
| * 61 MAIN_STATE_RX_CHK_EXPIRED 11 normal_mode. FP bit is set, start frame |
| * pending timer |
| * 62 MAIN_STATE_RX_CHK_EXPIRED 12 normal mode rx_duration_timer_ready and |
| * frame_pending_timer_ready |
| * 63 MAIN_STATE_RX_CHK_EXPIRED 13 acknowledge frame requested |
| * 64 MAIN_STATE_RX_CHK_EXPIRED 14 Interrupt to sent a frame. found_tx_packet |
| * 65 MAIN_STATE_CSL_RX_IDLE_END RZ time is far away, switch receiver Off and |
| * wait for csl_rx_rz_time before switching on |
| * 66 MAIN_STATE_CSL_RX_IDLE_END RZ time is not so far away, keep receiver On |
| * and wait for |
| * 67 MAIN_STATE_RX_START_PHYRXSTOP ack with fp received keep rx on |
| * 68 MAIN_STATE_RX_START_PHYRXSTOP switch the RX from on to off |
| * 69 MAIN_STATE_RX_WAIT_PHYRXSTOP acknowledge done : switch back to finish TX |
| * 70 MAIN_STATE_RX_WAIT_PHYRXSTOP switch the RX off |
| * 71 MAIN_STATE_ED switch the RX from off to on |
| * 72 MAIN_STATE_ED_WAIT_PHYRXSTART waited for phyRxStartup |
| * 73 MAIN_STATE_ED_WAIT_EDSCANDURATION waited for EdScanDuration |
| * 74 MAIN_STATE_ED_WAIT_PHYRXSTOP end of Energy Detection, got IDLE |
| * 75 - 127 Not used |
| */ |
| #define FTDF_DBG_LMAC_ENABLE_AND_SM 0x31 |
| |
| /** |
| * \brief RX enable and detailed state machine info |
| * diagnose_bus bit 7 = rx_en |
| * diagnose bus bit 6-0 = detailed state machine info see FTDF_DBG_LMAC_ENABLE_AND_SM |
| */ |
| #define FTDF_DBG_LMAC_RX_ENABLE_AND_SM 0x32 |
| |
| /** |
| * \brief TX enable and detailed state machine info |
| * diagnose_bus bit 7 = tx_en |
| * diagnose bus bit 6-0 = detailed state machine info see FTDF_DBG_LMAC_ENABLE_AND_SM |
| */ |
| #define FTDF_DBG_LMAC_TX_ENABLE_AND_SM 0x33 |
| |
| /** |
| * \brief PHY enable, TX enable and Rx enable and state machine states |
| * diagnose_bus bit 7 = phy_en |
| * diagnose_bus bit 6 = tx_en |
| * diagnose_bus bit 5 = rx_en |
| * diagnose bus bit 4-0 = State machine states |
| * 1 MAIN_STATE_IDLE |
| * 2 MAIN_STATE_CSMA_CA_WAIT_FOR_METADATA |
| * 3 MAIN_STATE_CSMA_CA |
| * 4 MAIN_STATE_WAIT_FOR_CSMA_CA_0 |
| * 5 MAIN_STATE_WAIT_FOR_CSMA_CA |
| * 6 MAIN_STATE_SINGLE_CCA |
| * 7 MAIN_STATE_WAIT_ACK_DELAY |
| * 8 MAIN_STATE_TSCH_TX_FRAME |
| * 9 MAIN_STATE_TX_FRAME |
| * 10 MAIN_STATE_TX_FRAME1 |
| * 11 MAIN_STATE_TX_FRAME_W1 |
| * 12 MAIN_STATE_TX_FRAME_W2 |
| * 13 MAIN_STATE_TX_WAIT_LAST_SYMBOL |
| * 14 MAIN_STATE_TX_RAMPDOWN |
| * 15 MAIN_STATE_TX_RAMPDOWN_W |
| * 16 MAIN_STATE_TX_PHYTRXWAIT |
| * 17 MAIN_STATE_GEN_IFS |
| * 18 MAIN_STATE_GEN_IFS_FINISH |
| * 19 MAIN_STATE_SENT_STATUS |
| * 20 MAIN_STATE_ADD_DELAY |
| * 21 MAIN_STATE_TSCH_RX_ACKDELAY |
| * 22 MAIN_STATE_RX |
| * 23 MAIN_STATE_RX_WAIT_PHYRXSTART |
| * 24 MAIN_STATE_RX_WAIT_PHYRXLATENCY |
| * 25 MAIN_STATE_RX_CHK_EXPIRED |
| * 26 MAIN_STATE_CSL_RX_IDLE_END |
| * 27 MAIN_STATE_RX_START_PHYRXSTOP |
| * 28 MAIN_STATE_RX_WAIT_PHYRXSTOP |
| * 29 MAIN_STATE_ED |
| * 30 MAIN_STATE_ED_WAIT_PHYRXSTART |
| * 31 MAIN_STATE_ED_WAIT_EDSCANDURATION |
| */ |
| #define FTDF_DBG_LMAC_RX_TX_ENABLE_AND_STATES 0x34 |
| |
| /** |
| * \brief LMAC controller to tx interface with wakeup |
| * diagnose_bus bit 7 = tx_en |
| * diagnose_bus bit 6 = rx_en |
| * diagnose_bus bit 5 = ctrl_lmac_to_tx.gen_wu |
| * diagnose_bus bit 4 = ctrl_lmac_to_tx.gen_ack |
| * diagnose_bus bit 3-2 = ctrl_lmac_to_tx.tx_frame_nmbr |
| * diagnose_bus bit 1 = ctrl_lmac_to_tx.tx_start |
| * diagnose_bus bit 0 = ctrl_tx_to_lmac.tx_last_symbol |
| */ |
| #define FTDF_DBG_LMAC_TO_TX_AND_WAKEUP 0x35 |
| |
| /** |
| * \brief LMAC controller to tx interface with frame pending |
| * diagnose_bus bit 7 = tx_en |
| * diagnose_bus bit 6 = rx_en |
| * diagnose_bus bit 5 = ctrl_lmac_to_tx.gen.fp_bit |
| * diagnose_bus bit 4 = ctrl_lmac_to_tx.gen_ack |
| * diagnose_bus bit 3-2 = ctrl_lmac_to_tx.tx_frame_nmbr |
| * diagnose_bus bit 1 = ctrl_lmac_to_tx.tx_start |
| * diagnose_bus bit 0 = ctrl_tx_to_lmac.tx_last_symbol |
| */ |
| #define FTDF_DBG_LMAC_TO_TX_AND_FRAME_PENDING 0x36 |
| |
| /** |
| * \brief Rx pipepline to LMAC controller interface |
| * diagnose_bus bit 7 = tx_en |
| * diagnose_bus bit 6 = rx_en |
| * diagnose_bus bit 5 = ctrl_rx_to_lmac.rx_sof_e |
| * diagnose_bus bit 4 = ctrl_rx_to_lmac.rx_eof_e |
| * diagnose_bus bit 3 = ctrl_rx_to_lmac.packet_valid |
| * diagnose_bus bit 2 = ack_received_ind |
| * diagnose_bus bit 1 = ack_request_ind |
| * diagnose_bus bit 0 = ctrl_rx_to_lmac.data_request_frame |
| */ |
| #define FTDF_DBG_LMAC_RX_TO_LMAC 0x37 |
| |
| /** |
| * \brief CSL start |
| * diagnose_bus bit 7 = tx_en |
| * diagnose_bus bit 6 = rx_en |
| * diagnose_bus bit 5 = csl_start |
| * diagnose_bus bit 4-1 = swio_always_on_to_lmac_ctrl.tx_flag_stat |
| * diagnose_bus bit 0 = found_wu_packet; |
| */ |
| #define FTDF_DBG_LMAC_CSL_START 0x38 |
| |
| /** |
| * \brief TSCH TX ACK timing |
| * diagnose_bus bit 7-4 = swio_always_on_to_lmac_ctrl.tx_flag_stat |
| * diagnose_bus bit 3 = tx_en |
| * diagnose_bus bit 2 = rx_en |
| * diagnose_bus bit 1 = ctrl_rx_to_lmac.packet_valid |
| * diagnose_bus bit 0 = one_us_timer_ready |
| */ |
| #define FTDF_DBG_LMAC_TSCH_ACK_TIMING 0x39 |
| |
| |
| /** |
| * \brief Security control |
| * diagnose_bus bit 7 = swio_to_security.secStart |
| * diagnose_bus bit 6 = swio_to_security.secTxRxn |
| * diagnose_bus bit 5 = swio_to_security.secAbort |
| * diagnose_bus bit 4 = swio_to_security.secEncDecn |
| * diagnose_bus bit 3 = swio_from_security.secBusy |
| * diagnose_bus bit 2 = swio_from_security.secAuthFail |
| * diagnose_bus bit 1 = swio_from_security.secReady_e |
| * diagnose_bus bit 0 = '0' |
| */ |
| #define FTDF_DBG_SEC_CONTROL 0x40 |
| |
| /** |
| * \brief Security CTLID access Rx and Tx |
| * diagnose_bus bit 7 = tx_sec_ci.ld_strb |
| * diagnose_bus bit 6 = tx_sec_ci.ctlid_rw |
| * diagnose_bus bit 5 = tx_sec_ci.selectp |
| * diagnose_bus bit 4 = tx_sec_co.d_rdy |
| * diagnose_bus bit 3 = rx_sec_ci.ld_strb |
| * diagnose_bus bit 2 = rx_sec_ci.ctlid_rw |
| * diagnose_bus bit 1 = rx_sec_ci.selectp |
| * diagnose_bus bit 0 = rx_sec_co.d_rdy |
| */ |
| #define FTDF_DBG_SEC_CTLID_ACCESS_RX_TX 0x41 |
| |
| /** |
| * \brief Security ctlid access tx with sec_wr_data_valid |
| * diagnose_bus bit 7 = tx_sec_ci.ld_strb |
| * diagnose_bus bit 6 = tx_sec_ci.ctlid_rw |
| * diagnose_bus bit 5 = tx_sec_ci.selectp |
| * diagnose_bus bit 4 = tx_sec_co.d_rdy |
| * diagnose_bus bit 3-0 = sec_wr_data_valid |
| */ |
| #define FTDF_DBG_SEC_CTLID_ACCESS_TX_AND_SEC_WR_DATA_VALID 0x42 |
| |
| /** |
| * \brief Security ctlid access rx with sec_wr_data_valid |
| * diagnose_bus bit 7 = rx_sec_ci.ld_strb |
| * diagnose_bus bit 6 = rx_sec_ci.ctlid_rw |
| * diagnose_bus bit 5 = rx_sec_ci.selectp |
| * diagnose_bus bit 4 = rx_sec_co.d_rdy |
| * diagnose_bus bit 3-0 = sec_wr_data_valid |
| */ |
| #define FTDF_DBG_SEC_CTLID_ACCESS_RX_AND_SEC_WR_DATA_VALID 0x43 |
| |
| /** |
| * \brief AHB bus without hsize |
| * diagnose_bus bit 7 = hsel |
| * diagnose_bus bit 6-5 = htrans |
| * diagnose_bus bit 4 = hwrite |
| * diagnose_bus bit 3 = hready_in |
| * diagnose_bus bit 2 = hready_out |
| * diagnose_bus bit 1-0 = hresp |
| */ |
| #define FTDF_DBG_AHB_WO_HSIZE 0x50 |
| |
| /** |
| * \brief AHB bus without hwready_in and hresp(1) |
| * diagnose_bus bit 7 = hsel |
| * diagnose_bus bit 6-5 = htrans |
| * diagnose_bus bit 4 = hwrite |
| * diagnose_bus bit 3-2 = hhsize(1 downto 0) |
| * diagnose_bus bit 1 = hready_out |
| * diagnose_bus bit 0 = hresp(0) |
| */ |
| #define FTDF_DBG_AHB_WO_HW_READY_HRESP 0x51 |
| |
| /** |
| * \brief AMBA Tx signals |
| * diagnose_bus bit 7 = ai_tx.penable |
| * diagnose_bus bit 6 = ai_tx.psel |
| * diagnose_bus bit 5 = ai_tx.pwrite |
| * diagnose_bus bit 4 = ao_tx.pready |
| * diagnose_bus bit 3 = ao_tx.pslverr |
| * diagnose_bus bit 2-1 = psize_tx |
| * diagnose_bus bit 0 = hready_out |
| */ |
| #define FTDF_DBG_AHB_AMBA_TX_SIGNALS 0x52 |
| |
| /** |
| * \brief AMBA Rx signals |
| * diagnose_bus bit 7 = ai_rx.penable |
| * diagnose_bus bit 6 = ai_rx.psel |
| * diagnose_bus bit 5 = ai_rx.pwrite |
| * diagnose_bus bit 4 = ao_rx.pready |
| * diagnose_bus bit 3 = ao_rx.pslverr |
| * diagnose_bus bit 2-1 = psize_rx |
| * diagnose_bus bit 0 = hready_out |
| */ |
| #define FTDF_DBG_AHB_AMBA_RX_SIGNALS 0x53 |
| |
| /** |
| * \brief AMBA register map signals |
| * diagnose_bus bit 7 = ai_reg.penable |
| * diagnose_bus bit 6 = ai_reg.psel |
| * diagnose_bus bit 5 = ai_reg.pwrite |
| * diagnose_bus bit 4 = ao_reg.pready |
| * diagnose_bus bit 3 = ao_reg.pslverr |
| * diagnose_bus bit 2-1 = "00" |
| * diagnose_bus bit 0 = hready_out |
| */ |
| #define FTDF_DBG_AHB_AMBA_REG_MAP_SIGNALS 0x54 |
| |
| #endif /* FTDF_DBG_BUS_ENABLE */ |
| |
| #define FTDF_MAX_HOPPING_SEQUENCE_LENGTH 16 |
| |
| typedef void FTDF_PIBAttributeValue; |
| |
| /** |
| * \brief Link quality |
| * \remark Range: 0..255 |
| * \remark A higher number is a higher quality |
| */ |
| typedef uint8_t FTDF_LinkQuality; |
| |
| /** |
| * \brief Hopping sequence ID |
| */ |
| typedef uint16_t FTDF_HoppingSequenceId; |
| |
| /** |
| * \brief Channel number |
| * \remark Supported range: 11..27 |
| */ |
| typedef uint8_t FTDF_ChannelNumber; |
| |
| /** |
| * \brief Packet Traffic Information (PTI) used to classify a transaction in the radio arbiter. |
| */ |
| typedef uint8_t FTDF_PTI; |
| |
| enum |
| { |
| /* PTI index for explicit Rx. */ |
| FTDF_PTI_CONFIG_RX, |
| /* PTI index for Tx. */ |
| FTDF_PTI_CONFIG_TX, |
| FTDF_PTI_CONFIG_RESERVED0, |
| FTDF_PTI_CONFIG_RESERVED1, |
| FTDF_PTI_CONFIG_RESERVED2, |
| FTDF_PTI_CONFIG_RESERVED3, |
| FTDF_PTI_CONFIG_RESERVED4, |
| FTDF_PTI_CONFIG_RESERVED5, |
| /* Enumeration end. */ |
| FTDF_PTIS, |
| }; |
| |
| typedef struct |
| { |
| FTDF_PTI ptis[FTDF_PTIS]; |
| } FTDF_PtiConfig; |
| |
| /** |
| * \brief Channel page |
| * \remark Supported values: 0 |
| */ |
| typedef uint8_t FTDF_ChannelPage; |
| |
| typedef uint8_t FTDF_ChannelOffset; |
| |
| typedef uint8_t FTDF_Octet; |
| |
| /** |
| * \brief 8-bit type bitmap |
| */ |
| typedef uint8_t FTDF_Bitmap8; |
| |
| /** |
| * \brief 16-bit type bitmap |
| */ |
| typedef uint16_t FTDF_Bitmap16; |
| |
| /** |
| * \brief 32-bit type bitmap |
| */ |
| typedef uint32_t FTDF_Bitmap32; |
| |
| typedef uint8_t FTDF_NumOfBackoffs; |
| |
| typedef uint8_t FTDF_GTSCharateristics; |
| |
| /** |
| * \brief Scan type |
| * \remark Allowed values: |
| * - FTDF_ED_SCAN: Energy detect scan |
| * - FTDF_ACTIVE_SCAN: Active scan |
| * - FTDF_PASSIVE_SCAN: Passive scan |
| * - FTDF_ORPHAN_SCAN: Orphan scan |
| * - FTDF_ENHANCED_ACTIVE_SCAN: Enhanced active scan |
| */ |
| typedef uint8_t FTDF_ScanType; |
| #define FTDF_ED_SCAN 1 |
| #define FTDF_ACTIVE_SCAN 2 |
| #define FTDF_PASSIVE_SCAN 3 |
| #define FTDF_ORPHAN_SCAN 4 |
| #define FTDF_ENHANCED_ACTIVE_SCAN 7 |
| |
| typedef uint8_t FTDF_ScanDuration; |
| |
| /** |
| * \brief Loss operation |
| * \remark Possible values: |
| * - FTDF_PAN_ID_CONFLICT |
| * - FTDF_REALIGNMENT |
| * - FTDF_BEACON_LOST (not supported because only beaconless mode is supported) |
| */ |
| typedef uint8_t FTDF_LossReason; |
| #define FTDF_PAN_ID_CONFLICT 1 |
| #define FTDF_REALIGNMENT 2 |
| #define FTDF_BEACON_LOST 3 |
| |
| typedef uint16_t FTDF_SlotframeSize; |
| |
| /** |
| * \brief Set operation |
| * \remark Allowed values: |
| * - FTDF_ADD: Add an entry |
| * - FTDF_DELETE: Delete an entry |
| * - FTDF_MODIFY: Modify an entry |
| */ |
| typedef uint8_t FTDF_Operation; |
| #define FTDF_ADD 0 |
| #define FTDF_DELETE 2 |
| #define FTDF_MODIFY 3 |
| |
| typedef uint16_t FTDF_Timeslot; |
| |
| /** |
| * \brief Set operation |
| * \remark Allowed values: |
| * - FTDF_NORMAL_LINK |
| * - FTDF_ADVERTISING_LINK |
| */ |
| typedef uint8_t FTDF_LinkType; |
| #define FTDF_NORMAL_LINK 0 |
| #define FTDF_ADVERTISING_LINK 1 |
| |
| /** |
| * \brief TSCH mode status |
| * \remark Allowed values: |
| * - FTDF_TSCH_OFF |
| * - FTDF_TSCH_ON |
| */ |
| typedef uint8_t FTDF_TSCHMode; |
| #define FTDF_TSCH_OFF 0 |
| #define FTDF_TSCH_ON 1 |
| |
| typedef uint16_t FTDF_KeepAlivePeriod; |
| |
| /** |
| * \brief BE exponent |
| */ |
| typedef uint8_t FTDF_BEExponent; |
| |
| #define FTDF_MAX_SLOTFRAMES 4 |
| |
| typedef struct |
| { |
| /** \brief Handle of this slotframe */ |
| FTDF_Handle slotframeHandle; |
| /** \brief The number of timeslots in this slotframe */ |
| FTDF_SlotframeSize slotframeSize; |
| } FTDF_SlotframeEntry; |
| |
| typedef struct |
| { |
| /** \brief Number of slotframes in the slotframe table */ |
| FTDF_Size nrOfSlotframes; |
| /** \brief Pointer to the first slotframe entry */ |
| FTDF_SlotframeEntry* slotframeEntries; |
| } FTDF_SlotframeTable; |
| |
| #define FTDF_MAX_LINKS 16 |
| |
| #define FTDF_LINK_OPTION_TRANSMIT 0x01 |
| #define FTDF_LINK_OPTION_RECEIVE 0x02 |
| #define FTDF_LINK_OPTION_SHARED 0x04 |
| #define FTDF_LINK_OPTION_TIME_KEEPING 0x08 |
| |
| typedef struct |
| { |
| /** \brief Handle of this link, used for delete and modify operations */ |
| FTDF_Handle linkHandle; |
| /** |
| * \brief Bit mapped link options, the following options are supported:<br> |
| * FTDF_LINK_OPTION_TRANSMIT: Lik can be used for transmitting<br> |
| * FTDF_LINK_OPTION_RECEIVE: Link can be used for receiving<br> |
| * FTDF_LINK_OPTION_SHARED: Shared link, multiple device can transmit in this link<br> |
| * FTDF_LINK_OPTION_TIME_KEEPING: Link will be used to synchronise timeslots<br> |
| * Multiple options can be defined by or-ing them. |
| */ |
| FTDF_Bitmap8 linkOptions; |
| /** \brief Link type */ |
| FTDF_LinkType linkType; |
| /** \brief Handle of the slotframe of this link */ |
| FTDF_Handle slotframeHandle; |
| /** \brief Short address of the peer node, only valid if is a transmit link */ |
| FTDF_ShortAddress nodeAddress; |
| /** \brief Timeslot in the slotframe */ |
| FTDF_Timeslot timeslot; |
| /** \brief Channel offset */ |
| FTDF_ChannelOffset channelOffset; |
| /** \brief DO NOT USE */ |
| void* __private1; |
| /** \brief DO NOT USE */ |
| uint64_t __private2; |
| } FTDF_LinkEntry; |
| |
| typedef struct |
| { |
| /** \brief Number of links in the link table */ |
| FTDF_Size nrOfLinks; |
| /** \brief Pointer to the first link entry */ |
| FTDF_LinkEntry* linkEntries; |
| } FTDF_LinkTable; |
| |
| typedef struct |
| { |
| FTDF_Handle timeslotTemplateId; |
| FTDF_Period tsCCAOffset; |
| FTDF_Period tsCCA; |
| FTDF_Period tsTxOffset; |
| FTDF_Period tsRxOffset; |
| FTDF_Period tsRxAckDelay; |
| FTDF_Period tsTxAckDelay; |
| FTDF_Period tsRxWait; |
| FTDF_Period tsAckWait; |
| FTDF_Period tsRxTx; |
| FTDF_Period tsMaxAck; |
| FTDF_Period tsMaxTs; |
| FTDF_Period tsTimeslotLength; |
| } FTDF_TimeslotTemplate; |
| |
| typedef struct |
| { |
| FTDF_Size counterOctets; |
| FTDF_Count retryCount; |
| FTDF_Count multipleRetryCount; |
| FTDF_Count TXFailCount; |
| FTDF_Count TXSuccessCount; |
| FTDF_Count FCSErrorCount; |
| FTDF_Count securityFailureCount; |
| FTDF_Count duplicateFrameCount; |
| FTDF_Count RXSuccessCount; |
| FTDF_Count NACKCount; |
| FTDF_Count RxExpiredCount; |
| FTDF_Count BOIrqCount; |
| } FTDF_PerformanceMetrics; |
| |
| typedef struct |
| { |
| FTDF_Count txDataFrmCnt; |
| FTDF_Count txCmdFrmCnt; |
| FTDF_Count txStdAckFrmCnt; |
| FTDF_Count txEnhAckFrmCnt; |
| FTDF_Count txBeaconFrmCnt; |
| FTDF_Count txMultiPurpFrmCnt; |
| FTDF_Count rxDataFrmOkCnt; |
| FTDF_Count rxCmdFrmOkCnt; |
| FTDF_Count rxStdAckFrmOkCnt; |
| FTDF_Count rxEnhAckFrmOkCnt; |
| FTDF_Count rxBeaconFrmOkCnt; |
| FTDF_Count rxMultiPurpFrmOkCnt; |
| } FTDF_TrafficCounters; |
| |
| typedef uint8_t FTDF_Energy; |
| |
| typedef struct |
| { |
| /** \brief Coordinator address mode */ |
| FTDF_AddressMode coordAddrMode; |
| /** \brief Coordinator PAN ID */ |
| FTDF_PANId coordPANId; |
| /** \brief Coordinator address */ |
| FTDF_Address coordAddr; |
| /** \brief Channel number */ |
| FTDF_ChannelNumber channelNumber; |
| /** \brief Channnel page */ |
| FTDF_ChannelPage channelPage; |
| /** \brief NOT USED */ |
| FTDF_Bitmap16 superframeSpec; |
| /** \brief NOT USED */ |
| FTDF_Boolean GTSPermit; |
| /** \brief Link quality */ |
| FTDF_LinkQuality linkQuality; |
| /** \brief */ |
| FTDF_Time timestamp; |
| } FTDF_PANDescriptor; |
| |
| typedef struct |
| { |
| /** \brief Coordinator PAN ID */ |
| FTDF_PANId coordPANId; |
| /** \brief Coordinator short address */ |
| FTDF_ShortAddress coordShortAddr; |
| /** \brief Channel number */ |
| FTDF_ChannelNumber channelNumber; |
| /** \brief Device short address */ |
| FTDF_ShortAddress shortAddr; |
| /** \brief Channnel page */ |
| FTDF_ChannelPage channelPage; |
| } FTDF_CoordRealignDescriptor; |
| |
| /** |
| * \brief Auto frame source address mode |
| * \remark Valid values: |
| * - FTDF_AUTO_NONE: No address |
| * - FTDF_AUTO_SHORT: Short address |
| * - FTDF_AUTO_FULL: Extended address |
| */ |
| typedef uint8_t FTDF_AutoSA; |
| #define FTDF_AUTO_NONE 1 |
| #define FTDF_AUTO_SHORT 2 |
| #define FTDF_AUTO_FULL 3 |
| |
| /** |
| * \brief TX Power tolerance |
| * \remark Valid values: |
| * - FTDF_POWER_TOLERANCE_1_DB |
| * - FTDF_POWER_TOLERANCE_3_DB |
| * - FTDF_POWER_TOLERANCE_6_DB |
| */ |
| typedef uint8_t FTDF_TXPowerTolerance; |
| #define FTDF_POWER_TOLERANCE_1_DB 1 |
| #define FTDF_POWER_TOLERANCE_3_DB 2 |
| #define FTDF_POWER_TOLERANCE_6_DB 3 |
| |
| /** |
| * \brief CCA mode |
| * \remark Valid values: |
| * - FTDF_CCA_MODE_1 |
| * - FTDF_CCA_MODE_2 |
| * - FTDF_CCA_MODE_3 |
| */ |
| typedef uint8_t FTDF_CCAMode; |
| #define FTDF_CCA_MODE_1 1 |
| #define FTDF_CCA_MODE_2 2 |
| #define FTDF_CCA_MODE_3 3 |
| |
| /** |
| * \brief Frame control options |
| * \remark Supported options: |
| * - FTDF_PAN_ID_PRESENT: Controls the PAN ID compression/present bit in multipurpose and version 2 frames |
| * - FTDF_IES_INCLUDED: Indicates that IEs must be included |
| * - FTDF_SEQ_NR_SUPPRESSED: Controls suppression of the sequence number |
| * \remark Multiple options can specified by bit wise or-ing them |
| */ |
| typedef uint8_t FTDF_FrameControlOptions; |
| #define FTDF_PAN_ID_PRESENT 0x01 |
| #define FTDF_IES_INCLUDED 0x02 |
| #define FTDF_SEQ_NR_SUPPRESSED 0x04 |
| |
| typedef struct |
| { |
| FTDF_ChannelPage channelPage; |
| FTDF_Size nrOfChannels; |
| FTDF_ChannelNumber* channels; |
| } FTDF_ChannelDescriptor; |
| |
| typedef struct |
| { |
| FTDF_Size nrOfChannelDescriptors; |
| FTDF_ChannelDescriptor* channelDescriptors; |
| } FTDF_ChannelDescriptorList; |
| |
| /** |
| * \brief Dbm data type |
| */ |
| typedef int8_t FTDF_DBm; |
| |
| typedef uint8_t FTDF_FrameType; |
| #define FTDF_BEACON_FRAME 0 |
| #define FTDF_DATA_FRAME 1 |
| #define FTDF_ACKNOWLEDGEMENT_FRAME 2 |
| #define FTDF_MAC_COMMAND_FRAME 3 |
| #define FTDF_LLDN_FRAME 4 |
| #define FTDF_MULTIPURPOSE_FRAME 5 |
| |
| /** |
| * \brief Command frame ID |
| * \remark Supported command frame IDs: |
| * - FTDF_COMMAND_ASSOCIATION_REQUEST |
| * - FTDF_COMMAND_ASSOCIATION_RESPONSE |
| * - FTDF_COMMAND_DISASSOCIATION_NOTIFICATION |
| * - FTDF_COMMAND_DATA_REQUEST |
| * - FTDF_COMMAND_PAN_ID_CONFLICT_NOTIFICATION |
| * - FTDF_COMMAND_ORPHAN_NOTIFICATION |
| * - FTDF_COMMAND_BEACON_REQUEST |
| * - FTDF_COMMAND_COORDINATOR_REALIGNMENT |
| * - FTDF_COMMAND_GTS_REQUEST |
| */ |
| typedef uint8_t FTDF_CommandFrameId; |
| #define FTDF_COMMAND_ASSOCIATION_REQUEST 1 |
| #define FTDF_COMMAND_ASSOCIATION_RESPONSE 2 |
| #define FTDF_COMMAND_DISASSOCIATION_NOTIFICATION 3 |
| #define FTDF_COMMAND_DATA_REQUEST 4 |
| #define FTDF_COMMAND_PAN_ID_CONFLICT_NOTIFICATION 5 |
| #define FTDF_COMMAND_ORPHAN_NOTIFICATION 6 |
| #define FTDF_COMMAND_BEACON_REQUEST 7 |
| #define FTDF_COMMAND_COORDINATOR_REALIGNMENT 8 |
| #define FTDF_COMMAND_GTS_REQUEST 9 |
| |
| /** |
| * \brief Security frame counter |
| * \remark Valid range 0..0xffffffff (4 octets) if frame counter mode equals 4 |
| * \remark Valid range 0..0xffffffffff (5 octets) if frame counter mode equals 5 |
| */ |
| typedef uint64_t FTDF_FrameCounter; |
| |
| /** |
| * \brief Security frame counter mode |
| * \remark Valid range 4..5 |
| */ |
| typedef uint8_t FTDF_FrameCounterMode; |
| |
| typedef struct |
| { |
| FTDF_KeyIdMode keyIdMode; |
| FTDF_Octet keySource[ 8 ]; |
| FTDF_KeyIndex keyIndex; |
| FTDF_AddressMode deviceAddrMode; |
| FTDF_PANId devicePANId; |
| FTDF_Address deviceAddress; |
| } FTDF_KeyIdLookupDescriptor; |
| |
| typedef struct |
| { |
| FTDF_PANId PANId; |
| FTDF_ShortAddress shortAddress; |
| FTDF_ExtAddress extAddress; |
| FTDF_FrameCounter frameCounter; |
| FTDF_Boolean exempt; |
| } FTDF_DeviceDescriptor; |
| |
| /** |
| * \brief Device descriptor handle |
| * \remark This is the index of a device in \link FTDF_DeviceTable \endlink |
| */ |
| typedef uint8_t FTDF_DeviceDescriptorHandle; |
| |
| typedef struct |
| { |
| /** \brief Frame type */ |
| FTDF_FrameType frameType; |
| /** \brief Command frame ID */ |
| FTDF_CommandFrameId commandFrameId; |
| } FTDF_KeyUsageDescriptor; |
| |
| typedef struct |
| { |
| FTDF_Size nrOfKeyIdLookupDescriptors; |
| FTDF_KeyIdLookupDescriptor* keyIdLookupDescriptors; |
| FTDF_Size nrOfDeviceDescriptorHandles; |
| FTDF_DeviceDescriptorHandle* deviceDescriptorHandles; |
| FTDF_Size nrOfKeyUsageDescriptors; |
| FTDF_KeyUsageDescriptor* keyUsageDescriptors; |
| FTDF_Octet key[ 16 ]; |
| } FTDF_KeyDescriptor; |
| |
| typedef struct |
| { |
| FTDF_FrameType frameType; |
| FTDF_CommandFrameId commandFrameId; |
| FTDF_SecurityLevel securityMinimum; |
| FTDF_Boolean deviceOverrideSecurityMinimum; |
| FTDF_Bitmap8 allowedSecurityLevels; |
| } FTDF_SecurityLevelDescriptor; |
| |
| /** |
| * \brief Key table |
| * \remark As followes an example how to initialize a key table for usage with FTDF_SET_REQUEST: |
| * \code |
| * FTDF_KeyIdLookupDescriptor lookupDescriptorsKey1[ ] = |
| * { { 2, { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 7, 0, 0 0 }, |
| * { 0, { 0, 0, 0, 0, 0, 0, 0, 0 }, 0, 2, 0x1234, 0x0001 } }; |
| * FTDF_KeyIdLookupDescriptor lookupDescriptorsKey2[ ] = |
| * { { 1, { 0, 0, 0, 0, 0, 0, 0, 0 }, 5, 0, 0, 0 } }; |
| * FTDF_DeviceDescriptorHandle deviceDescriptorHandlesKey1[ ] = { 0, 2 }; |
| * FTDF_DeviceDescriptorHandle deviceDescriptorHandlesKey2[ ] = { 1 }; |
| * FTDF_KeyUsageDescriptor keyUsageDescriptorKey1[ ] = { { 1, 0 }, { 3, 4 } }; |
| * FTDF_KeyUsageDescriptor keyUsageDescriptorKey2[ ] = { { 1, 0 } }; |
| * FTDF_KeyDescriptor keyDescriptors[ ] = |
| * { { sizeof( lookupDescriptorsKey1 ) / sizeof( FTDF_KeyIdLookupDescriptor ), |
| * lookupDescriptorsKey1, |
| * sizeof( deviceDescriptorHandlesKey1 ) / sizeof( FTDF_DeviceDescriptorHandle ), |
| * deviceDescriptorHandlesKey1, |
| * sizeof( keyUsageDescriptorKey1 ) / sizeof( FTDF_KeyUsageDescriptor ), |
| * keyUsageDescriptorKey1, |
| * { 0x7e, 0x37, 0x2d, 0x41, 0xdf, 0x74, 0x72, 0x3f, 0x4c, 0x3a, 0xa7, 0x53, 0xa1, 0x11, 0x46, 0x8b } }, |
| * { sizeof( lookupDescriptorsKey2 ) / sizeof( FTDF_KeyIdLookupDescriptor ), |
| * lookupDescriptorsKey2, |
| * sizeof( deviceDescriptorHandlesKey2 ) / sizeof( FTDF_DeviceDescriptorHandle ), |
| * deviceDescriptorHandlesKey2, |
| * sizeof( keyUsageDescriptorKey2 ) / sizeof( FTDF_KeyUsageDescriptor ), |
| * keyUsageDescriptorKey1, |
| * { 0xdf, 0x74, 0x72, 0x3f, 0x7e, 0x37, 0x2d, 0x41, 0x4c, 0x3a, 0xa1, 0x11, 0x46, 0x8, 0xa7, 0x53b } } }; |
| * FTDF_KeyTable keyTable = |
| * { sizeof( keyDescriptors ) / sizeof( FTDF_KeyDescriptor ), keyDescriptors }; |
| * \endcode |
| */ |
| typedef struct |
| { |
| /** \brief Number of key descriptors in the key table */ |
| FTDF_Size nrOfKeyDescriptors; |
| /** \brief Pointer to the first key descriptor entry */ |
| FTDF_KeyDescriptor* keyDescriptors; |
| } FTDF_KeyTable; |
| |
| typedef struct |
| { |
| /** \brief Number of device descriptors in the key table */ |
| FTDF_Size nrOfDeviceDescriptors; |
| /** \brief Pointer to the first device descriptor entry */ |
| FTDF_DeviceDescriptor* deviceDescriptors; |
| } FTDF_DeviceTable; |
| |
| typedef struct |
| { |
| /** \brief Number of security level descriptors in the key table */ |
| FTDF_Size nrOfSecurityLevelDescriptors; |
| /** \brief Pointer to the first security level descriptor entry */ |
| FTDF_SecurityLevelDescriptor* securityLevelDescriptors; |
| } FTDF_SecurityLevelTable; |
| |
| /** |
| * \brief IE type |
| * \remark Supported IE types: |
| * - FTDF_SHORT_IE |
| * - FTDF_LONG_IE |
| */ |
| typedef uint8_t FTDF_IEType; |
| #define FTDF_SHORT_IE 0 |
| #define FTDF_LONG_IE 1 |
| |
| typedef uint8_t FTDF_IEId; |
| |
| typedef uint8_t FTDF_IELength; |
| |
| typedef struct |
| { |
| /** \brief IE type */ |
| FTDF_IEType type; |
| /** \brief Sub IE ID*/ |
| FTDF_IEId subID; |
| /** \brief Sub IE length */ |
| FTDF_IELength length; |
| /** \brief Pointer to sub IE content */ |
| FTDF_Octet* subContent; |
| } FTDF_SubIEDescriptor; |
| |
| typedef struct |
| { |
| /** \brief Number of sub IE descriptors in an MLME payload IE (ID = 1) */ |
| FTDF_Size nrOfSubIEs; |
| /** \brief Pointer to the first sub IE descriptor */ |
| FTDF_SubIEDescriptor* subIEs; |
| } FTDF_SubIEList; |
| |
| typedef union |
| { |
| /** \brief IE content if not a MLME payload IE (ID = 1) */ |
| FTDF_Octet* raw; |
| /** \brief IE content if a MLME payload IE (ID = 1) */ |
| FTDF_SubIEList* nested; |
| } FTDF_IEContent; |
| |
| typedef struct |
| { |
| /** \brief IE ID */ |
| FTDF_IEId ID; |
| /** \brief Content length of the IE, undefined/unused in case of a MLME payload IE (ID = 1) */ |
| FTDF_IELength length; |
| /** \brief Content of the IE */ |
| FTDF_IEContent content; |
| } FTDF_IEDescriptor; |
| |
| typedef struct |
| { |
| /** \brief Number of IE descriptors */ |
| FTDF_Size nrOfIEs; |
| /** \brief Pointer to the first IE descriptor */ |
| FTDF_IEDescriptor* IEs; |
| } FTDF_IEList; |
| |
| typedef struct |
| { |
| /** \brief Message ID */ |
| FTDF_MsgId msgId; |
| } FTDF_MsgBuffer; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DATA_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Source address mode */ |
| FTDF_AddressMode srcAddrMode; |
| /** \brief Destination address mode */ |
| FTDF_AddressMode dstAddrMode; |
| /** \brief Destination PAN ID */ |
| FTDF_PANId dstPANId; |
| /** \brief Destination address */ |
| FTDF_Address dstAddr; |
| /** \brief Length of MSDU payload */ |
| FTDF_DataLength msduLength; |
| /** |
| * \brief MSDU payload data buffer. Must be freed by the application using FTDF_REL_DATA_BUFFER |
| * when it receives the FTDF_DATA_CONFIRM message |
| */ |
| FTDF_Octet* msdu; |
| /** \brief Handle */ |
| FTDF_Handle msduHandle; |
| /** \brief Whether the data frame needs to be acknowledged or */ |
| FTDF_Boolean ackTX; |
| /** \brief NOT USED */ |
| FTDF_Boolean GTSTX; |
| /** |
| * \brief Indication whether the frame must be send directly or be queued until a DATA_REQUEST COMMAND |
| * frame is received |
| */ |
| FTDF_Boolean indirectTX; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** \brief Frame control option bitmap */ |
| FTDF_FrameControlOptions frameControlOptions; |
| /** |
| * \brief Header IE list to be inserted. |
| * Ignored if the FTDF_IES_INCLUDED frame control option is NOT set. |
| * The IE list must be located in rentention RAM |
| */ |
| FTDF_IEList* headerIEList; |
| /** |
| * \brief Payload IE list to be inserted. |
| * Ignored if the FTDF_IES_INCLUDED frame control option is NOT set. |
| * The IE list must be located in rentention RAM |
| */ |
| FTDF_IEList* payloadIEList; |
| /** Indication whether a DATA or MULTIPURPOSE frame must be set */ |
| FTDF_Boolean sendMultiPurpose; |
| /** \brief DO NOT USE */ |
| uint8_t __private3; |
| } FTDF_DataRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DATA_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Source address mode */ |
| FTDF_AddressMode srcAddrMode; |
| /** \brief Source PAN ID */ |
| FTDF_PANId srcPANId; |
| /** \brief Source address */ |
| FTDF_Address srcAddr; |
| /** \brief Destination address mode */ |
| FTDF_AddressMode dstAddrMode; |
| /** \brief Destination PAN ID */ |
| FTDF_PANId dstPANId; |
| /** \brief Destination address */ |
| FTDF_Address dstAddr; |
| /** \brief Length of MSDU payload */ |
| FTDF_DataLength msduLength; |
| /** \brief MSDU payload data buffer Must be freed by the application using FTDF_REL_DATA_BUFFER */ |
| FTDF_Octet* msdu; |
| /** \brief MPDU link quality */ |
| FTDF_LinkQuality mpduLinkQuality; |
| /** \brief Data sequence number */ |
| FTDF_SN DSN; |
| /** \brief Timestamp of the time the frame was received */ |
| FTDF_Time timestamp; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** /brief Payload IE list<br> |
| * The whole payload IE list (including IE descriptors, Sub IE descriptors and content) |
| * is allocated in one data buffer that must be freed by the application using FTDF_REL_DATA_BUFFER |
| * with the IEList pointer as parameter |
| */ |
| FTDF_IEList* payloadIEList; |
| } FTDF_DataIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DATA_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** /brief The handle given by the application in the correspoding FTDF_DATA_REQUEST */ |
| FTDF_Handle msduHandle; |
| /** /brief Timestmap of the time the frame has been sent */ |
| FTDF_Time timestamp; |
| /** /brief Status of the data request */ |
| FTDF_Status status; |
| /** /brief Number of backoffs, undefined in case status not equal to FTDF_SUCCESS or TSCH enabled */ |
| FTDF_NumOfBackoffs numOfBackoffs; |
| /** /brief Data sequence number of the sent frame */ |
| FTDF_SN DSN; |
| /** /brief Acknowledgement payload IE list<br> |
| * The whole payload IE list (including IE descriptors, Sub IE descriptors and content) |
| * is allocated in one data buffer that must be freed by the application using FTDF_REL_DATA_BUFFER |
| * with the IEList pointer as parameter |
| */ |
| FTDF_IEList* ackPayload; |
| } FTDF_DataConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_PURGE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Handle the data request to be purged */ |
| FTDF_Handle msduHandle; |
| } FTDF_PurgeRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_PURGE_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Handle of the purged data request */ |
| FTDF_Handle msduHandle; |
| /** /brief Status of the purge request */ |
| FTDF_Status status; |
| } FTDF_PurgeConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_ASSOCIATE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Channel number to be used for the associate request. Ignored in TSCH mode */ |
| FTDF_ChannelNumber channelNumber; |
| /** \brief Channel page to be used for the associate request. Ignored in TSCH mode */ |
| FTDF_ChannelPage channelPage; |
| /** \brief Coordinator address mode */ |
| FTDF_AddressMode coordAddrMode; |
| /** \brief Coordinator PAN ID */ |
| FTDF_PANId coordPANId; |
| /** \brief Coordinator address */ |
| FTDF_Address coordAddr; |
| /** |
| * \brief Capabillity information bitmap. The following capabilities are defined:<br> |
| * FTDF_CAPABILITY_IS_FFD: Device is a full function device<br> |
| * FTDF_CAPABILITY_AC_POWER: Device has AC power<br> |
| * FTDF_CAPABILITY_RECEIVER_ON_WHEN_IDLE: Device receiver is on when idle<br> |
| * FTDF_CAPABILITY_FAST_ASSOCIATION: Device wants a fast association<br> |
| * FTDF_CAPABILITY_SUPPORTS_SECURITY: Device supports security<br> |
| * FTDF_CAPABILITY_WANTS_SHORT_ADDRESS: Device wants short address<br> |
| */ |
| FTDF_Bitmap8 capabilityInformation; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** \brief NOT USED */ |
| FTDF_ChannelOffset channelOffset; |
| /** \brief NOT USED */ |
| FTDF_HoppingSequenceId hoppingSequenceId; |
| /** \brief DO NOT USE */ |
| uint8_t __private3; |
| } FTDF_AssociateRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_ASSOCIATE_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Extended address of the device that did the association request */ |
| FTDF_ExtAddress deviceAddress; |
| /** |
| * \brief Capabillity information bitmap. The following capabilities are defined:<br> |
| * FTDF_CAPABILITY_IS_FFD: Device is a full function device<br> |
| * FTDF_CAPABILITY_AC_POWER: Device has AC power<br> |
| * FTDF_CAPABILITY_RECEIVER_ON_WHEN_IDLE: Device receiver is on when idle<br> |
| * FTDF_CAPABILITY_FAST_ASSOCIATION: Device wants a fast association<br> |
| * FTDF_CAPABILITY_SUPPORTS_SECURITY: Device supports security<br> |
| * FTDF_CAPABILITY_WANTS_SHORT_ADDRESS: Device wants short address<br> |
| */ |
| FTDF_Bitmap8 capabilityInformation; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** \brief NOT USED */ |
| FTDF_ChannelOffset channelOffset; |
| /** \brief NOT USED */ |
| FTDF_HoppingSequenceId hoppingSequenceId; |
| } FTDF_AssociateIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_ASSOCIATE_RESPONSE */ |
| FTDF_MsgId msgId; |
| /** \brief Extended address of the device that did association request and to which the response needs to be send */ |
| FTDF_ExtAddress deviceAddress; |
| /** \brief The short address for the device that did the associate request */ |
| FTDF_ShortAddress assocShortAddress; |
| /** \brief The association status of the associate request */ |
| FTDF_AssociationStatus status; |
| /** \brief Indication whether this a response to fast or normal association request */ |
| FTDF_Boolean fastA; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** \brief NOT USED */ |
| FTDF_ChannelOffset channelOffset; |
| /** \brief NOT USED */ |
| FTDF_Length hoppingSequenceLength; |
| /** \brief NOT USED */ |
| FTDF_Octet* hoppingSequence; |
| /** \brief DO NOT USE */ |
| uint8_t __private3; |
| } FTDF_AssociateResponse; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_ASSOCIATE_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief The short adddress assigned by the coordinator */ |
| FTDF_ShortAddress assocShortAddress; |
| /** \brief Status of the associate request */ |
| FTDF_Status status; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** \brief NOT USED */ |
| FTDF_ChannelOffset channelOffset; |
| /** \brief NOT USED */ |
| FTDF_Length hoppingSequenceLength; |
| /** \brief NOT USED */ |
| FTDF_Octet* hoppingSequence; |
| } FTDF_AssociateConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DISASSOCIATE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Device address mode */ |
| FTDF_AddressMode deviceAddrMode; |
| /** \brief Device PAN ID */ |
| FTDF_PANId devicePANId; |
| /** \brief Device address */ |
| FTDF_Address deviceAddress; |
| /** \brief Disassociate reason */ |
| FTDF_DisassociateReason disassociateReason; |
| /** |
| * \brief Indication whether the disassociate request must be send directly or be queued until a |
| * DATA_REQUEST command frame is received |
| */ |
| FTDF_Boolean txIndirect; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| /** \brief DO NOT USE */ |
| uint8_t __private3; |
| } FTDF_DisassociateRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DISASSOCIATE_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Extended address of the device that did disassociate request */ |
| FTDF_ExtAddress deviceAddress; |
| /** \brief Disassociate reason */ |
| FTDF_DisassociateReason disassociateReason; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_DisassociateIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DISASSOCIATE_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Disassociate request status */ |
| FTDF_Status status; |
| /** \brief Address mode of the device that want/must disassociate */ |
| FTDF_AddressMode deviceAddrMode; |
| /** \brief PAN ID of the device that want/must disassociate */ |
| FTDF_PANId devicePANId; |
| /** \brief address of the device that want/must disassociate */ |
| FTDF_Address deviceAddress; |
| } FTDF_DisassociateConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_BEACON_NOTIFY_INDCATION */ |
| FTDF_MsgId msgId; |
| /** \brief Beacon sequence number, valid only when beacon type is FTDF_NORMAL_BEACON */ |
| FTDF_SN BSN; |
| /** \brief PAN descriptor*/ |
| FTDF_PANDescriptor* PANDescriptor; |
| /** \brief NOT USED */ |
| FTDF_Bitmap8 pendAddrSpec; |
| /** \brief NOT USED */ |
| FTDF_Address* addrList; |
| /** \brief Length of the beacon payload */ |
| FTDF_DataLength sduLength; |
| /** \brief Beacon payload */ |
| FTDF_Octet* sdu; |
| /** \brief Enhanced beacon sequence number, valid only when beacon type is FTDF_ENHANCED_BEACON */ |
| FTDF_SN EBSN; |
| /** \brief Beacon type */ |
| FTDF_BeaconType beaconType; |
| /** |
| * \brief Payload IE list<br> |
| * The whole Payload IE list (including IE descriptors, Sub IE descriptors and content) |
| * is allocate in one data buffer that must be freed by the application using FTDF_REL_DATA_BUFFER |
| * with the IEList pointer as parameter. |
| */ |
| FTDF_IEList* IEList; |
| /** |
| * \brief Timestamp of the time the beacon frame was received<br> |
| * In TSCH mode this timestamp should be used to calculate the TSCH timeslot start time |
| * required in a FTDF_TSCH_MODE_REQUEST message |
| */ |
| FTDF_Time64 timestamp; |
| } FTDF_BeaconNotifyIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_COMM_STATUS_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief PAN ID of the frame causing the error */ |
| FTDF_PANId PANId; |
| /** \brief Source address mode of the frame causing the error */ |
| FTDF_AddressMode srcAddrMode; |
| /** \brief Source address of the frame causing the error */ |
| FTDF_Address srcAddr; |
| /** \brief Destination address mode of the frame causing the error */ |
| FTDF_AddressMode dstAddrMode; |
| /** \brief Destination address of the frame causing the error */ |
| FTDF_Address dstAddr; |
| /** \brief Error status */ |
| FTDF_Status status; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_CommStatusIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_GET_REQUEST */ |
| FTDF_MsgId msgId; |
| FTDF_PIBAttribute PIBAttribute; |
| } FTDF_GetRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_GET_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the get request */ |
| FTDF_Status status; |
| /** \brief PIB attribute ID of PIB attribute gotten */ |
| FTDF_PIBAttribute PIBAttribute; |
| /** |
| * \brief Pointer to the PIB attribute value to be set<br> |
| * Each PIB attribute has its own type, see \link FTDF_PIBAttribute \endlink<br> |
| * In order to access the attribute value the application must cast this pinter |
| * to the correct type. |
| */ |
| const FTDF_PIBAttributeValue* PIBAttributeValue; |
| } FTDF_GetConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SET_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief PIB attribute ID of attribute to be set */ |
| FTDF_PIBAttribute PIBAttribute; |
| /** |
| * \brief Pointer to the PIB attribute value to be set<br> |
| * Each PIB attribute has its own type, see \link FTDF_PIBAttribute \endlink<br> |
| * FTDF does a shallow copy of the PIB attribute. So if the PIB attribute contains pointers to |
| * other data this data is NOT copied by FTDF. The application must make sure that data referred |
| * from a PIB attribute is statically allocated in retention RAM. |
| */ |
| const FTDF_PIBAttributeValue* PIBAttributeValue; |
| } FTDF_SetRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_GET_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Set request status */ |
| FTDF_Status status; |
| /** \brief PIB Attribute ID of PIB attribute that has been set */ |
| FTDF_PIBAttribute PIBAttribute; |
| } FTDF_SetConfirm; |
| |
| typedef struct |
| { |
| FTDF_MsgId msgId; |
| FTDF_GTSCharateristics GTSCharateristics; |
| FTDF_SecurityLevel securityLevel; |
| FTDF_KeyIdMode keyIdMode; |
| FTDF_Octet keySource[ 8 ]; |
| FTDF_KeyIndex keyIndex; |
| } FTDF_GtsRequest; |
| |
| typedef struct |
| { |
| FTDF_MsgId msgId; |
| FTDF_GTSCharateristics GTSCharateristics; |
| FTDF_Status status; |
| } FTDF_GtsConfirm; |
| |
| typedef struct |
| { |
| FTDF_MsgId msgId; |
| FTDF_ShortAddress deviceAddress; |
| FTDF_GTSCharateristics GTSCharateristics; |
| FTDF_SecurityLevel securityLevel; |
| FTDF_KeyIdMode keyIdMode; |
| FTDF_Octet keySource[ 8 ]; |
| FTDF_KeyIndex keyIndex; |
| } FTDF_GtsIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_ORPHAN_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Extended address of orphaned device */ |
| FTDF_ExtAddress orphanAddress; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_OrphanIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_ORPHAN_RESPONSE */ |
| FTDF_MsgId msgId; |
| /** \brief Extended address of orphaned device */ |
| FTDF_ExtAddress orphanAddress; |
| /** \brief Short address of orphaned device */ |
| FTDF_ShortAddress shortAddress; |
| /** \brief Indication whether the device is associated with this coordinator or not */ |
| FTDF_Boolean associatedMember; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_OrphanResponse; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_RESET_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Indicatione whether the PIB attributes must be reset to their default values or not */ |
| FTDF_Boolean setDefaultPIB; |
| } FTDF_ResetRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_RESET_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the reset request */ |
| FTDF_Status status; |
| } FTDF_ResetConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_RX_ENABLE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief NOT USED */ |
| FTDF_Boolean deferPermit; |
| /** \brief NOT USED */ |
| FTDF_Time rxOnTime; |
| /** \brief The time in aBaseSuperFramePeriod's (960 symbols) that the receiver will be on */ |
| FTDF_Time rxOnDuration; |
| } FTDF_RxEnableRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_RX_ENABLE_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the RX enable request */ |
| FTDF_Status status; |
| } FTDF_RxEnableConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SCAN_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Scan Type */ |
| FTDF_ScanType scanType; |
| /** \brief Bitmap of the channels to be scanned (only channel 11 - 27 are supported ) */ |
| FTDF_Bitmap32 scanChannels; |
| /** \brief Channel page of the channels to be scanned (only page 0 is supported ) */ |
| FTDF_ChannelPage channelPage; |
| /** \brief Scan duration per channel, duration = ( ( scanDuration ^ 2 ) - 1 ) * aBaseSuperFramePeriod symbols */ |
| FTDF_ScanDuration scanDuration; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_ScanRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SCAN_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the scan request */ |
| FTDF_Status status; |
| /** \brief Scan Type */ |
| FTDF_ScanType scanType; |
| /** \brief Channel page of the scanned channels */ |
| FTDF_ChannelPage channelPage; |
| /** \brief Bitmap of the channels not scanned but were requested to be scanned */ |
| FTDF_Bitmap32 unscannedChannels; |
| /** \brief Number of entries in energyDetectList or PANDescriptorList */ |
| FTDF_Size resultListSize; |
| /** \brief Pointer to the first energy detect result */ |
| FTDF_Energy* energyDetectList; |
| /** \brief Pointer to the first PAN descriptor */ |
| FTDF_PANDescriptor* PANDescriptorList; |
| /** \brief */ |
| FTDF_CoordRealignDescriptor* coordRealignDescriptor; |
| } FTDF_ScanConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_START_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief PAN ID that will be used by the coordinator */ |
| FTDF_PANId PANId; |
| /** \brief Channel number that will be used by the coordinator */ |
| FTDF_ChannelNumber channelNumber; |
| /** \brief Channel page that will be used by the coordinator */ |
| FTDF_ChannelPage channelPage; |
| /** \brief NOT USED */ |
| FTDF_Time startTime; |
| /** \brief Beacon order, only beacon order 15 (beaconless) is supported */ |
| FTDF_Order beaconOrder; |
| /** \brief NOT USED */ |
| FTDF_Order superframeOrder; |
| /** \brief Indication whether the device must be a coordinator or a PAN coordinator */ |
| FTDF_Boolean PANCoordinator; |
| /** \brief NOT USED */ |
| FTDF_Boolean batteryLifeExtension; |
| /** \brief NOT USED */ |
| FTDF_Boolean coordRealignment; |
| /** \brief NOT USED */ |
| FTDF_SecurityLevel coordRealignSecurityLevel; |
| /** \brief NOT USED */ |
| FTDF_KeyIdMode coordRealignKeyIdMode; |
| /** \brief NOT USED */ |
| FTDF_Octet coordRealignKeySource[ 8 ]; |
| /** \brief NOT USED */ |
| FTDF_KeyIndex coordRealignKeyIndex; |
| /** \brief NOT USED */ |
| FTDF_SecurityLevel beaconSecurityLevel; |
| /** \brief NOT USED */ |
| FTDF_KeyIdMode beaconKeyIdMode; |
| /** \brief NOT USED */ |
| FTDF_Octet beaconKeySource[ 8 ]; |
| /** \brief NOT USED */ |
| FTDF_KeyIndex beaconKeyIndex; |
| } FTDF_StartRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_START_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the start request */ |
| FTDF_Status status; |
| } FTDF_StartConfirm; |
| |
| typedef struct |
| { |
| FTDF_MsgId msgId; |
| FTDF_ChannelNumber channnelNumber; |
| FTDF_ChannelPage channelPage; |
| FTDF_Boolean trackbeacon; |
| } FTDF_SyncRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SYNC_LOSS_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Loss Reason */ |
| FTDF_LossReason lossReason; |
| /** \brief PAN ID */ |
| FTDF_PANId PANId; |
| /** \brief Channel number */ |
| FTDF_ChannelNumber channelNumber; |
| /** \brief Channel page */ |
| FTDF_ChannelPage channelPage; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_SyncLossIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_POLL_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Coordinator address mode */ |
| FTDF_AddressMode coordAddrMode; |
| /** \brief coordinator PAN ID */ |
| FTDF_PANId coordPANId; |
| /** \brief Coordinator address */ |
| FTDF_Address coordAddr; |
| /** \brief Security level */ |
| FTDF_SecurityLevel securityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode keyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet keySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex keyIndex; |
| } FTDF_PollRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_POLL_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the poll request */ |
| FTDF_Status status; |
| } FTDF_PollConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SET_SLOTFRAME_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Slotframe handle */ |
| FTDF_Handle handle; |
| /** \brief Set operation */ |
| FTDF_Operation operation; |
| /** \brief Number of timeslots in this slotframe */ |
| FTDF_SlotframeSize size; |
| } FTDF_SetSlotframeRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SET_SLOTFRAME_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Slotframe handle */ |
| FTDF_Handle handle; |
| /** \brief Status of the set sloytframe request */ |
| FTDF_Status status; |
| } FTDF_SetSlotframeConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SET_LINK_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Set operation */ |
| FTDF_Operation operation; |
| /** \brief Handle of this link, used for delete and modify operations */ |
| FTDF_Handle linkHandle; |
| /** \brief Handle of the slotframe of this link */ |
| FTDF_Handle slotframeHandle; |
| /** \brief Timeslot in the slotframe */ |
| FTDF_Timeslot timeslot; |
| /** \brief Channel offset */ |
| FTDF_ChannelOffset channelOffset; |
| /** |
| * \brief Bit mapped link options, the following options are supported:<br> |
| * FTDF_LINK_OPTION_TRANSMIT: Lik can be used for transmitting<br> |
| * FTDF_LINK_OPTION_RECEIVE: Link can be used for receiving<br> |
| * FTDF_LINK_OPTION_SHARED: Shared link, multiple device can transmit in this link<br> |
| * FTDF_LINK_OPTION_TIME_KEEPING: Link will be used to synchronise timeslots<br> |
| * Multiple options can be defined by or-ing them. |
| */ |
| FTDF_Bitmap8 linkOptions; |
| /** \brief Link type */ |
| FTDF_LinkType linkType; |
| /** \brief Short address of the peer node, only valid if is a transmit link */ |
| FTDF_ShortAddress nodeAddress; |
| } FTDF_SetLinkRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SET_LINK_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the set link request */ |
| FTDF_Status status; |
| /** \brief Link handle */ |
| FTDF_Handle linkHandle; |
| /** \brief Slotframe handle */ |
| FTDF_Handle slotframeHandle; |
| } FTDF_SetLinkConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_TSCH_MODE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief The new TSCH mode */ |
| FTDF_TSCHMode tschMode; |
| /** |
| * \brief The timestamp in symbols of the start of the timeslot with ASN equal to the PIB attribute |
| * FTDF_PIB_ASN<br> |
| * The timestamp should be calculated from the timestamp of the BEACON_NOTIFY_INDICATION message<br> |
| * Before sending the FTDF_TSCH_MODE_REQUEST message the application should set FTDF_PIB_ASN with |
| * the ASN of the TSCH synchronization IE of the IEList of the BEACON_NOTIFY_INDICATION message |
| */ |
| FTDF_Time timeslotStartTime; |
| } FTDF_TschModeRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_TSCH_MODE_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief The new TSCH mode */ |
| FTDF_TSCHMode tschMode; |
| /** \brief Status of the TSCH mode request */ |
| FTDF_Status status; |
| } FTDF_TschModeConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_KEEP_ALIVE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Short address to which keep alive message should be send */ |
| FTDF_ShortAddress dstAddress; |
| /** \brief */ |
| FTDF_KeepAlivePeriod keepAlivePeriod; |
| } FTDF_KeepAliveRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_KEEP_ALIVE_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the keep alive request */ |
| FTDF_Status status; |
| } FTDF_KeepAliveConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_BEACON_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Beacon type */ |
| FTDF_BeaconType beaconType; |
| /** \brief Channel number at which the beacon must be sent, ignored in TSCH mode */ |
| FTDF_ChannelNumber channel; |
| /** \brief Channel page, ignored in TSCH mode */ |
| FTDF_ChannelPage channelPage; |
| /** \brief NOT USED */ |
| FTDF_Order superframeOrder; |
| /** \brief Security level */ |
| FTDF_SecurityLevel beaconSecurityLevel; |
| /** \brief Security key ID mode */ |
| FTDF_KeyIdMode beaconKeyIdMode; |
| /** \brief Security key source */ |
| FTDF_Octet beaconKeySource[ 8 ]; |
| /** \brief Security key index */ |
| FTDF_KeyIndex beaconKeyIndex; |
| /** \brief Beacon destination address mode */ |
| FTDF_AddressMode dstAddrMode; |
| /** \brief Beacon destination address */ |
| FTDF_Address dstAddr; |
| /** \brief Indication whether the BSN (or EBSN) in the beacon frame must suppressed */ |
| FTDF_Boolean BSNSuppression; |
| /** \brief DO NOT USE */ |
| uint8_t __private3; |
| } FTDF_BeaconRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_BEACON_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Status of the beacon request */ |
| FTDF_Status status; |
| } FTDF_BeaconConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_BEACON_REQUEST_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Beacon type */ |
| FTDF_BeaconType beaconType; |
| /** \brief Source address mode */ |
| FTDF_AddressMode srcAddrMode; |
| /** \brief Source address */ |
| FTDF_Address srcAddr; |
| /** \brief Source PAN ID */ |
| FTDF_PANId dstPANId; |
| /** |
| * \brief Payload IE list<br> |
| * The whole Payload IE list (including IE descriptors, Sub IE descriptors and content) |
| * is allocate in one data buffer that must be freed by the application using FTDF_REL_DATA_BUFFER |
| * with the IEList pointer as parameter. |
| */ |
| FTDF_IEList* IEList; |
| } FTDF_BeaconRequestIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_TRANSPARENT_ENABLE_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Enable or disable of transparent mode */ |
| FTDF_Boolean enable; |
| /** \brief Bitmapped transparent options, see FTDF_enableTransparentMode */ |
| FTDF_Bitmap32 options; |
| } FTDF_TransparentEnableRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_TRANSPARENT_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Frame length */ |
| FTDF_DataLength frameLength; |
| /** \brief Pointer to frame, must be allocated with FTDF_GET_DATA_BUFFER */ |
| FTDF_Octet* frame; |
| /** \brief Channel number */ |
| FTDF_ChannelNumber channel; |
| /** \brief Packet Traffic Information (PTI) used for transmitting the frame. */ |
| FTDF_PTI pti; |
| /** \brief CSMA suppression */ |
| FTDF_Boolean cmsaSuppress; |
| /** \brief Application provided handle, will be returned in the transparent confirm call */ |
| void* handle; |
| } FTDF_TransparentRequest; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_TRANSPARENT_CONFIRM */ |
| FTDF_MsgId msgId; |
| /** \brief Application provided handle of the corresponding FTDF_sendFrameTransparent call */ |
| void* handle; |
| /** \brief Bit mapped status */ |
| FTDF_Bitmap32 status; |
| } FTDF_TransparentConfirm; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_TRANSPARENT_INDICATION */ |
| FTDF_MsgId msgId; |
| /** \brief Frame length */ |
| FTDF_DataLength frameLength; |
| /** \brief Pointer to frame, must be freed by the application using FTDF_REL_DATA_BUFFER */ |
| FTDF_Octet* frame; |
| /** \brief Bit mapped receive status */ |
| FTDF_Bitmap32 status; |
| } FTDF_TransparentIndication; |
| |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_SLEEP_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Sleep time */ |
| FTDF_USec sleepTime; |
| } FTDF_SleepRequest; |
| |
| #if FTDF_DBG_BUS_ENABLE |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_DBG_MODE_SET_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief Debug bus mode */ |
| FTDF_DbgMode dbgMode; |
| } FTDF_DbgModeSetRequest; |
| #endif /* FTDF_DBG_BUS_ENABLE */ |
| |
| #if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A |
| typedef struct |
| { |
| /** \brief Message ID = FTDF_FPPR_MODE_SET_REQUEST */ |
| FTDF_MsgId msgId; |
| /** \brief fp bit value to set when src address matches*/ |
| FTDF_Bitmap8 matchFp; |
| /** \brief When set, fp_force_value will be applied to fp bit for all src addresses*/ |
| FTDF_Bitmap8 fpOverride; |
| /** \brief The value will be set to fp bit for all src addresses when fp_override is set*/ |
| FTDF_Bitmap8 fpForce; |
| } FTDF_FpprModeSetRequest; |
| #endif /* dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A */ |
| /** |
| * \brief FTDF_getReleaseInfo - gets the LMAC (FPGA) and UMAC (FTDF SW driver) release info |
| * \param[out] lmacRelName: LMAC release name |
| * \param[out] lmacBuildTime: LMAC build time |
| * \param[out] umacRelName: UMAC release name |
| * \param[out] umacBuildTime: UMAC build time |
| * \remark Sets the application character strings pointers to character strings containing the release |
| * info. The character string space is statically allocated by FTDF and does not need |
| * to be released by the application. |
| */ |
| void FTDF_getReleaseInfo( char** lmacRelName, char** lmacBuildTime, char** umacRelName, |
| char** umacBuildTime ); |
| |
| /** |
| * \brief FTDF_confirmLmacInterrupt - Confirmation that the LMAC interrupt has been received |
| * by the application |
| * \remark This function disables the LMAC interrupt. The application must wait for any other |
| * FTDF API function to be completed and call the function FTDF_eventHandler. This function |
| * will enable the LMAC interrupt again the function FTDF_eventHandler. |
| */ |
| void FTDF_confirmLmacInterrupt( void ); |
| |
| /** |
| * \brief FTDF_eventHandler - Handles an event signalled by the LMAC interrupt |
| * \remark This function handles the event signalled by the LMAC interrupt and enables the LMAC |
| * interrupt when finished. |
| * \warning FTDF is strictly NON reentrant, so FTDF_eventHandler is NOT allowed to be called when another FTDF |
| * is being executed |
| */ |
| void FTDF_eventHandler( void ); |
| |
| /** |
| * \brief FTDF_sndMsg - Sends a request (response) message to FTDF driver |
| * \param[in] msgBuf: The message to be send. To application must set the msgId field and the request |
| * specific parameters by casting it to the appropriate request message structure. |
| * \remark The message must be allocated by the application using the function FTDF_GET_MSG_BUFFER |
| * and will be released by FTDF using FTDF_REL_MSG_BUFFER. When finished FTDF releases the message |
| * buffer and sends a confirm (indication) to the application using the function FTDF_RCV_MSG. |
| * \remark As follows a table of message IDs accepted by FTDF_sndMsg, the message structure corresponding |
| * to this message ID and the confirm send back to the application when the request has been |
| * completed by FTDF: |
| * \remark <br> |
| * \remark Request message ID, Request structure, Request confirm |
| * \remark --------------------------------------------------------------------------------- |
| * \remark FTDF_DATA_REQUEST, FTDF_DataRequest, FTDF_DATA_CONFIRM |
| * \remark FTDF_PURGE_REQUEST, FTDF_PurgeRequest, FTDF_DATA_CONFIRM |
| * \remark FTDF_ASSOCIATE_REQUEST, FTDF_AssociateRequest, FTDF_ASSOCIATE_CONFIRM |
| * \remark FTDF_ASSOCIATE_RESPONSE, FTDF_AssociateResponse, FTDF_COMM_STATUS_INDICATION |
| * \remark FTDF_DISASSOCIATE_REQUEST, FTDF_DisassociateRequest, FTDF_DISASSOCIATE_CONFIRM |
| * \remark FTDF_GET_REQUEST, FTDF_GetRequest, FTDF_GET_CONFIRM |
| * \remark FTDF_SET_REQUEST, FTDF_SetRequest, FTDF_SET_CONFIRM |
| * \remark FTDF_ORPHAN_RESPONSE, FTDF_OrphanResponse, FTDF_COMM_STATUS_INDICATION |
| * \remark FTDF_RESET_REQUEST, FTDF_ResetRequest, FTDF_RESET_CONFIRM |
| * \remark FTDF_RX_ENABLE_REQUEST, FTDF_ScanRequest, FTDF_RX_ENABLE_CONFIRM |
| * \remark FTDF_SCAN_REQUEST, FTDF_ScanRequest, FTDF_SCAN_CONFIRM |
| * \remark FTDF_START_REQUEST, FTDF_StartRequest, FTDF_START_CONFIRM |
| * \remark FTDF_POLL_REQUEST, FTDF_PollRequest, FTDF_POLL_CONFIRM |
| * \remark FTDF_SET_SLOTFRAME_REQUEST, FTDF_SetSlotframeRequest, FTDF_SET_SLOTFRAME_CONFIRM |
| * \remark FTDF_SET_LINK_REQUEST, FTDF_SetLinkRequest, FTDF_SET_LINK_CONFIRM |
| * \remark FTDF_TSCH_MODE_REQUEST, FTDF_TschModeRequest, FTDF_TSCH_MODE_CONFIRM |
| * \remark FTDF_KEEP_ALIVE_REQUEST, FTDF_KeepAliveRequest, FTDF_KEEP_ALIVE_CONFIRM |
| * \remark FTDF_BEACON_REQUEST, FTDF_BeaconRequest, FTDF_BEACON_CONFIRM |
| * \warning FTDF is strictly NON reentrant, so it is NOT allowed to call any other FTDF function before this API has been completed. This including the FTDF_eventHandler function. |
| */ |
| void FTDF_sndMsg( FTDF_MsgBuffer* msgBuf ); |
| |
| /** |
| * \brief FTDF_RCV_MSG - Receives a confir or indication message from the FTDF driver |
| * \param[in] msgBuf: The received message. The msgId field indicates the received message |
| * \remark This function must be implemented by the application and is called by FTDF to pass |
| * a confirm or indication message to the application. It must be configured in the |
| * configuration file ftdf_config.h. |
| * \remark The message buffer is allocated by FTDF using FTDF_GET_MSG_BUFFER and must be released |
| * by the application using FTDF_REL_MSG_BUFFER |
| * \remark As follows a table of the confirm and indications messages and their message structures. |
| * \remark <br> |
| * \remark Confirm/indication message ID, Confirm/indication structure |
| * \remark --------------------------------------------------------------------------------- |
| * \remark FTDF_DATA_INDICATION, FTDF_DataIndication |
| * \remark FTDF_DATA_CONFIRM, FTDF_DataConfirm |
| * \remark FTDF_PURGE_CONFIRM, FTDF_PurgeConfirm |
| * \remark FTDF_ASSOCIATE_INDICATION, FTDF_AssociateIndication |
| * \remark FTDF_ASSOCIATE_CONFIRM, FTDF_AssociateConfirm |
| * \remark FTDF_DISASSOCIATE_INDICATION, FTDF_DisassociateIndication |
| * \remark FTDF_DISASSOCIATE_CONFIRM,FTDF_DisassociateConfirm |
| * \remark FTDF_BEACON_NOTIFY_INDICATION, FTDF_BeaconNotifyIndication |
| * \remark FTDF_COMM_STATUS_INDICATION, FTDF_CommStatusIndication |
| * \remark FTDF_GET_CONFIRM, FTDF_GetConfirm |
| * \remark FTDF_SET_CONFIRM, FTDF_SetConfirm |
| * \remark FTDF_ORPHAN_INDICATION, FTDF_OrphanIndication |
| * \remark FTDF_RESET_CONFIRM, FTDF_ResetConfirm |
| * \remark FTDF_RX_ENABLE_CONFIRM, FTDF_RxEnableConfirm |
| * \remark FTDF_SCAN_CONFIRM, FTDF_ScanConfirm |
| * \remark FTDF_START_CONFIRM, FTDF_StartConfirm |
| * \remark FTDF_SYNC_LOSS_INDICATION, FTDF_SyncLossIndication |
| * \remark FTDF_POLL_CONFIRM, FTDF_PollConfirm |
| * \remark FTDF_SET_SLOTFRAME_CONFIRM, FTDF_SetSlotframeConfirm |
| * \remark FTDF_SET_LINK_CONFIRM, FTDF_SetLinkConfirm |
| * \remark FTDF_TSCH_MODE_CONFIRM, FTDF_TschModeConfirm |
| * \remark FTDF_KEEP_ALIVE_CONFIRM, FTDF_KeepAliveConfirm |
| * \remark FTDF_BEACON_CONFIRM, FTDF_BeaconConfirm |
| * \remark FTDF_BEACON_REQUEST_INDICATION, FTDF_BeaconRequestIndication |
| * \warning FTDF is strictly NON reentrant. Because FTDF_RCV_MSG can be called by FTDF_sndMsg or FTDF_eventHandler |
| * it is not allowed to call other FTDF functions within FTDF_RCV_MSG |
| */ |
| void FTDF_RCV_MSG( FTDF_MsgBuffer* msgBuf ); |
| |
| /** |
| * \brief FTDF_GET_MSG_BUFFER - Allocates a message buffer |
| * \param[in] len: The length of the message buffer to be allocated |
| * \remark This function must be implemented by the application it will called by both the |
| * application and FTDF. It must be configured in the configuration file ftdf_config.h. |
| * \remark The allocated message buffer must be freed using FTDF_REL_MSG_BUFFER |
| * \remark The message buffer must be located in retention RAM |
| * \return pointer to the allocated message buffer. |
| */ |
| FTDF_MsgBuffer* FTDF_GET_MSG_BUFFER( FTDF_Size len ); |
| |
| /** |
| * \brief FTDF_REL_MSG_BUFFER - Frees a message buffer |
| * \param[in] msgBuf: Pointer to the message buffer to be released |
| * \remark This function must be implemented by the application it will called by both the |
| * application and FTDF. It must be configured in the configuration file ftdf_config.h. |
| * \remark It will free message buffers allocated with FTDF_GET_MSG_BUFFER |
| */ |
| void FTDF_REL_MSG_BUFFER( FTDF_MsgBuffer* msgBuf ); |
| |
| /** |
| * \brief FTDF_GET_DATA_BUFFER - Allocates a data buffer |
| * \param[in] len: The length of the data buffer to be allocated |
| * \remark This function must be implemented by the application it will called by both the |
| * application and FTDF. It must be configured in the configuration file ftdf_config.h. |
| * \remark The allocated data buffer must be freed using FTDF_REL_DATA_BUFFER |
| * \remark The data buffer must located in retention RAM |
| * \return pointer to the allocated data buffer. |
| */ |
| FTDF_Octet* FTDF_GET_DATA_BUFFER( FTDF_DataLength len ); |
| |
| /** |
| * \brief FTDF_REL_DATA_BUFFER - Frees a data buffer |
| * \param[in] dataBuf: Pointer to the data buffer to be released |
| * \remark This function must be implemented by the application it will called by both the |
| * application and FTDF. It must be configured in the configuration file ftdf_config.h. |
| * \remark It will free data buffers allocated with FTDF_GET_DATA_BUFFER |
| */ |
| void FTDF_REL_DATA_BUFFER( FTDF_Octet* dataBuf ); |
| |
| /** |
| * \brief FTDF_GET_EXT_ADDRESS - Gets the extended address |
| * \remark This function must be implemented by the application it will called by FTDF. It must |
| * be configured in the configuration file ftdf_config.h. |
| * \remark After a reset it is used by FTDF to get the extended address of the device |
| * \return An extended address. |
| */ |
| FTDF_ExtAddress FTDF_GET_EXT_ADDRESS( void ); |
| |
| /** |
| * \brief FTDF_enableTransparentMode - Enables or disables the transparent mode |
| * \param[in] enable: If FTDF_TRUE transparent mode is enabled else it will be disabled |
| * \param[in] options: A bitmap of transparent mode options. Not used if enable equals to FTDF_FALSE. |
| * \remark If the transparent mode is enabled received frame are passed to the application using |
| * FTDF_RCV_FRAME_TRANSPARENT. The whole MAC frame including frame headers, security headers |
| * and FCS are passed to the application. Depending on the defined options some filtering |
| * is done. |
| * \remark When the transparent mode is enabled frames must be send using the function FTDF_sendFrameTransparent |
| * \remark When the transparent mode is enabled only the following request messages are supported: |
| * \remark <br> |
| * \remark FTDF_GET_REQUEST |
| * \remark FTDF_SET_REQUEST |
| * \remark FTDF_RESET_REQUEST |
| * \remark <br> |
| * \remark The behavior of FTDF when it receives request not supported in transparent mode is NOT defined! |
| * \remark <br> |
| * \remark Transparent mode cannot be enabled if FTDF is in CSL or TSCH mode. |
| * \remark <br> |
| * \remark The following options are supported: |
| * \remark <br> |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_0: Frames of type 0 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_1: Frames of type 1 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_2: Frames of type 2 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_3: Frames of type 3 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_4: Frames of type 4 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_5: Frames of type 5 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_6: Frames of type 6 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_7: Frames of type 7 are always passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_ALL_FRAME_TYPES: All frame types are always passed to the application |
| * \remark FTDF_TRANSPARENT_AUTO_ACK: FTDF sends an automatically and ACK if it receives an version 0 or 1 |
| * frame with AR set in the fram control field |
| * \remark FTDF_TRANSPARENT_AUTO_FP_ACK: FTDF sends an automatically and ACK frame with FP set if it |
| * receives an version 0 or 1 DATA_REQUEST command frame with AR set in the fram control field |
| * \remark FTDF_TRANSPARENT_PASS_CRC_ERROR: Frames with a CRC (FCS) error are passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_ALL_FRAME_VERSION: Frames with any frame version are passed to the |
| * application |
| * \remark FTDF_TRANSPARENT_PASS_ALL_PAN_ID: Frames with any PAN ID (even when it does not match its own |
| * PAN ID) are passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_ALL_PAN_ID: Frames with any address (even when it does not match its own |
| * extended or short address) are passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_ALL_BEACON: Any beacon frame is passed to the application |
| * \remark FTDF_TRANSPARENT_PASS_ALL_NO_DEST_ADDR: Frames with no destination address are always passed to |
| * the application |
| * \remark FTDF_TRANSPARENT_ENABLE_FCS_GENERATION: FTDF adds an FCS to frames send with FTDF_sendFrameTransparent |
| */ |
| void FTDF_enableTransparentMode( FTDF_Boolean enable, |
| FTDF_Bitmap32 options ); |
| |
| /** |
| * \brief FTDF_sendFrameTransparent - Sends a frame transparent |
| * \param[in] frameLength: Length of the MAC frame to be send |
| * \param[in] frame: Data buffer with the frame to be sent. Must be allocate using FTDF_GET_DATA_BUFFER |
| * \param[in] channel: The channel used to send the frame |
| * \param[in] pti: Packet Traffic Information used for transmitting the packet |
| * \param[in] cmsaSuppress: If FTDF_TRUE no CSMA-CA is performed before sending the frame |
| * \param[in] handle: A user defined handle. |
| * \remark FTDF sends the frame tarnsparently. That is the application has to compose the MAC frame header, |
| * security header, etc and make sure that it complies with the IEEE802.15.4 standard. Before sending |
| * it FTDF adds the preamble, frame start, phy header octets and optionally an FCS to the frame provide |
| * by the application. |
| * \remark When FTDF has send the frame or failed to send the frame it will call FTDF_SEND_FRAME_TRANSPARENT_CONFIRM |
| * with the handle provided by the application and the send status. |
| */ |
| void FTDF_sendFrameTransparent( FTDF_DataLength frameLength, |
| FTDF_Octet* frame, |
| FTDF_ChannelNumber channel, |
| FTDF_PTI pti, |
| FTDF_Boolean cmsaSuppress, |
| void* handle ); |
| |
| /** |
| * \brief FTDF_SEND_FRAME_TRANSPARENT_CONFIRM - Confirms a transparent send |
| * \param[in] handle: The application provided handle of the corresponding FTDF_sendFrameTransparent call |
| * \param[in] status: Bit mapped status |
| * \remark This function must be implemented by the application it will called by FTDF. It must |
| * be configured in the configuration file ftdf_config.h. |
| * \remark FTDF calls this function when a frame has send successfully or failed to send. The application can |
| * now free the data buffer of the corresponding FTDF_sendFrameTransparent using FTDF_REL_DATA_BUFFER |
| * \remark If the frame is send successfully status is equal to 0 |
| * \remark If sending the frame failed one of more of the following status bits is set: |
| * - FTDF_TRANSPARENT_CSMACA_FAILURE: Sending failed because CSMA-CA failed |
| * - FTDF_TRANSPARENT_OVERFLOW: Sending failed because of internal resource overflow |
| */ |
| void FTDF_SEND_FRAME_TRANSPARENT_CONFIRM( void* handle, |
| FTDF_Bitmap32 status ); |
| |
| /** |
| * \brief FTDF_sendFrameTransparentConfirm - Converts the FTDF_SEND_FRAME_TRANSPARENT_CONFIRM to a msg buffer |
| * and then calls FTDF_RCV_MSG. |
| * \param[in] handle: The application provided handle of the corresponding FTDF_sendFrameTransparent call |
| * \param[in] status: Bit mapped status |
| * \remark This function converts the input parameters to a FTDF_TransparentConfirm structure |
| * and then calls FTDF_RCV_MSG. |
| * \remark FTDF_SEND_FRAME_TRANSPARENT_CONFIRM can be defined to be this function. |
| */ |
| void FTDF_sendFrameTransparentConfirm( void* handle, |
| FTDF_Bitmap32 status ); |
| |
| /** |
| * \brief FTDF_RCV_FRAME_TRANSPARENT - Receive frame transparent |
| * \param[in] frameLength: Length of the received frame |
| * \param[in] frame: Pointer to received frame. |
| * \param[in] status: Bitmapped receive status |
| * \remark This function must be implemented by the application it will called by FTDF. It must |
| * be configured in the configuration file ftdf_config.h. |
| * \remark FTDF calls this function when a frame is received when transparent mode is enabled |
| * \remark The buffer with the frame must be copied by the application before this function returns |
| * \remark The following status bits can be set: |
| * - FTDF_TRANSPARENT_RCV_CRC_ERROR: The CRC (FCS) of the received frame is not correct |
| * - FTDF_TRANSPARENT_RCV_RES_FRAMETYPE: Received a reserved frame type |
| * - FTDF_TRANSPARENT_RCV_RES_FRAME_VERSION: Received a reserved frame version |
| * - FTDF_TRANSPARENT_RCV_UNEXP_DST_ADDR: Unexpected destination address |
| * - FTDF_TRANSPARENT_RCV_UNEXP_DST_PAN_ID: Unexpected destionation PAN ID |
| * - FTDF_TRANSPARENT_RCV_UNEXP_BEACON: Unexpected beacon frame |
| * - FTDF_TRANSPARENT_RCV_UNEXP_NO_DEST_ADDR: Unexpected frame without destination adres. |
| */ |
| void FTDF_RCV_FRAME_TRANSPARENT( FTDF_DataLength frameLength, |
| FTDF_Octet* frame, |
| FTDF_Bitmap32 status, |
| FTDF_LinkQuality lqi); |
| |
| /** |
| * \brief FTDF_rcvFrameTransparent - Converts the FTDF_RCV_FRAME_TRANSPARENT to a msg buffer |
| * and then calls FTDF_RCV_MSG. |
| * \param[in] frameLength: Length of the received frame |
| * \param[in] frame: Pointer to received frame. |
| * \param[in] status: Bitmapped receive status |
| * \remark This function convers the input parameters to a FTDF_TransparentIndication structure |
| * and then calls FTDF_RCV_MSG. |
| * \remark FTDF_RCV_FRAME_TRANSPARENT can be defined to be this function. |
| */ |
| void FTDF_rcvFrameTransparent( FTDF_DataLength frameLength, |
| FTDF_Octet* frame, |
| FTDF_Bitmap32 status, |
| FTDF_LinkQuality lqi); |
| |
| /** |
| * \brief FTDF_setSleepAttributes - Set sleep atributes |
| * \param[in] lowPowerClockCycle: The LP clock cycle in picoseconds |
| * \param[in] wakeUpLatency: The wakep up latency time in low power clock cycles |
| * \remark This functions sets some attributes required by FTDF to go into a deep sleep and wake up from it. |
| * \remark The wake up latency is the time between the wakeup signal send by FTDF and the moment that the |
| * clocks are stable. It will be used by FTDF to determine when it must must send the wakeup signal. |
| * \remark The low power clock cycle will be used to determine how long the system has slept and recover |
| * the symbol counter internally used by FTDF. |
| */ |
| void FTDF_setSleepAttributes( FTDF_PSec lowPowerClockCycle, |
| FTDF_NrLowPowerClockCycles wakeUpLatency ); |
| |
| /** |
| * \brief FTDF_canSleep - Indicates whether FTDF can go in a deep sleep |
| * \remark This function returns the time in microseconds that the FTDF can deep sleep. |
| * \remark It does NOT take into account the wakeup latency. |
| * \return The number of microseconds that the FTDF can deep sleep. If equal to 0 the FTDF is still active |
| * and cannot deep sleep |
| */ |
| FTDF_USec FTDF_canSleep( void ); |
| |
| /** |
| * \brief FTDF_prepareForSleep - Prepare the FTDF for a deep sleep |
| * \param[in] sleepTime: The sleep time. After the sleep time the FTDF must be ready to do next scheduled activity. |
| * \remark When this function is completed the application can safely power off the FTDF and put the uP in |
| * a deep sleep. At least wake up latency time microseconds before sleep time is expired the FTDF |
| * will send a wakeup signal. FTDF expect that the application calls FTDF_wakeUp as it has been |
| * woken up. |
| * \return FTDF_TRUE if the FTDF can be put in deep sleep, FTDF_FALSE if the sleepTime is too short to go to |
| * deep sleep and wake up again after sleepTime microseconds, the FTDF cannot be put in deep sleep. |
| */ |
| FTDF_Boolean FTDF_prepareForSleep( FTDF_USec sleepTime ); |
| |
| /** |
| * \brief FTDF_wakeUp - Wake up the FTDF after a sleep |
| * \remark This function will restores the FTDF to state before the deep sleep. It will does this in 2 steps |
| * 1. It initialises it internal states and data structures and all the non timing specific HW. After |
| * that it waits until the wake up latency time has been expired. When expired FTDF assumes that the |
| * slocks are stable. |
| * 2. It restores timers in HW and calls the function FTDF_WAKE_UP_READY to indicate FTDF is up again, |
| * ready to perform scheduled activities and ready to process new requests from the application. |
| */ |
| void FTDF_wakeUp( void ); |
| |
| /** |
| * \brief FTDF_WAKE_UP_READY - Indication that FTDF has woke up |
| * \remark This function must be implemented by the application it will called by FTDF. It must |
| * be configured in the configuration file ftdf_config.h. |
| * \remark FTDF calls this function when it is up again, ready to perform scheduled activities and ready to |
| * process new requests from the application. |
| */ |
| void FTDF_WAKE_UP_READY( void ); |
| |
| /** |
| * \brief FTDF_SLEEP_CALLBACK - Callback from FTDF_SLEEP_REQUEST |
| * \remark This function must be implemented by the application, it will be called by FTDF. |
| * It must be configured in the configuration file ftdf_config.h |
| * \remark FTDF calls this function when an FTDF_SLEEP_REQUEST message is sent through the FTDF_sndMsg function. |
| */ |
| void FTDF_SLEEP_CALLBACK( FTDF_USec sleepTime ); |
| |
| void FTDF_reset(int setDefaultPIB); |
| |
| FTDF_PTI FTDF_getRxPti( void ); |
| |
| #if FTDF_USE_PTI |
| void FTDF_setRxPti( FTDF_PTI rx_pti ); |
| #if FTDF_USE_AUTO_PTI |
| void FTDF_restoreRxPti(void); |
| #endif |
| #endif |
| |
| #ifdef FTDF_PHY_API |
| FTDF_Status FTDF_sendFrameSimple( FTDF_DataLength frameLength, |
| FTDF_Octet* frame, |
| FTDF_ChannelNumber channel, |
| FTDF_PTI pti, |
| FTDF_Boolean csmaSuppress); |
| FTDF_PIBAttributeValue *FTDF_getValue(FTDF_PIBAttribute PIBAttribute); |
| FTDF_Status FTDF_setValue(FTDF_PIBAttribute PIBAttribute, const FTDF_PIBAttributeValue *PIBAttributeValue); |
| void FTDF_rxEnable(FTDF_Time rxOnDuration); |
| #endif /* FTDF_PHY_API */ |
| |
| #if FTDF_DBG_BUS_ENABLE |
| /** |
| * \brief Checks current debug mode and makes appropriate hardware configurations. |
| */ |
| void FTDF_checkDbgMode(void); |
| |
| /** |
| * \brief Sets debug bus mode. |
| */ |
| void FTDF_setDbgMode(FTDF_DbgMode dbgMode); |
| |
| /** |
| * \brief Debug bus GPIO configuration callback. Makes appropriate GPIO configurations for the debug |
| * bus. |
| */ |
| void FTDF_DBG_BUS_GPIO_CONFIG(void); |
| #endif /* FTDF_DBG_BUS_ENABLE */ |
| |
| #if dg_configUSE_FTDF_DDPHY == 1 |
| void FTDF_ddphySet(uint16_t ccaReg); |
| #endif /* dg_configUSE_FTDF_DDPHY == 1 */ |
| |
| #if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A |
| |
| #if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO |
| #ifndef FTDF_LITE |
| /** |
| * \brief Controls when the FPPR address invalidation will be performed. |
| * |
| * If set to 0 (recommended), address invalidation in FPPR occurs right after the frame is passed to |
| * LMAC for direct transmission. If set to 1, address invalidation occurs after the associated |
| * confirm message is received. |
| */ |
| #define FTDF_FPPR_DEFER_INVALIDATION 0 |
| |
| /** |
| * \brief Adds a new short address to FPPR, initializing the corresponding FSM. |
| * |
| * A short address FP FSM accepts the following notifications (events): |
| * |
| * - New address (initialize) by calling @ref FTDF_fpFsmShortAddressNew() |
| * - Last frame pending (passed to direct sending) by calling @ref |
| * FTDF_fpFsmShortAddressLastFramePending() |
| * - Last pending frame sent by calling @ref FTDF_fpFsmClearPending() |
| * |
| * A new address may be rejected if there is no adequate space left in FPPR. |
| * |
| * \param [in] panId Destination PAN ID. |
| * \param [in] shortAddress Destination short address. |
| * |
| * \return \ref FTDF_TRUE on success. |
| */ |
| FTDF_Boolean FTDF_fpFsmShortAddressNew(FTDF_PANId panId, FTDF_ShortAddress shortAddress); |
| |
| /** |
| * \brief Adds a new extended address to FPPR, initializing the corresponding FSM. |
| * |
| * An extended address FP FSM accepts the following notifications (events): |
| * |
| * - New address (initialize) by calling @ref FTDF_fpFsmExtAddressNew() |
| * - Last frame pending (passed to direct sending) by calling @ref |
| * FTDF_fpFsmExtAddressLastFramePending() |
| * - Last pending frame sent by calling @ref FTDF_fpFsmClearPending() |
| * |
| * A new address may be rejected if there is no adequate space left in FPPR. |
| * |
| * \param [in] panId Destination PAN ID. |
| * \param [in] extAddress Destination extended address. |
| * |
| * \return \ref FTDF_TRUE on success. |
| */ |
| FTDF_Boolean FTDF_fpFsmExtAddressNew(FTDF_PANId panId, FTDF_ExtAddress extAddress); |
| |
| /** |
| * \brief Notifies FP FSM that the last packet for the associated destination has been passed for |
| * direct transmission. |
| * |
| * \param [in] panId Destination PAN ID. |
| * \param [in] shortAddress Destination short address. |
| */ |
| void FTDF_fpFsmShortAddressLastFramePending(FTDF_PANId panId, FTDF_ShortAddress shortAddress); |
| |
| /** |
| * \brief Notifies FP FSM that the last packet for the associated destination has been passed for |
| * direct transmission. |
| * |
| * \param [in] panId Destination PAN ID. |
| * \param [in] shortAddress Destination extended address. |
| */ |
| void FTDF_fpFsmExtAddressLastFramePending(FTDF_PANId panId, FTDF_ExtAddress extAddress); |
| |
| /** |
| * \brief Notifies FP FSM that the last pending packet has been transmitted (UMAC state machine |
| * closed). |
| */ |
| void FTDF_fpFsmClearPending(void); |
| |
| #endif /* #ifndef FTDF_LITE */ |
| |
| /** |
| * \brief Number of FPPR table entries. |
| */ |
| #define FTDF_FPPR_TABLE_ENTRIES 24 |
| |
| /** |
| * \brief Number of extended address table entries. |
| */ |
| #define FTDF_FPPR_TABLE_EXT_ADDRESS_ENTRIES FTDF_FPPR_TABLE_ENTRIES |
| |
| /** |
| * \brief Number of short address table entries. |
| */ |
| #define FTDF_FPPR_TABLE_SHORT_ADDRESS_ENTRIES (FTDF_FPPR_TABLE_ENTRIES * 4) |
| |
| /** |
| * \brief Resets FPPR table, invalidating all addresses. |
| */ |
| void FTDF_fpprReset(void); |
| |
| /** |
| * \brief Gets the short address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * \param [in] shortAddrIdx Short address position within the entry (0 to 3). |
| * |
| * \return Requested short address |
| */ |
| FTDF_ShortAddress FTDF_fpprGetShortAddress(uint8_t entry, uint8_t shortAddrIdx); |
| |
| /** |
| * \brief Programs a short address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * \param [in] shortAddrIdx Short address position within the entry (0 to 3). |
| * \param [in] Associated short address. |
| */ |
| void FTDF_fpprSetShortAddress(uint8_t entry, uint8_t shortAddrIdx, |
| FTDF_ShortAddress shortAddress); |
| |
| /** |
| * \brief Determines validity of a short address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * \param [in] shortAddrIdx Short address position within the entry (0 to 3). |
| * |
| * \return FTDF_TRUE if the address is valid. |
| */ |
| FTDF_Boolean FTDF_fpprGetShortAddressValid(uint8_t entry, uint8_t shortAddrIdx); |
| |
| /** |
| * \brief Sets validity of a short address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * \param [in] shortAddrIdx Short address position within the entry (0 to 3). |
| * \param [in] valid Associated validity. |
| */ |
| void FTDF_fpprSetShortAddressValid(uint8_t entry, uint8_t shortAddrIdx, |
| FTDF_Boolean valid); |
| |
| /** |
| * \brief Gets the extended address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * |
| * \return Requested extended address |
| */ |
| FTDF_ExtAddress FTDF_fpprGetExtAddress(uint8_t entry); |
| |
| /** |
| * \brief Programs an extended address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * \param [in] Associated extended address. |
| */ |
| void FTDF_fpprSetExtAddress(uint8_t entry, FTDF_ExtAddress extAddress); |
| |
| /** |
| * \brief Determines validity of an extended address programmed at the specified FPPR table |
| * position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * |
| * \return \ref FTDF_TRUE if the address is valid. |
| */ |
| FTDF_Boolean FTDF_fpprGetExtAddressValid(uint8_t entry); |
| |
| /** |
| * \brief Sets validity of an extended address programmed at the specified FPPR table position. |
| * |
| * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). |
| * \param [in] valid Associated validity. |
| */ |
| void FTDF_fpprSetExtAddressValid(uint8_t entry, FTDF_Boolean valid); |
| |
| /** |
| * \brief Gets a free (invalid) short address position in the FPPR table. |
| * |
| * \param [out] entry Reference to the FPPR table entry. |
| * \param [out] shortAddrIdx Reference to the short address position within the entry. |
| * |
| * \return \ref FTDF_TRUE if a free position was found. |
| */ |
| FTDF_Boolean FTDF_fpprGetFreeShortAddress(uint8_t * entry, |
| uint8_t * shortAddrIdx); |
| |
| /** |
| * \brief Gets a free (invalid) extended address position in the FPPR table. |
| * |
| * \param [out] entry Reference to the FPPR table entry. |
| * |
| * \return \ref FTDF_TRUE if a free position was found. |
| */ |
| FTDF_Boolean FTDF_fpprGetFreeExtAddress(uint8_t * entry); |
| |
| /** |
| * \brief Looks up a short address within the FPPR table. |
| * |
| * \param [in] shortAddr Associated short address. |
| * \param [out] entry Reference to the FPPR table entry. |
| * \param [out] shortAddrIdx Reference to the short address position within the entry. |
| * |
| * * \return \ref FTDF_TRUE if the address was found. |
| */ |
| FTDF_Boolean FTDF_fpprLookupShortAddress(FTDF_ShortAddress shortAddr, uint8_t * entry, |
| uint8_t * shortAddrIdx); |
| |
| /** |
| * \brief Looks up an extended address within the FPPR table. |
| * |
| * \param [in] extAddr Associated extended address. |
| * \param [out] entry Reference to the FPPR table entry. |
| * |
| * * \return \ref FTDF_TRUE if the address was found. |
| */ |
| FTDF_Boolean FTDF_fpprLookupExtAddress(FTDF_ExtAddress extAddr, uint8_t * entry); |
| |
| #endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ |
| |
| /** |
| * \brief Sets FPPR mode. |
| * |
| * \param [in] matchFp Specifies the value of the FP bit when acknowledging a received frame with a |
| * source address that matches a valid a address in the FPPR table. The opposite value is set if the |
| * source address does not match. Ignored if \a fpOverride is \ref FTDF_TRUE. |
| * |
| * \param [in] fpOverride If \ref FTDF_TRUE, the value of \a fpForce is used for setting the FP bit, |
| * regardless of the address table matching result. |
| * |
| * \param [in] fpForce FP bit value when fpOverride is \ref FTDF_TRUE. Ignored otherwise. |
| */ |
| void FTDF_fpprSetMode(FTDF_Boolean matchFp, FTDF_Boolean fpOverride, FTDF_Boolean fpForce); |
| |
| #if FTDF_FP_BIT_TEST_MODE |
| /** |
| * \brief Gets FPPR mode. |
| * |
| * \param [out] matchFp Reference to the returned value. \see FTDF_fpprRamSetMode |
| * |
| * \param [out] fpOverride Reference to the returned value. \see FTDF_fpprRamSetMode |
| * |
| * \param [out] fpForce FP Reference to the returned value. \see FTDF_fpprRamSetMode |
| */ |
| void FTDF_fpprGetMode(FTDF_Boolean * matchFp, FTDF_Boolean * fpOverride, FTDF_Boolean * fpForce); |
| #endif //FTDF_FP_BIT_TEST_MODE |
| |
| #if FTDF_USE_LPDP == 1 |
| |
| /** |
| * \brief Enable or disable LPDP. |
| * |
| * \param [in] enable if FTDF_TRUE, LPDP functionality is enabled. |
| */ |
| void FTDF_lpdpEnable(FTDF_Boolean enable); |
| |
| #if FTDF_FP_BIT_TEST_MODE |
| /** |
| * \brief Checks whether LPDP is enabled. |
| * |
| * \return FTDF_TRUE, if LPDP functionality is enabled. |
| */ |
| FTDF_Boolean FTDF_lpdpIsEnabled(void); |
| #endif |
| |
| #endif /* #if FTDF_USE_LPDP == 1 */ |
| #endif /* dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A */ |
| |
| #endif /* FTDF_H_ */ |
| |
| /** |
| * \} |
| * \} |
| * \} |
| */ |
| |