Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
cc3100_nonos.cpp
00001 /* 00002 * nonos.c - CC31xx/CC32xx Host Driver Implementation 00003 * 00004 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ 00005 * 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions 00009 * are met: 00010 * 00011 * Redistributions of source code must retain the above copyright 00012 * notice, this list of conditions and the following disclaimer. 00013 * 00014 * Redistributions in binary form must reproduce the above copyright 00015 * notice, this list of conditions and the following disclaimer in the 00016 * documentation and/or other materials provided with the 00017 * distribution. 00018 * 00019 * Neither the name of Texas Instruments Incorporated nor the names of 00020 * its contributors may be used to endorse or promote products derived 00021 * from this software without specific prior written permission. 00022 * 00023 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00024 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00025 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00026 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 00027 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00028 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00029 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00030 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00031 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00032 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00033 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00034 * 00035 */ 00036 00037 00038 00039 /*****************************************************************************/ 00040 /* Include files */ 00041 /*****************************************************************************/ 00042 #include "cc3100_simplelink.h" 00043 #include "cc3100_protocol.h" 00044 #include "cc3100_driver.h" 00045 00046 #ifndef SL_PLATFORM_MULTI_THREADED 00047 00048 #include "cc3100_nonos.h" 00049 00050 #define NONOS_MAX_SPAWN_ENTRIES 5 00051 00052 typedef struct 00053 { 00054 _SlSpawnEntryFunc_t pEntry; 00055 void* pValue; 00056 }_SlNonOsSpawnEntry_t; 00057 00058 typedef struct 00059 { 00060 _SlNonOsSpawnEntry_t SpawnEntries[NONOS_MAX_SPAWN_ENTRIES]; 00061 }_SlNonOsCB_t; 00062 00063 _SlNonOsCB_t g__SlNonOsCB; 00064 00065 00066 _SlNonOsRetVal_t _SlNonOsSemSet(_SlNonOsSemObj_t* pSemObj , _SlNonOsSemObj_t Value) 00067 { 00068 *pSemObj = Value; 00069 return NONOS_RET_OK; 00070 } 00071 00072 _SlNonOsRetVal_t _SlNonOsSemGet(_SlNonOsSemObj_t* pSyncObj, _SlNonOsSemObj_t WaitValue, _SlNonOsSemObj_t SetValue, _SlNonOsTime_t Timeout) 00073 { 00074 while (Timeout>0) 00075 { 00076 if (WaitValue == *pSyncObj) 00077 { 00078 *pSyncObj = SetValue; 00079 break; 00080 } 00081 if (Timeout != NONOS_WAIT_FOREVER) 00082 { 00083 Timeout--; 00084 } 00085 _SlNonOsMainLoopTask(); 00086 #ifdef _SlSyncWaitLoopCallback 00087 if( __NON_OS_SYNC_OBJ_SIGNAL_VALUE == WaitValue ) 00088 { 00089 if (WaitValue == *pSyncObj) 00090 { 00091 *pSyncObj = SetValue; 00092 break; 00093 } 00094 _SlSyncWaitLoopCallback(); 00095 } 00096 #endif 00097 } 00098 00099 if (0 == Timeout) 00100 { 00101 return NONOS_RET_ERR; 00102 } 00103 else 00104 { 00105 return NONOS_RET_OK; 00106 } 00107 } 00108 00109 00110 _SlNonOsRetVal_t _SlNonOsSpawn(_SlSpawnEntryFunc_t pEntry , void* pValue , _u32 flags) 00111 { 00112 _i16 i; 00113 00114 for (i=0 ; i<NONOS_MAX_SPAWN_ENTRIES ; i++) 00115 { 00116 _SlNonOsSpawnEntry_t* pE = &g__SlNonOsCB.SpawnEntries[i]; 00117 00118 if (NULL == pE->pEntry) 00119 { 00120 pE->pValue = pValue; 00121 pE->pEntry = pEntry; 00122 break; 00123 } 00124 } 00125 00126 return NONOS_RET_OK; 00127 } 00128 00129 00130 _SlNonOsRetVal_t _SlNonOsMainLoopTask(void) 00131 { 00132 _i16 i; 00133 00134 for (i=0 ; i<NONOS_MAX_SPAWN_ENTRIES ; i++) 00135 { 00136 _SlNonOsSpawnEntry_t* pE = &g__SlNonOsCB.SpawnEntries[i]; 00137 _SlSpawnEntryFunc_t pF = pE->pEntry; 00138 00139 if (NULL != pF) 00140 { 00141 if((g_pCB)->RxIrqCnt != (g_pCB)->RxDoneCnt) 00142 { 00143 pF(0);/*(pValue);*/ 00144 } 00145 pE->pEntry = NULL; 00146 pE->pValue = NULL; 00147 } 00148 } 00149 00150 return NONOS_RET_OK; 00151 } 00152 00153 #endif /*(SL_PLATFORM != SL_PLATFORM_NON_OS)*/ 00154
Generated on Tue Jul 12 2022 22:55:20 by
