A metronome using the FRDM K64F board

Committer:
ram54288
Date:
Sun May 14 18:40:18 2017 +0000
Revision:
0:a7a43371b306
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ram54288 0:a7a43371b306 1 /*
ram54288 0:a7a43371b306 2 * Copyright (c) 2016 ARM Limited. All rights reserved.
ram54288 0:a7a43371b306 3 * SPDX-License-Identifier: Apache-2.0
ram54288 0:a7a43371b306 4 * Licensed under the Apache License, Version 2.0 (the License); you may
ram54288 0:a7a43371b306 5 * not use this file except in compliance with the License.
ram54288 0:a7a43371b306 6 * You may obtain a copy of the License at
ram54288 0:a7a43371b306 7 *
ram54288 0:a7a43371b306 8 * http://www.apache.org/licenses/LICENSE-2.0
ram54288 0:a7a43371b306 9 *
ram54288 0:a7a43371b306 10 * Unless required by applicable law or agreed to in writing, software
ram54288 0:a7a43371b306 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
ram54288 0:a7a43371b306 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ram54288 0:a7a43371b306 13 * See the License for the specific language governing permissions and
ram54288 0:a7a43371b306 14 * limitations under the License.
ram54288 0:a7a43371b306 15 */
ram54288 0:a7a43371b306 16
ram54288 0:a7a43371b306 17 #include "pal_rtos.h"
ram54288 0:a7a43371b306 18 #include "unity.h"
ram54288 0:a7a43371b306 19 #include "unity_fixture.h"
ram54288 0:a7a43371b306 20 #include "pal_rtos_test_utils.h"
ram54288 0:a7a43371b306 21 #include "pal.h"
ram54288 0:a7a43371b306 22 #include "pal_rtos_test_utils.h"
ram54288 0:a7a43371b306 23
ram54288 0:a7a43371b306 24 TEST_GROUP(pal_rtos);
ram54288 0:a7a43371b306 25
ram54288 0:a7a43371b306 26 //sometimes you may want to get at local data in a module.
ram54288 0:a7a43371b306 27 //for example: If you plan to pass by reference, this could be useful
ram54288 0:a7a43371b306 28 //however, it should often be avoided
ram54288 0:a7a43371b306 29 //extern int Counter;
ram54288 0:a7a43371b306 30 uint32_t g_threadStorage[20] = { 0 };
ram54288 0:a7a43371b306 31 threadsArgument_t g_threadsArg = {0};
ram54288 0:a7a43371b306 32 timerArgument_t g_timerArgs = {0};
ram54288 0:a7a43371b306 33 palMutexID_t mutex1 = NULLPTR;
ram54288 0:a7a43371b306 34 palMutexID_t mutex2 = NULLPTR;
ram54288 0:a7a43371b306 35 palSemaphoreID_t semaphore1 = NULLPTR;
ram54288 0:a7a43371b306 36
ram54288 0:a7a43371b306 37 //forward declarations
ram54288 0:a7a43371b306 38 void palRunThreads();
ram54288 0:a7a43371b306 39
ram54288 0:a7a43371b306 40
ram54288 0:a7a43371b306 41 TEST_SETUP(pal_rtos)
ram54288 0:a7a43371b306 42 {
ram54288 0:a7a43371b306 43 //This is run before EACH TEST
ram54288 0:a7a43371b306 44 //Counter = 0x5a5a;
ram54288 0:a7a43371b306 45 }
ram54288 0:a7a43371b306 46
ram54288 0:a7a43371b306 47 TEST_TEAR_DOWN(pal_rtos)
ram54288 0:a7a43371b306 48 {
ram54288 0:a7a43371b306 49 }
ram54288 0:a7a43371b306 50
ram54288 0:a7a43371b306 51 TEST(pal_rtos, pal_osKernelSysTick_Unity)
ram54288 0:a7a43371b306 52 {
ram54288 0:a7a43371b306 53 uint32_t tick1 = 0, tick2 = 0;
ram54288 0:a7a43371b306 54 tick1 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 55 tick2 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 56
ram54288 0:a7a43371b306 57 TEST_ASSERT_TRUE(tick2 != tick1);
ram54288 0:a7a43371b306 58 }
ram54288 0:a7a43371b306 59
ram54288 0:a7a43371b306 60 TEST(pal_rtos, pal_osKernelSysTick64_Unity)
ram54288 0:a7a43371b306 61 {
ram54288 0:a7a43371b306 62 uint64_t tick1 = 0, tick2 = 0;
ram54288 0:a7a43371b306 63
ram54288 0:a7a43371b306 64 tick1 = pal_osKernelSysTick64();
ram54288 0:a7a43371b306 65 tick2 = pal_osKernelSysTick64();
ram54288 0:a7a43371b306 66
ram54288 0:a7a43371b306 67 TEST_ASSERT_TRUE(tick2 > tick1);
ram54288 0:a7a43371b306 68 }
ram54288 0:a7a43371b306 69
ram54288 0:a7a43371b306 70 TEST(pal_rtos, pal_osKernelSysTickMicroSec_Unity)
ram54288 0:a7a43371b306 71 {
ram54288 0:a7a43371b306 72 uint64_t tick = 0;
ram54288 0:a7a43371b306 73 uint64_t microSec = 2000 * 1000;
ram54288 0:a7a43371b306 74
ram54288 0:a7a43371b306 75 tick = pal_osKernelSysTickMicroSec(microSec);
ram54288 0:a7a43371b306 76 TEST_ASSERT_TRUE(0 != tick);
ram54288 0:a7a43371b306 77 }
ram54288 0:a7a43371b306 78
ram54288 0:a7a43371b306 79 TEST(pal_rtos, pal_osKernelSysMilliSecTick_Unity)
ram54288 0:a7a43371b306 80 {
ram54288 0:a7a43371b306 81 uint64_t tick = 0;
ram54288 0:a7a43371b306 82 uint64_t microSec = 2000 * 1000;
ram54288 0:a7a43371b306 83 uint64_t milliseconds = 0;
ram54288 0:a7a43371b306 84
ram54288 0:a7a43371b306 85 tick = pal_osKernelSysTickMicroSec(microSec);
ram54288 0:a7a43371b306 86 TEST_ASSERT_TRUE(0 != tick);
ram54288 0:a7a43371b306 87
ram54288 0:a7a43371b306 88 milliseconds = pal_osKernelSysMilliSecTick(tick);
ram54288 0:a7a43371b306 89 TEST_ASSERT_EQUAL(milliseconds, microSec/1000);
ram54288 0:a7a43371b306 90 }
ram54288 0:a7a43371b306 91
ram54288 0:a7a43371b306 92
ram54288 0:a7a43371b306 93 TEST(pal_rtos, pal_osKernelSysTickFrequency_Unity)
ram54288 0:a7a43371b306 94 {
ram54288 0:a7a43371b306 95 uint64_t frequency = 0;
ram54288 0:a7a43371b306 96
ram54288 0:a7a43371b306 97 frequency = pal_osKernelSysTickFrequency();
ram54288 0:a7a43371b306 98
ram54288 0:a7a43371b306 99 TEST_ASSERT_TRUE(frequency > 0);
ram54288 0:a7a43371b306 100 }
ram54288 0:a7a43371b306 101
ram54288 0:a7a43371b306 102 TEST(pal_rtos, pal_osDelay_Unity)
ram54288 0:a7a43371b306 103 {
ram54288 0:a7a43371b306 104 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 105 uint32_t tick1 , tick2;
ram54288 0:a7a43371b306 106
ram54288 0:a7a43371b306 107 tick1 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 108 status = pal_osDelay(200);
ram54288 0:a7a43371b306 109 tick2 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 110
ram54288 0:a7a43371b306 111 TEST_ASSERT_TRUE(tick2 > tick1);
ram54288 0:a7a43371b306 112 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 113 }
ram54288 0:a7a43371b306 114
ram54288 0:a7a43371b306 115 TEST(pal_rtos, BasicTimeScenario)
ram54288 0:a7a43371b306 116 {
ram54288 0:a7a43371b306 117 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 118 uint32_t tick, tick1 , tick2 , index, tickDiff, tickDelta;
ram54288 0:a7a43371b306 119 uint32_t tmp = 0;
ram54288 0:a7a43371b306 120
ram54288 0:a7a43371b306 121 tick1 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 122 for(index = 0 ; index < 2000 ; ++index)
ram54288 0:a7a43371b306 123 ++tmp;
ram54288 0:a7a43371b306 124 tick2 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 125
ram54288 0:a7a43371b306 126 TEST_ASSERT_TRUE(tick1 != tick2);
ram54288 0:a7a43371b306 127 TEST_ASSERT_TRUE(tick2 > tick1); // to check that the tick counts are incremantal - be aware of wrap-arounds
ram54288 0:a7a43371b306 128
ram54288 0:a7a43371b306 129 /****************************************/
ram54288 0:a7a43371b306 130 tick1 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 131 status = pal_osDelay(2000);
ram54288 0:a7a43371b306 132 tick2 = pal_osKernelSysTick();
ram54288 0:a7a43371b306 133
ram54288 0:a7a43371b306 134 TEST_ASSERT_TRUE(tick1 != tick2);
ram54288 0:a7a43371b306 135 TEST_ASSERT_TRUE(tick2 > tick1);
ram54288 0:a7a43371b306 136 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 137
ram54288 0:a7a43371b306 138 tickDiff = tick2 - tick1;
ram54288 0:a7a43371b306 139 tick = pal_osKernelSysTickMicroSec(2000 * 1000);
ram54288 0:a7a43371b306 140 // 10 milliseconds delta
ram54288 0:a7a43371b306 141 tickDelta = pal_osKernelSysTickMicroSec(10 * 1000);
ram54288 0:a7a43371b306 142 TEST_ASSERT_TRUE((tick - tickDelta < tickDiff) && (tickDiff < tick + tickDelta));
ram54288 0:a7a43371b306 143 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 144 }
ram54288 0:a7a43371b306 145
ram54288 0:a7a43371b306 146 TEST(pal_rtos, TimerUnityTest)
ram54288 0:a7a43371b306 147 {
ram54288 0:a7a43371b306 148 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 149 palTimerID_t timerID1 = NULLPTR;
ram54288 0:a7a43371b306 150 palTimerID_t timerID2 = NULLPTR;
ram54288 0:a7a43371b306 151 status = pal_init();
ram54288 0:a7a43371b306 152 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 153
ram54288 0:a7a43371b306 154 status = pal_osTimerCreate(palTimerFunc1, NULL, palOsTimerOnce, &timerID1);
ram54288 0:a7a43371b306 155 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 156
ram54288 0:a7a43371b306 157 status = pal_osTimerCreate(palTimerFunc2, NULL, palOsTimerPeriodic, &timerID2);
ram54288 0:a7a43371b306 158 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 159
ram54288 0:a7a43371b306 160 g_timerArgs.ticksBeforeTimer = pal_osKernelSysTick();
ram54288 0:a7a43371b306 161 status = pal_osTimerStart(timerID1, 1000);
ram54288 0:a7a43371b306 162 TEST_PRINTF("ticks before Timer: 0 - %d\n", g_timerArgs.ticksBeforeTimer);
ram54288 0:a7a43371b306 163 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 164
ram54288 0:a7a43371b306 165 g_timerArgs.ticksBeforeTimer = pal_osKernelSysTick();
ram54288 0:a7a43371b306 166 status = pal_osTimerStart(timerID2, 1000);
ram54288 0:a7a43371b306 167 TEST_PRINTF("ticks before Timer: 1 - %d\n", g_timerArgs.ticksBeforeTimer);
ram54288 0:a7a43371b306 168 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 169
ram54288 0:a7a43371b306 170 status = pal_osDelay(1500);
ram54288 0:a7a43371b306 171 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 172
ram54288 0:a7a43371b306 173 status = pal_osTimerStop(timerID2);
ram54288 0:a7a43371b306 174 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 175
ram54288 0:a7a43371b306 176 status = pal_osTimerDelete(&timerID1);
ram54288 0:a7a43371b306 177 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 178 TEST_ASSERT_EQUAL(NULL, timerID1);
ram54288 0:a7a43371b306 179
ram54288 0:a7a43371b306 180 status = pal_osTimerDelete(&timerID2);
ram54288 0:a7a43371b306 181 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 182 TEST_ASSERT_EQUAL(NULL, timerID2);
ram54288 0:a7a43371b306 183 }
ram54288 0:a7a43371b306 184
ram54288 0:a7a43371b306 185 TEST(pal_rtos, PrimitivesUnityTest1)
ram54288 0:a7a43371b306 186 {
ram54288 0:a7a43371b306 187 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 188 status = pal_init(NULL);
ram54288 0:a7a43371b306 189 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 190
ram54288 0:a7a43371b306 191 status = pal_osMutexCreate(&mutex1);
ram54288 0:a7a43371b306 192 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 193
ram54288 0:a7a43371b306 194 status = pal_osMutexCreate(&mutex2);
ram54288 0:a7a43371b306 195 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 196
ram54288 0:a7a43371b306 197 status = pal_osSemaphoreCreate(1 ,&semaphore1);
ram54288 0:a7a43371b306 198 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 199
ram54288 0:a7a43371b306 200 palRunThreads();
ram54288 0:a7a43371b306 201
ram54288 0:a7a43371b306 202 //! sleep for 10 seconds to let the threads finish their functions
ram54288 0:a7a43371b306 203 status = pal_osDelay(10000);
ram54288 0:a7a43371b306 204 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 205
ram54288 0:a7a43371b306 206 status = pal_osSemaphoreDelete(&semaphore1);
ram54288 0:a7a43371b306 207 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 208 TEST_ASSERT_EQUAL(NULL, semaphore1);
ram54288 0:a7a43371b306 209
ram54288 0:a7a43371b306 210 status = pal_osMutexDelete(&mutex1);
ram54288 0:a7a43371b306 211 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 212 TEST_ASSERT_EQUAL(NULL, mutex1);
ram54288 0:a7a43371b306 213
ram54288 0:a7a43371b306 214 status = pal_osMutexDelete(&mutex2);
ram54288 0:a7a43371b306 215 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 216 TEST_ASSERT_EQUAL(NULL, mutex2);
ram54288 0:a7a43371b306 217
ram54288 0:a7a43371b306 218 }
ram54288 0:a7a43371b306 219
ram54288 0:a7a43371b306 220 TEST(pal_rtos, PrimitivesUnityTest2)
ram54288 0:a7a43371b306 221 {
ram54288 0:a7a43371b306 222 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 223 int32_t tmp = 0;
ram54288 0:a7a43371b306 224 palThreadID_t threadID = NULLPTR;
ram54288 0:a7a43371b306 225 uint32_t stack1; //we have small stack just to pass NON-NULL paramter
ram54288 0:a7a43371b306 226
ram54288 0:a7a43371b306 227 //Check Thread parameter validation
ram54288 0:a7a43371b306 228 status = pal_osThreadCreate(NULL, NULL, PAL_osPriorityIdle, 1024, &stack1, NULL, &threadID);
ram54288 0:a7a43371b306 229 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 230
ram54288 0:a7a43371b306 231 status = pal_osThreadCreate(palThreadFunc1, NULL, PAL_osPriorityError, 1024, &stack1, NULL, &threadID);
ram54288 0:a7a43371b306 232 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 233
ram54288 0:a7a43371b306 234 status = pal_osThreadCreate(palThreadFunc1, NULL, PAL_osPriorityIdle, 0, &stack1, NULL, &threadID);
ram54288 0:a7a43371b306 235 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 236
ram54288 0:a7a43371b306 237 status = pal_osThreadCreate(palThreadFunc1, NULL, PAL_osPriorityIdle, 1024, NULL, NULL, &threadID);
ram54288 0:a7a43371b306 238 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 239
ram54288 0:a7a43371b306 240 status = pal_osThreadCreate(palThreadFunc1, NULL, PAL_osPriorityIdle, 1024, &stack1, NULL, NULL);
ram54288 0:a7a43371b306 241 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 242
ram54288 0:a7a43371b306 243 //Check Semaphore parameter validation
ram54288 0:a7a43371b306 244 status = pal_osSemaphoreCreate(1 ,NULL);
ram54288 0:a7a43371b306 245 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 246
ram54288 0:a7a43371b306 247 status = pal_osSemaphoreDelete(NULL);
ram54288 0:a7a43371b306 248 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 249
ram54288 0:a7a43371b306 250 status = pal_osSemaphoreWait(NULLPTR, 1000, &tmp);
ram54288 0:a7a43371b306 251 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 252
ram54288 0:a7a43371b306 253 status = pal_osSemaphoreWait(tmp, 1000, NULL);
ram54288 0:a7a43371b306 254 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 255
ram54288 0:a7a43371b306 256 status = pal_osSemaphoreRelease(NULLPTR);
ram54288 0:a7a43371b306 257 TEST_ASSERT_EQUAL(PAL_ERR_INVALID_ARGUMENT, status);
ram54288 0:a7a43371b306 258 }
ram54288 0:a7a43371b306 259
ram54288 0:a7a43371b306 260 TEST(pal_rtos, MemoryPoolUnityTest)
ram54288 0:a7a43371b306 261 {
ram54288 0:a7a43371b306 262 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 263 palMemoryPoolID_t poolID1 = NULLPTR;
ram54288 0:a7a43371b306 264 palMemoryPoolID_t poolID2 = NULLPTR;
ram54288 0:a7a43371b306 265 uint8_t* ptr1[MEMORY_POOL1_BLOCK_COUNT] = {0};
ram54288 0:a7a43371b306 266 uint8_t* ptr2[MEMORY_POOL2_BLOCK_COUNT] = {0};
ram54288 0:a7a43371b306 267
ram54288 0:a7a43371b306 268 status = pal_init(NULL);
ram54288 0:a7a43371b306 269 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 270
ram54288 0:a7a43371b306 271 status = pal_osPoolCreate(MEMORY_POOL1_BLOCK_SIZE, MEMORY_POOL1_BLOCK_COUNT, &poolID1);
ram54288 0:a7a43371b306 272 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 273
ram54288 0:a7a43371b306 274 status = pal_osPoolCreate(MEMORY_POOL2_BLOCK_SIZE, MEMORY_POOL2_BLOCK_COUNT, &poolID2);
ram54288 0:a7a43371b306 275 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 276
ram54288 0:a7a43371b306 277 for(uint8_t block1 = 0 ; block1 < MEMORY_POOL1_BLOCK_COUNT; ++block1)
ram54288 0:a7a43371b306 278 {
ram54288 0:a7a43371b306 279 ptr1[block1] = pal_osPoolAlloc(poolID1);
ram54288 0:a7a43371b306 280 TEST_ASSERT_NOT_EQUAL(ptr1[block1], NULL);
ram54288 0:a7a43371b306 281 }
ram54288 0:a7a43371b306 282 for(uint8_t block2 = 0 ; block2 < MEMORY_POOL2_BLOCK_COUNT; ++block2)
ram54288 0:a7a43371b306 283 {
ram54288 0:a7a43371b306 284 ptr2[block2] = pal_osPoolCAlloc(poolID2);
ram54288 0:a7a43371b306 285 TEST_ASSERT_NOT_EQUAL(ptr2[block2], NULL);
ram54288 0:a7a43371b306 286 }
ram54288 0:a7a43371b306 287
ram54288 0:a7a43371b306 288 for(uint8_t freeblock1 = 0; freeblock1 < MEMORY_POOL1_BLOCK_COUNT; ++freeblock1)
ram54288 0:a7a43371b306 289 {
ram54288 0:a7a43371b306 290 status = pal_osPoolFree(poolID1, ptr1[freeblock1]);
ram54288 0:a7a43371b306 291 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 292 }
ram54288 0:a7a43371b306 293
ram54288 0:a7a43371b306 294 for(uint8_t freeblock2 = 0; freeblock2 < MEMORY_POOL2_BLOCK_COUNT; ++freeblock2)
ram54288 0:a7a43371b306 295 {
ram54288 0:a7a43371b306 296 status = pal_osPoolFree(poolID2, ptr2[freeblock2]);
ram54288 0:a7a43371b306 297 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 298 }
ram54288 0:a7a43371b306 299
ram54288 0:a7a43371b306 300 status = pal_osPoolDestroy(&poolID1);
ram54288 0:a7a43371b306 301 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 302 TEST_ASSERT_EQUAL(poolID1, NULL);
ram54288 0:a7a43371b306 303 status = pal_osPoolDestroy(&poolID2);
ram54288 0:a7a43371b306 304 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 305 TEST_ASSERT_EQUAL(poolID2, NULL);
ram54288 0:a7a43371b306 306 }
ram54288 0:a7a43371b306 307
ram54288 0:a7a43371b306 308
ram54288 0:a7a43371b306 309 TEST(pal_rtos, MessageUnityTest)
ram54288 0:a7a43371b306 310 {
ram54288 0:a7a43371b306 311 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 312 palMessageQID_t messageQID = NULLPTR;
ram54288 0:a7a43371b306 313 uint32_t infoToSend = 3215;
ram54288 0:a7a43371b306 314 uint32_t infoToGet = 0;
ram54288 0:a7a43371b306 315
ram54288 0:a7a43371b306 316 status = pal_init(NULL);
ram54288 0:a7a43371b306 317 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 318
ram54288 0:a7a43371b306 319 status = pal_osMessageQueueCreate(10, &messageQID);
ram54288 0:a7a43371b306 320 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 321
ram54288 0:a7a43371b306 322 status = pal_osMessagePut(messageQID, infoToSend, 1500);
ram54288 0:a7a43371b306 323 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 324
ram54288 0:a7a43371b306 325 status = pal_osMessageGet(messageQID, 1500, &infoToGet);
ram54288 0:a7a43371b306 326
ram54288 0:a7a43371b306 327 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 328 TEST_ASSERT_EQUAL_UINT32(infoToSend, infoToGet);
ram54288 0:a7a43371b306 329
ram54288 0:a7a43371b306 330 status = pal_osMessageQueueDestroy(&messageQID);
ram54288 0:a7a43371b306 331 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 332 TEST_ASSERT_EQUAL(messageQID, NULL);
ram54288 0:a7a43371b306 333 }
ram54288 0:a7a43371b306 334
ram54288 0:a7a43371b306 335 TEST(pal_rtos, AtomicIncrementUnityTest)
ram54288 0:a7a43371b306 336 {
ram54288 0:a7a43371b306 337 int32_t num1 = 0;
ram54288 0:a7a43371b306 338 int32_t increment = 10;
ram54288 0:a7a43371b306 339 int32_t tmp = 0;
ram54288 0:a7a43371b306 340 int32_t original = num1;
ram54288 0:a7a43371b306 341
ram54288 0:a7a43371b306 342 tmp = pal_osAtomicIncrement(&num1, increment);
ram54288 0:a7a43371b306 343
ram54288 0:a7a43371b306 344
ram54288 0:a7a43371b306 345 TEST_ASSERT_EQUAL(original + increment, tmp);
ram54288 0:a7a43371b306 346
ram54288 0:a7a43371b306 347 }
ram54288 0:a7a43371b306 348
ram54288 0:a7a43371b306 349 TEST(pal_rtos, pal_init_test)
ram54288 0:a7a43371b306 350 {
ram54288 0:a7a43371b306 351 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 352
ram54288 0:a7a43371b306 353 status = pal_init();
ram54288 0:a7a43371b306 354 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 355
ram54288 0:a7a43371b306 356 status = pal_init();
ram54288 0:a7a43371b306 357 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 358
ram54288 0:a7a43371b306 359 status = pal_init();
ram54288 0:a7a43371b306 360 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 361
ram54288 0:a7a43371b306 362 pal_destroy();
ram54288 0:a7a43371b306 363
ram54288 0:a7a43371b306 364 pal_destroy();
ram54288 0:a7a43371b306 365
ram54288 0:a7a43371b306 366 pal_destroy();
ram54288 0:a7a43371b306 367
ram54288 0:a7a43371b306 368 pal_destroy();
ram54288 0:a7a43371b306 369 }
ram54288 0:a7a43371b306 370
ram54288 0:a7a43371b306 371 TEST(pal_rtos, CustomizedTest)
ram54288 0:a7a43371b306 372 {
ram54288 0:a7a43371b306 373 palStatus_t status = PAL_SUCCESS;
ram54288 0:a7a43371b306 374 palThreadID_t threadID1 = NULLPTR;
ram54288 0:a7a43371b306 375 palThreadID_t threadID2 = NULLPTR;
ram54288 0:a7a43371b306 376 uint32_t *stack1 = (uint32_t*)malloc(sizeof(uint32_t) * 512);
ram54288 0:a7a43371b306 377 uint32_t *stack2 = (uint32_t*)malloc(sizeof(uint32_t) * 512);
ram54288 0:a7a43371b306 378
ram54288 0:a7a43371b306 379
ram54288 0:a7a43371b306 380 status = pal_osThreadCreate(palThreadFuncCustom1, NULL, PAL_osPriorityAboveNormal, 1024, stack1, NULL, &threadID1);
ram54288 0:a7a43371b306 381 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 382
ram54288 0:a7a43371b306 383 status = pal_osThreadCreate(palThreadFuncCustom2, NULL, PAL_osPriorityHigh, 1024, stack2, NULL, &threadID2);
ram54288 0:a7a43371b306 384 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 385
ram54288 0:a7a43371b306 386 pal_osDelay(3000);
ram54288 0:a7a43371b306 387
ram54288 0:a7a43371b306 388 status = pal_osThreadTerminate(&threadID1);
ram54288 0:a7a43371b306 389 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 390
ram54288 0:a7a43371b306 391 status = pal_osThreadTerminate(&threadID2);
ram54288 0:a7a43371b306 392 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 393
ram54288 0:a7a43371b306 394
ram54288 0:a7a43371b306 395 status = pal_osThreadCreate(palThreadFuncCustom1, NULL, PAL_osPriorityAboveNormal, 1024, stack1, NULL, &threadID1);
ram54288 0:a7a43371b306 396 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 397
ram54288 0:a7a43371b306 398 status = pal_osThreadCreate(palThreadFuncCustom2, NULL, PAL_osPriorityHigh, 1024, stack2, NULL, &threadID2);
ram54288 0:a7a43371b306 399 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 400
ram54288 0:a7a43371b306 401 pal_osDelay(3000);
ram54288 0:a7a43371b306 402 status = pal_osThreadTerminate(&threadID1);
ram54288 0:a7a43371b306 403 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 404
ram54288 0:a7a43371b306 405 status = pal_osThreadTerminate(&threadID2);
ram54288 0:a7a43371b306 406 TEST_ASSERT_EQUAL(PAL_SUCCESS, status);
ram54288 0:a7a43371b306 407 pal_osDelay(500);
ram54288 0:a7a43371b306 408
ram54288 0:a7a43371b306 409 free(stack1);
ram54288 0:a7a43371b306 410 free(stack2);
ram54288 0:a7a43371b306 411
ram54288 0:a7a43371b306 412 }
ram54288 0:a7a43371b306 413