Dummy program to demonstrate problems: working code
Dependencies: SLCD mbed-rtos mbed
Fork of MNG_TC by
Structures.h@12:f41a11dc0119, 2015-07-18 (annotated)
- Committer:
- shreeshas95
- Date:
- Sat Jul 18 05:26:35 2015 +0000
- Revision:
- 12:f41a11dc0119
- Parent:
- 8:cb93c1d3209a
changing Structures.h, not complete
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shreeshas95 | 12:f41a11dc0119 | 1 | // TELECOMMAND CLASS : |
shreeshas95 | 12:f41a11dc0119 | 2 | |
shreeshas95 | 12:f41a11dc0119 | 3 | #define TC_SHORT_SIZE 11 |
shreeshas95 | 12:f41a11dc0119 | 4 | #define TC_LONG_SIZE 135 |
shreeshas95 | 12:f41a11dc0119 | 5 | |
shreeshas95 | 12:f41a11dc0119 | 6 | //MASKS |
shreeshas95 | 12:f41a11dc0119 | 7 | #define SHORT_LONG_TC_MASK 0x4000 |
shreeshas95 | 12:f41a11dc0119 | 8 | #define CRC_MASK 0x2000 |
shreeshas95 | 12:f41a11dc0119 | 9 | #define ABORT_ON_NACK_MASK 0x1000 |
shreeshas95 | 12:f41a11dc0119 | 10 | #define APID_MASK 0x0C00 |
shreeshas95 | 12:f41a11dc0119 | 11 | #define EXEC_STATUS_MASK 0x0300 |
shreeshas95 | 12:f41a11dc0119 | 12 | #define PACKET_SEQ_COUNT_MASK 0x00FF |
shreeshas95 | 2:994e741028c7 | 13 | |
shreeshas95 | 12:f41a11dc0119 | 14 | //PARENT CLASS |
shreeshas95 | 12:f41a11dc0119 | 15 | class Base_tc { |
shreeshas95 | 12:f41a11dc0119 | 16 | protected: |
shreeshas95 | 12:f41a11dc0119 | 17 | unsigned short int fields; |
shreeshas95 | 12:f41a11dc0119 | 18 | public: |
shreeshas95 | 12:f41a11dc0119 | 19 | unsigned char *TC_string; |
shreeshas95 | 12:f41a11dc0119 | 20 | Base_tc *next_node; |
shreeshas95 | 12:f41a11dc0119 | 21 | |
shreeshas95 | 12:f41a11dc0119 | 22 | // short = 0, long = 1 |
shreeshas95 | 12:f41a11dc0119 | 23 | bool inline GETshort_or_long(){ |
shreeshas95 | 12:f41a11dc0119 | 24 | return (fields & SHORT_LONG_TC_MASK); |
shreeshas95 | 12:f41a11dc0119 | 25 | } |
shreeshas95 | 12:f41a11dc0119 | 26 | void inline PUTshort_or_long(bool input){ |
shreeshas95 | 12:f41a11dc0119 | 27 | if(input){ |
shreeshas95 | 12:f41a11dc0119 | 28 | fields |= SHORT_LONG_TC_MASK; |
shreeshas95 | 12:f41a11dc0119 | 29 | } |
shreeshas95 | 12:f41a11dc0119 | 30 | else{ |
shreeshas95 | 12:f41a11dc0119 | 31 | fields &= ~(SHORT_LONG_TC_MASK); |
shreeshas95 | 12:f41a11dc0119 | 32 | } |
shreeshas95 | 12:f41a11dc0119 | 33 | } |
shreeshas95 | 12:f41a11dc0119 | 34 | |
shreeshas95 | 12:f41a11dc0119 | 35 | bool inline GETcrc_pass(){ |
shreeshas95 | 12:f41a11dc0119 | 36 | return (fields & CRC_MASK); |
shreeshas95 | 12:f41a11dc0119 | 37 | } |
shreeshas95 | 12:f41a11dc0119 | 38 | void inline PUTcrc_pass(bool input){ |
shreeshas95 | 12:f41a11dc0119 | 39 | if(input){ |
shreeshas95 | 12:f41a11dc0119 | 40 | fields |= CRC_MASK; |
shreeshas95 | 12:f41a11dc0119 | 41 | } |
shreeshas95 | 12:f41a11dc0119 | 42 | else{ |
shreeshas95 | 12:f41a11dc0119 | 43 | fields &= ~(CRC_MASK); |
shreeshas95 | 12:f41a11dc0119 | 44 | } |
shreeshas95 | 12:f41a11dc0119 | 45 | } |
shreeshas95 | 12:f41a11dc0119 | 46 | |
shreeshas95 | 12:f41a11dc0119 | 47 | bool inline GETabort_on_nack(){ |
shreeshas95 | 12:f41a11dc0119 | 48 | return (fields & ABORT_ON_NACK_MASK); |
shreeshas95 | 12:f41a11dc0119 | 49 | } |
shreeshas95 | 12:f41a11dc0119 | 50 | void inline PUTabort_on_nack(bool input){ |
shreeshas95 | 12:f41a11dc0119 | 51 | if(input){ |
shreeshas95 | 12:f41a11dc0119 | 52 | fields |= ABORT_ON_NACK_MASK; |
shreeshas95 | 12:f41a11dc0119 | 53 | } |
shreeshas95 | 12:f41a11dc0119 | 54 | else{ |
shreeshas95 | 12:f41a11dc0119 | 55 | fields &= ~(ABORT_ON_NACK_MASK); |
shreeshas95 | 12:f41a11dc0119 | 56 | } |
shreeshas95 | 12:f41a11dc0119 | 57 | } |
shreeshas95 | 12:f41a11dc0119 | 58 | |
shreeshas95 | 12:f41a11dc0119 | 59 | uint8_t inline GETapid(){ |
shreeshas95 | 12:f41a11dc0119 | 60 | uint16_t temp = fields & APID_MASK; |
shreeshas95 | 12:f41a11dc0119 | 61 | temp = temp >> 10; |
shreeshas95 | 12:f41a11dc0119 | 62 | return (temp & 0xFF); |
shreeshas95 | 12:f41a11dc0119 | 63 | } |
shreeshas95 | 12:f41a11dc0119 | 64 | void inline PUTapid(uint8_t input){ |
shreeshas95 | 12:f41a11dc0119 | 65 | uint16_t temp = input; |
shreeshas95 | 12:f41a11dc0119 | 66 | temp = temp << 10; |
shreeshas95 | 12:f41a11dc0119 | 67 | fields &= ~(APID_MASK); |
shreeshas95 | 12:f41a11dc0119 | 68 | fields |= (temp & APID_MASK); |
shreeshas95 | 12:f41a11dc0119 | 69 | } |
shreeshas95 | 12:f41a11dc0119 | 70 | |
shreeshas95 | 12:f41a11dc0119 | 71 | uint8_t inline GETexec_status(){ |
shreeshas95 | 12:f41a11dc0119 | 72 | uint16_t temp = fields & EXEC_STATUS_MASK; |
shreeshas95 | 12:f41a11dc0119 | 73 | temp = temp >> 8; |
shreeshas95 | 12:f41a11dc0119 | 74 | return (temp & 0xFF); |
shreeshas95 | 12:f41a11dc0119 | 75 | } |
shreeshas95 | 12:f41a11dc0119 | 76 | void inline PUTexec_status(uint8_t input){ |
shreeshas95 | 12:f41a11dc0119 | 77 | uint16_t temp = input; |
shreeshas95 | 12:f41a11dc0119 | 78 | temp = temp << 8; |
shreeshas95 | 12:f41a11dc0119 | 79 | fields &= ~(EXEC_STATUS_MASK); |
shreeshas95 | 12:f41a11dc0119 | 80 | fields |= (temp & EXEC_STATUS_MASK); |
shreeshas95 | 12:f41a11dc0119 | 81 | } |
shreeshas95 | 12:f41a11dc0119 | 82 | |
shreeshas95 | 12:f41a11dc0119 | 83 | uint8_t inline GETpacket_seq_count(){ |
shreeshas95 | 12:f41a11dc0119 | 84 | uint16_t temp = fields & PACKET_SEQ_COUNT_MASK; |
shreeshas95 | 12:f41a11dc0119 | 85 | return (temp & 0xFF); |
shreeshas95 | 12:f41a11dc0119 | 86 | } |
shreeshas95 | 12:f41a11dc0119 | 87 | void inline PUTpacket_seq_count(uint8_t input){ |
shreeshas95 | 12:f41a11dc0119 | 88 | uint16_t temp = input; |
shreeshas95 | 12:f41a11dc0119 | 89 | fields &= ~(PACKET_SEQ_COUNT_MASK); |
shreeshas95 | 12:f41a11dc0119 | 90 | fields |= (temp & PACKET_SEQ_COUNT_MASK); |
shreeshas95 | 12:f41a11dc0119 | 91 | } |
shreeshas95 | 12:f41a11dc0119 | 92 | |
shreeshas95 | 12:f41a11dc0119 | 93 | // update everything other than short_or_long, and crc_pass from TC_string |
shreeshas95 | 12:f41a11dc0119 | 94 | void update_fields(){ |
shreeshas95 | 12:f41a11dc0119 | 95 | // abort on nack |
shreeshas95 | 12:f41a11dc0119 | 96 | uint8_t temp = TC_string[1]; |
shreeshas95 | 12:f41a11dc0119 | 97 | uint16_t t16 = 0; |
shreeshas95 | 12:f41a11dc0119 | 98 | if(temp & 0x10){ |
shreeshas95 | 12:f41a11dc0119 | 99 | fields |= ABORT_ON_NACK_MASK; |
shreeshas95 | 12:f41a11dc0119 | 100 | } |
shreeshas95 | 12:f41a11dc0119 | 101 | else{ |
shreeshas95 | 12:f41a11dc0119 | 102 | fields &= ~(ABORT_ON_NACK_MASK); |
shreeshas95 | 12:f41a11dc0119 | 103 | } |
shreeshas95 | 12:f41a11dc0119 | 104 | |
shreeshas95 | 12:f41a11dc0119 | 105 | // apid |
shreeshas95 | 12:f41a11dc0119 | 106 | t16 = temp; |
shreeshas95 | 12:f41a11dc0119 | 107 | t16 = t16 << 4; |
shreeshas95 | 12:f41a11dc0119 | 108 | fields &= ~(APID_MASK); |
shreeshas95 | 12:f41a11dc0119 | 109 | fields |= (t16 & APID_MASK); |
shreeshas95 | 12:f41a11dc0119 | 110 | |
shreeshas95 | 12:f41a11dc0119 | 111 | // exec_status : default value of exec status |
shreeshas95 | 12:f41a11dc0119 | 112 | fields &= ~(EXEC_STATUS_MASK); |
shreeshas95 | 12:f41a11dc0119 | 113 | |
shreeshas95 | 12:f41a11dc0119 | 114 | // packet seq count |
shreeshas95 | 12:f41a11dc0119 | 115 | temp = TC_string[0]; |
shreeshas95 | 12:f41a11dc0119 | 116 | t16 = temp; |
shreeshas95 | 12:f41a11dc0119 | 117 | fields &= ~(PACKET_SEQ_COUNT_MASK); |
shreeshas95 | 12:f41a11dc0119 | 118 | fields |= (t16 & PACKET_SEQ_COUNT_MASK); |
shreeshas95 | 12:f41a11dc0119 | 119 | } |
shreeshas95 | 12:f41a11dc0119 | 120 | |
shreeshas95 | 12:f41a11dc0119 | 121 | virtual ~Base_tc(){} |
shreeshas95 | 12:f41a11dc0119 | 122 | }; |
shreeshas95 | 2:994e741028c7 | 123 | |
shreeshas95 | 12:f41a11dc0119 | 124 | //DERIVED CLASS - SHORT TC |
shreeshas95 | 12:f41a11dc0119 | 125 | class Short_tc : public Base_tc{ |
shreeshas95 | 12:f41a11dc0119 | 126 | private: |
shreeshas95 | 12:f41a11dc0119 | 127 | unsigned char fix_str[TC_SHORT_SIZE]; |
shreeshas95 | 12:f41a11dc0119 | 128 | public: |
shreeshas95 | 12:f41a11dc0119 | 129 | Short_tc(){ |
shreeshas95 | 12:f41a11dc0119 | 130 | TC_string = fix_str; |
shreeshas95 | 12:f41a11dc0119 | 131 | fields = 0; |
shreeshas95 | 12:f41a11dc0119 | 132 | } |
shreeshas95 | 2:994e741028c7 | 133 | |
shreeshas95 | 12:f41a11dc0119 | 134 | ~Short_tc(){} |
shreeshas95 | 12:f41a11dc0119 | 135 | }; |
shreeshas95 | 12:f41a11dc0119 | 136 | |
shreeshas95 | 12:f41a11dc0119 | 137 | //DERIVED CLASS - LONG TC |
shreeshas95 | 12:f41a11dc0119 | 138 | class Long_tc : public Base_tc{ |
shreeshas95 | 12:f41a11dc0119 | 139 | private: |
shreeshas95 | 12:f41a11dc0119 | 140 | unsigned char fix_str[TC_LONG_SIZE]; |
shreeshas95 | 12:f41a11dc0119 | 141 | public: |
shreeshas95 | 12:f41a11dc0119 | 142 | Long_tc(){ |
shreeshas95 | 12:f41a11dc0119 | 143 | TC_string = fix_str; |
shreeshas95 | 12:f41a11dc0119 | 144 | fields = 0; |
shreeshas95 | 12:f41a11dc0119 | 145 | } |
shreeshas95 | 12:f41a11dc0119 | 146 | |
shreeshas95 | 12:f41a11dc0119 | 147 | ~Long_tc(){} |
shreeshas95 | 12:f41a11dc0119 | 148 | }; |
shreeshas95 | 12:f41a11dc0119 | 149 | |
shreeshas95 | 12:f41a11dc0119 | 150 | |
shreeshas95 | 12:f41a11dc0119 | 151 | |
shreeshas95 | 12:f41a11dc0119 | 152 | |
shreeshas95 | 12:f41a11dc0119 | 153 | |
shreeshas95 | 12:f41a11dc0119 | 154 | |
shreeshas95 | 12:f41a11dc0119 | 155 | |
shreeshas95 | 12:f41a11dc0119 | 156 | |
shreeshas95 | 12:f41a11dc0119 | 157 | |
shreeshas95 | 2:994e741028c7 | 158 | |
shreeshas95 | 2:994e741028c7 | 159 | typedef struct TM_list{ |
shreeshas95 | 2:994e741028c7 | 160 | |
shreeshas95 | 2:994e741028c7 | 161 | unsigned char *TM_string; |
shreeshas95 | 2:994e741028c7 | 162 | // bool short_or_long; // true for short |
shreeshas95 | 2:994e741028c7 | 163 | // pass while calling the function |
shreeshas95 | 2:994e741028c7 | 164 | unsigned char tmid; |
shreeshas95 | 2:994e741028c7 | 165 | |
shreeshas95 | 2:994e741028c7 | 166 | struct TM_list *next_TM; |
shreeshas95 | 2:994e741028c7 | 167 | |
shreeshas95 | 2:994e741028c7 | 168 | ~TM_list(){} |
shreeshas95 | 2:994e741028c7 | 169 | }TM_List; |