walnux/drivers/wireless/spirit/include/spirit_pktcommon.h
Gregory Nutt 2fc0fbcf7e Squashed commit of the following:
commit 89e9d426e91c056e659fccf5e5c4392618f8f777
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 16:44:19 2017 -0600

    Update some comments

commit 9c5d8a5833350006ed389e898b11c8c8a20e5f4f
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 16:15:54 2017 -0600

    Spirit:  Rename drivers/wireless/spirit/src to lib.  Move Spirit network driver out of IEEE802.15.4 into drivers/wireless/spirit/drivers

commit cabc0ec9e6eb558dcb715ab17264383aa0105e7a
Merge: 87b616414a 6bd744c4b3
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 15:38:40 2017 -0600

    Merge remote-tracking branch 'origin/master' into spirit

commit 87b616414a79c01a71acea78f8258e05325c1996
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 15:37:27 2017 -0600

    Spirit radio driver is mutating into a standalone network driver.

commit 507798233868a661ae8adad3e3aa117075a7a146
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 13:32:08 2017 -0600

    Spirit: More radio initialization logic

commit 33af25704ce9ca83d576300d153cfe31cc6d2576
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 12:19:14 2017 -0600

    Spirit:  Beginning of radio initialization logic

commit 97b20014c016e55952a8f9d8f4ae29e2cc555b23
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Mon Jul 24 09:42:06 2017 -0600

    Spirit: More initialization logic.

commit 295d8e27824c0417fccea2344b30bb5c93ffbabe
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sun Jul 23 15:39:53 2017 -0600

    Spirit:  Add header file containing enumeration of commands.

commit 8a2d9dd8eb9cc70cbcdd1b913fc9022b9c9ec8da
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sun Jul 23 11:33:50 2017 -0600

    Spirit:  Add GPIO initialization logic

commit 8b6d80c44f92024c45a6ba63ba1af3fdafe94dc3
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sun Jul 23 10:07:25 2017 -0600

    Spirit:  Add interrupt control logic.

commit 423f846fe5c914f92a4bfea4d9d1fa33de1c77a5
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 19:06:52 2017 -0600

    Spirit: Yet a little more radio initialization logic.

commit 5895b979823e51ddde5ad52e6de66a8ad662e883
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 15:36:05 2017 -0600

    Spirit: A little more radio initialization logic.

commit 86311ab30aad386203c181c792847dd1d37f9a02
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 13:02:32 2017 -0600

    Spirit: A miniscule amount of radio initialization logic.

commit ad55e89d5ee12ea1eeea95fcd38ff3da0db4416a
Merge: 90a7666655 f4e46b0da7
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 10:56:30 2017 -0600

    Merge remote-tracking branch 'origin/master' into spirit

commit 90a766665534b05da0157dbc383cb06a98c86a79
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 10:52:52 2017 -0600

    Spirit1:  A few fixes for a clean build of initial configuration (not much there yet)

commit bbbf04c223230a52a7705a2161128265cfbaa480
Merge: 623d54a7f7 2319ea53a9
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 09:53:57 2017 -0600

    Merge remote-tracking branch 'origin/master' into spirit

commit 623d54a7f719e9032099f88f38203efee4b80722
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 09:43:52 2017 -0600

    b-l475e-iot01a: Add a configuration for testing sprit radio.

commit d309d73d9f4665f9d870eb03531f450043d9389d
Merge: 52c3ddfae6 d88dc9b2e5
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 09:02:06 2017 -0600

    Merge remote-tracking branch 'origin/master' into spirit

commit 52c3ddfae6802e111c2b5cf1207baf21a61dd00b
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Sat Jul 22 08:33:04 2017 -0600

    Spirit:  Add register definition header file.

commit 8d842ab5e8f9ca653b42f9ee88dc279f06b4fa98
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Fri Jul 21 17:27:03 2017 -0600

    b-l475e-iot01a: Add initial, unverified support for the SPSRGF/Spirit1 module.

commit 73d902a1048616fb9c2dd2147cabcd8ee78e19ac
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Fri Jul 21 15:49:43 2017 -0600

    Spirit: Fixes to get skeleton IEEE 802.15.4 driver build.

commit ebc5a8387bb94f0cc3827533795f3e4a33207e67
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Fri Jul 21 15:16:29 2017 -0600

    Spirit1:  Add framework for IEEE 802.15.4 driver.  Does not yet build.

commit 52e195a7ae14ddb18bdd56258f4877381d2501ca
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Fri Jul 21 14:02:42 2017 -0600

    Spirit:  A little more SPI logic.

commit 90048d0c5b8a5af4d81a15d99535c84ed38d8ae9
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Fri Jul 21 11:19:06 2017 -0600

    Spirit: Build directories setup.  Some initial files added, mostly just to verify build.

commit 8273a381ac1f6bb081b292b5e73226185e9e634c
Author: Gregory Nutt <gnutt@nuttx.org>
Date:   Fri Jul 21 08:34:04 2017 -0600

    USB composite:  Remove references to CDC/ACM and USB MSC from composite logic.  They are no longer coupled.
2017-07-24 16:46:30 -06:00

205 lines
9.7 KiB
C

/******************************************************************************
* include/nuttx/wireless/spirit/spirit_pktcommon.h
* Configuration and management of the common features of SPIRIT packets.
*
* Copyright(c) 2015 STMicroelectronics
* Author: VMA division - AMS
* Version 3.2.2 08-July-2015
*
* Adapted for NuttX by:
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 STMicroelectronics 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 __INCLUDE_NUTT_WIRELESS_SPIRIT_SPIRIT_PKTCOMMON_H
#define __INCLUDE_NUTT_WIRELESS_SPIRIT_SPIRIT_PKTCOMMON_H
/* This module provides all the common functions and definitions used by the
* packets modules. Here are also defined all the generic enumeration types
* that are redefined in the specific packets modules, but every enumeration
* value is referred to this module. So the user who wants to configure the
* preamble of a Basic, or a STack packet has to use the enumeration values
* defined here.
*
* Example:
*
* ...
*
* spirit_pktbasic_set_preamblen(PKT_PREAMBLE_LENGTH_18BYTES);
*
* ...
*/
/******************************************************************************
* Included Files
******************************************************************************/
#include "spirit_types.h"
/******************************************************************************
* Pre-processor Definitions
******************************************************************************/
/* Macros used in assertions */
#define IS_PKT_PREAMBLE_LENGTH(len) \
((len == PKT_PREAMBLE_LENGTH_01BYTE) || (len == PKT_PREAMBLE_LENGTH_02BYTES) || \
(len == PKT_PREAMBLE_LENGTH_03BYTES) || (len == PKT_PREAMBLE_LENGTH_04BYTES) || \
(len == PKT_PREAMBLE_LENGTH_05BYTES) || (len == PKT_PREAMBLE_LENGTH_06BYTES) || \
(len == PKT_PREAMBLE_LENGTH_07BYTES) || (len == PKT_PREAMBLE_LENGTH_08BYTES) || \
(len == PKT_PREAMBLE_LENGTH_09BYTES) || (len == PKT_PREAMBLE_LENGTH_10BYTES) || \
(len == PKT_PREAMBLE_LENGTH_11BYTES) || (len == PKT_PREAMBLE_LENGTH_12BYTES) || \
(len == PKT_PREAMBLE_LENGTH_13BYTES) || (len == PKT_PREAMBLE_LENGTH_14BYTES) || \
(len == PKT_PREAMBLE_LENGTH_15BYTES) || (len == PKT_PREAMBLE_LENGTH_16BYTES) || \
(len == PKT_PREAMBLE_LENGTH_17BYTES) || (len == PKT_PREAMBLE_LENGTH_18BYTES) || \
(len == PKT_PREAMBLE_LENGTH_19BYTES) || (len == PKT_PREAMBLE_LENGTH_20BYTES) || \
(len == PKT_PREAMBLE_LENGTH_21BYTES) || (len == PKT_PREAMBLE_LENGTH_22BYTES) || \
(len == PKT_PREAMBLE_LENGTH_23BYTES) || (len == PKT_PREAMBLE_LENGTH_24BYTES) || \
(len == PKT_PREAMBLE_LENGTH_25BYTES) || (len == PKT_PREAMBLE_LENGTH_26BYTES) || \
(len == PKT_PREAMBLE_LENGTH_27BYTES) || (len == PKT_PREAMBLE_LENGTH_28BYTES) || \
(len == PKT_PREAMBLE_LENGTH_29BYTES) || (len == PKT_PREAMBLE_LENGTH_30BYTES) || \
(len == PKT_PREAMBLE_LENGTH_31BYTES) || (len == PKT_PREAMBLE_LENGTH_32BYTES))
#define IS_PKT_SYNC_LENGTH(len) \
((len == PKT_SYNC_LENGTH_1BYTE) || (len == PKT_SYNC_LENGTH_2BYTES) || \
(len == PKT_SYNC_LENGTH_3BYTES) || (len == PKT_SYNC_LENGTH_4BYTES))
#define IS_PKT_FIX_VAR_LENGTH(len) \
((len == PKT_LENGTH_FIX) || (len == PKT_LENGTH_VAR))
#define IS_PKT_CRC_MODE(mode) \
((mode == PKT_NO_CRC) || (mode == PKT_CRC_MODE_8BITS) || \
(mode == PKT_CRC_MODE_16BITS_1) || (mode == PKT_CRC_MODE_16BITS_2) || \
(mode == PKT_CRC_MODE_24BITS))
#define IS_PKT_CONTROL_LENGTH(len) \
((len == PKT_CONTROL_LENGTH_0BYTES) || (len == PKT_CONTROL_LENGTH_1BYTE) || \
(len == PKT_CONTROL_LENGTH_2BYTES) || (len == PKT_CONTROL_LENGTH_3BYTES) || \
(len == PKT_CONTROL_LENGTH_4BYTES))
/******************************************************************************
* Public Types
******************************************************************************/
#ifdef __cplusplus
extern "C"
{
#endif
/* Preamble length in bytes enumeration. */
enum pkt_premblen_e
{
PKT_PREAMBLE_LENGTH_01BYTE = 0x00, /* Preamble length 1 byte */
PKT_PREAMBLE_LENGTH_02BYTES = 0x08, /* Preamble length 2 bytes */
PKT_PREAMBLE_LENGTH_03BYTES = 0x10, /* Preamble length 3 bytes */
PKT_PREAMBLE_LENGTH_04BYTES = 0x18, /* Preamble length 4 bytes */
PKT_PREAMBLE_LENGTH_05BYTES = 0x20, /* Preamble length 5 bytes */
PKT_PREAMBLE_LENGTH_06BYTES = 0x28, /* Preamble length 6 bytes */
PKT_PREAMBLE_LENGTH_07BYTES = 0x30, /* Preamble length 7 bytes */
PKT_PREAMBLE_LENGTH_08BYTES = 0x38, /* Preamble length 8 bytes */
PKT_PREAMBLE_LENGTH_09BYTES = 0x40, /* Preamble length 9 bytes */
PKT_PREAMBLE_LENGTH_10BYTES = 0x48, /* Preamble length 10 bytes */
PKT_PREAMBLE_LENGTH_11BYTES = 0x50, /* Preamble length 11 bytes */
PKT_PREAMBLE_LENGTH_12BYTES = 0x58, /* Preamble length 12 bytes */
PKT_PREAMBLE_LENGTH_13BYTES = 0x60, /* Preamble length 13 bytes */
PKT_PREAMBLE_LENGTH_14BYTES = 0x68, /* Preamble length 14 bytes */
PKT_PREAMBLE_LENGTH_15BYTES = 0x70, /* Preamble length 15 bytes */
PKT_PREAMBLE_LENGTH_16BYTES = 0x78, /* Preamble length 16 bytes */
PKT_PREAMBLE_LENGTH_17BYTES = 0x80, /* Preamble length 17 bytes */
PKT_PREAMBLE_LENGTH_18BYTES = 0x88, /* Preamble length 18 bytes */
PKT_PREAMBLE_LENGTH_19BYTES = 0x90, /* Preamble length 19 bytes */
PKT_PREAMBLE_LENGTH_20BYTES = 0x98, /* Preamble length 20 bytes */
PKT_PREAMBLE_LENGTH_21BYTES = 0xa0, /* Preamble length 21 bytes */
PKT_PREAMBLE_LENGTH_22BYTES = 0xa8, /* Preamble length 22 bytes */
PKT_PREAMBLE_LENGTH_23BYTES = 0xb0, /* Preamble length 23 bytes */
PKT_PREAMBLE_LENGTH_24BYTES = 0xb8, /* Preamble length 24 bytes */
PKT_PREAMBLE_LENGTH_25BYTES = 0xc0, /* Preamble length 25 bytes */
PKT_PREAMBLE_LENGTH_26BYTES = 0xc8, /* Preamble length 26 bytes */
PKT_PREAMBLE_LENGTH_27BYTES = 0xd0, /* Preamble length 27 bytes */
PKT_PREAMBLE_LENGTH_28BYTES = 0xd8, /* Preamble length 28 bytes */
PKT_PREAMBLE_LENGTH_29BYTES = 0xe0, /* Preamble length 29 bytes */
PKT_PREAMBLE_LENGTH_30BYTES = 0xe8, /* Preamble length 30 bytes */
PKT_PREAMBLE_LENGTH_31BYTES = 0xf0, /* Preamble length 31 bytes */
PKT_PREAMBLE_LENGTH_32BYTES = 0xf8 /* Preamble length 32 bytes */
};
/* Sync length in bytes enumeration. */
enum pkt_synlen_e
{
PKT_SYNC_LENGTH_1BYTE = 0x00, /* Sync length 1 byte */
PKT_SYNC_LENGTH_2BYTES = 0x02, /* Sync length 2 bytes */
PKT_SYNC_LENGTH_3BYTES = 0x04, /* Sync length 3 bytes */
PKT_SYNC_LENGTH_4BYTES = 0x06, /* Sync length 4 bytes */
};
/* Fixed or variable payload length enumeration. */
enum pkt_fixvar_len_e
{
PKT_LENGTH_FIX = 0x00, /* Fixed payload length */
PKT_LENGTH_VAR = 0x01 /* Variable payload length */
};
/* CRC length in bytes enumeration. */
enum pkt_crcmode_e
{
PKT_NO_CRC = 0x00, /* No CRC */
PKT_CRC_MODE_8BITS = 0x20, /* CRC length 8 bits - poly: 0x07 */
PKT_CRC_MODE_16BITS_1 = 0x40, /* CRC length 16 bits - poly: 0x8005 */
PKT_CRC_MODE_16BITS_2 = 0x60, /* CRC length 16 bits - poly: 0x1021 */
PKT_CRC_MODE_24BITS = 0x80, /* CRC length 24 bits - poly: 0x864CFB */
};
/* Control length in bytes enumeration for SPIRIT packets. */
enum pkt_ctrllen_e
{
PKT_CONTROL_LENGTH_0BYTES = 0x00, /* Control length 0 byte */
PKT_CONTROL_LENGTH_1BYTE, /* Control length 1 byte */
PKT_CONTROL_LENGTH_2BYTES, /* Control length 2 bytes */
PKT_CONTROL_LENGTH_3BYTES, /* Control length 3 bytes */
PKT_CONTROL_LENGTH_4BYTES /* Control length 4 bytes */
};
/******************************************************************************
* Public Function Prototypes
******************************************************************************/
/******************************************************************************
* Name:
*
* Description:
*
* Input Parameters:
*
* Returned Value:
*
******************************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* __INCLUDE_NUTT_WIRELESS_SPIRIT_SPIRIT_PKTCOMMON_H */