Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

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?

UserRevisionLine numberNew 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;