Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers platform.h Source File

platform.h

Go to the documentation of this file.
00001 /**
00002  * \file platform.h
00003  *
00004  * \brief mbed TLS Platform abstraction layer
00005  *
00006  *  Copyright (C) 2006-2014, ARM Limited, All Rights Reserved
00007  *
00008  *  This file is part of mbed TLS (https://tls.mbed.org)
00009  *
00010  *  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU General Public License as published by
00012  *  the Free Software Foundation; either version 2 of the License, or
00013  *  (at your option) any later version.
00014  *
00015  *  This program is distributed in the hope that it will be useful,
00016  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *  GNU General Public License for more details.
00019  *
00020  *  You should have received a copy of the GNU General Public License along
00021  *  with this program; if not, write to the Free Software Foundation, Inc.,
00022  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00023  */
00024 #ifndef POLARSSL_PLATFORM_H
00025 #define POLARSSL_PLATFORM_H
00026 
00027 #if !defined(POLARSSL_CONFIG_FILE)
00028 #include "config.h"
00029 #else
00030 #include POLARSSL_CONFIG_FILE
00031 #endif
00032 
00033 /* Temporary compatibility hack for to keep MEMORY_C working */
00034 #if defined(POLARSSL_MEMORY_C) && !defined(POLARSSL_PLATFORM_MEMORY)
00035 #define POLARSSL_PLATFORM_MEMORY
00036 #endif
00037 
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041 
00042 /**
00043  * \name SECTION: Module settings
00044  *
00045  * The configuration options you can set for this module are in this section.
00046  * Either change them in config.h or define them on the compiler command line.
00047  * \{
00048  */
00049 
00050 #if !defined(POLARSSL_PLATFORM_NO_STD_FUNCTIONS)
00051 #include <stdio.h>
00052 #include <stdlib.h>
00053 #if !defined(POLARSSL_PLATFORM_STD_SNPRINTF)
00054 #define POLARSSL_PLATFORM_STD_SNPRINTF   snprintf /**< Default snprintf to use  */
00055 #endif
00056 #if !defined(POLARSSL_PLATFORM_STD_PRINTF)
00057 #define POLARSSL_PLATFORM_STD_PRINTF   printf /**< Default printf to use  */
00058 #endif
00059 #if !defined(POLARSSL_PLATFORM_STD_FPRINTF)
00060 #define POLARSSL_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use */
00061 #endif
00062 #if !defined(POLARSSL_PLATFORM_STD_MALLOC)
00063 #define POLARSSL_PLATFORM_STD_MALLOC   malloc /**< Default allocator to use */
00064 #endif
00065 #if !defined(POLARSSL_PLATFORM_STD_FREE)
00066 #define POLARSSL_PLATFORM_STD_FREE       free /**< Default free to use */
00067 #endif
00068 #if !defined(POLARSSL_PLATFORM_STD_EXIT)
00069 #define POLARSSL_PLATFORM_STD_EXIT      exit /**< Default free to use */
00070 #endif
00071 #else /* POLARSSL_PLATFORM_NO_STD_FUNCTIONS */
00072 #if defined(POLARSSL_PLATFORM_STD_MEM_HDR)
00073 #include POLARSSL_PLATFORM_STD_MEM_HDR
00074 #endif
00075 #endif /* POLARSSL_PLATFORM_NO_STD_FUNCTIONS */
00076 
00077 /* \} name SECTION: Module settings */
00078 
00079 /*
00080  * The function pointers for malloc and free
00081  */
00082 #if defined(POLARSSL_PLATFORM_MEMORY)
00083 #if defined(POLARSSL_PLATFORM_FREE_MACRO) && \
00084     defined(POLARSSL_PLATFORM_MALLOC_MACRO)
00085 #define polarssl_free       POLARSSL_PLATFORM_FREE_MACRO
00086 #define polarssl_malloc     POLARSSL_PLATFORM_MALLOC_MACRO
00087 #else
00088 /* For size_t */
00089 #include <stddef.h>
00090 extern void * (*polarssl_malloc)( size_t len );
00091 extern void (*polarssl_free)( void *ptr );
00092 
00093 /**
00094  * \brief   Set your own memory implementation function pointers
00095  *
00096  * \param malloc_func   the malloc function implementation
00097  * \param free_func     the free function implementation
00098  *
00099  * \return              0 if successful
00100  */
00101 int platform_set_malloc_free( void * (*malloc_func)( size_t ),
00102                               void (*free_func)( void * ) );
00103 #endif /* POLARSSL_PLATFORM_FREE_MACRO && POLARSSL_PLATFORM_MALLOC_MACRO */
00104 #else /* !POLARSSL_PLATFORM_MEMORY */
00105 #define polarssl_free       free
00106 #define polarssl_malloc     malloc
00107 #endif /* POLARSSL_PLATFORM_MEMORY && !POLARSSL_PLATFORM_{FREE,MALLOC}_MACRO */
00108 
00109 /*
00110  * The function pointers for fprintf
00111  */
00112 #if defined(POLARSSL_PLATFORM_FPRINTF_ALT)
00113 /* We need FILE * */
00114 #include <stdio.h>
00115 extern int (*polarssl_fprintf)( FILE *stream, const char *format, ... );
00116 
00117 /**
00118  * \brief   Set your own fprintf function pointer
00119  *
00120  * \param fprintf_func   the fprintf function implementation
00121  *
00122  * \return              0
00123  */
00124 int platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
00125                                                ... ) );
00126 #else
00127 #if defined(POLARSSL_PLATFORM_FPRINTF_MACRO)
00128 #define polarssl_fprintf    POLARSSL_PLATFORM_FPRINTF_MACRO
00129 #else
00130 #define polarssl_fprintf    fprintf
00131 #endif /* POLARSSL_PLATFORM_FPRINTF_MACRO */
00132 #endif /* POLARSSL_PLATFORM_FPRINTF_ALT */
00133 
00134 /*
00135  * The function pointers for printf
00136  */
00137 #if defined(POLARSSL_PLATFORM_PRINTF_ALT)
00138 extern int (*polarssl_printf)( const char *format, ... );
00139 
00140 /**
00141  * \brief   Set your own printf function pointer
00142  *
00143  * \param printf_func   the printf function implementation
00144  *
00145  * \return              0
00146  */
00147 int platform_set_printf( int (*printf_func)( const char *, ... ) );
00148 #else /* !POLARSSL_PLATFORM_PRINTF_ALT */
00149 #if defined(POLARSSL_PLATFORM_PRINTF_MACRO)
00150 #define polarssl_printf     POLARSSL_PLATFORM_PRINTF_MACRO
00151 #else
00152 #define polarssl_printf     printf
00153 #endif /* POLARSSL_PLATFORM_PRINTF_MACRO */
00154 #endif /* POLARSSL_PLATFORM_PRINTF_ALT */
00155 
00156 /*
00157  * The function pointers for snprintf
00158  */
00159 #if defined(POLARSSL_PLATFORM_SNPRINTF_ALT)
00160 extern int (*polarssl_snprintf)( char * s, size_t n, const char * format, ... );
00161 
00162 /**
00163  * \brief   Set your own snprintf function pointer
00164  *
00165  * \param snprintf_func   the snprintf function implementation
00166  *
00167  * \return              0
00168  */
00169 int platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
00170                                                  const char * format, ... ) );
00171 #else /* POLARSSL_PLATFORM_SNPRINTF_ALT */
00172 #if defined(POLARSSL_PLATFORM_SNPRINTF_MACRO)
00173 #define polarssl_snprintf   POLARSSL_PLATFORM_SNPRINTF_MACRO
00174 #else
00175 #define polarssl_snprintf   snprintf
00176 #endif /* POLARSSL_PLATFORM_SNPRINTF_MACRO */
00177 #endif /* POLARSSL_PLATFORM_SNPRINTF_ALT */
00178 
00179 /*
00180  * The function pointers for exit
00181  */
00182 #if defined(POLARSSL_PLATFORM_EXIT_ALT)
00183 extern void (*polarssl_exit)( int status );
00184 
00185 /**
00186  * \brief   Set your own exit function pointer
00187  *
00188  * \param exit_func   the exit function implementation
00189  *
00190  * \return              0
00191  */
00192 int platform_set_exit( void (*exit_func)( int status ) );
00193 #else
00194 #if defined(POLARSSL_PLATFORM_EXIT_MACRO)
00195 #define polarssl_exit   POLARSSL_PLATFORM_EXIT_MACRO
00196 #else
00197 #define polarssl_exit   exit
00198 #endif /* POLARSSL_PLATFORM_EXIT_MACRO */
00199 #endif /* POLARSSL_PLATFORM_EXIT_ALT */
00200 
00201 #ifdef __cplusplus
00202 }
00203 #endif
00204 
00205 #endif /* platform.h */
00206