shubham c / Mbed 2 deprecated SBC_TEST_CDMS_CODE

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                         }
00468                         else if(T_frames_sent > T_frames_in_segment){
00469                             gPC.printf("error in enable T_frame");
00470                         }
00471                     }
00472                 }
00473                 else if(T_frames_sent > T_frames_in_segment){
00474                     gPC.printf("error in if(read_success)");        
00475                 }
00476             }
00477             else{
00478                 gPC.printf("error in enable T_frame");
00479             }
00480         }
00481         else if(adf_limit){
00482             buffer_112[counter_buffer_112] = EoS[counter_EoS++];
00483             if(counter_EoS == 120){
00484 //                cout<<"EoS sent"<<ENDL;
00485                 restart_adf();
00486                 enable_new_segment = true;
00487                 counter_EoS = 0;
00488 //                cout<<"new session"<<ENDL;
00489 //                cout<<"new segment"<<ENDL;
00490                 T_frames_sent = 0;
00491                 segments_sent = 0; 
00492                 adf_limit = false;
00493             }
00494         }
00495         else if(enable_ackandcallsign){
00496             if(create_Ack_andcallsign){
00497                 /*gPC.printf("cr ack\r\n")*/;
00498                 enable_SCH = true;
00499                
00500                 if( (GETexec_status(current_obsrs_tc) == TC_STATE_EXECUTION_FAILED) && (GETabort_on_nack(current_obsrs_tc) == 1) ){
00501                                 gMASTER_STATE = TCL_STATE_ABORTED;
00502                 }
00503                 else if( GETpacket_seq_count(current_obsrs_tc) == (gTOTAL_VALID_TC-1) ){
00504                     gMASTER_STATE = TCL_STATE_COMPLETED;
00505                 }
00506                 create_Ack_andcallsign = false;
00507                 Base_tm *ack_and_callsign = NULL;
00508                 Base_tm *ack_head = NULL;
00509 //                get_call_sign(ack_and_callsign);
00510                 get_ack_l234(ack_and_callsign);
00511                 ack_head = ack_and_callsign;
00512                 get_ack_l1(ack_and_callsign->next_TM); 
00513                 while(ack_and_callsign->next_TM != NULL){
00514                     ack_and_callsign = ack_and_callsign->next_TM;
00515                 }
00516                 get_call_sign(ack_and_callsign->next_TM);
00517                 snd_tm.head_pointer_sdcard(ack_head);
00518                 T_frame_in_Ackandcallsign = (2*snd_tm.make_shor_tm());
00519 /*                gPC.printf(" T_frame_in_Ackandcallsign = %d\r\n",T_frame_in_Ackandcallsign);*/
00520                 Base_tm *ack_l234 = ack_and_callsign->next_TM;
00521                 
00522                 ack_and_callsign = ack_head->next_TM;
00523                 
00524                 if( GETshort_or_long_tm(ack_l234) == SHORT_TM_CODE ){
00525                     for(int i = 0 ; i < TM_SHORT_SIZE ; ++i){
00526                         gLAST_TM[i] = ack_l234->TM_string[i];
00527                         gLAST_TM_SHORT_OR_LONG = SHORT_TM_CODE;
00528                     }
00529                 }
00530                 else{
00531                     for( int i = 0 ; i < TM_LONG_SIZE ; ++i ){
00532                         gLAST_TM[i] = ack_l234->TM_string[i];
00533                         gLAST_TM_SHORT_OR_LONG = LONG_TM_CODE;
00534                     }
00535                 }
00536                 
00537                 /*gPC.printf("ex cr ack\r\n");*/
00538             }    
00539             send_Ack_andcallsign;
00540             if(last_buffer){
00541                 /*gPC.printf("last buffer"); */
00542  //               delete ack_head;
00543 //                while(ack_and_callsign != NULL){
00544 //                Base_tm *temp = ack_and_callsign->next_TM;
00545 //                delete ack_and_callsign;
00546 //                ack_and_callsign = temp;
00547             }
00548         }
00549         else if(last_buffer){
00550             /*gPC.printf("last buffer2");*/
00551             buffer_112[counter_buffer_112] = 0;
00552 //            delete ack_head;
00553 //            while(ack_and_callsign != NULL){
00554 //            Base_tm *temp = ack_and_callsign->next_TM;
00555 //            delete ack_and_callsign;
00556 //            ack_and_callsign = temp;
00557 //            }
00558         }
00559         else if(enable_EoS){
00560 //            send_EoS();
00561             /*gPC.printf("eos2");*/
00562             buffer_112[counter_buffer_112] = EoS[counter_EoS++];
00563             if(counter_EoS == 120){
00564 //                cout<<"segments_sent = "<<segments_sent<<ENDL;
00565 //                cout<<"EoS sent"<<ENDL;
00566                 counter_EoS = 0;
00567                 enable_EoS=false;
00568                 enable_new_segment = true;
00569                 break;
00570             }    
00571             else{
00572                 gPC.printf("Error in enable EoS");
00573                 }
00574         }
00575         else{
00576             gPC.printf("error in for loop");    
00577         }
00578         if(enable_read_block && (!last_block)){
00579                if(short_TC){
00580                    /*cout<<"reading"<<int(FSC)<<" "<<int(SID)<<ENDL;*/
00581 //                        for(int i=0;i<512;i++){
00582 //                        printf("0x%02X,",write_buffer[i]);
00583 //                        }
00584                    //int write_success = SD_WRITE(write_buffer,FSC + block_counter,SID);
00585 //                   wait_ms(8);
00586                    ack_code = SD_READ(buffer_512, FSC + block_counter,SID);
00587                     //ack_code = 0x02;
00588                }
00589                else{
00590                    ack_code = SD_READ(buffer_512, list_of_FSC[block_counter],SID);
00591                    }
00592                block_counter++;
00593                if(block_counter == no_of_frames){
00594                        last_block=true;
00595                }
00596                enable_read_block = false;
00597                if(ack_code == 0xA0){
00598                   /* gPC.puts("read one block successfully");*/
00599                    enable_T_frame = true;
00600                    enable_SCH = true;
00601                 }
00602                 else if(ack_code == 0x88 || ack_code == 0x89){
00603 
00604                     gPC.printf("Hardware failure");
00605                     enable_T_frame = false;
00606                 }
00607                 else if(ack_code == 0x02){
00608                     gPC.printf("Invalid SID");
00609                     enable_T_frame = false;
00610                 }
00611                 else if(ack_code == 0x86){
00612                     /*gPC.printf("FSC outof bounds");*/
00613                     enable_T_frame = false;
00614                 }
00615                 else{
00616                     gPC.printf("error Invalid ack code");
00617                     enable_T_frame = false;
00618                     stop = true;
00619                 }
00620         }
00621         if((PA_HOT || (gFLAGS & COM_SESSION_TIMEOUT_FLAG) ||(ack_code != 0xA0))&&(!enable_ackandcallsign)&&(!last_buffer)){
00622             /*gPC.printf("last condition");*/
00623             uint8_t temp2 = TC_STATE_EXECUTION_FAILED;
00624             PUTexec_status(current_obsrs_tc, temp2);
00625             enable_ackandcallsign = true;
00626             create_Ack_andcallsign = true;
00627             enable_T_frame = false;
00628         }
00629     }
00630 //    for(int i=0;i<112;i++){
00631 //        printf("0x%02X,",buffer_112[i]);
00632 //    }
00633     differential_encode(buffer_112, 112);
00634     if(last_buffer ==true){
00635     diff_prev=0;
00636     }
00637 }
00638 
00639 void execute_OBSRS_TC(Base_tc *tcp){
00640     current_obsrs_tc = tcp;
00641     flags_init;
00642     sent_tmfrom_SDcard = true;
00643     diff_prev = 0;
00644     if( GETshort_or_long_tc(tcp) == SHORT_TC_CODE ){
00645         short_TC = true;
00646         gPC.printf("it is short TC\r\n");
00647     }
00648     else{
00649         gPC.printf("it is long TC\r\n");
00650         short_TC = false;    
00651     }
00652     /*  reading SID from TC  */
00653     SID = (tcp->TC_string[2]) & 0x0f;
00654     /*  reading FSC and no. of frames from TC  */
00655     if(short_TC){
00656     FSC  = tcp->TC_string[3] << 24;
00657     FSC += tcp->TC_string[4] << 16;
00658     FSC += tcp->TC_string[5] << 8;
00659     FSC += tcp->TC_string[6];
00660     no_of_frames = tcp->TC_string[7] << 8;
00661     no_of_frames += tcp->TC_string[8];
00662     }
00663     else{
00664         no_of_frames = tcp->TC_string[3];
00665         for(int i=0 ;i<no_of_frames ; i++){
00666             list_of_FSC[i] = tcp->TC_string[4+i];
00667         }
00668     }
00669     
00670     gPC.printf("sid = %u \r\n",SID);
00671     gPC.printf("FSC = %u\r\n",FSC);
00672 //    gPC.puts("exit_sdcard");
00673     
00674 //    SID = 0x1;
00675 //    FSC = 10;
00676 //    no_of_frames = 2;
00677 //    cout<<"max_segments = "<<max_segments<<ENDL;
00678     //while(0){
00679 //    while(!stop){
00680 //      //  send_call_sign();
00681 //        if(short_TC){
00682 //            send_tm_from_SD_card();
00683 //        }
00684 //        else{
00685 //            send_tm_from_SD_card();
00686 //        }
00687 //    }
00688 }