EL4121 Embedded System / mbed-os

Dependents:   cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more

Committer:
be_bryan
Date:
Mon Dec 11 17:54:04 2017 +0000
Revision:
0:b74591d5ab33
motor ++

Who changed what in which revision?

UserRevisionLine numberNew contents of line
be_bryan 0:b74591d5ab33 1 /* mbed Microcontroller Library
be_bryan 0:b74591d5ab33 2 * Copyright (c) 2017 ARM Limited
be_bryan 0:b74591d5ab33 3 *
be_bryan 0:b74591d5ab33 4 * Licensed under the Apache License, Version 2.0 (the "License");
be_bryan 0:b74591d5ab33 5 * you may not use this file except in compliance with the License.
be_bryan 0:b74591d5ab33 6 * You may obtain a copy of the License at
be_bryan 0:b74591d5ab33 7 *
be_bryan 0:b74591d5ab33 8 * http://www.apache.org/licenses/LICENSE-2.0
be_bryan 0:b74591d5ab33 9 *
be_bryan 0:b74591d5ab33 10 * Unless required by applicable law or agreed to in writing, software
be_bryan 0:b74591d5ab33 11 * distributed under the License is distributed on an "AS IS" BASIS,
be_bryan 0:b74591d5ab33 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
be_bryan 0:b74591d5ab33 13 * See the License for the specific language governing permissions and
be_bryan 0:b74591d5ab33 14 * limitations under the License.
be_bryan 0:b74591d5ab33 15 */
be_bryan 0:b74591d5ab33 16 #include "greentea-client/test_env.h"
be_bryan 0:b74591d5ab33 17
be_bryan 0:b74591d5ab33 18 #define PATTERN_CHECK_VALUE 0xF0F0ADAD
be_bryan 0:b74591d5ab33 19
be_bryan 0:b74591d5ab33 20 class Test {
be_bryan 0:b74591d5ab33 21
be_bryan 0:b74591d5ab33 22 private:
be_bryan 0:b74591d5ab33 23 const char* name;
be_bryan 0:b74591d5ab33 24 const int pattern;
be_bryan 0:b74591d5ab33 25
be_bryan 0:b74591d5ab33 26 public:
be_bryan 0:b74591d5ab33 27 Test(const char* _name, bool print_message=true) : name(_name), pattern(PATTERN_CHECK_VALUE) {
be_bryan 0:b74591d5ab33 28 if (print_message) {
be_bryan 0:b74591d5ab33 29 print("init");
be_bryan 0:b74591d5ab33 30 }
be_bryan 0:b74591d5ab33 31 }
be_bryan 0:b74591d5ab33 32
be_bryan 0:b74591d5ab33 33 void print(const char *message) {
be_bryan 0:b74591d5ab33 34 printf("%s::%s\n", name, message);
be_bryan 0:b74591d5ab33 35 }
be_bryan 0:b74591d5ab33 36
be_bryan 0:b74591d5ab33 37 bool check_init(void) {
be_bryan 0:b74591d5ab33 38 bool result = (pattern == PATTERN_CHECK_VALUE);
be_bryan 0:b74591d5ab33 39 print(result ? "check_init: OK" : "check_init: ERROR");
be_bryan 0:b74591d5ab33 40 return result;
be_bryan 0:b74591d5ab33 41 }
be_bryan 0:b74591d5ab33 42
be_bryan 0:b74591d5ab33 43 void stack_test(void) {
be_bryan 0:b74591d5ab33 44 print("stack_test");
be_bryan 0:b74591d5ab33 45 Test t("Stack");
be_bryan 0:b74591d5ab33 46 t.hello();
be_bryan 0:b74591d5ab33 47 }
be_bryan 0:b74591d5ab33 48
be_bryan 0:b74591d5ab33 49 void hello(void) {
be_bryan 0:b74591d5ab33 50 print("hello");
be_bryan 0:b74591d5ab33 51 }
be_bryan 0:b74591d5ab33 52
be_bryan 0:b74591d5ab33 53 ~Test() {
be_bryan 0:b74591d5ab33 54 print("destroy");
be_bryan 0:b74591d5ab33 55 }
be_bryan 0:b74591d5ab33 56 };
be_bryan 0:b74591d5ab33 57
be_bryan 0:b74591d5ab33 58 /* Check C++ startup initialisation */
be_bryan 0:b74591d5ab33 59 Test s("Static", false);
be_bryan 0:b74591d5ab33 60
be_bryan 0:b74591d5ab33 61 /* EXPECTED OUTPUT:
be_bryan 0:b74591d5ab33 62 *******************
be_bryan 0:b74591d5ab33 63 Static::init
be_bryan 0:b74591d5ab33 64 Static::stack_test
be_bryan 0:b74591d5ab33 65 Stack::init
be_bryan 0:b74591d5ab33 66 Stack::hello
be_bryan 0:b74591d5ab33 67 Stack::destroy
be_bryan 0:b74591d5ab33 68 Static::check_init: OK
be_bryan 0:b74591d5ab33 69 Heap::init
be_bryan 0:b74591d5ab33 70 Heap::hello
be_bryan 0:b74591d5ab33 71 Heap::destroy
be_bryan 0:b74591d5ab33 72 *******************/
be_bryan 0:b74591d5ab33 73 int main (void) {
be_bryan 0:b74591d5ab33 74 GREENTEA_SETUP(10, "default_auto");
be_bryan 0:b74591d5ab33 75
be_bryan 0:b74591d5ab33 76 bool result = true;
be_bryan 0:b74591d5ab33 77 for (;;)
be_bryan 0:b74591d5ab33 78 {
be_bryan 0:b74591d5ab33 79 s.print("init");
be_bryan 0:b74591d5ab33 80 // Global stack object simple test
be_bryan 0:b74591d5ab33 81 s.stack_test();
be_bryan 0:b74591d5ab33 82 if (s.check_init() == false)
be_bryan 0:b74591d5ab33 83 {
be_bryan 0:b74591d5ab33 84 result = false;
be_bryan 0:b74591d5ab33 85 break;
be_bryan 0:b74591d5ab33 86 }
be_bryan 0:b74591d5ab33 87
be_bryan 0:b74591d5ab33 88 // Heap test object simple test
be_bryan 0:b74591d5ab33 89 Test *m = new Test("Heap");
be_bryan 0:b74591d5ab33 90 m->hello();
be_bryan 0:b74591d5ab33 91
be_bryan 0:b74591d5ab33 92 if (m->check_init() == false)
be_bryan 0:b74591d5ab33 93 {
be_bryan 0:b74591d5ab33 94 result = false;
be_bryan 0:b74591d5ab33 95 }
be_bryan 0:b74591d5ab33 96 delete m;
be_bryan 0:b74591d5ab33 97 break;
be_bryan 0:b74591d5ab33 98 }
be_bryan 0:b74591d5ab33 99
be_bryan 0:b74591d5ab33 100 GREENTEA_TESTSUITE_RESULT(result);
be_bryan 0:b74591d5ab33 101 }