Initial commit: CCU621_M firmware project with BLE debug link support.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,336 @@
|
||||
/*
|
||||
* Copyright (C) 2015-2018 Alibaba Group Holding Limited
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifndef MBEDTLS_AES_H
|
||||
#define MBEDTLS_AES_H
|
||||
|
||||
#if !defined(MBEDTLS_CONFIG_FILE)
|
||||
#include "config.h"
|
||||
#else
|
||||
#include MBEDTLS_CONFIG_FILE
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/* padlock.c and aesni.c rely on these values! */
|
||||
#define MBEDTLS_AES_ENCRYPT 1
|
||||
#define MBEDTLS_AES_DECRYPT 0
|
||||
|
||||
#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */
|
||||
#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#if !defined(MBEDTLS_AES_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief AES context structure
|
||||
*
|
||||
* \note buf is able to hold 32 extra bytes, which can be used:
|
||||
* - for alignment purposes if VIA padlock is used, and/or
|
||||
* - to simplify key expansion in the 256-bit case by
|
||||
* generating an extra round key
|
||||
*/
|
||||
typedef struct {
|
||||
int nr; /*!< number of rounds */
|
||||
uint32_t *rk; /*!< AES round keys */
|
||||
uint32_t buf[68]; /*!< unaligned data */
|
||||
}
|
||||
mbedtls_aes_context;
|
||||
|
||||
/**
|
||||
* \brief Initialize AES context
|
||||
*
|
||||
* \param ctx AES context to be initialized
|
||||
*/
|
||||
void mbedtls_aes_init(mbedtls_aes_context *ctx);
|
||||
|
||||
/**
|
||||
* \brief Clear AES context
|
||||
*
|
||||
* \param ctx AES context to be cleared
|
||||
*/
|
||||
void mbedtls_aes_free(mbedtls_aes_context *ctx);
|
||||
|
||||
/**
|
||||
* \brief AES key schedule (encryption)
|
||||
*
|
||||
* \param ctx AES context to be initialized
|
||||
* \param key encryption key
|
||||
* \param keybits must be 128, 192 or 256
|
||||
*
|
||||
* \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH
|
||||
*/
|
||||
int mbedtls_aes_setkey_enc(mbedtls_aes_context *ctx, const unsigned char *key,
|
||||
unsigned int keybits);
|
||||
|
||||
/**
|
||||
* \brief AES key schedule (decryption)
|
||||
*
|
||||
* \param ctx AES context to be initialized
|
||||
* \param key decryption key
|
||||
* \param keybits must be 128, 192 or 256
|
||||
*
|
||||
* \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH
|
||||
*/
|
||||
int mbedtls_aes_setkey_dec(mbedtls_aes_context *ctx, const unsigned char *key,
|
||||
unsigned int keybits);
|
||||
|
||||
/**
|
||||
* \brief AES-ECB block encryption/decryption
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT
|
||||
* \param input 16-byte input block
|
||||
* \param output 16-byte output block
|
||||
*
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int mbedtls_aes_crypt_ecb(mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16]);
|
||||
|
||||
#if defined(MBEDTLS_CIPHER_MODE_CBC)
|
||||
/**
|
||||
* \brief AES-CBC buffer encryption/decryption
|
||||
* Length should be a multiple of the block
|
||||
* size (16 bytes)
|
||||
*
|
||||
* \note Upon exit, the content of the IV is updated so that you can
|
||||
* call the function same function again on the following
|
||||
* block(s) of data and get the same result as if it was
|
||||
* encrypted in one call. This allows a "streaming" usage.
|
||||
* If on the other hand you need to retain the contents of the
|
||||
* IV, you should either save it manually or use the cipher
|
||||
* module instead.
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT
|
||||
* \param length length of the input data
|
||||
* \param iv initialization vector (updated after use)
|
||||
* \param input buffer holding the input data
|
||||
* \param output buffer holding the output data
|
||||
*
|
||||
* \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH
|
||||
*/
|
||||
int mbedtls_aes_crypt_cbc(mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
size_t length,
|
||||
unsigned char iv[16],
|
||||
const unsigned char *input,
|
||||
unsigned char *output);
|
||||
#endif /* MBEDTLS_CIPHER_MODE_CBC */
|
||||
|
||||
#if defined(MBEDTLS_CIPHER_MODE_CFB)
|
||||
/**
|
||||
* \brief AES-CFB128 buffer encryption/decryption.
|
||||
*
|
||||
* Note: Due to the nature of CFB you should use the same key schedule for
|
||||
* both encryption and decryption. So a context initialized with
|
||||
* mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT.
|
||||
*
|
||||
* \note Upon exit, the content of the IV is updated so that you can
|
||||
* call the function same function again on the following
|
||||
* block(s) of data and get the same result as if it was
|
||||
* encrypted in one call. This allows a "streaming" usage.
|
||||
* If on the other hand you need to retain the contents of the
|
||||
* IV, you should either save it manually or use the cipher
|
||||
* module instead.
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT
|
||||
* \param length length of the input data
|
||||
* \param iv_off offset in IV (updated after use)
|
||||
* \param iv initialization vector (updated after use)
|
||||
* \param input buffer holding the input data
|
||||
* \param output buffer holding the output data
|
||||
*
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int mbedtls_aes_crypt_cfb128(mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
size_t length,
|
||||
size_t *iv_off,
|
||||
unsigned char iv[16],
|
||||
const unsigned char *input,
|
||||
unsigned char *output);
|
||||
|
||||
/**
|
||||
* \brief AES-CFB8 buffer encryption/decryption.
|
||||
*
|
||||
* Note: Due to the nature of CFB you should use the same key schedule for
|
||||
* both encryption and decryption. So a context initialized with
|
||||
* mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT.
|
||||
*
|
||||
* \note Upon exit, the content of the IV is updated so that you can
|
||||
* call the function same function again on the following
|
||||
* block(s) of data and get the same result as if it was
|
||||
* encrypted in one call. This allows a "streaming" usage.
|
||||
* If on the other hand you need to retain the contents of the
|
||||
* IV, you should either save it manually or use the cipher
|
||||
* module instead.
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT
|
||||
* \param length length of the input data
|
||||
* \param iv initialization vector (updated after use)
|
||||
* \param input buffer holding the input data
|
||||
* \param output buffer holding the output data
|
||||
*
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int mbedtls_aes_crypt_cfb8(mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
size_t length,
|
||||
unsigned char iv[16],
|
||||
const unsigned char *input,
|
||||
unsigned char *output);
|
||||
#endif /*MBEDTLS_CIPHER_MODE_CFB */
|
||||
|
||||
#if defined(MBEDTLS_CIPHER_MODE_CTR)
|
||||
/**
|
||||
* \brief AES-CTR buffer encryption/decryption
|
||||
*
|
||||
* Warning: You have to keep the maximum use of your counter in mind!
|
||||
*
|
||||
* Note: Due to the nature of CTR you should use the same key schedule for
|
||||
* both encryption and decryption. So a context initialized with
|
||||
* mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT.
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param length The length of the data
|
||||
* \param nc_off The offset in the current stream_block (for resuming
|
||||
* within current cipher stream). The offset pointer to
|
||||
* should be 0 at the start of a stream.
|
||||
* \param nonce_counter The 128-bit nonce and counter.
|
||||
* \param stream_block The saved stream-block for resuming. Is overwritten
|
||||
* by the function.
|
||||
* \param input The input data stream
|
||||
* \param output The output data stream
|
||||
*
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int mbedtls_aes_crypt_ctr(mbedtls_aes_context *ctx,
|
||||
size_t length,
|
||||
size_t *nc_off,
|
||||
unsigned char nonce_counter[16],
|
||||
unsigned char stream_block[16],
|
||||
const unsigned char *input,
|
||||
unsigned char *output);
|
||||
#endif /* MBEDTLS_CIPHER_MODE_CTR */
|
||||
|
||||
/**
|
||||
* \brief Internal AES block encryption function
|
||||
* (Only exposed to allow overriding it,
|
||||
* see MBEDTLS_AES_ENCRYPT_ALT)
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param input Plaintext block
|
||||
* \param output Output (ciphertext) block
|
||||
*
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int mbedtls_internal_aes_encrypt(mbedtls_aes_context *ctx,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16]);
|
||||
|
||||
/**
|
||||
* \brief Internal AES block decryption function
|
||||
* (Only exposed to allow overriding it,
|
||||
* see MBEDTLS_AES_DECRYPT_ALT)
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param input Ciphertext block
|
||||
* \param output Output (plaintext) block
|
||||
*
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int mbedtls_internal_aes_decrypt(mbedtls_aes_context *ctx,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16]);
|
||||
|
||||
#if !defined(MBEDTLS_DEPRECATED_REMOVED)
|
||||
#if defined(MBEDTLS_DEPRECATED_WARNING)
|
||||
#define MBEDTLS_DEPRECATED __attribute__((deprecated))
|
||||
#else
|
||||
#define MBEDTLS_DEPRECATED
|
||||
#endif
|
||||
/**
|
||||
* \brief Internal AES block encryption function
|
||||
* (Only exposed to allow overriding it,
|
||||
* see MBEDTLS_AES_ENCRYPT_ALT)
|
||||
*
|
||||
* \deprecated Superseded by mbedtls_aes_encrypt_ext() in 2.5.0
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param input Plaintext block
|
||||
* \param output Output (ciphertext) block
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_aes_encrypt(
|
||||
mbedtls_aes_context *ctx,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16])
|
||||
{
|
||||
mbedtls_internal_aes_encrypt(ctx, input, output);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Internal AES block decryption function
|
||||
* (Only exposed to allow overriding it,
|
||||
* see MBEDTLS_AES_DECRYPT_ALT)
|
||||
*
|
||||
* \deprecated Superseded by mbedtls_aes_decrypt_ext() in 2.5.0
|
||||
*
|
||||
* \param ctx AES context
|
||||
* \param input Ciphertext block
|
||||
* \param output Output (plaintext) block
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_aes_decrypt(
|
||||
mbedtls_aes_context *ctx,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16])
|
||||
{
|
||||
mbedtls_internal_aes_decrypt(ctx, input, output);
|
||||
}
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#else /* MBEDTLS_AES_ALT */
|
||||
#include "aes_alt.h"
|
||||
#endif /* MBEDTLS_AES_ALT */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Checkup routine
|
||||
*
|
||||
* \return 0 if successful, or 1 if the test failed
|
||||
*/
|
||||
int mbedtls_aes_self_test(int verbose);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* aes.h */
|
||||
+644
@@ -0,0 +1,644 @@
|
||||
/*
|
||||
* Copyright (C) 2015-2018 Alibaba Group Holding Limited
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* It is recommended to include this file from your config.h
|
||||
* in order to catch dependency issues early.
|
||||
*/
|
||||
|
||||
#ifndef MBEDTLS_CHECK_CONFIG_H
|
||||
#define MBEDTLS_CHECK_CONFIG_H
|
||||
|
||||
/*
|
||||
* We assume CHAR_BIT is 8 in many places. In practice, this is true on our
|
||||
* target platforms, so not an issue, but let's just be extra sure.
|
||||
*/
|
||||
#include <limits.h>
|
||||
#if CHAR_BIT != 8
|
||||
#error "mbed TLS requires a platform with 8-bit chars"
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32)
|
||||
#if !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_C is required on Windows"
|
||||
#endif
|
||||
|
||||
/* Fix the config here. Not convenient to put an #ifdef _WIN32 in config.h as
|
||||
* it would confuse config.pl. */
|
||||
#if !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && \
|
||||
!defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
|
||||
#define MBEDTLS_PLATFORM_SNPRINTF_ALT
|
||||
#endif
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#if defined(TARGET_LIKE_MBED) && \
|
||||
( defined(MBEDTLS_NET_C) || defined(MBEDTLS_TIMING_C) )
|
||||
#error "The NET and TIMING modules are not available for mbed OS - please use the network and timing functions provided by mbed OS"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_DEPRECATED_WARNING) && \
|
||||
!defined(__GNUC__) && !defined(__clang__)
|
||||
#error "MBEDTLS_DEPRECATED_WARNING only works with GCC and Clang"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_HAVE_TIME)
|
||||
#error "MBEDTLS_HAVE_TIME_DATE without MBEDTLS_HAVE_TIME does not make sense"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_AESNI_C) && !defined(MBEDTLS_HAVE_ASM)
|
||||
#error "MBEDTLS_AESNI_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_CTR_DRBG_C) && !defined(MBEDTLS_AES_C)
|
||||
#error "MBEDTLS_CTR_DRBG_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_DHM_C) && !defined(MBEDTLS_BIGNUM_C)
|
||||
#error "MBEDTLS_DHM_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_CMAC_C) && \
|
||||
!defined(MBEDTLS_AES_C) && !defined(MBEDTLS_DES_C)
|
||||
#error "MBEDTLS_CMAC_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECDH_C) && !defined(MBEDTLS_ECP_C)
|
||||
#error "MBEDTLS_ECDH_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECDSA_C) && \
|
||||
( !defined(MBEDTLS_ECP_C) || \
|
||||
!defined(MBEDTLS_ASN1_PARSE_C) || \
|
||||
!defined(MBEDTLS_ASN1_WRITE_C) )
|
||||
#error "MBEDTLS_ECDSA_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECJPAKE_C) && \
|
||||
( !defined(MBEDTLS_ECP_C) || !defined(MBEDTLS_MD_C) )
|
||||
#error "MBEDTLS_ECJPAKE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECDSA_DETERMINISTIC) && !defined(MBEDTLS_HMAC_DRBG_C)
|
||||
#error "MBEDTLS_ECDSA_DETERMINISTIC defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_C) && ( !defined(MBEDTLS_BIGNUM_C) || ( \
|
||||
!defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) && \
|
||||
!defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) ) )
|
||||
#error "MBEDTLS_ECP_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ENTROPY_C) && (!defined(MBEDTLS_SHA512_C) && \
|
||||
!defined(MBEDTLS_SHA256_C))
|
||||
#error "MBEDTLS_ENTROPY_C defined, but not all prerequisites"
|
||||
#endif
|
||||
#if defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_SHA512_C) && \
|
||||
defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 64)
|
||||
#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
|
||||
#endif
|
||||
#if defined(MBEDTLS_ENTROPY_C) && \
|
||||
( !defined(MBEDTLS_SHA512_C) || defined(MBEDTLS_ENTROPY_FORCE_SHA256) ) \
|
||||
&& defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 32)
|
||||
#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
|
||||
#endif
|
||||
#if defined(MBEDTLS_ENTROPY_C) && \
|
||||
defined(MBEDTLS_ENTROPY_FORCE_SHA256) && !defined(MBEDTLS_SHA256_C)
|
||||
#error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_TEST_NULL_ENTROPY) && \
|
||||
( !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) )
|
||||
#error "MBEDTLS_TEST_NULL_ENTROPY defined, but not all prerequisites"
|
||||
#endif
|
||||
#if defined(MBEDTLS_TEST_NULL_ENTROPY) && \
|
||||
( defined(MBEDTLS_ENTROPY_NV_SEED) || defined(MBEDTLS_ENTROPY_HARDWARE_ALT) || \
|
||||
defined(MBEDTLS_HAVEGE_C) )
|
||||
#error "MBEDTLS_TEST_NULL_ENTROPY defined, but entropy sources too"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_GCM_C) && ( \
|
||||
!defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) )
|
||||
#error "MBEDTLS_GCM_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_RANDOMIZE_JAC_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_ADD_MIXED_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_ADD_MIXED_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_DOUBLE_JAC_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_NORMALIZE_JAC_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_RANDOMIZE_MXZ_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
|
||||
#error "MBEDTLS_ECP_NORMALIZE_MXZ_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_HAVEGE_C) && !defined(MBEDTLS_TIMING_C)
|
||||
#error "MBEDTLS_HAVEGE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_HMAC_DRBG_C) && !defined(MBEDTLS_MD_C)
|
||||
#error "MBEDTLS_HMAC_DRBG_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) && \
|
||||
( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \
|
||||
( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) && !defined(MBEDTLS_DHM_C)
|
||||
#error "MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) && \
|
||||
!defined(MBEDTLS_ECDH_C)
|
||||
#error "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \
|
||||
( !defined(MBEDTLS_DHM_C) || !defined(MBEDTLS_RSA_C) || \
|
||||
!defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \
|
||||
( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_RSA_C) || \
|
||||
!defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) && \
|
||||
( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_ECDSA_C) || \
|
||||
!defined(MBEDTLS_X509_CRT_PARSE_C) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) && \
|
||||
( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) || \
|
||||
!defined(MBEDTLS_PKCS1_V15) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \
|
||||
( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) || \
|
||||
!defined(MBEDTLS_PKCS1_V15) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_RSA_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) && \
|
||||
( !defined(MBEDTLS_ECJPAKE_C) || !defined(MBEDTLS_SHA256_C) || \
|
||||
!defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) )
|
||||
#error "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \
|
||||
( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) )
|
||||
#error "MBEDTLS_MEMORY_BUFFER_ALLOC_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PADLOCK_C) && !defined(MBEDTLS_HAVE_ASM)
|
||||
#error "MBEDTLS_PADLOCK_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PEM_PARSE_C) && !defined(MBEDTLS_BASE64_C)
|
||||
#error "MBEDTLS_PEM_PARSE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PEM_WRITE_C) && !defined(MBEDTLS_BASE64_C)
|
||||
#error "MBEDTLS_PEM_WRITE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PK_C) && \
|
||||
( !defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_ECP_C) )
|
||||
#error "MBEDTLS_PK_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PK_PARSE_C) && !defined(MBEDTLS_PK_C)
|
||||
#error "MBEDTLS_PK_PARSE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PK_WRITE_C) && !defined(MBEDTLS_PK_C)
|
||||
#error "MBEDTLS_PK_WRITE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PKCS11_C) && !defined(MBEDTLS_PK_C)
|
||||
#error "MBEDTLS_PKCS11_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_EXIT_ALT) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_EXIT_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_EXIT_MACRO) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_EXIT_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_EXIT_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_EXIT) ||\
|
||||
defined(MBEDTLS_PLATFORM_EXIT_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_EXIT_MACRO and MBEDTLS_PLATFORM_STD_EXIT/MBEDTLS_PLATFORM_EXIT_ALT cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_TIME_ALT) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_C) ||\
|
||||
!defined(MBEDTLS_HAVE_TIME) )
|
||||
#error "MBEDTLS_PLATFORM_TIME_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_TIME_MACRO) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_C) ||\
|
||||
!defined(MBEDTLS_HAVE_TIME) )
|
||||
#error "MBEDTLS_PLATFORM_TIME_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_C) ||\
|
||||
!defined(MBEDTLS_HAVE_TIME) )
|
||||
#error "MBEDTLS_PLATFORM_TIME_TYPE_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_TIME_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_TIME) ||\
|
||||
defined(MBEDTLS_PLATFORM_TIME_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_TIME_MACRO and MBEDTLS_PLATFORM_STD_TIME/MBEDTLS_PLATFORM_TIME_ALT cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_TIME) ||\
|
||||
defined(MBEDTLS_PLATFORM_TIME_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_TIME_TYPE_MACRO and MBEDTLS_PLATFORM_STD_TIME/MBEDTLS_PLATFORM_TIME_ALT cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_FPRINTF_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_FPRINTF_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_FPRINTF) ||\
|
||||
defined(MBEDTLS_PLATFORM_FPRINTF_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_FPRINTF_MACRO and MBEDTLS_PLATFORM_STD_FPRINTF/MBEDTLS_PLATFORM_FPRINTF_ALT cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_FREE_MACRO) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) )
|
||||
#error "MBEDTLS_PLATFORM_FREE_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_FREE_MACRO) &&\
|
||||
defined(MBEDTLS_PLATFORM_STD_FREE)
|
||||
#error "MBEDTLS_PLATFORM_FREE_MACRO and MBEDTLS_PLATFORM_STD_FREE cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
|
||||
#error "MBEDTLS_PLATFORM_CALLOC_MACRO must be defined if MBEDTLS_PLATFORM_FREE_MACRO is"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) )
|
||||
#error "MBEDTLS_PLATFORM_CALLOC_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) &&\
|
||||
defined(MBEDTLS_PLATFORM_STD_CALLOC)
|
||||
#error "MBEDTLS_PLATFORM_CALLOC_MACRO and MBEDTLS_PLATFORM_STD_CALLOC cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) && !defined(MBEDTLS_PLATFORM_FREE_MACRO)
|
||||
#error "MBEDTLS_PLATFORM_FREE_MACRO must be defined if MBEDTLS_PLATFORM_CALLOC_MACRO is"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_MEMORY) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_MEMORY defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_PRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_PRINTF_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_PRINTF_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_PRINTF) ||\
|
||||
defined(MBEDTLS_PLATFORM_PRINTF_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_PRINTF_MACRO and MBEDTLS_PLATFORM_STD_PRINTF/MBEDTLS_PLATFORM_PRINTF_ALT cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_SNPRINTF_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C)
|
||||
#error "MBEDTLS_PLATFORM_SNPRINTF_MACRO defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_SNPRINTF) ||\
|
||||
defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_SNPRINTF_MACRO and MBEDTLS_PLATFORM_STD_SNPRINTF/MBEDTLS_PLATFORM_SNPRINTF_ALT cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR) &&\
|
||||
!defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
|
||||
#error "MBEDTLS_PLATFORM_STD_MEM_HDR defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY)
|
||||
#error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY)
|
||||
#error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_FREE) && !defined(MBEDTLS_PLATFORM_MEMORY)
|
||||
#error "MBEDTLS_PLATFORM_STD_FREE defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_EXIT) &&\
|
||||
!defined(MBEDTLS_PLATFORM_EXIT_ALT)
|
||||
#error "MBEDTLS_PLATFORM_STD_EXIT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_TIME) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_TIME_ALT) ||\
|
||||
!defined(MBEDTLS_HAVE_TIME) )
|
||||
#error "MBEDTLS_PLATFORM_STD_TIME defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_FPRINTF) &&\
|
||||
!defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
|
||||
#error "MBEDTLS_PLATFORM_STD_FPRINTF defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_PRINTF) &&\
|
||||
!defined(MBEDTLS_PLATFORM_PRINTF_ALT)
|
||||
#error "MBEDTLS_PLATFORM_STD_PRINTF defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_SNPRINTF) &&\
|
||||
!defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
|
||||
#error "MBEDTLS_PLATFORM_STD_SNPRINTF defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ENTROPY_NV_SEED) &&\
|
||||
( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_ENTROPY_C) )
|
||||
#error "MBEDTLS_ENTROPY_NV_SEED defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) &&\
|
||||
!defined(MBEDTLS_ENTROPY_NV_SEED)
|
||||
#error "MBEDTLS_PLATFORM_NV_SEED_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) &&\
|
||||
!defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
|
||||
#error "MBEDTLS_PLATFORM_STD_NV_SEED_READ defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) &&\
|
||||
!defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
|
||||
#error "MBEDTLS_PLATFORM_STD_NV_SEED_WRITE defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) ||\
|
||||
defined(MBEDTLS_PLATFORM_NV_SEED_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_NV_SEED_READ_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_READ cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO) &&\
|
||||
( defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) ||\
|
||||
defined(MBEDTLS_PLATFORM_NV_SEED_ALT) )
|
||||
#error "MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_WRITE cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_BIGNUM_C) || \
|
||||
!defined(MBEDTLS_OID_C) )
|
||||
#error "MBEDTLS_RSA_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_PKCS1_V21) && \
|
||||
!defined(MBEDTLS_PKCS1_V15) )
|
||||
#error "MBEDTLS_RSA_C defined, but none of the PKCS1 versions enabled"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) && \
|
||||
( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_PKCS1_V21) )
|
||||
#error "MBEDTLS_X509_RSASSA_PSS_SUPPORT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_PROTO_SSL3) && ( !defined(MBEDTLS_MD5_C) || \
|
||||
!defined(MBEDTLS_SHA1_C) )
|
||||
#error "MBEDTLS_SSL_PROTO_SSL3 defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_PROTO_TLS1) && ( !defined(MBEDTLS_MD5_C) || \
|
||||
!defined(MBEDTLS_SHA1_C) )
|
||||
#error "MBEDTLS_SSL_PROTO_TLS1 defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_PROTO_TLS1_1) && ( !defined(MBEDTLS_MD5_C) || \
|
||||
!defined(MBEDTLS_SHA1_C) )
|
||||
#error "MBEDTLS_SSL_PROTO_TLS1_1 defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && ( !defined(MBEDTLS_SHA1_C) && \
|
||||
!defined(MBEDTLS_SHA256_C) && !defined(MBEDTLS_SHA512_C) )
|
||||
#error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_PROTO_DTLS) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_2)
|
||||
#error "MBEDTLS_SSL_PROTO_DTLS defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_CLI_C) && !defined(MBEDTLS_SSL_TLS_C)
|
||||
#error "MBEDTLS_SSL_CLI_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS_C) && ( !defined(MBEDTLS_CIPHER_C) || \
|
||||
!defined(MBEDTLS_MD_C) )
|
||||
#error "MBEDTLS_SSL_TLS_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_SRV_C) && !defined(MBEDTLS_SSL_TLS_C)
|
||||
#error "MBEDTLS_SSL_SRV_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS_C) && (!defined(MBEDTLS_SSL_PROTO_SSL3) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1) && !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_2))
|
||||
#error "MBEDTLS_SSL_TLS_C defined, but no protocols are active"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_SSL3) && \
|
||||
defined(MBEDTLS_SSL_PROTO_TLS1_1) && !defined(MBEDTLS_SSL_PROTO_TLS1))
|
||||
#error "Illegal protocol selection"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_TLS1) && \
|
||||
defined(MBEDTLS_SSL_PROTO_TLS1_2) && !defined(MBEDTLS_SSL_PROTO_TLS1_1))
|
||||
#error "Illegal protocol selection"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_SSL3) && \
|
||||
defined(MBEDTLS_SSL_PROTO_TLS1_2) && (!defined(MBEDTLS_SSL_PROTO_TLS1) || \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_1)))
|
||||
#error "Illegal protocol selection"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && !defined(MBEDTLS_SSL_PROTO_DTLS)
|
||||
#error "MBEDTLS_SSL_DTLS_HELLO_VERIFY defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && \
|
||||
!defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY)
|
||||
#error "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) && \
|
||||
( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) )
|
||||
#error "MBEDTLS_SSL_DTLS_ANTI_REPLAY defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) && \
|
||||
( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) )
|
||||
#error "MBEDTLS_SSL_DTLS_BADMAC_LIMIT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_2)
|
||||
#error "MBEDTLS_SSL_ENCRYPT_THEN_MAC defined, but not all prerequsites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_TLS1_2)
|
||||
#error "MBEDTLS_SSL_EXTENDED_MASTER_SECRET defined, but not all prerequsites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TICKET_C) && !defined(MBEDTLS_CIPHER_C)
|
||||
#error "MBEDTLS_SSL_TICKET_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) && \
|
||||
!defined(MBEDTLS_SSL_PROTO_SSL3) && !defined(MBEDTLS_SSL_PROTO_TLS1)
|
||||
#error "MBEDTLS_SSL_CBC_RECORD_SPLITTING defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) && \
|
||||
!defined(MBEDTLS_X509_CRT_PARSE_C)
|
||||
#error "MBEDTLS_SSL_SERVER_NAME_INDICATION defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_THREADING_PTHREAD)
|
||||
#if !defined(MBEDTLS_THREADING_C) || defined(MBEDTLS_THREADING_IMPL)
|
||||
#error "MBEDTLS_THREADING_PTHREAD defined, but not all prerequisites"
|
||||
#endif
|
||||
#define MBEDTLS_THREADING_IMPL
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_THREADING_ALT)
|
||||
#if !defined(MBEDTLS_THREADING_C) || defined(MBEDTLS_THREADING_IMPL)
|
||||
#error "MBEDTLS_THREADING_ALT defined, but not all prerequisites"
|
||||
#endif
|
||||
#define MBEDTLS_THREADING_IMPL
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_THREADING_C) && !defined(MBEDTLS_THREADING_IMPL)
|
||||
#error "MBEDTLS_THREADING_C defined, single threading implementation required"
|
||||
#endif
|
||||
#undef MBEDTLS_THREADING_IMPL
|
||||
|
||||
#if defined(MBEDTLS_VERSION_FEATURES) && !defined(MBEDTLS_VERSION_C)
|
||||
#error "MBEDTLS_VERSION_FEATURES defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_USE_C) && ( !defined(MBEDTLS_BIGNUM_C) || \
|
||||
!defined(MBEDTLS_OID_C) || !defined(MBEDTLS_ASN1_PARSE_C) || \
|
||||
!defined(MBEDTLS_PK_PARSE_C) )
|
||||
#error "MBEDTLS_X509_USE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_CREATE_C) && ( !defined(MBEDTLS_BIGNUM_C) || \
|
||||
!defined(MBEDTLS_OID_C) || !defined(MBEDTLS_ASN1_WRITE_C) || \
|
||||
!defined(MBEDTLS_PK_WRITE_C) )
|
||||
#error "MBEDTLS_X509_CREATE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_CRT_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) )
|
||||
#error "MBEDTLS_X509_CRT_PARSE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_CRL_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) )
|
||||
#error "MBEDTLS_X509_CRL_PARSE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_CSR_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) )
|
||||
#error "MBEDTLS_X509_CSR_PARSE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_CRT_WRITE_C) && ( !defined(MBEDTLS_X509_CREATE_C) )
|
||||
#error "MBEDTLS_X509_CRT_WRITE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_X509_CSR_WRITE_C) && ( !defined(MBEDTLS_X509_CREATE_C) )
|
||||
#error "MBEDTLS_X509_CSR_WRITE_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Avoid warning from -pedantic. This is a convenient place for this
|
||||
* workaround since this is included by every single file before the
|
||||
* #if defined(MBEDTLS_xxx_C) that results in emtpy translation units.
|
||||
*/
|
||||
typedef int mbedtls_iso_c_forbids_empty_translation_units;
|
||||
|
||||
#endif /* MBEDTLS_CHECK_CONFIG_H */
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1068
File diff suppressed because it is too large
Load Diff
+830
@@ -0,0 +1,830 @@
|
||||
#ifndef _WRAPPERS_H_
|
||||
#define _WRAPPERS_H_
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "infra_types.h"
|
||||
#include "infra_defs.h"
|
||||
#include "wrappers_defs.h"
|
||||
#include "infra_compat.h"
|
||||
|
||||
#include "main.h"
|
||||
#include "plat_comm/plat_comm_task.h"
|
||||
#include "wdt_task/wdt_task.h"
|
||||
|
||||
#define HAL_Printf Plat_Comm_LOG //printf修改打印方式
|
||||
#define HAL_TASK_WDT_CLEAR() v_wdt_setFlag(TASK_ID_PlatComm) //清空看门狗计数
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Firmware_Persistence_Start() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Firmware_Persistence_Start() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Firmware_Persistence_Start(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Firmware_Persistence_Start, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
void HAL_Firmware_Persistence_Start(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Firmware_Persistence_Stop() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Firmware_Persistence_Stop() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Firmware_Persistence_Stop(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Firmware_Persistence_Stop, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_Firmware_Persistence_Stop(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Firmware_Persistence_Write() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Firmware_Persistence_Write() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Firmware_Persistence_Write(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Firmware_Persistence_Write, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_Firmware_Persistence_Write(char *buffer, uint32_t length);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Free() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Free() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Free(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Free, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Deallocate memory block
|
||||
*
|
||||
* @param[in] ptr @n Pointer to a memory block previously allocated with platform_malloc.
|
||||
* @return None.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
void HAL_Free(void *ptr);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_GetFirmwareVersion() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_GetFirmwareVersion() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_GetFirmwareVersion(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_GetFirmwareVersion, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Get firmware version
|
||||
*
|
||||
* @param [ou] version: array to store firmware version, max length is IOTX_FIRMWARE_VER_LEN
|
||||
* @return the actual length of firmware version
|
||||
*/
|
||||
int HAL_GetFirmwareVersion(char *version);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Kv_Get() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Kv_Get() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Kv_Get(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Kv_Get, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_KV_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_Kv_Get(const char *key, void *val, int *buffer_len);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Kv_Set() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Kv_Set() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Kv_Set(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Kv_Set, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_KV_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_Kv_Set(const char *key, const void *val, int len, int sync);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Malloc() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Malloc() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Malloc(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Malloc, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Allocates a block of size bytes of memory, returning a pointer to the beginning of the block.
|
||||
*
|
||||
* @param [in] size @n specify block size in bytes.
|
||||
* @return A pointer to the beginning of the block.
|
||||
* @see None.
|
||||
* @note Block value is indeterminate.
|
||||
*/
|
||||
void *HAL_Malloc(uint32_t size);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_MutexCreate() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_MutexCreate() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_MutexCreate(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_MutexCreate, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Create a mutex.
|
||||
*
|
||||
* @retval NULL : Initialize mutex failed.
|
||||
* @retval NOT_NULL : The mutex handle.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
void *HAL_MutexCreate(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_MutexDestroy() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_MutexDestroy() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_MutexDestroy(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_MutexDestroy, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Destroy the specified mutex object, it will release related resource.
|
||||
*
|
||||
* @param [in] mutex @n The specified mutex.
|
||||
* @return None.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
void HAL_MutexDestroy(void *mutex);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_MutexLock() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_MutexLock() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_MutexLock(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_MutexLock, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Waits until the specified mutex is in the signaled state.
|
||||
*
|
||||
* @param [in] mutex @n the specified mutex.
|
||||
* @return None.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
void HAL_MutexLock(void *mutex);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_MutexUnlock() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_MutexUnlock() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_MutexUnlock(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_MutexUnlock, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Releases ownership of the specified mutex object..
|
||||
*
|
||||
* @param [in] mutex @n the specified mutex.
|
||||
* @return None.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
void HAL_MutexUnlock(void *mutex);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Random() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Random() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Random(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Random, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
uint32_t HAL_Random(uint32_t region);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Read() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Read() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Read(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Read, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief write data to terminal
|
||||
*
|
||||
* @param[in] fd @n device descriptor.
|
||||
* @param[out] data pointer to the buffer which will store incoming data
|
||||
* @param[out] count number of bytes received
|
||||
* @return count number of bytes received.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
int HAL_Read(int fd, void *buf, int len);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_SSL_Destroy() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_SSL_Destroy() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_SSL_Destroy(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_SSL_Destroy, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int32_t HAL_SSL_Destroy(uintptr_t handle);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_SSL_Establish() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_SSL_Establish() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_SSL_Establish(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_SSL_Establish, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
uintptr_t HAL_SSL_Establish(const char *host,
|
||||
uint16_t port,
|
||||
const char *ca_crt,
|
||||
uint32_t ca_crt_len);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_SSL_Read() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_SSL_Read() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_SSL_Read(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_SSL_Read, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_SSL_Read(uintptr_t handle, char *buf, int len, int timeout_ms);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_SSL_Write() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_SSL_Write() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_SSL_Write(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_SSL_Write, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_SSL_Write(uintptr_t handle, const char *buf, int len, int timeout_ms);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_SetFirmwareVersion() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_SetFirmwareVersion() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_SetFirmwareVersion(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_SetFirmwareVersion, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_SetFirmwareVersion(const char *version);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_SleepMs() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_SleepMs() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_SleepMs(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_SleepMs, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Sleep thread itself.
|
||||
*
|
||||
* @param [in] ms @n the time interval for which execution is to be suspended, in milliseconds.
|
||||
* @return None.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
void HAL_SleepMs(uint32_t ms);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Snprintf() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Snprintf() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Snprintf(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Snprintf, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Writes formatted data to string.
|
||||
*
|
||||
* @param [out] str: @n String that holds written text.
|
||||
* @param [in] len: @n Maximum length of character will be written
|
||||
* @param [in] fmt: @n Format that contains the text to be written, it can optionally contain embedded format specifiers
|
||||
that specifies how subsequent arguments are converted for output.
|
||||
* @param [in] ...: @n the variable argument list, for formatted and inserted in the resulting string replacing their respective specifiers.
|
||||
* @return bytes of character successfully written into string.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
int HAL_Snprintf(char *str, const int len, const char *fmt, ...);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Srandom() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Srandom() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Srandom(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Srandom, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
void HAL_Srandom(uint32_t seed);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_TCP_Destroy() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_TCP_Destroy() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_TCP_Destroy(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_TCP_Destroy, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_TCP_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Destroy the specific TCP connection.
|
||||
*
|
||||
* @param [in] fd: @n Specify the TCP connection by handle.
|
||||
*
|
||||
* @return The result of destroy TCP connection.
|
||||
* @retval < 0 : Fail.
|
||||
* @retval 0 : Success.
|
||||
*/
|
||||
int HAL_TCP_Destroy(uintptr_t fd);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_TCP_Establish() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_TCP_Establish() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_TCP_Establish(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_TCP_Establish, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_TCP_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Establish a TCP connection.
|
||||
*
|
||||
* @param [in] host: @n Specify the hostname(IP) of the TCP server
|
||||
* @param [in] port: @n Specify the TCP port of TCP server
|
||||
*
|
||||
* @return The handle of TCP connection.
|
||||
@retval (uintptr_t)(-1): Fail.
|
||||
@retval All other values(0 included): Success, the value is handle of this TCP connection.
|
||||
*/
|
||||
uintptr_t HAL_TCP_Establish(const char *host, uint16_t port);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_TCP_Read() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_TCP_Read() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_TCP_Read(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_TCP_Read, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_TCP_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Read data from the specific TCP connection with timeout parameter.
|
||||
* The API will return immediately if 'len' be received from the specific TCP connection.
|
||||
*
|
||||
* @param [in] fd @n A descriptor identifying a TCP connection.
|
||||
* @param [out] buf @n A pointer to a buffer to receive incoming data.
|
||||
* @param [out] len @n The length, in bytes, of the data pointed to by the 'buf' parameter.
|
||||
* @param [in] timeout_ms @n Specify the timeout value in millisecond. In other words, the API block 'timeout_ms' millisecond maximumly.
|
||||
*
|
||||
* @retval -2 : TCP connection error occur.
|
||||
* @retval -1 : TCP connection be closed by remote server.
|
||||
* @retval 0 : No any data be received in 'timeout_ms' timeout period.
|
||||
* @retval (0, len] : The total number of bytes be received in 'timeout_ms' timeout period.
|
||||
|
||||
* @see None.
|
||||
*/
|
||||
int32_t HAL_TCP_Read(uintptr_t fd, char *buf, uint32_t len, uint32_t timeout_ms);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_TCP_Write() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_TCP_Write() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_TCP_Write(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_TCP_Write, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_TCP_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Write data into the specific TCP connection.
|
||||
* The API will return immediately if 'len' be written into the specific TCP connection.
|
||||
*
|
||||
* @param [in] fd @n A descriptor identifying a connection.
|
||||
* @param [in] buf @n A pointer to a buffer containing the data to be transmitted.
|
||||
* @param [in] len @n The length, in bytes, of the data pointed to by the 'buf' parameter.
|
||||
* @param [in] timeout_ms @n Specify the timeout value in millisecond. In other words, the API block 'timeout_ms' millisecond maximumly.
|
||||
*
|
||||
* @retval < 0 : TCP connection error occur..
|
||||
* @retval 0 : No any data be write into the TCP connection in 'timeout_ms' timeout period.
|
||||
* @retval (0, len] : The total number of bytes be written in 'timeout_ms' timeout period.
|
||||
|
||||
* @see None.
|
||||
*/
|
||||
int32_t HAL_TCP_Write(uintptr_t fd, const char *buf, uint32_t len, uint32_t timeout_ms);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_UTC_Get() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_UTC_Get() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_UTC_Get(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_UTC_Get, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
long HAL_UTC_Get(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_UTC_Set() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_UTC_Set() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_UTC_Set(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_UTC_Set, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_UTC_Set(long s);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_UptimeMs() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_UptimeMs() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_UptimeMs(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_UptimeMs, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief Retrieves the number of milliseconds that have elapsed since the system was boot.
|
||||
*
|
||||
* @return the number of milliseconds.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
uint64_t HAL_UptimeMs(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Vsnprintf() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Vsnprintf() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Vsnprintf(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Vsnprintf, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
int HAL_Vsnprintf(char *str, const int len, const char *format, va_list ap);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 函数 HAL_Write() 需要SDK的使用者针对SDK将运行的硬件平台填充实现, 供SDK调用
|
||||
* ---
|
||||
* Interface of HAL_Write() requires to be implemented by user of SDK, according to target device platform
|
||||
*
|
||||
* 如果需要参考如何实现函数 HAL_Write(), 可以查阅SDK移植到 Ubuntu Linux 上时的示例代码
|
||||
* ---
|
||||
* If you need guidance about how to implement HAL_Write, you can check its reference implementation for Ubuntu platform
|
||||
*
|
||||
* https://code.aliyun.com/linkkit/c-sdk/blob/v3.0.1/wrappers/HAL_OS_linux.c
|
||||
*
|
||||
*
|
||||
* 注意! HAL_XXX() 系列的函数虽然有阿里提供的对应参考实现, 但不建议您不做任何修改/检视的应用于您的商用设备!
|
||||
*
|
||||
* 注意! 参考示例实现仅用于解释各个 HAL_XXX() 系列函数的语义!
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @brief write data to terminal
|
||||
*
|
||||
* @param[in] fd @n device descriptor.
|
||||
* @param[in] data pointer to the start of data
|
||||
* @param[in] size number of bytes to transmit
|
||||
* @return count number of bytes received.
|
||||
* @see None.
|
||||
* @note None.
|
||||
*/
|
||||
int HAL_Write(int fd, const void *buf, int len);
|
||||
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+230
@@ -0,0 +1,230 @@
|
||||
#ifndef _WRAPPERS_DEFS_H_
|
||||
#define _WRAPPERS_DEFS_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include "infra_types.h"
|
||||
#include "infra_defs.h"
|
||||
|
||||
#define PLATFORM_WAIT_INFINITE (~0)
|
||||
|
||||
typedef struct {
|
||||
void *(*malloc)(uint32_t size);
|
||||
void (*free)(void *ptr);
|
||||
} ssl_hooks_t;
|
||||
|
||||
typedef enum {
|
||||
os_thread_priority_idle = -3, /* priority: idle (lowest) */
|
||||
os_thread_priority_low = -2, /* priority: low */
|
||||
os_thread_priority_belowNormal = -1, /* priority: below normal */
|
||||
os_thread_priority_normal = 0, /* priority: normal (default) */
|
||||
os_thread_priority_aboveNormal = 1, /* priority: above normal */
|
||||
os_thread_priority_high = 2, /* priority: high */
|
||||
os_thread_priority_realtime = 3, /* priority: realtime (highest) */
|
||||
os_thread_priority_error = 0x84, /* system cannot determine priority or thread has illegal priority */
|
||||
} hal_os_thread_priority_t;
|
||||
|
||||
typedef struct _hal_os_thread {
|
||||
hal_os_thread_priority_t priority; /*initial thread priority */
|
||||
void *stack_addr; /* thread stack address malloced by caller, use system stack by . */
|
||||
int stack_size; /* stack size requirements in bytes; 0 is default stack size */
|
||||
int detach_state; /* 0: not detached state; otherwise: detached state. */
|
||||
char *name; /* thread name. */
|
||||
} hal_os_thread_param_t;
|
||||
|
||||
#define DTLS_ERROR_BASE (1<<24)
|
||||
#define DTLS_SUCCESS (0)
|
||||
#define DTLS_INVALID_PARAM (DTLS_ERROR_BASE | 1)
|
||||
#define DTLS_INVALID_CA_CERTIFICATE (DTLS_ERROR_BASE | 2)
|
||||
#define DTLS_HANDSHAKE_IN_PROGRESS (DTLS_ERROR_BASE | 3)
|
||||
#define DTLS_HANDSHAKE_FAILED (DTLS_ERROR_BASE | 4)
|
||||
#define DTLS_FATAL_ALERT_MESSAGE (DTLS_ERROR_BASE | 5)
|
||||
#define DTLS_PEER_CLOSE_NOTIFY (DTLS_ERROR_BASE | 6)
|
||||
#define DTLS_SESSION_CREATE_FAILED (DTLS_ERROR_BASE | 7)
|
||||
#define DTLS_READ_DATA_FAILED (DTLS_ERROR_BASE | 8)
|
||||
|
||||
typedef struct {
|
||||
unsigned char *p_ca_cert_pem;
|
||||
char *p_host;
|
||||
unsigned short port;
|
||||
} coap_dtls_options_t;
|
||||
|
||||
typedef enum {
|
||||
HAL_SEEK_SET,
|
||||
HAL_SEEK_CUR,
|
||||
HAL_SEEK_END
|
||||
} hal_fs_seek_type_t;
|
||||
|
||||
typedef void DTLSContext;
|
||||
|
||||
/* link type */
|
||||
enum AWSS_LINK_TYPE {
|
||||
/* rtos HAL choose this type */
|
||||
AWSS_LINK_TYPE_NONE,
|
||||
|
||||
/* linux HAL may choose the following type */
|
||||
AWSS_LINK_TYPE_PRISM,
|
||||
AWSS_LINK_TYPE_80211_RADIO,
|
||||
AWSS_LINK_TYPE_80211_RADIO_AVS,
|
||||
AWSS_LINK_TYPE_HT40_CTRL /* for espressif HAL, see struct ht40_ctrl */
|
||||
};
|
||||
|
||||
typedef int (*awss_recv_80211_frame_cb_t)(char *buf, int length,
|
||||
enum AWSS_LINK_TYPE link_type, int with_fcs, signed char rssi);
|
||||
|
||||
typedef void (*awss_wifi_mgmt_frame_cb_t)(_IN_ uint8_t *buffer, _IN_ int len,
|
||||
_IN_ signed char rssi_dbm, _IN_ int buffer_type);
|
||||
|
||||
struct HAL_Ht40_Ctrl {
|
||||
uint16_t length;
|
||||
uint8_t filter;
|
||||
signed char rssi;
|
||||
};
|
||||
|
||||
/* encryt type */
|
||||
enum AWSS_ENC_TYPE {
|
||||
AWSS_ENC_TYPE_NONE,
|
||||
AWSS_ENC_TYPE_WEP,
|
||||
AWSS_ENC_TYPE_TKIP,
|
||||
AWSS_ENC_TYPE_AES,
|
||||
AWSS_ENC_TYPE_TKIPAES,
|
||||
AWSS_ENC_TYPE_MAX = AWSS_ENC_TYPE_TKIPAES,
|
||||
AWSS_ENC_TYPE_INVALID = 0xff,
|
||||
};
|
||||
/* auth type */
|
||||
enum AWSS_AUTH_TYPE {
|
||||
AWSS_AUTH_TYPE_OPEN,
|
||||
AWSS_AUTH_TYPE_SHARED,
|
||||
AWSS_AUTH_TYPE_WPAPSK,
|
||||
AWSS_AUTH_TYPE_WPA8021X,
|
||||
AWSS_AUTH_TYPE_WPA2PSK,
|
||||
AWSS_AUTH_TYPE_WPA28021X,
|
||||
AWSS_AUTH_TYPE_WPAPSKWPA2PSK,
|
||||
AWSS_AUTH_TYPE_MAX = AWSS_AUTH_TYPE_WPAPSKWPA2PSK,
|
||||
AWSS_AUTH_TYPE_INVALID = 0xff,
|
||||
};
|
||||
|
||||
/* 80211 frame type */
|
||||
typedef enum HAL_Awss_Frame_Type {
|
||||
FRAME_ACTION,
|
||||
FRAME_BEACON,
|
||||
FRAME_PROBE_REQ,
|
||||
FRAME_PROBE_RESPONSE,
|
||||
FRAME_DATA
|
||||
} HAL_Awss_Frame_Type_t;
|
||||
|
||||
#if defined(AT_PARSER_ENABLED)
|
||||
/*
|
||||
* UART data width
|
||||
*/
|
||||
typedef enum {
|
||||
DATA_WIDTH_5BIT,
|
||||
DATA_WIDTH_6BIT,
|
||||
DATA_WIDTH_7BIT,
|
||||
DATA_WIDTH_8BIT,
|
||||
DATA_WIDTH_9BIT
|
||||
} hal_uart_data_width_t;
|
||||
|
||||
/*
|
||||
* UART stop bits
|
||||
*/
|
||||
typedef enum {
|
||||
STOP_BITS_1,
|
||||
STOP_BITS_2
|
||||
} hal_uart_stop_bits_t;
|
||||
|
||||
/*
|
||||
* UART flow control
|
||||
*/
|
||||
typedef enum {
|
||||
FLOW_CONTROL_DISABLED,
|
||||
FLOW_CONTROL_CTS,
|
||||
FLOW_CONTROL_RTS,
|
||||
FLOW_CONTROL_CTS_RTS
|
||||
} hal_uart_flow_control_t;
|
||||
|
||||
/*
|
||||
* UART parity
|
||||
*/
|
||||
typedef enum {
|
||||
NO_PARITY,
|
||||
ODD_PARITY,
|
||||
EVEN_PARITY
|
||||
} hal_uart_parity_t;
|
||||
|
||||
/*
|
||||
* UART mode
|
||||
*/
|
||||
typedef enum {
|
||||
MODE_TX,
|
||||
MODE_RX,
|
||||
MODE_TX_RX
|
||||
} hal_uart_mode_t;
|
||||
|
||||
/*
|
||||
* UART configuration
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t baud_rate;
|
||||
hal_uart_data_width_t data_width;
|
||||
hal_uart_parity_t parity;
|
||||
hal_uart_stop_bits_t stop_bits;
|
||||
hal_uart_flow_control_t flow_control;
|
||||
hal_uart_mode_t mode;
|
||||
} at_uart_config_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t port; /* uart port */
|
||||
at_uart_config_t config; /* uart config */
|
||||
void *priv; /* priv data */
|
||||
} uart_dev_t;
|
||||
#endif
|
||||
|
||||
#if defined(AT_TCP_ENABLED)
|
||||
typedef enum {
|
||||
/* WiFi */
|
||||
TCP_SERVER,
|
||||
TCP_CLIENT,
|
||||
SSL_CLIENT,
|
||||
UDP_BROADCAST,
|
||||
UDP_UNICAST,
|
||||
/*WiFi end */
|
||||
/* Add others hereafter */
|
||||
} CONN_TYPE;
|
||||
|
||||
#if defined(AT_SSL_ENABLED)
|
||||
typedef enum {
|
||||
ROOT_CERT,
|
||||
CLIENT_CERT,
|
||||
/* add other type */
|
||||
} CERT_TYPE;
|
||||
|
||||
typedef struct {
|
||||
int cert_len;
|
||||
const char *cert_data;
|
||||
CERT_TYPE cert_type;
|
||||
} cert_info_t;
|
||||
#endif
|
||||
|
||||
/* Fill necessary fileds according to the socket type. */
|
||||
typedef struct {
|
||||
int fd; /* fd that are used in socket level */
|
||||
CONN_TYPE type;
|
||||
char *addr; /* remote ip or domain */
|
||||
int32_t r_port; /* remote port (set to -1 if not used) */
|
||||
int32_t l_port; /* local port (set to -1 if not used) */
|
||||
uint32_t tcp_keep_alive; /* tcp keep alive value (set to 0 if not used) */
|
||||
void *param;
|
||||
} at_conn_t;
|
||||
|
||||
struct at_conn_input {
|
||||
int fd;
|
||||
void *data;
|
||||
uint32_t datalen;
|
||||
char *remote_ip;
|
||||
uint16_t remote_port;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+1048
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user