for frequency correction testing

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers OBSRS.h Source File

OBSRS.h

00001 // problem in check pa and valid sid not sending anything in one for loop
00002 
00003 
00004 
00005 // no error            case 2 ackl234new->TM_string[2] = (101_0000) = 0x_0;     spare = 0  10100000 =  0xA0
00006 // Hardware failure    Case 4 ackl234new->TM_string[2] = (100_0101) = 0x_5;     spare = 0  10000101 =  0x85 comes from cdms ask pradeep
00007 // Invalid FSC         Case 4 ackl234new->TM_string[2] = (100_0110) = 0x_6;     spare = 0  10000110 =  0x86 Invalid FSC
00008 // Illegal TC          Case 3 ackl234new->TM_string[2] = (000_0010) = 0x_2;     spare = 0  00000010 =  0x02 invalid SID
00009 
00010 #define TMID_ACK_L234 0xB
00011 #define T_frames_in_segment 40
00012 
00013 using namespace std;
00014 Base_tc *current_obsrs_tc = NULL;   
00015 Base_tm *callsign = NULL;
00016 bool send_EoS_and_stop = false;
00017 bool adf_limit = false;
00018 bool stop = false;
00019 bool PA_HOT=0;
00020 bool short_TC;
00021 bool valid_SID = true;
00022 bool enable_call_sign = true;
00023 bool enable_new_segment=true;
00024 bool enable_S_frame = true;
00025 bool enable_read_block = false;
00026 bool enable_T_frame = false;
00027 bool enable_Ack_andcallsign = false;
00028 bool enable_ackandcallsign = false;
00029 bool new_session =true;
00030 bool enable_EoS=false;
00031 bool create_Ack_andcallsign = true;
00032 bool Ack_andcallsign_over = false;
00033 bool repeat_last_2T_frames = false;
00034 bool last_block = false;
00035 bool last_buffer = false;
00036 bool new_OBSRS_TC = true;
00037 bool enable_SCH = true;
00038 bool enable_FCCH = false;
00039 bool enable_DS = false;
00040 bool half_buffer = 0;
00041 bool TM_sent = false;
00042 //bool session_over = gFLAGS & COM_SESSION_TIMEOUT_FLAG;
00043 
00044 uint8_t SID ;
00045 unsigned char buffer_112[112];
00046 uint32_t FSC;
00047 uint16_t read_success = false;
00048 uint16_t counter_buffer_112=0, counter_EoS=0,T_frames_sent=0;
00049 uint16_t counter_interleavedata=0;
00050 uint16_t counter_buffer_512=0;
00051 uint16_t max_segments  =  65415/(48+T_frames_in_segment*159);
00052 uint16_t ack_code = 0xA0;
00053 uint8_t segments_sent = 0;
00054 uint8_t counter_SCH40 = 0;
00055 uint8_t counter_FCCH80 = 0;
00056 uint8_t counter_S_frame = 0;
00057 uint8_t T_frame_Ack_andcallsign_sent = 0; 
00058 uint8_t T_frame_in_Ackandcallsign ;                        // needs to get from sukhdeep depends on size of Ack_L1
00059 uint32_t block_counter = 0;
00060 uint8_t no_of_frames =0;                             
00061 
00062 //#define max_segments = 65415/(48+T_frames_in_segment*159)
00063 // data 288 byte with convolution without xoring 0x38,0x90,0x7B,0x40,0x01,0x56,0x45,0xE0,0x3C,0xA0,0x7A,0x90,0x3D,0xE6,0x3E,0x70,0x21,0x42,0x43,0x3C,0x0C,0x20,0x00,0x4C,0x83,0x12,0x67,0xF0,0x8F,0x36,0x60,0x3C,0x86,0x24,0x06,0x80,0x20,0x54,0x22,0x9C,0x07,0x2A,0x00,0x8C,0x0F,0x7A,0x25,0x50,0x88,0x50,0x5F,0x8C,0xAB,0x0A,0x7A,0xCC,0x10,0xC4,0x25,0x10,0xB3,0xCE,0x5F,0x40,0xA1,0x8A,0x05,0xD0,0x90,0x14,0x7E,0x00,0x09,0xCA,0x7F,0xA0,0x1B,0xDE,0x00,0x70,0x12,0x14,0x7D,0x50,0x2A,0xC0,0x7D,0x20,0x14,0x30,0x04,0x4C,0x3C,0xF0,0x02,0xEC,0x28,0x60,0x45,0xA0,0x04,0x04,0x47,0x1C,0x22,0x70,0x02,0xE0,0x26,0xF4,0x41,0xFC,0x04,0x84,0x04,0x9C,0x0A,0xB0,0x41,0x40,0x25,0x0C,0xBF,0x9C,0x2F,0x3C,0xF8,0x5C,0x0A,0x18,0x4A,0xC0,0x21,0x00,0xB2,0x80,0x58,0x9C,0x8A,0x00,0x79,0xBC,0x7D,0x00,0x10,0x28,0x3E,0x3C,0x46,0x94,0x7D,0xB8,0x21,0x20,0x42,0x04,0x77,0xB4,0xB7,0x84,0x53,0x94,0x03,0xA0,0x20,0x08,0xF4,0x00,0x47,0x34,0xF7,0x60,0x63,0x3C,0x01,0xC0,0x24,0x08,0xF3,0xA0,0x11,0xA0,0xF3,0x60,0x68,0x48,0x08,0xB8,0x7D,0xE8,0x0D,0xF8,0x14,0xE0,0x83,0xC0,0x48,0x00,0x8E,0xB8,0x91,0xC8,0x05,0x40,0xD8,0xC8,0x8B,0xF8,0xC9,0x00,0x0D,0x38,0x04,0x68,0x86,0x80,0x9A,0x11,0x7B,0xB8,0x9F,0x79,0xF8,0x38,0x05,0x38,0x99,0x80,0xD2,0x01,0x69,0x80,0x24,0x71,0x14,0x80,0xF6,0x30,0xFE,0x80,0x72,0x41,0xE9,0x00,0x01,0x19,0x17,0x80,0xE6,0x81,0xEA,0x40,0x67,0xD8,0xFD,0xC0,0x81,0x48,0x1E,0xF0,0x34,0x81,0x13,0x30,0x09,0x19,0x8D,0xC8,0xBD,0x88,0x84,0xF8,0x9C,0x90,0x1C,0x00,0x00,0x41,0x8C,0x78,0x39,0xA9,0x12,0x30,0x19,0xF8,0x87,0x48
00064 // actual data 0x18,0x00,0x00,0x00,0x1C,0x44,0x10,0x04,0x01,0xE0,0x44,0x10,0x04,0x01,0xE0,0x44,0x10,0x04,0x01,0xE0,0x44,0x10,0x04,0x01,0xE0,0x44,0x10,0x04,0x01,0xE0,0x44,0x10,0x40,0x00,0x00,0x00,0x00,0x01,0x40,0x82,0x41,0x20,0x10,0x08,0x04,0x02,0x01,0xE4,0x3A,0x28,0x22,0x3A,0x28,0x22,0x3A,0x28,0x22,0x41,0x10,0x04,0x01,0xE4,0x40,0x20,0x10,0x08,0x04,0x01,0xE4,0x41,0x10,0x04,0x01,0xE4,0x41,0x10,0x04,0x01,0xE4,0x41,0x10,0x04,0x01,0xE4,0x41,0x10,0x04,0x01,0xE4,0x41,0x10,0x04,0x01,0xE4,0x41,0x10,0x40,0x00,0x00,0x00,0x00,0x01,0x48,0x82,0x41,0x20,0x10,0x08,0x04,0x02,0x01,0xE8,0x04,0x28,0x22,0x04,0x28,0x22,0x04,0x28,0x22,0x42,0x10,0x04,0x01,0xE8,0x40,0x20,0x10,0x08,0x04,0x01,0x00,0x00,
00065 //const unsigned char S_frame[] = {0x46,0x9D,0xFB,0xF0,0xD2,0xBA,0x89,0xE4,0x46,0x9D,0xFB,0xF0,0xD2,0xBA,0x89,0xE4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00066 //const unsigned char EoS[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x1A,0x77,0xEF,0xC3,0x4A,0xEA,0x27,0x91,0x1A,0x77,0xEF,0xC3,0x4A,0xEA,0x27,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x1A,0x77,0xEF,0xC3,0x4A,0xEA,0x27,0x91,0x1A,0x77,0xEF,0xC3,0x4A,0xEA,0x27,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00067 //unsigned char call_sign_buffer[318]={0x0A,0x3F,0x46,0xB4,0x00,0x38,0x90,0x7B,0x40,0x01,0x56,0x45,0xE0,0x3C,0xA0,0x7A,0x90,0x3D,0xE6,0x3E,0x70,0x21,0x42,0x43,0x3C,0x0C,0x20,0x00,0x4C,0x83,0x12,0x67,0xF0,0x8F,0x36,0x60,0x3C,0x86,0x24,0x06,0x80,0x20,0x54,0x22,0x9C,0x07,0x2A,0x00,0x8C,0x0F,0x7A,0x25,0x50,0x88,0x50,0x5F,0x8C,0xAB,0x0A,0x7A,0xCC,0x10,0xC4,0x25,0x10,0xB3,0xCE,0x5F,0x40,0xA1,0x8A,0x05,0xD0,0x90,0x14,0x7E,0x00,0x09,0xCA,0x7F,0xA0,0x1B,0xDE,0x00,0x70,0x12,0x14,0x7D,0x50,0x2A,0xC0,0x7D,0x20,0x14,0x30,0x04,0x4C,0x3C,0xF0,0x02,0xEC,0x28,0x60,0x45,0xA0,0x04,0x04,0x47,0x1C,0x22,0x70,0x02,0xE0,0x26,0xF4,0x41,0xFC,0x04,0x84,0x04,0x9C,0x0A,0xB0,0x41,0x40,0x25,0x0C,0xBF,0x9C,0x2F,0x3C,0xF8,0x5C,0x0A,0x18,0x4A,0xC0,0x21,0x00,0xB2,0x80,0x58,0x9C,0x8A,0x00,0x79,0xBC,0x7D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x3F,0x46,0xB4,0x00,0x10,0x28,0x3E,0x3C,0x46,0x94,0x7D,0xB8,0x21,0x20,0x42,0x04,0x77,0xB4,0xB7,0x84,0x53,0x94,0x03,0xA0,0x20,0x08,0xF4,0x00,0x47,0x34,0xF7,0x60,0x63,0x3C,0x01,0xC0,0x24,0x08,0xF3,0xA0,0x11,0xA0,0xF3,0x60,0x68,0x48,0x08,0xB8,0x7D,0xE8,0x0D,0xF8,0x14,0xE0,0x83,0xC0,0x48,0x00,0x8E,0xB8,0x91,0xC8,0x05,0x40,0xD8,0xC8,0x8B,0xF8,0xC9,0x00,0x0D,0x38,0x04,0x68,0x86,0x80,0x9A,0x11,0x7B,0xB8,0x9F,0x79,0xF8,0x38,0x05,0x38,0x99,0x80,0xD2,0x01,0x69,0x80,0x24,0x71,0x14,0x80,0xF6,0x30,0xFE,0x80,0x72,0x41,0xE9,0x00,0x01,0x19,0x17,0x80,0xE6,0x81,0xEA,0x40,0x67,0xD8,0xFD,0xC0,0x81,0x48,0x1E,0xF0,0x34,0x81,0x13,0x30,0x09,0x19,0x8D,0xC8,0xBD,0x88,0x84,0xF8,0x9C,0x90,0x1C,0x00,0x00,0x41,0x8C,0x78,0x39,0xA9,0x12,0x30,0x19,0xF8,0x87,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00068     //0x00,0x0A,0x3F,0x46,0xB4,0x00,0x38,0x90,0x7B,0x40,0x01,0x56,0x45,0xE0,0x3C,0xA0,0x7A,0x90,0x3D,0xE6,0x3E,0x70,0x21,0x42,0x43,0x3C,0x0C,0x20,0x00,0x4C,0x83,0x12,0x67,0xF0,0x8F,0x36,0x60,0x3C,0x86,0x24,0x06,0x80,0x20,0x54,0x22,0x9C,0x07,0x2A,0x00,0x8C,0x0F,0x7A,0x25,0x50,0x88,0x50,0x5F,0x8C,0xAB,0x0A,0x7A,0xCC,0x10,0xC4,0x25,0x10,0xB3,0xCE,0x5F,0x40,0xA1,0x8A,0x05,0xD0,0x90,0x14,0x7E,0x00,0x09,0xCA,0x7F,0xA0,0x1B,0xDE,0x00,0x70,0x12,0x14,0x7D,0x50,0x2A,0xC0,0x7D,0x20,0x14,0x30,0x04,0x4C,0x3C,0xF0,0x02,0xEC,0x28,0x60,0x45,0xA0,0x04,0x04,0x47,0x1C,0x22,0x70,0x02,0xE0,0x26,0xF4,0x41,0xFC,0x04,0x84,0x04,0x9C,0x0A,0xB0,0x41,0x40,0x25,0x0C,0xBF,0x9C,0x2F,0x3C,0xF8,0x5C,0x0A,0x18,0x4A,0xC0,0x21,0x00,0xB2,0x80,0x58,0x9C,0x8A,0x00,0x79,0xBC,0x7D,0x00,0x10,0x28,0x3E,0x3C,0x46,0x94,0x7D,0xB8,0x21,0x20,0x42,0x04,0x77,0xB4,0xB7,0x84,0x53,0x94,0x03,0xA0,0x20,0x08,0xF4,0x00,0x47,0x34,0xF7,0x60,0x63,0x3C,0x01,0xC0,0x24,0x08,0xF3,0xA0,0x11,0xA0,0xF3,0x60,0x68,0x48,0x08,0xB8,0x7D,0xE8,0x0D,0xF8,0x14,0xE0,0x83,0xC0,0x48,0x00,0x8E,0xB8,0x91,0xC8,0x05,0x40,0xD8,0xC8,0x8B,0xF8,0xC9,0x00,0x0D,0x38,0x04,0x68,0x86,0x80,0x9A,0x11,0x7B,0xB8,0x9F,0x79,0xF8,0x38,0x05,0x38,0x99,0x80,0xD2,0x01,0x69,0x80,0x24,0x71,0x14,0x80,0xF6,0x30,0xFE,0x80,0x72,0x41,0xE9,0x00,0x01,0x19,0x17,0x80,0xE6,0x81,0xEA,0x40,0x67,0xD8,0xFD,0xC0,0x81,0x48,0x1E,0xF0,0x34,0x81,0x13,0x30,0x09,0x19,0x8D,0xC8,0xBD,0x88,0x84,0xF8,0x9C,0x90,0x1C,0x00,0x00,0x41,0x8C,0x78,0x39,0xA9,0x12,0x30,0x19,0xF8,0x87,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00069 uint8_t buffer_512[512]; 
00070 //unsigned char Ack_andcallsign[318]={0x0A,0x3F,0x46,0xB4,0x00,0x38,0x90,0x7B,0x40,0x01,0x56,0x45,0xE0,0x3C,0xA0,0x7A,0x90,0x3D,0xE6,0x3E,0x70,0x21,0x42,0x43,0x3C,0x0C,0x20,0x00,0x4C,0x83,0x12,0x67,0xF0,0x8F,0x36,0x60,0x3C,0x86,0x24,0x06,0x80,0x20,0x54,0x22,0x9C,0x07,0x2A,0x00,0x8C,0x0F,0x7A,0x25,0x50,0x88,0x50,0x5F,0x8C,0xAB,0x0A,0x7A,0xCC,0x10,0xC4,0x25,0x10,0xB3,0xCE,0x5F,0x40,0xA1,0x8A,0x05,0xD0,0x90,0x14,0x7E,0x00,0x09,0xCA,0x7F,0xA0,0x1B,0xDE,0x00,0x70,0x12,0x14,0x7D,0x50,0x2A,0xC0,0x7D,0x20,0x14,0x30,0x04,0x4C,0x3C,0xF0,0x02,0xEC,0x28,0x60,0x45,0xA0,0x04,0x04,0x47,0x1C,0x22,0x70,0x02,0xE0,0x26,0xF4,0x41,0xFC,0x04,0x84,0x04,0x9C,0x0A,0xB0,0x41,0x40,0x25,0x0C,0xBF,0x9C,0x2F,0x3C,0xF8,0x5C,0x0A,0x18,0x4A,0xC0,0x21,0x00,0xB2,0x80,0x58,0x9C,0x8A,0x00,0x79,0xBC,0x7D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x3F,0x46,0xB4,0x00,0x10,0x28,0x3E,0x3C,0x46,0x94,0x7D,0xB8,0x21,0x20,0x42,0x04,0x77,0xB4,0xB7,0x84,0x53,0x94,0x03,0xA0,0x20,0x08,0xF4,0x00,0x47,0x34,0xF7,0x60,0x63,0x3C,0x01,0xC0,0x24,0x08,0xF3,0xA0,0x11,0xA0,0xF3,0x60,0x68,0x48,0x08,0xB8,0x7D,0xE8,0x0D,0xF8,0x14,0xE0,0x83,0xC0,0x48,0x00,0x8E,0xB8,0x91,0xC8,0x05,0x40,0xD8,0xC8,0x8B,0xF8,0xC9,0x00,0x0D,0x38,0x04,0x68,0x86,0x80,0x9A,0x11,0x7B,0xB8,0x9F,0x79,0xF8,0x38,0x05,0x38,0x99,0x80,0xD2,0x01,0x69,0x80,0x24,0x71,0x14,0x80,0xF6,0x30,0xFE,0x80,0x72,0x41,0xE9,0x00,0x01,0x19,0x17,0x80,0xE6,0x81,0xEA,0x40,0x67,0xD8,0xFD,0xC0,0x81,0x48,0x1E,0xF0,0x34,0x81,0x13,0x30,0x09,0x19,0x8D,0xC8,0xBD,0x88,0x84,0xF8,0x9C,0x90,0x1C,0x00,0x00,0x41,0x8C,0x78,0x39,0xA9,0x12,0x30,0x19,0xF8,0x87,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00071 uint32_t list_of_FSC[43]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43};
00072 uint8_t write_buffer[512] = {0x38,0x90,0x7B,0x40,0x01,0x56,0x45,0xE0,0x3C,0xA0,0x7A,0x90,0x3D,0xE6,0x3E,0x70,0x21,0x42,0x43,0x3C,0x0C,0x20,0x00,0x4C,0x83,0x12,0x67,0xF0,0x8F,0x36,0x60,0x3C,0x86,0x24,0x06,0x80,0x20,0x54,0x22,0x9C,0x07,0x2A,0x00,0x8C,0x0F,0x7A,0x25,0x50,0x88,0x50,0x5F,0x8C,0xAB,0x0A,0x7A,0xCC,0x10,0xC4,0x25,0x10,0xB3,0xCE,0x5F,0x40,0xA1,0x8A,0x05,0xD0,0x90,0x14,0x7E,0x00,0x09,0xCA,0x7F,0xA0,0x1B,0xDE,0x00,0x70,0x12,0x14,0x7D,0x50,0x2A,0xC0,0x7D,0x20,0x14,0x30,0x04,0x4C,0x3C,0xF0,0x02,0xEC,0x28,0x60,0x45,0xA0,0x04,0x04,0x47,0x1C,0x22,0x70,0x02,0xE0,0x26,0xF4,0x41,0xFC,0x04,0x84,0x04,0x9C,0x0A,0xB0,0x41,0x40,0x25,0x0C,0xBF,0x9C,0x2F,0x3C,0xF8,0x5C,0x0A,0x18,0x4A,0xC0,0x21,0x00,0xB2,0x80,0x58,0x9C,0x8A,0x00,0x79,0xBC,0x7D,0x00,0x10,0x28,0x3E,0x3C,0x46,0x94,0x7D,0xB8,0x21,0x20,0x42,0x04,0x77,0xB4,0xB7,0x84,0x53,0x94,0x03,0xA0,0x20,0x08,0xF4,0x00,0x47,0x34,0xF7,0x60,0x63,0x3C,0x01,0xC0,0x24,0x08,0xF3,0xA0,0x11,0xA0,0xF3,0x60,0x68,0x48,0x08,0xB8,0x7D,0xE8,0x0D,0xF8,0x14,0xE0,0x83,0xC0,0x48,0x00,0x8E,0xB8,0x91,0xC8,0x05,0x40,0xD8,0xC8,0x8B,0xF8,0xC9,0x00,0x0D,0x38,0x04,0x68,0x86,0x80,0x9A,0x11,0x7B,0xB8,0x9F,0x79,0xF8,0x38,0x05,0x38,0x99,0x80,0xD2,0x01,0x69,0x80,0x24,0x71,0x14,0x80,0xF6,0x30,0xFE,0x80,0x72,0x41,0xE9,0x00,0x01,0x19,0x17,0x80,0xE6,0x81,0xEA,0x40,0x67,0xD8,0xFD,0xC0,0x81,0x48,0x1E,0xF0,0x34,0x81,0x13,0x30,0x09,0x19,0x8D,0xC8,0xBD,0x88,0x84,0xF8,0x9C,0x90,0x1C,0x00,0x00,0x41,0x8C,0x78,0x39,0xA9,0x12,0x30,0x19,0xF8,0x87,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00073 //const unsigned char EXOR_SEQ[] = {0x55,0xF1,0x51,0x3D,0xA7,0x42,0xAE,0x2E,0x2E,0x28,0x76,0x80,0x62,0x41,0xC4,0x75,0x4D,0x87,0xDB,0xE1,0x02,0x61,0x60,0x96,0x9C,0xCB,0x8A,0xBD,0x37,0xE4,0x72,0x5D,0xF2,0x19,0x62,0x06,0x9A,0xF9,0x38,0xB0,0x49,0x75,0xD0,0x17,0x1B,0xCC,0x0B,0xEB,0x1B,0x50,0xA2,0x2A,0x8E,0xFA,0x4D,0x6F,0x1B,0xF8,0x0F,0x97,0x39,0x25,0x60,0x55,0x9A,0xDF,0x1D,0x10,0x7F,0xBD,0x3E,0xBF,0xE5,0x68,0x02,0xD1,0x99,0x0D,0xDF,0x84,0x2E,0x15,0xE3,0x08,0xD7,0x44,0x10,0x41,0xCE,0x93,0xF6,0x59,0x71,0xD2,0xF7,0x1C,0x4A,0x44,0x2D,0xA9,0x44,0x98,0x3A,0x00,0x71,0xCC,0x2A,0x35,0xC1,0x81,0xCF,0x44,0xF7,0x6A,0x0E,0xE4,0xF2,0xFC,0xD6,0x0B,0xA8,0x95,0x7B,0x86,0xB5,0xF8,0x33,0xE9,0xBF,0x6A,0x0E,0xE6,0x53,0x82};
00074 //const unsigned char FCCH80[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
00075 //const unsigned char SCH40[] = {0x0a,0x3f,0x46,0xb4,0x00};
00076 
00077 
00078 #define get_ack_l234( tm_ptr ) {\
00079     Base_tm *ackl234new = new Short_tm;\
00080     ackl234new->next_TM = NULL;\
00081     tm_ptr = ackl234new;\
00082     /*return telemetry pointer here*/\
00083     ackl234new->TM_string[0] = TMID_ACK_L234 << 4;\
00084     ackl234new->TM_string[1] = GETpacket_seq_count(current_obsrs_tc);\
00085     ackl234new->TM_string[2] = ack_code;         /* Ack code ....to be chnaged accordind to situation */\
00086     for(int i = 3; i < 11; ++i){\
00087         ackl234new->TM_string[i] = 0x00;\
00088     }\
00089     uint16_t crc = crc16_gen(ackl234new->TM_string, TM_SHORT_SIZE-2);\
00090     ackl234new->TM_string[11] = (crc & 0xFF00) >> 8;\
00091     ackl234new->TM_string[12] = crc & 0x00FF;\
00092 }
00093 
00094 void restart_adf(){
00095     /*go to phy off and and py on then phy TX again    */
00096     gCS_ADF = 0;
00097     spi.write(0xB1);/*phy_on */
00098     gCS_ADF = 1;
00099     gCS_ADF = 0;
00100     spi.write(0xB0);/*phy_off */
00101     gCS_ADF = 1;
00102     gCS_ADF = 0;
00103     spi.write(0xB1);/*phy_on */
00104     gCS_ADF = 1;
00105     gCS_ADF = 0;
00106     spi.write(0xB5);/*start transmission*/
00107     gCS_ADF = 1;
00108     }
00109     
00110 int diff_prev;
00111 void differential_encode(unsigned char* ptr, int length){
00112         for(int i=0; i<length;i++){
00113             unsigned char s = ptr[i] , t;
00114             t = s ^ (s >> 1);
00115             (diff_prev == 0) ? t=t^0x00 : t=t^0x80 ;
00116             diff_prev = int(s & 0x01);
00117             ptr[i] = t;
00118         }
00119 }
00120 
00121 #define check_PA_temp {\
00122 /* pending temperature check function*/\
00123 /*   return 0 or 1*/\
00124     PA_HOT=0;\
00125 }
00126 
00127 
00128 #define flags_init {\
00129  send_EoS_and_stop = false; \
00130  adf_limit = false;\
00131  stop = false;\
00132  PA_HOT=0;\
00133  short_TC;\
00134  valid_SID = true;\
00135  enable_call_sign = true;\
00136  enable_new_segment=true;\
00137  enable_S_frame = true;\
00138  enable_read_block = false;\
00139  enable_T_frame = false;\
00140  enable_Ack_andcallsign = false;\
00141  enable_ackandcallsign = false;\
00142  new_session =true;\
00143  enable_EoS=false;\
00144  create_Ack_andcallsign = true;\
00145  Ack_andcallsign_over = false;\
00146  repeat_last_2T_frames = false;\
00147  last_block = false;\
00148  last_buffer = false;\
00149  new_OBSRS_TC = true;\
00150  enable_SCH = true;\
00151  enable_FCCH = false;\
00152  enable_DS = false;\
00153  half_buffer = 0;\
00154  read_success = false;\
00155  counter_buffer_112=0;\
00156  counter_EoS=0;\
00157  T_frames_sent=0;\
00158  counter_interleavedata=0;\
00159  counter_buffer_512=0;\
00160  ack_code = 0xA0;\
00161  segments_sent = 0;\
00162  counter_SCH40 = 0;\
00163  counter_FCCH80 = 0;\
00164  counter_S_frame = 0;\
00165  T_frame_Ack_andcallsign_sent = 0;\
00166  T_frame_in_Ackandcallsign ;\
00167  block_counter = 0;\
00168  no_of_frames =0;\
00169 }
00170 
00171 #define send_Ack_andcallsign {\
00172     if(T_frames_sent < T_frames_in_segment){\
00173         if (enable_SCH)\
00174         {\
00175             buffer_112[counter_buffer_112] = SCH40[counter_SCH40++];\
00176             if (counter_SCH40 == 5)\
00177             {   \
00178                 counter_SCH40 = 0;\
00179                 enable_SCH = false;\
00180                 enable_DS = true;\
00181             }\
00182         }\
00183         else if (enable_DS)\
00184         {\
00185             buffer_112[counter_buffer_112] = interleave_data[half_buffer][counter_interleavedata++];\
00186             if (counter_interleavedata == 144)\
00187             {   \
00188                 /*gPC.printf("Ads sent  %d\r\n",half_buffer);*/\
00189                 enable_DS = false;\
00190                 enable_FCCH = true;\
00191                 counter_interleavedata = 0;\
00192             }\
00193         }\
00194         else if (enable_FCCH)\
00195         {\
00196             buffer_112[counter_buffer_112] = FCCH80[counter_FCCH80++];\
00197             if (counter_FCCH80 == 10)\
00198             {\
00199                 /*gPC.printf("Afcch80 sent\r\n");*/\
00200                 enable_FCCH = false;\
00201                 counter_FCCH80 = 0;\
00202                 enable_SCH = true;\
00203                 if(half_buffer == 0){\
00204                     half_buffer = 1;\
00205                 }\
00206                 else{\
00207                     half_buffer =0;\
00208                     TM_sent=true;\
00209                 }\
00210             }\
00211         }\
00212         if(TM_sent){\
00213             TM_sent =false;\
00214             T_frames_sent = T_frames_sent +2;\
00215             if(repeat_last_2T_frames){\
00216                 enable_SCH = true;\
00217                 /*cout<<"T_frames_sent = "<<T_frames_sent<<ENDL;*/\
00218             }\
00219             else{\
00220                 /*gPC.printf("Ackandcallsign sent");*/\
00221                 /*cout<<"T_frames_sent = "<<T_frames_sent<<ENDL;*/\
00222                 T_frame_Ack_andcallsign_sent = T_frame_Ack_andcallsign_sent + 2;\
00223                 if(T_frame_Ack_andcallsign_sent == T_frame_in_Ackandcallsign ){\
00224                     repeat_last_2T_frames = true;\
00225                     for(int i =0; i<144;i++)\
00226                     {interleave_data[0][i] = 0;interleave_data[1][i] = 0; }\
00227                 }\
00228                 else{\
00229                     gPC.printf("error in send ack\r\n");\
00230                 }\
00231             }\
00232             if(T_frames_sent == T_frames_in_segment){\
00233                 if(T_frame_Ack_andcallsign_sent < T_frame_in_Ackandcallsign){\
00234                         gPC.printf("error in tframes sent = in seg");\
00235                 }\
00236                 else{\
00237                     send_EoS_and_stop = true; \
00238                 }\
00239             }\
00240         }\
00241     }\
00242     else if(send_EoS_and_stop){\
00243         buffer_112[counter_buffer_112] = EoS[counter_EoS++];\
00244         if(counter_EoS == 120){\
00245             /*gPC.printf("A eos sent\r\n");*/\
00246             /*cout<<"EoS sent"<<ENDL;*/\
00247             counter_EoS = 0;\
00248             enable_ackandcallsign = false;\
00249             stop =true;\
00250             last_buffer = true;\
00251             send_EoS_and_stop = false;\
00252         }\
00253     }\
00254     else if(adf_limit){\
00255         buffer_112[counter_buffer_112] = EoS[counter_EoS++];\
00256         if(counter_EoS == 120){\
00257             counter_EoS = 0;\
00258             /*gPC.printf("EoS sent");*/\
00259             restart_adf_flag = true;\
00260             enable_new_segment = true;\
00261             /*cout<<"new session"<<ENDL;*/\
00262             /*cout<<"new segment"<<ENDL;*/\
00263             T_frames_sent = 0;\
00264             segments_sent = 0; \
00265             adf_limit = false;\
00266         }\
00267     }\
00268     else{\
00269         gPC.printf("error in send_Ack_andcallsign()");\
00270     }\
00271 }
00272 #define send_S_frame {\
00273         buffer_112[counter_buffer_112] = S_frame[counter_S_frame++];\
00274         if(counter_S_frame == 48){\
00275                enable_new_segment=false;\
00276                counter_S_frame = 0;\
00277                /*gPC.printf("S_frame_sent\r\n");*/\
00278                if(new_OBSRS_TC){\
00279                     enable_call_sign = true;\
00280                     new_OBSRS_TC = false;\                   
00281                     get_call_sign(callsign);\
00282                     snd_tm.head_pointer_sdcard(callsign);\
00283                     int temp = snd_tm.make_shor_tm();\
00284                     delete callsign;\
00285                     /*gPC.printf("new tc\r\n");*/\
00286                }\
00287                else{\
00288                    if(!enable_ackandcallsign){\
00289                    enable_read_block = true;\
00290                    }\
00291                 }\
00292         }\
00293 }
00294 
00295 #define send_call_sign {\
00296         if (enable_SCH)\
00297         {\
00298             buffer_112[counter_buffer_112] = SCH40[counter_SCH40++];\
00299             if (counter_SCH40 == 5)\
00300             {   \
00301                 counter_SCH40 = 0;\
00302                 /*gPC.printf("csch40 sent\r\n");*/\
00303                 enable_SCH = false;\
00304                 enable_DS = true;\
00305             }\
00306         }\
00307         else if (enable_DS)\
00308         {\
00309             buffer_112[counter_buffer_112] = interleave_data[half_buffer][counter_interleavedata++];\
00310             /*gPC.printf("csending ds %d \r\n",counter_interleavedata);*/\
00311             if (counter_interleavedata == 144)\
00312             {   \
00313                 enable_DS = false;\
00314                 enable_FCCH = true;\
00315                 counter_interleavedata = 0;\
00316                 /*counter_interleavedata = 0;not required here*/\
00317                 /*gPC.printf("cds sent sent \r\n");*/\
00318             }\
00319         }\
00320         else if (enable_FCCH)\
00321         {\
00322             buffer_112[counter_buffer_112] = FCCH80[counter_FCCH80++];\
00323             if (counter_FCCH80 == 10)\
00324             {\
00325                 enable_FCCH = false;\
00326                 counter_FCCH80 = 0;\
00327                 /*gPC.printf("cfcch sent\r\n");*/\
00328                 if(half_buffer == 0){\
00329                     enable_SCH = true;\
00330                     half_buffer = 1;\
00331                 }\
00332                 else{\
00333                     half_buffer = 0;\
00334                     TM_sent=true;\
00335                 }\
00336             }\
00337         }\
00338         if(TM_sent){\
00339             TM_sent= false;\
00340             enable_call_sign = false;\   
00341             new_session =false;\
00342             /*cout<<"call_sign_sent"<<" ";*/\
00343             T_frames_sent = T_frames_sent+2;\
00344             check_PA_temp;\
00345             /*cout<<"pa_hot = "<<PA_HOT<<ENDL;*/\
00346             if(PA_HOT){\
00347                 enable_ackandcallsign = true;\
00348                 create_Ack_andcallsign = true;\
00349                 enable_read_block = false;\
00350             }\
00351             else{\
00352                 enable_read_block = true;\
00353                 enable_ackandcallsign = false;\
00354             }\
00355         }\
00356 }
00357 
00358 void send_tm_from_SD_card_fun(){
00359 /*    gPC.printf("\n\rsend tm sd called\r\n");*/
00360     for(counter_buffer_112=0;counter_buffer_112<112;counter_buffer_112++){
00361         if(restart_adf_flag)
00362             buffer_112[counter_buffer_112] = 0;
00363         else if(enable_new_segment){                     // starting new segment
00364             send_S_frame;
00365             T_frames_sent=0;
00366         }
00367         else if(enable_call_sign){                   // sending call sign
00368             send_call_sign ;
00369         }
00370         else if(enable_T_frame){
00371             if(read_success == 0){
00372                 if(T_frames_sent < T_frames_in_segment){
00373                     if (enable_SCH)
00374                     {
00375                         buffer_112[counter_buffer_112] = SCH40[counter_SCH40++];
00376                         if (counter_SCH40 == 5)
00377                         {   
00378 /*                            gPC.printf("tsch40 sent\r\n");*/
00379                             counter_SCH40 = 0;
00380                             enable_SCH = false;
00381                             enable_DS = true;
00382                         }
00383                     }
00384                     else if (enable_DS)
00385                     {
00386                         buffer_112[counter_buffer_112] = buffer_512[counter_buffer_512++];
00387                         if ((counter_buffer_512 == 288) || (counter_buffer_512 == 144))
00388                         {   
00389 /*                            gPC.printf("tds sent\r\n");*/
00390 //                            counter_buffer_512 = 0;
00391                             enable_DS = false;
00392                             enable_FCCH = true;
00393                         }
00394                     }
00395                     else if (enable_FCCH)
00396                     {
00397                         buffer_112[counter_buffer_112] = FCCH80[counter_FCCH80++];
00398                         if (counter_FCCH80 == 10)
00399                         {
00400 /*                            gPC.printf("tfcch80 sent\r\n");*/
00401                             enable_FCCH = false;
00402                             if(counter_buffer_512 == 144){
00403                                 enable_SCH = true;
00404                                 counter_FCCH80 = 0;
00405                             }
00406                             else{
00407                                     
00408                             }
00409                         }
00410                     }
00411                     if((counter_FCCH80 == 10)&&(counter_buffer_512 == 288)){
00412                         counter_FCCH80 = 0;
00413                         counter_buffer_512 = 0;
00414                         T_frames_sent = T_frames_sent+2;
00415 //                        cout<<"T_frames_sent "<<T_frames_sent<<ENDL;
00416                         if(last_block){
00417 //                            cout<<"last block"<<endl<<"\r";
00418 /*                            gPC.printf("last block\r\n");*/
00419                             enable_read_block = false;
00420                             enable_T_frame = false;
00421                             enable_ackandcallsign = true;
00422                             /*putting execution status */
00423                             uint8_t temp2 = TC_STATE_SUCCESSFULLY_EXECUTED;
00424                             PUTexec_status(current_obsrs_tc, temp2);
00425                             create_Ack_andcallsign = true;
00426                             if(T_frames_sent == T_frames_in_segment){
00427                                 if(segments_sent + 1>= max_segments){
00428                                     adf_limit = true;
00429                                     segments_sent = 0;
00430 //                                    gPC.printf("adf limit reached here");
00431                                 }
00432                                 else{
00433                                     enable_new_segment = true;
00434 //                                    cout<<"new segment"<<ENDL;
00435                                 }
00436                             }
00437                             continue;
00438                         }
00439                         else{
00440                             check_PA_temp;
00441 //                            cout<<"pa_hot = "<<PA_HOT<<" ";
00442                             if(PA_HOT){
00443                                 enable_T_frame = false;
00444                                 enable_read_block = false;
00445                                 enable_ackandcallsign = true;
00446                                 create_Ack_andcallsign = true;
00447                              }
00448                              else{
00449                                  enable_read_block = true;
00450                              }
00451                         }
00452                         if(T_frames_sent == T_frames_in_segment){
00453                             enable_read_block = false;
00454                             enable_T_frame = false;
00455                             if((segments_sent + 1) >= max_segments){
00456                                 adf_limit = true;
00457                                 segments_sent++;
00458 //                                gPC.printf("segments_sent = "<<segments_sent<<ENDL;
00459 //                                gPC.printf("in for adf lim reached");
00460                             }
00461                             else{
00462                                 enable_new_segment = true;
00463 //                                gPC.printf("data in next segment");
00464                                 segments_sent++;
00465 //                                cout<<"segments_sent = "<<segments_sent<<ENDL;
00466                             }
00467                             continue;
00468                         }
00469                         else if(T_frames_sent > T_frames_in_segment){
00470                             gPC.printf("error in enable T_frame");
00471                         }
00472                     }
00473                 }
00474                 else if(T_frames_sent > T_frames_in_segment){
00475                     gPC.printf("error in if(read_success)");        
00476                 }
00477             }
00478             else{
00479                 gPC.printf("error in enable T_frame");
00480             }
00481         }
00482         else if(adf_limit){
00483             buffer_112[counter_buffer_112] = EoS[counter_EoS++];
00484             if(counter_EoS == 120){
00485 //                cout<<"EoS sent"<<ENDL;
00486                 restart_adf();
00487                 enable_new_segment = true;
00488                 counter_EoS = 0;
00489 //                cout<<"new session"<<ENDL;
00490 //                cout<<"new segment"<<ENDL;
00491                 T_frames_sent = 0;
00492                 segments_sent = 0; 
00493                 adf_limit = false;
00494             }
00495         }
00496         else if(enable_ackandcallsign){
00497             if(create_Ack_andcallsign){
00498                 /*gPC.printf("cr ack\r\n")*/;
00499                 enable_SCH = true;
00500                
00501                 if( (GETexec_status(current_obsrs_tc) == TC_STATE_EXECUTION_FAILED) && (GETabort_on_nack(current_obsrs_tc) == 1) ){
00502                                 gMASTER_STATE = TCL_STATE_ABORTED;
00503                 }
00504                 else if( GETpacket_seq_count(current_obsrs_tc) == (gTOTAL_VALID_TC-1) ){
00505                     gMASTER_STATE = TCL_STATE_COMPLETED;
00506                 }
00507                 create_Ack_andcallsign = false;
00508                 Base_tm *ack_and_callsign = NULL;
00509                 Base_tm *ack_head = NULL;
00510 //                get_call_sign(ack_and_callsign);
00511                 get_ack_l234(ack_and_callsign);
00512                 ack_head = ack_and_callsign;
00513                 get_ack_l1(ack_and_callsign->next_TM); 
00514                 while(ack_and_callsign->next_TM != NULL){
00515                     ack_and_callsign = ack_and_callsign->next_TM;
00516                 }
00517                 get_call_sign(ack_and_callsign->next_TM);
00518                 snd_tm.head_pointer_sdcard(ack_head);
00519                 T_frame_in_Ackandcallsign = (2*snd_tm.make_shor_tm());
00520 /*                gPC.printf(" T_frame_in_Ackandcallsign = %d\r\n",T_frame_in_Ackandcallsign);*/
00521                 Base_tm *ack_l234 = ack_and_callsign->next_TM;
00522                 
00523                 ack_and_callsign = ack_head->next_TM;
00524                 
00525                 if( GETshort_or_long_tm(ack_l234) == SHORT_TM_CODE ){
00526                     for(int i = 0 ; i < TM_SHORT_SIZE ; ++i){
00527                         gLAST_TM[i] = ack_l234->TM_string[i];
00528                         gLAST_TM_SHORT_OR_LONG = SHORT_TM_CODE;
00529                     }
00530                 }
00531                 else{
00532                     for( int i = 0 ; i < TM_LONG_SIZE ; ++i ){
00533                         gLAST_TM[i] = ack_l234->TM_string[i];
00534                         gLAST_TM_SHORT_OR_LONG = LONG_TM_CODE;
00535                     }
00536                 }
00537                 
00538                 /*gPC.printf("ex cr ack\r\n");*/
00539             }    
00540             send_Ack_andcallsign;
00541             if(last_buffer){
00542                 /*gPC.printf("last buffer"); */
00543  //               delete ack_head;
00544 //                while(ack_and_callsign != NULL){
00545 //                Base_tm *temp = ack_and_callsign->next_TM;
00546 //                delete ack_and_callsign;
00547 //                ack_and_callsign = temp;
00548             }
00549         }
00550         else if(last_buffer){
00551             /*gPC.printf("last buffer2");*/
00552             buffer_112[counter_buffer_112] = 0;
00553 //            delete ack_head;
00554 //            while(ack_and_callsign != NULL){
00555 //            Base_tm *temp = ack_and_callsign->next_TM;
00556 //            delete ack_and_callsign;
00557 //            ack_and_callsign = temp;
00558 //            }
00559         }
00560         else if(enable_EoS){
00561 //            send_EoS();
00562             /*gPC.printf("eos2");*/
00563             buffer_112[counter_buffer_112] = EoS[counter_EoS++];
00564             if(counter_EoS == 120){
00565 //                cout<<"segments_sent = "<<segments_sent<<ENDL;
00566 //                cout<<"EoS sent"<<ENDL;
00567                 counter_EoS = 0;
00568                 enable_EoS=false;
00569                 enable_new_segment = true;
00570                 break;
00571             }    
00572             else{
00573                 gPC.printf("Error in enable EoS");
00574                 }
00575         }
00576         else{
00577             gPC.printf("error in for loop");    
00578         }
00579         if(enable_read_block && (!last_block)){
00580                if(short_TC){
00581                    /*cout<<"reading"<<int(FSC)<<" "<<int(SID)<<ENDL;*/
00582 //                        for(int i=0;i<512;i++){
00583 //                        printf("0x%02X,",write_buffer[i]);
00584 //                        }
00585                    //int write_success = SD_WRITE(write_buffer,FSC + block_counter,SID);
00586 //                   wait_ms(8);
00587                     //gPC.printf("Reached here hey hey\n");
00588                    ack_code = SD_READ(buffer_512, FSC + block_counter,SID);
00589                     //ack_code = 0x02;
00590                }
00591                else{
00592                   // gPC.printf("Reached here hey hey\n");
00593                    ack_code = SD_READ(buffer_512, list_of_FSC[block_counter],SID);
00594                    }
00595                block_counter++;
00596                if(block_counter == no_of_frames){
00597                        last_block=true;
00598                }
00599                enable_read_block = false;
00600                if(ack_code == 0xA0){
00601                   /* gPC.puts("read one block successfully");*/
00602                    enable_T_frame = true;
00603                    enable_SCH = true;
00604                 }
00605                 else if(ack_code == 0x88 || ack_code == 0x89){
00606 
00607                     gPC.printf("Hardware failure");
00608                     enable_T_frame = false;
00609                 }
00610                 else if(ack_code == 0x02){
00611                     gPC.printf("Invalid SID");
00612                     enable_T_frame = false;
00613                 }
00614                 else if(ack_code == 0x86){
00615                     /*gPC.printf("FSC outof bounds");*/
00616                     enable_T_frame = false;
00617                 }
00618                 else{
00619                     gPC.printf("error Invalid ack code");
00620                     enable_T_frame = false;
00621                     stop = true;
00622                 }
00623         }
00624         if((PA_HOT || (gFLAGS & COM_SESSION_TIMEOUT_FLAG) ||(ack_code != 0xA0))&&(!enable_ackandcallsign)&&(!last_buffer)){
00625             /*gPC.printf("last condition");*/
00626             uint8_t temp2 = TC_STATE_EXECUTION_FAILED;
00627             PUTexec_status(current_obsrs_tc, temp2);
00628             enable_ackandcallsign = true;
00629             create_Ack_andcallsign = true;
00630             enable_T_frame = false;
00631         }
00632     }
00633 //    for(int i=0;i<112;i++){
00634 //        printf("0x%02X,",buffer_112[i]);
00635 //    }
00636     differential_encode(buffer_112, 112);
00637     if(last_buffer ==true){
00638     diff_prev=0;
00639     }
00640 }
00641 
00642 void execute_OBSRS_TC(Base_tc *tcp){
00643     current_obsrs_tc = tcp;
00644     flags_init;
00645     sent_tmfrom_SDcard = true;
00646     diff_prev = 0;
00647     if( GETshort_or_long_tc(tcp) == SHORT_TC_CODE ){
00648         short_TC = true;
00649         gPC.printf("it is short TC\r\n");
00650     }
00651     else{
00652         gPC.printf("it is long TC\r\n");
00653         short_TC = false;    
00654     }
00655     /*  reading SID from TC  */
00656     SID = (tcp->TC_string[2]) & 0x0f;
00657     /*  reading FSC and no. of frames from TC  */
00658     if(short_TC){
00659     FSC  = tcp->TC_string[3] << 24;
00660     FSC += tcp->TC_string[4] << 16;
00661     FSC += tcp->TC_string[5] << 8;
00662     FSC += tcp->TC_string[6];
00663     no_of_frames = tcp->TC_string[7] << 8;
00664     no_of_frames += tcp->TC_string[8];
00665     }
00666     else{
00667         no_of_frames = tcp->TC_string[3];
00668         for(int i=0 ;i<no_of_frames ; i++){
00669             list_of_FSC[i] = tcp->TC_string[4+i];
00670             gPC.printf("\n\rlist_of_FSC[%d] = %d ",i,list_of_FSC[i]);
00671         }
00672     }
00673     
00674     gPC.printf("sid = %u \r\n",SID);
00675     gPC.printf("FSC = %u\r\n",FSC);
00676     gPC.printf("no_of_frames = %u\r\n",no_of_frames);
00677 //    gPC.puts("exit_sdcard");
00678     
00679 //    SID = 0x1;
00680 //    FSC = 10;
00681 //    no_of_frames = 2;
00682 //    cout<<"max_segments = "<<max_segments<<ENDL;
00683     //while(0){
00684 //    while(!stop){
00685 //      //  send_call_sign();
00686 //        if(short_TC){
00687 //            send_tm_from_SD_card();
00688 //        }
00689 //        else{
00690 //            send_tm_from_SD_card();
00691 //        }
00692 //    }
00693 }