diff options
author | barthess <barthess@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2011-08-23 08:11:23 +0000 |
---|---|---|
committer | barthess <barthess@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2011-08-23 08:11:23 +0000 |
commit | 4ec82f62c18894d92bafc6c6f98784650106373d (patch) | |
tree | a0cec5585dff0434608241c373b9ad30af5ae869 /test/testmbox.c | |
parent | c877f5bfcc5301b441c9b13e8c32d83e9df04f37 (diff) | |
parent | 2a494cb534dbe3535a9bf4c61dfbc8b6c9e750be (diff) | |
download | ChibiOS-4ec82f62c18894d92bafc6c6f98784650106373d.tar.gz ChibiOS-4ec82f62c18894d92bafc6c6f98784650106373d.tar.bz2 ChibiOS-4ec82f62c18894d92bafc6c6f98784650106373d.zip |
I2C. 1 - Merge code from trunk. 2 - Fix driver problems detected by the CH_DBG_SYSTEM_STATE_CHECK
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/i2c_dev@3249 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'test/testmbox.c')
-rw-r--r-- | test/testmbox.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/test/testmbox.c b/test/testmbox.c index 8797536c6..86b9febb4 100644 --- a/test/testmbox.c +++ b/test/testmbox.c @@ -101,19 +101,23 @@ static void mbox1_execute(void) { */
msg1 = chMBPost(&mb1, 'X', 1);
test_assert(4, msg1 == RDY_TIMEOUT, "wrong wake-up message");
+ chSysLock();
msg1 = chMBPostI(&mb1, 'X');
+ chSysUnlock();
test_assert(5, msg1 == RDY_TIMEOUT, "wrong wake-up message");
msg1 = chMBPostAhead(&mb1, 'X', 1);
test_assert(6, msg1 == RDY_TIMEOUT, "wrong wake-up message");
+ chSysLock();
msg1 = chMBPostAheadI(&mb1, 'X');
+ chSysUnlock();
test_assert(7, msg1 == RDY_TIMEOUT, "wrong wake-up message");
/*
* Testing final conditions.
*/
- test_assert(8, chMBGetFreeCountI(&mb1) == 0, "still empty");
- test_assert(9, chMBGetUsedCountI(&mb1) == MB_SIZE, "not full");
- test_assert(10, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
+ test_assert_lock(8, chMBGetFreeCountI(&mb1) == 0, "still empty");
+ test_assert_lock(9, chMBGetUsedCountI(&mb1) == MB_SIZE, "not full");
+ test_assert_lock(10, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
/*
* Testing dequeuing.
@@ -140,19 +144,22 @@ static void mbox1_execute(void) { */
msg1 = chMBFetch(&mb1, &msg2, 1);
test_assert(17, msg1 == RDY_TIMEOUT, "wrong wake-up message");
+ chSysLock();
msg1 = chMBFetchI(&mb1, &msg2);
+ chSysUnlock();
test_assert(18, msg1 == RDY_TIMEOUT, "wrong wake-up message");
/*
* Testing final conditions.
*/
- test_assert(19, chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
- test_assert(20, chMBGetUsedCountI(&mb1) == 0, "still full");
- test_assert(21, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
+ test_assert_lock(19, chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
+ test_assert_lock(20, chMBGetUsedCountI(&mb1) == 0, "still full");
+ test_assert_lock(21, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
/*
* Testing I-Class.
*/
+ chSysLock()
msg1 = chMBPostI(&mb1, 'A');
test_assert(22, msg1 == RDY_OK, "wrong wake-up message");
msg1 = chMBPostI(&mb1, 'B');
@@ -162,16 +169,20 @@ static void mbox1_execute(void) { msg1 = chMBPostI(&mb1, 'D');
test_assert(25, msg1 == RDY_OK, "wrong wake-up message");
msg1 = chMBPostI(&mb1, 'E');
+ chSysUnlock()
test_assert(26, msg1 == RDY_OK, "wrong wake-up message");
test_assert(27, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
for (i = 0; i < MB_SIZE; i++) {
+ chSysLock();
msg1 = chMBFetchI(&mb1, &msg2);
+ chSysUnlock();
test_assert(28, msg1 == RDY_OK, "wrong wake-up message");
test_emit_token(msg2);
}
test_assert_sequence(29, "ABCDE");
test_assert(30, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
+ chSysLock();
msg1 = chMBPostAheadI(&mb1, 'E');
test_assert(31, msg1 == RDY_OK, "wrong wake-up message");
msg1 = chMBPostAheadI(&mb1, 'D');
@@ -181,10 +192,13 @@ static void mbox1_execute(void) { msg1 = chMBPostAheadI(&mb1, 'B');
test_assert(34, msg1 == RDY_OK, "wrong wake-up message");
msg1 = chMBPostAheadI(&mb1, 'A');
+ chSysUnlock();
test_assert(35, msg1 == RDY_OK, "wrong wake-up message");
test_assert(36, mb1.mb_rdptr == mb1.mb_wrptr, "pointers not aligned");
for (i = 0; i < MB_SIZE; i++) {
+ chSysLock();
msg1 = chMBFetchI(&mb1, &msg2);
+ chSysUnlock();
test_assert(37, msg1 == RDY_OK, "wrong wake-up message");
test_emit_token(msg2);
}
@@ -199,10 +213,10 @@ static void mbox1_execute(void) { /*
* Re-testing final conditions.
*/
- test_assert(40, chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
- test_assert(41, chMBGetUsedCountI(&mb1) == 0, "still full");
- test_assert(42, mb1.mb_buffer == mb1.mb_wrptr, "write pointer not aligned to base");
- test_assert(43, mb1.mb_buffer == mb1.mb_rdptr, "read pointer not aligned to base");
+ test_assert_lock(40, chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
+ test_assert_lock(41, chMBGetUsedCountI(&mb1) == 0, "still full");
+ test_assert_lock(42, mb1.mb_buffer == mb1.mb_wrptr, "write pointer not aligned to base");
+ test_assert_lock(43, mb1.mb_buffer == mb1.mb_rdptr, "read pointer not aligned to base");
}
ROMCONST struct testcase testmbox1 = {
|