Update revision to use TI's mqtt and Freertos.

Dependencies:   mbed client server

Fork of cc3100_Test_mqtt_CM3 by David Fletcher

Committer:
dflet
Date:
Thu Sep 03 14:02:37 2015 +0000
Revision:
3:a8c249046181
SPI Mode change 1 to 0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 3:a8c249046181 1 /*
dflet 3:a8c249046181 2 FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.
dflet 3:a8c249046181 3 All rights reserved
dflet 3:a8c249046181 4
dflet 3:a8c249046181 5 VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
dflet 3:a8c249046181 6
dflet 3:a8c249046181 7 This file is part of the FreeRTOS distribution.
dflet 3:a8c249046181 8
dflet 3:a8c249046181 9 FreeRTOS is free software; you can redistribute it and/or modify it under
dflet 3:a8c249046181 10 the terms of the GNU General Public License (version 2) as published by the
dflet 3:a8c249046181 11 Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
dflet 3:a8c249046181 12
dflet 3:a8c249046181 13 ***************************************************************************
dflet 3:a8c249046181 14 >>! NOTE: The modification to the GPL is included to allow you to !<<
dflet 3:a8c249046181 15 >>! distribute a combined work that includes FreeRTOS without being !<<
dflet 3:a8c249046181 16 >>! obliged to provide the source code for proprietary components !<<
dflet 3:a8c249046181 17 >>! outside of the FreeRTOS kernel. !<<
dflet 3:a8c249046181 18 ***************************************************************************
dflet 3:a8c249046181 19
dflet 3:a8c249046181 20 FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
dflet 3:a8c249046181 21 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
dflet 3:a8c249046181 22 FOR A PARTICULAR PURPOSE. Full license text is available on the following
dflet 3:a8c249046181 23 link: http://www.freertos.org/a00114.html
dflet 3:a8c249046181 24
dflet 3:a8c249046181 25 ***************************************************************************
dflet 3:a8c249046181 26 * *
dflet 3:a8c249046181 27 * FreeRTOS provides completely free yet professionally developed, *
dflet 3:a8c249046181 28 * robust, strictly quality controlled, supported, and cross *
dflet 3:a8c249046181 29 * platform software that is more than just the market leader, it *
dflet 3:a8c249046181 30 * is the industry's de facto standard. *
dflet 3:a8c249046181 31 * *
dflet 3:a8c249046181 32 * Help yourself get started quickly while simultaneously helping *
dflet 3:a8c249046181 33 * to support the FreeRTOS project by purchasing a FreeRTOS *
dflet 3:a8c249046181 34 * tutorial book, reference manual, or both: *
dflet 3:a8c249046181 35 * http://www.FreeRTOS.org/Documentation *
dflet 3:a8c249046181 36 * *
dflet 3:a8c249046181 37 ***************************************************************************
dflet 3:a8c249046181 38
dflet 3:a8c249046181 39 http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
dflet 3:a8c249046181 40 the FAQ page "My application does not run, what could be wrong?". Have you
dflet 3:a8c249046181 41 defined configASSERT()?
dflet 3:a8c249046181 42
dflet 3:a8c249046181 43 http://www.FreeRTOS.org/support - In return for receiving this top quality
dflet 3:a8c249046181 44 embedded software for free we request you assist our global community by
dflet 3:a8c249046181 45 participating in the support forum.
dflet 3:a8c249046181 46
dflet 3:a8c249046181 47 http://www.FreeRTOS.org/training - Investing in training allows your team to
dflet 3:a8c249046181 48 be as productive as possible as early as possible. Now you can receive
dflet 3:a8c249046181 49 FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
dflet 3:a8c249046181 50 Ltd, and the world's leading authority on the world's leading RTOS.
dflet 3:a8c249046181 51
dflet 3:a8c249046181 52 http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
dflet 3:a8c249046181 53 including FreeRTOS+Trace - an indispensable productivity tool, a DOS
dflet 3:a8c249046181 54 compatible FAT file system, and our tiny thread aware UDP/IP stack.
dflet 3:a8c249046181 55
dflet 3:a8c249046181 56 http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
dflet 3:a8c249046181 57 Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
dflet 3:a8c249046181 58
dflet 3:a8c249046181 59 http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
dflet 3:a8c249046181 60 Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
dflet 3:a8c249046181 61 licenses offer ticketed support, indemnification and commercial middleware.
dflet 3:a8c249046181 62
dflet 3:a8c249046181 63 http://www.SafeRTOS.com - High Integrity Systems also provide a safety
dflet 3:a8c249046181 64 engineered and independently SIL3 certified version for use in safety and
dflet 3:a8c249046181 65 mission critical applications that require provable dependability.
dflet 3:a8c249046181 66
dflet 3:a8c249046181 67 1 tab == 4 spaces!
dflet 3:a8c249046181 68 */
dflet 3:a8c249046181 69
dflet 3:a8c249046181 70
dflet 3:a8c249046181 71 /*
dflet 3:a8c249046181 72 * The simplest possible implementation of pvPortMalloc(). Note that this
dflet 3:a8c249046181 73 * implementation does NOT allow allocated memory to be freed again.
dflet 3:a8c249046181 74 *
dflet 3:a8c249046181 75 * See heap_2.c, heap_3.c and heap_4.c for alternative implementations, and the
dflet 3:a8c249046181 76 * memory management pages of http://www.FreeRTOS.org for more information.
dflet 3:a8c249046181 77 */
dflet 3:a8c249046181 78 #include <stdlib.h>
dflet 3:a8c249046181 79
dflet 3:a8c249046181 80 /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining
dflet 3:a8c249046181 81 all the API functions to use the MPU wrappers. That should only be done when
dflet 3:a8c249046181 82 task.h is included from an application file. */
dflet 3:a8c249046181 83 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
dflet 3:a8c249046181 84
dflet 3:a8c249046181 85 #include "FreeRTOS.h"
dflet 3:a8c249046181 86 #include "task.h"
dflet 3:a8c249046181 87
dflet 3:a8c249046181 88 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
dflet 3:a8c249046181 89
dflet 3:a8c249046181 90 /* A few bytes might be lost to byte aligning the heap start address. */
dflet 3:a8c249046181 91 #define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT )
dflet 3:a8c249046181 92
dflet 3:a8c249046181 93 /* Allocate the memory for the heap. */
dflet 3:a8c249046181 94 static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
dflet 3:a8c249046181 95 static size_t xNextFreeByte = ( size_t ) 0;
dflet 3:a8c249046181 96
dflet 3:a8c249046181 97 /*-----------------------------------------------------------*/
dflet 3:a8c249046181 98
dflet 3:a8c249046181 99 void *pvPortMalloc( size_t xWantedSize )
dflet 3:a8c249046181 100 {
dflet 3:a8c249046181 101 void *pvReturn = NULL;
dflet 3:a8c249046181 102 static uint8_t *pucAlignedHeap = NULL;
dflet 3:a8c249046181 103
dflet 3:a8c249046181 104 /* Ensure that blocks are always aligned to the required number of bytes. */
dflet 3:a8c249046181 105 #if portBYTE_ALIGNMENT != 1
dflet 3:a8c249046181 106 if( xWantedSize & portBYTE_ALIGNMENT_MASK )
dflet 3:a8c249046181 107 {
dflet 3:a8c249046181 108 /* Byte alignment required. */
dflet 3:a8c249046181 109 xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) );
dflet 3:a8c249046181 110 }
dflet 3:a8c249046181 111 #endif
dflet 3:a8c249046181 112
dflet 3:a8c249046181 113 vTaskSuspendAll();
dflet 3:a8c249046181 114 {
dflet 3:a8c249046181 115 if( pucAlignedHeap == NULL )
dflet 3:a8c249046181 116 {
dflet 3:a8c249046181 117 /* Ensure the heap starts on a correctly aligned boundary. */
dflet 3:a8c249046181 118 pucAlignedHeap = ( uint8_t * ) ( ( ( portPOINTER_SIZE_TYPE ) &ucHeap[ portBYTE_ALIGNMENT ] ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) );
dflet 3:a8c249046181 119 }
dflet 3:a8c249046181 120
dflet 3:a8c249046181 121 /* Check there is enough room left for the allocation. */
dflet 3:a8c249046181 122 if( ( ( xNextFreeByte + xWantedSize ) < configADJUSTED_HEAP_SIZE ) &&
dflet 3:a8c249046181 123 ( ( xNextFreeByte + xWantedSize ) > xNextFreeByte ) )/* Check for overflow. */
dflet 3:a8c249046181 124 {
dflet 3:a8c249046181 125 /* Return the next free byte then increment the index past this
dflet 3:a8c249046181 126 block. */
dflet 3:a8c249046181 127 pvReturn = pucAlignedHeap + xNextFreeByte;
dflet 3:a8c249046181 128 xNextFreeByte += xWantedSize;
dflet 3:a8c249046181 129 }
dflet 3:a8c249046181 130
dflet 3:a8c249046181 131 traceMALLOC( pvReturn, xWantedSize );
dflet 3:a8c249046181 132 }
dflet 3:a8c249046181 133 ( void ) xTaskResumeAll();
dflet 3:a8c249046181 134
dflet 3:a8c249046181 135 #if( configUSE_MALLOC_FAILED_HOOK == 1 )
dflet 3:a8c249046181 136 {
dflet 3:a8c249046181 137 if( pvReturn == NULL )
dflet 3:a8c249046181 138 {
dflet 3:a8c249046181 139 extern void vApplicationMallocFailedHook( void );
dflet 3:a8c249046181 140 vApplicationMallocFailedHook();
dflet 3:a8c249046181 141 }
dflet 3:a8c249046181 142 }
dflet 3:a8c249046181 143 #endif
dflet 3:a8c249046181 144
dflet 3:a8c249046181 145 return pvReturn;
dflet 3:a8c249046181 146 }
dflet 3:a8c249046181 147 /*-----------------------------------------------------------*/
dflet 3:a8c249046181 148
dflet 3:a8c249046181 149 void vPortFree( void *pv )
dflet 3:a8c249046181 150 {
dflet 3:a8c249046181 151 /* Memory cannot be freed using this scheme. See heap_2.c, heap_3.c and
dflet 3:a8c249046181 152 heap_4.c for alternative implementations, and the memory management pages of
dflet 3:a8c249046181 153 http://www.FreeRTOS.org for more information. */
dflet 3:a8c249046181 154 ( void ) pv;
dflet 3:a8c249046181 155
dflet 3:a8c249046181 156 /* Force an assert as it is invalid to call this function. */
dflet 3:a8c249046181 157 configASSERT( pv == NULL );
dflet 3:a8c249046181 158 }
dflet 3:a8c249046181 159 /*-----------------------------------------------------------*/
dflet 3:a8c249046181 160
dflet 3:a8c249046181 161 void vPortInitialiseBlocks( void )
dflet 3:a8c249046181 162 {
dflet 3:a8c249046181 163 /* Only required when static memory is not cleared. */
dflet 3:a8c249046181 164 xNextFreeByte = ( size_t ) 0;
dflet 3:a8c249046181 165 }
dflet 3:a8c249046181 166 /*-----------------------------------------------------------*/
dflet 3:a8c249046181 167
dflet 3:a8c249046181 168 size_t xPortGetFreeHeapSize( void )
dflet 3:a8c249046181 169 {
dflet 3:a8c249046181 170 return ( configADJUSTED_HEAP_SIZE - xNextFreeByte );
dflet 3:a8c249046181 171 }
dflet 3:a8c249046181 172
dflet 3:a8c249046181 173
dflet 3:a8c249046181 174
dflet 3:a8c249046181 175