1*cfb92d14SAndroid Build Coastguard Worker /* 2*cfb92d14SAndroid Build Coastguard Worker * Copyright (c) 2019, The OpenThread Authors. 3*cfb92d14SAndroid Build Coastguard Worker * All rights reserved. 4*cfb92d14SAndroid Build Coastguard Worker * 5*cfb92d14SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 6*cfb92d14SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are met: 7*cfb92d14SAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright 8*cfb92d14SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 9*cfb92d14SAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 10*cfb92d14SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 11*cfb92d14SAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 12*cfb92d14SAndroid Build Coastguard Worker * 3. Neither the name of the copyright holder nor the 13*cfb92d14SAndroid Build Coastguard Worker * names of its contributors may be used to endorse or promote products 14*cfb92d14SAndroid Build Coastguard Worker * derived from this software without specific prior written permission. 15*cfb92d14SAndroid Build Coastguard Worker * 16*cfb92d14SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17*cfb92d14SAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*cfb92d14SAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*cfb92d14SAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20*cfb92d14SAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21*cfb92d14SAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22*cfb92d14SAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23*cfb92d14SAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24*cfb92d14SAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25*cfb92d14SAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26*cfb92d14SAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE. 27*cfb92d14SAndroid Build Coastguard Worker */ 28*cfb92d14SAndroid Build Coastguard Worker 29*cfb92d14SAndroid Build Coastguard Worker /** 30*cfb92d14SAndroid Build Coastguard Worker * @file 31*cfb92d14SAndroid Build Coastguard Worker * This file includes compile-time configurations for the NCP. 32*cfb92d14SAndroid Build Coastguard Worker * 33*cfb92d14SAndroid Build Coastguard Worker */ 34*cfb92d14SAndroid Build Coastguard Worker 35*cfb92d14SAndroid Build Coastguard Worker #ifndef CONFIG_NCP_H_ 36*cfb92d14SAndroid Build Coastguard Worker #define CONFIG_NCP_H_ 37*cfb92d14SAndroid Build Coastguard Worker 38*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_RADIO 39*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_RADIO 0 40*cfb92d14SAndroid Build Coastguard Worker #endif 41*cfb92d14SAndroid Build Coastguard Worker 42*cfb92d14SAndroid Build Coastguard Worker /** 43*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_SPI_ENABLE 44*cfb92d14SAndroid Build Coastguard Worker * 45*cfb92d14SAndroid Build Coastguard Worker * Define to 1 to enable NCP SPI support. 46*cfb92d14SAndroid Build Coastguard Worker * 47*cfb92d14SAndroid Build Coastguard Worker */ 48*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_SPI_ENABLE 49*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_SPI_ENABLE 0 50*cfb92d14SAndroid Build Coastguard Worker #endif 51*cfb92d14SAndroid Build Coastguard Worker 52*cfb92d14SAndroid Build Coastguard Worker /** 53*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_HDLC_ENABLE 54*cfb92d14SAndroid Build Coastguard Worker * 55*cfb92d14SAndroid Build Coastguard Worker * Define to 1 to enable NCP HDLC support. 56*cfb92d14SAndroid Build Coastguard Worker * 57*cfb92d14SAndroid Build Coastguard Worker */ 58*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_HDLC_ENABLE 59*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_HDLC_ENABLE 0 60*cfb92d14SAndroid Build Coastguard Worker #endif 61*cfb92d14SAndroid Build Coastguard Worker 62*cfb92d14SAndroid Build Coastguard Worker /** 63*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_TX_BUFFER_SIZE 64*cfb92d14SAndroid Build Coastguard Worker * 65*cfb92d14SAndroid Build Coastguard Worker * The size of NCP message buffer in bytes. 66*cfb92d14SAndroid Build Coastguard Worker * 67*cfb92d14SAndroid Build Coastguard Worker */ 68*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_TX_BUFFER_SIZE 69*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_TX_BUFFER_SIZE 2048 70*cfb92d14SAndroid Build Coastguard Worker #endif 71*cfb92d14SAndroid Build Coastguard Worker 72*cfb92d14SAndroid Build Coastguard Worker /** 73*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_HDLC_TX_CHUNK_SIZE 74*cfb92d14SAndroid Build Coastguard Worker * 75*cfb92d14SAndroid Build Coastguard Worker * The size of NCP HDLC TX chunk in bytes. 76*cfb92d14SAndroid Build Coastguard Worker * 77*cfb92d14SAndroid Build Coastguard Worker */ 78*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_HDLC_TX_CHUNK_SIZE 79*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_HDLC_TX_CHUNK_SIZE 2048 80*cfb92d14SAndroid Build Coastguard Worker #endif 81*cfb92d14SAndroid Build Coastguard Worker 82*cfb92d14SAndroid Build Coastguard Worker /** 83*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_HDLC_RX_BUFFER_SIZE 84*cfb92d14SAndroid Build Coastguard Worker * 85*cfb92d14SAndroid Build Coastguard Worker * The size of NCP HDLC RX buffer in bytes. 86*cfb92d14SAndroid Build Coastguard Worker * 87*cfb92d14SAndroid Build Coastguard Worker */ 88*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_HDLC_RX_BUFFER_SIZE 89*cfb92d14SAndroid Build Coastguard Worker #if OPENTHREAD_RADIO 90*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_HDLC_RX_BUFFER_SIZE 512 91*cfb92d14SAndroid Build Coastguard Worker #else 92*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_HDLC_RX_BUFFER_SIZE 1300 93*cfb92d14SAndroid Build Coastguard Worker #endif 94*cfb92d14SAndroid Build Coastguard Worker #endif // OPENTHREAD_CONFIG_NCP_HDLC_RX_BUFFER_SIZE 95*cfb92d14SAndroid Build Coastguard Worker 96*cfb92d14SAndroid Build Coastguard Worker /** 97*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_SPI_BUFFER_SIZE 98*cfb92d14SAndroid Build Coastguard Worker * 99*cfb92d14SAndroid Build Coastguard Worker * The size of NCP SPI (RX/TX) buffer in bytes. 100*cfb92d14SAndroid Build Coastguard Worker * 101*cfb92d14SAndroid Build Coastguard Worker */ 102*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_SPI_BUFFER_SIZE 103*cfb92d14SAndroid Build Coastguard Worker #if OPENTHREAD_RADIO 104*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_SPI_BUFFER_SIZE 512 105*cfb92d14SAndroid Build Coastguard Worker #else 106*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_SPI_BUFFER_SIZE 1300 107*cfb92d14SAndroid Build Coastguard Worker #endif 108*cfb92d14SAndroid Build Coastguard Worker #endif // OPENTHREAD_CONFIG_NCP_SPI_BUFFER_SIZE 109*cfb92d14SAndroid Build Coastguard Worker 110*cfb92d14SAndroid Build Coastguard Worker /** 111*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_SPINEL_ENCRYPTER_EXTRA_DATA_SIZE 112*cfb92d14SAndroid Build Coastguard Worker * 113*cfb92d14SAndroid Build Coastguard Worker * The size of extra data to be allocated in UART buffer, 114*cfb92d14SAndroid Build Coastguard Worker * needed by NCP Spinel Encrypter. 115*cfb92d14SAndroid Build Coastguard Worker * 116*cfb92d14SAndroid Build Coastguard Worker */ 117*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_SPINEL_ENCRYPTER_EXTRA_DATA_SIZE 118*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_SPINEL_ENCRYPTER_EXTRA_DATA_SIZE 0 119*cfb92d14SAndroid Build Coastguard Worker #endif 120*cfb92d14SAndroid Build Coastguard Worker 121*cfb92d14SAndroid Build Coastguard Worker /** 122*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_SPINEL_LOG_MAX_SIZE 123*cfb92d14SAndroid Build Coastguard Worker * 124*cfb92d14SAndroid Build Coastguard Worker * The maximum OpenThread log string size (number of chars) supported by NCP using Spinel `StreamWrite`. 125*cfb92d14SAndroid Build Coastguard Worker * 126*cfb92d14SAndroid Build Coastguard Worker */ 127*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_SPINEL_LOG_MAX_SIZE 128*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_SPINEL_LOG_MAX_SIZE 150 129*cfb92d14SAndroid Build Coastguard Worker #endif 130*cfb92d14SAndroid Build Coastguard Worker 131*cfb92d14SAndroid Build Coastguard Worker /** 132*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_ENABLE_PEEK_POKE 133*cfb92d14SAndroid Build Coastguard Worker * 134*cfb92d14SAndroid Build Coastguard Worker * Define as 1 to enable peek/poke functionality on NCP. 135*cfb92d14SAndroid Build Coastguard Worker * 136*cfb92d14SAndroid Build Coastguard Worker * Peek/Poke allows the host to read/write to memory addresses on NCP. This is intended for debugging. 137*cfb92d14SAndroid Build Coastguard Worker * 138*cfb92d14SAndroid Build Coastguard Worker */ 139*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_ENABLE_PEEK_POKE 140*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_ENABLE_PEEK_POKE 0 141*cfb92d14SAndroid Build Coastguard Worker #endif 142*cfb92d14SAndroid Build Coastguard Worker 143*cfb92d14SAndroid Build Coastguard Worker /** 144*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_SPINEL_RESPONSE_QUEUE_SIZE 145*cfb92d14SAndroid Build Coastguard Worker * 146*cfb92d14SAndroid Build Coastguard Worker * Size of NCP Spinel command response queue. 147*cfb92d14SAndroid Build Coastguard Worker * 148*cfb92d14SAndroid Build Coastguard Worker * NCP guarantees that it can respond up to `OPENTHREAD_CONFIG_NCP_SPINEL_RESPONSE_QUEUE_SIZE` spinel commands at the 149*cfb92d14SAndroid Build Coastguard Worker * same time. The spinel protocol defines a Transaction ID (TID) as part of spinel command frame (the TID can be 150*cfb92d14SAndroid Build Coastguard Worker * a value 0-15 where TID 0 is used for frames which require no response). Spinel protocol can support at most support 151*cfb92d14SAndroid Build Coastguard Worker * 15 simultaneous commands. 152*cfb92d14SAndroid Build Coastguard Worker * 153*cfb92d14SAndroid Build Coastguard Worker * The host driver implementation may further limit the number of simultaneous Spinel command frames (e.g., wpantund 154*cfb92d14SAndroid Build Coastguard Worker * limits this to two). This configuration option can be used to reduce the response queue size. 155*cfb92d14SAndroid Build Coastguard Worker * 156*cfb92d14SAndroid Build Coastguard Worker */ 157*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_SPINEL_RESPONSE_QUEUE_SIZE 158*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_SPINEL_RESPONSE_QUEUE_SIZE 15 159*cfb92d14SAndroid Build Coastguard Worker #endif 160*cfb92d14SAndroid Build Coastguard Worker 161*cfb92d14SAndroid Build Coastguard Worker /** 162*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_ENABLE_MCU_POWER_STATE_CONTROL 163*cfb92d14SAndroid Build Coastguard Worker * 164*cfb92d14SAndroid Build Coastguard Worker * Define to 1 to enable support controlling of desired power state of NCP's micro-controller. 165*cfb92d14SAndroid Build Coastguard Worker * 166*cfb92d14SAndroid Build Coastguard Worker * The power state specifies the desired power state of NCP's micro-controller (MCU) when the underlying platform's 167*cfb92d14SAndroid Build Coastguard Worker * operating system enters idle mode (i.e., all active tasks/events are processed and the MCU can potentially enter a 168*cfb92d14SAndroid Build Coastguard Worker * energy-saving power state). 169*cfb92d14SAndroid Build Coastguard Worker * 170*cfb92d14SAndroid Build Coastguard Worker * The power state primarily determines how the host should interact with the NCP and whether the host needs an 171*cfb92d14SAndroid Build Coastguard Worker * external trigger (a "poke") before it can communicate with the NCP or not. 172*cfb92d14SAndroid Build Coastguard Worker * 173*cfb92d14SAndroid Build Coastguard Worker * When enabled, the platform is expected to provide `otPlatSetMcuPowerState()` and `otPlatGetMcuPowerState()` 174*cfb92d14SAndroid Build Coastguard Worker * functions (please see `openthread/platform/misc.h`). Host can then control the power state using 175*cfb92d14SAndroid Build Coastguard Worker * `SPINEL_PROP_MCU_POWER_STATE`. 176*cfb92d14SAndroid Build Coastguard Worker * 177*cfb92d14SAndroid Build Coastguard Worker */ 178*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_ENABLE_MCU_POWER_STATE_CONTROL 179*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_ENABLE_MCU_POWER_STATE_CONTROL 0 180*cfb92d14SAndroid Build Coastguard Worker #endif 181*cfb92d14SAndroid Build Coastguard Worker 182*cfb92d14SAndroid Build Coastguard Worker /** 183*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_CONFIG_NCP_INFRA_IF_ENABLE 184*cfb92d14SAndroid Build Coastguard Worker * 185*cfb92d14SAndroid Build Coastguard Worker * Define to 1 to enable the NCP based implementation of platform InfraIf APIs. 186*cfb92d14SAndroid Build Coastguard Worker * 187*cfb92d14SAndroid Build Coastguard Worker */ 188*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_CONFIG_NCP_INFRA_IF_ENABLE 189*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_CONFIG_NCP_INFRA_IF_ENABLE 0 190*cfb92d14SAndroid Build Coastguard Worker #endif 191*cfb92d14SAndroid Build Coastguard Worker 192*cfb92d14SAndroid Build Coastguard Worker /** 193*cfb92d14SAndroid Build Coastguard Worker * @def OPENTHREAD_ENABLE_NCP_VENDOR_HOOK 194*cfb92d14SAndroid Build Coastguard Worker * 195*cfb92d14SAndroid Build Coastguard Worker * TODO: complete. 196*cfb92d14SAndroid Build Coastguard Worker * 197*cfb92d14SAndroid Build Coastguard Worker */ 198*cfb92d14SAndroid Build Coastguard Worker #ifndef OPENTHREAD_ENABLE_NCP_VENDOR_HOOK 199*cfb92d14SAndroid Build Coastguard Worker #define OPENTHREAD_ENABLE_NCP_VENDOR_HOOK 0 200*cfb92d14SAndroid Build Coastguard Worker #endif 201*cfb92d14SAndroid Build Coastguard Worker 202*cfb92d14SAndroid Build Coastguard Worker #endif // CONFIG_NCP_H_ 203