Code for our FYDP -only one IMU works right now -RTOS is working

Dependencies:   mbed

Committer:
majik
Date:
Wed Mar 18 22:23:48 2015 +0000
Revision:
0:964eb6a2ef00
This is our FYDP code, but only one IMU works with the RTOS.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
majik 0:964eb6a2ef00 1 /*----------------------------------------------------------------------------
majik 0:964eb6a2ef00 2 * RL-ARM - RTX
majik 0:964eb6a2ef00 3 *----------------------------------------------------------------------------
majik 0:964eb6a2ef00 4 * Name: RT_TYPEDEF.H
majik 0:964eb6a2ef00 5 * Purpose: Type Definitions
majik 0:964eb6a2ef00 6 * Rev.: V4.60
majik 0:964eb6a2ef00 7 *----------------------------------------------------------------------------
majik 0:964eb6a2ef00 8 *
majik 0:964eb6a2ef00 9 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
majik 0:964eb6a2ef00 10 * All rights reserved.
majik 0:964eb6a2ef00 11 * Redistribution and use in source and binary forms, with or without
majik 0:964eb6a2ef00 12 * modification, are permitted provided that the following conditions are met:
majik 0:964eb6a2ef00 13 * - Redistributions of source code must retain the above copyright
majik 0:964eb6a2ef00 14 * notice, this list of conditions and the following disclaimer.
majik 0:964eb6a2ef00 15 * - Redistributions in binary form must reproduce the above copyright
majik 0:964eb6a2ef00 16 * notice, this list of conditions and the following disclaimer in the
majik 0:964eb6a2ef00 17 * documentation and/or other materials provided with the distribution.
majik 0:964eb6a2ef00 18 * - Neither the name of ARM nor the names of its contributors may be used
majik 0:964eb6a2ef00 19 * to endorse or promote products derived from this software without
majik 0:964eb6a2ef00 20 * specific prior written permission.
majik 0:964eb6a2ef00 21 *
majik 0:964eb6a2ef00 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
majik 0:964eb6a2ef00 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
majik 0:964eb6a2ef00 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
majik 0:964eb6a2ef00 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
majik 0:964eb6a2ef00 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
majik 0:964eb6a2ef00 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
majik 0:964eb6a2ef00 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
majik 0:964eb6a2ef00 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
majik 0:964eb6a2ef00 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
majik 0:964eb6a2ef00 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
majik 0:964eb6a2ef00 32 * POSSIBILITY OF SUCH DAMAGE.
majik 0:964eb6a2ef00 33 *---------------------------------------------------------------------------*/
majik 0:964eb6a2ef00 34 #ifndef RT_TYPE_DEF_H
majik 0:964eb6a2ef00 35 #define RT_TYPE_DEF_H
majik 0:964eb6a2ef00 36
majik 0:964eb6a2ef00 37 #include "os_tcb.h"
majik 0:964eb6a2ef00 38
majik 0:964eb6a2ef00 39 typedef U32 OS_TID;
majik 0:964eb6a2ef00 40 typedef void *OS_ID;
majik 0:964eb6a2ef00 41 typedef U32 OS_RESULT;
majik 0:964eb6a2ef00 42
majik 0:964eb6a2ef00 43 #define TCB_STACKF 32 /* 'stack_frame' offset */
majik 0:964eb6a2ef00 44 #define TCB_TSTACK 36 /* 'tsk_stack' offset */
majik 0:964eb6a2ef00 45
majik 0:964eb6a2ef00 46 typedef struct OS_PSFE { /* Post Service Fifo Entry */
majik 0:964eb6a2ef00 47 void *id; /* Object Identification */
majik 0:964eb6a2ef00 48 U32 arg; /* Object Argument */
majik 0:964eb6a2ef00 49 } *P_PSFE;
majik 0:964eb6a2ef00 50
majik 0:964eb6a2ef00 51 typedef struct OS_PSQ { /* Post Service Queue */
majik 0:964eb6a2ef00 52 U8 first; /* FIFO Head Index */
majik 0:964eb6a2ef00 53 U8 last; /* FIFO Tail Index */
majik 0:964eb6a2ef00 54 U8 count; /* Number of stored items in FIFO */
majik 0:964eb6a2ef00 55 U8 size; /* FIFO Size */
majik 0:964eb6a2ef00 56 struct OS_PSFE q[1]; /* FIFO Content */
majik 0:964eb6a2ef00 57 } *P_PSQ;
majik 0:964eb6a2ef00 58
majik 0:964eb6a2ef00 59 typedef struct OS_TSK {
majik 0:964eb6a2ef00 60 P_TCB run; /* Current running task */
majik 0:964eb6a2ef00 61 P_TCB new_tsk; /* Scheduled task to run */
majik 0:964eb6a2ef00 62 } *P_TSK;
majik 0:964eb6a2ef00 63
majik 0:964eb6a2ef00 64 typedef struct OS_ROBIN { /* Round Robin Control */
majik 0:964eb6a2ef00 65 P_TCB task; /* Round Robin task */
majik 0:964eb6a2ef00 66 U16 time; /* Round Robin switch time */
majik 0:964eb6a2ef00 67 U16 tout; /* Round Robin timeout */
majik 0:964eb6a2ef00 68 } *P_ROBIN;
majik 0:964eb6a2ef00 69
majik 0:964eb6a2ef00 70 typedef struct OS_XCB {
majik 0:964eb6a2ef00 71 U8 cb_type; /* Control Block Type */
majik 0:964eb6a2ef00 72 struct OS_TCB *p_lnk; /* Link pointer for ready/sem. wait list */
majik 0:964eb6a2ef00 73 struct OS_TCB *p_rlnk; /* Link pointer for sem./mbx lst backwards */
majik 0:964eb6a2ef00 74 struct OS_TCB *p_dlnk; /* Link pointer for delay list */
majik 0:964eb6a2ef00 75 struct OS_TCB *p_blnk; /* Link pointer for delay list backwards */
majik 0:964eb6a2ef00 76 U16 delta_time; /* Time until time out */
majik 0:964eb6a2ef00 77 } *P_XCB;
majik 0:964eb6a2ef00 78
majik 0:964eb6a2ef00 79 typedef struct OS_MCB {
majik 0:964eb6a2ef00 80 U8 cb_type; /* Control Block Type */
majik 0:964eb6a2ef00 81 U8 state; /* State flag variable */
majik 0:964eb6a2ef00 82 U8 isr_st; /* State flag variable for isr functions */
majik 0:964eb6a2ef00 83 struct OS_TCB *p_lnk; /* Chain of tasks waiting for message */
majik 0:964eb6a2ef00 84 U16 first; /* Index of the message list begin */
majik 0:964eb6a2ef00 85 U16 last; /* Index of the message list end */
majik 0:964eb6a2ef00 86 U16 count; /* Actual number of stored messages */
majik 0:964eb6a2ef00 87 U16 size; /* Maximum number of stored messages */
majik 0:964eb6a2ef00 88 void *msg[1]; /* FIFO for Message pointers 1st element */
majik 0:964eb6a2ef00 89 } *P_MCB;
majik 0:964eb6a2ef00 90
majik 0:964eb6a2ef00 91 typedef struct OS_SCB {
majik 0:964eb6a2ef00 92 U8 cb_type; /* Control Block Type */
majik 0:964eb6a2ef00 93 U8 mask; /* Semaphore token mask */
majik 0:964eb6a2ef00 94 U16 tokens; /* Semaphore tokens */
majik 0:964eb6a2ef00 95 struct OS_TCB *p_lnk; /* Chain of tasks waiting for tokens */
majik 0:964eb6a2ef00 96 } *P_SCB;
majik 0:964eb6a2ef00 97
majik 0:964eb6a2ef00 98 typedef struct OS_MUCB {
majik 0:964eb6a2ef00 99 U8 cb_type; /* Control Block Type */
majik 0:964eb6a2ef00 100 U8 prio; /* Owner task default priority */
majik 0:964eb6a2ef00 101 U16 level; /* Call nesting level */
majik 0:964eb6a2ef00 102 struct OS_TCB *p_lnk; /* Chain of tasks waiting for mutex */
majik 0:964eb6a2ef00 103 struct OS_TCB *owner; /* Mutex owner task */
majik 0:964eb6a2ef00 104 } *P_MUCB;
majik 0:964eb6a2ef00 105
majik 0:964eb6a2ef00 106 typedef struct OS_XTMR {
majik 0:964eb6a2ef00 107 struct OS_TMR *next;
majik 0:964eb6a2ef00 108 U16 tcnt;
majik 0:964eb6a2ef00 109 } *P_XTMR;
majik 0:964eb6a2ef00 110
majik 0:964eb6a2ef00 111 typedef struct OS_TMR {
majik 0:964eb6a2ef00 112 struct OS_TMR *next; /* Link pointer to Next timer */
majik 0:964eb6a2ef00 113 U16 tcnt; /* Timer delay count */
majik 0:964eb6a2ef00 114 U16 info; /* User defined call info */
majik 0:964eb6a2ef00 115 } *P_TMR;
majik 0:964eb6a2ef00 116
majik 0:964eb6a2ef00 117 typedef struct OS_BM {
majik 0:964eb6a2ef00 118 void *free; /* Pointer to first free memory block */
majik 0:964eb6a2ef00 119 void *end; /* Pointer to memory block end */
majik 0:964eb6a2ef00 120 U32 blk_size; /* Memory block size */
majik 0:964eb6a2ef00 121 } *P_BM;
majik 0:964eb6a2ef00 122
majik 0:964eb6a2ef00 123 /* Definitions */
majik 0:964eb6a2ef00 124 #define __TRUE 1
majik 0:964eb6a2ef00 125 #define __FALSE 0
majik 0:964eb6a2ef00 126 #define NULL ((void *) 0)
majik 0:964eb6a2ef00 127
majik 0:964eb6a2ef00 128 #endif