Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos SimpleDMA FreescaleIAP eeprom
Fork of CDMS_CODE_FM_28JAN2017 by
OBSRS.h
00001 // problem in check pa and valid sid not sending anything in one for loop 00002 00003 #ifndef OBSRS_H // To make sure you don't declare the function more than once by including the header multiple times. 00004 #define OBSRS_H 00005 00006 // no error case 2 ackl234new->TM_string[2] = (101_0000) = 0x_0; spare = 0 10100000 = 0xA0 00007 // Hardware failure Case 4 ackl234new->TM_string[2] = (100_0101) = 0x_5; spare = 0 10000101 = 0x85 comes from cdms ask pradeep 00008 // Invalid FSC Case 4 ackl234new->TM_string[2] = (100_0110) = 0x_6; spare = 0 10000110 = 0x86 Invalid FSC 00009 // Illegal TC Case 3 ackl234new->TM_string[2] = (000_0010) = 0x_2; spare = 0 00000010 = 0x02 invalid SID 00010 00011 #define TMID_ACK_L234 0xB 00012 #define T_frames_in_segment 40 00013 00014 using namespace std; 00015 Base_tc *current_obsrs_tc = NULL; 00016 Base_tm *callsign = NULL; 00017 bool send_EoS_and_stop = false; 00018 bool adf_limit = false; 00019 bool stop = false; 00020 bool PA_HOT=0; 00021 bool short_TC; 00022 bool valid_SID = true; 00023 bool enable_call_sign = true; 00024 bool enable_new_segment=true; 00025 bool enable_S_frame = true; 00026 bool enable_read_block = false; 00027 bool enable_T_frame = false; 00028 bool enable_Ack_andcallsign = false; 00029 bool enable_ackandcallsign = false; 00030 bool new_session =true; 00031 bool enable_EoS=false; 00032 bool create_Ack_andcallsign = true; 00033 bool Ack_andcallsign_over = false; 00034 bool repeat_last_2T_frames = false; 00035 bool last_block = 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 print_stuff = false; 00043 //bool session_over = gFLAGS & COM_SESSION_TIMEOUT_FLAG; 00044 00045 uint8_t SID ; 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 uint16_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 // gCS_ADF = 0; 00096 // spi.write(0xB1);/*phy_on */ 00097 // gCS_ADF = 1; 00098 // gCS_ADF = 0; 00099 // spi.write(0xB0);/*phy_off */ 00100 // gCS_ADF = 1; 00101 // gCS_ADF = 0; 00102 // spi.write(0xB1);/*phy_on */ 00103 // gCS_ADF = 1; 00104 // gCS_ADF = 0; 00105 // spi.write(0xB5);/*start transmission*/ 00106 // gCS_ADF = 1; 00107 // } 00108 00109 int diff_prev; 00110 void differential_encode(unsigned char* ptr, int length){ 00111 for(int i=0; i<length;i++){ 00112 unsigned char s = ptr[i] , t; 00113 t = s ^ (s >> 1); 00114 (diff_prev == 0) ? t=t^0x00 : t=t^0x80 ; 00115 diff_prev = int(s & 0x01); 00116 ptr[i] = t; 00117 } 00118 } 00119 00120 #define print_PA_temp {\ 00121 uint8_t pa_temp = 0;\ 00122 float pa_temp1 = 0;\ 00123 pa_temp1 = TempInput.read();\ 00124 pa_temp1 = pa_temp1 * 3.3;\ 00125 float resistance;\ 00126 resistance = 24300 * pa_temp1/(3.3 - pa_temp1);\ 00127 if(pa_temp1 < 1.378) {\ 00128 pa_temp1 = (3694/log(24.032242*resistance))-273;\ 00129 }\ 00130 else{\ 00131 pa_temp1 = (3365.4/log(7.60573*resistance))-273;\ 00132 }\ 00133 /*gPC.printf("\n%f\n",pa_temp1);*/\ 00134 if (pa_temp1 > COM_PA_TMP_HIGH){\ 00135 PA_HOT = 1;\ 00136 gPC.puts("PA is measured HOT\r\n");\ 00137 }\ 00138 else{\ 00139 PA_HOT = 0;\ 00140 /*gPC.puts("PA is measured not HOT\r\n");*/\ 00141 }\ 00142 } 00143 00144 #define check_PA_temp {\ 00145 /* return 0 or 1*/\ 00146 SelectLinec0=0;\ 00147 SelectLinec1=0;\ 00148 SelectLinec2=0;\ 00149 SelectLinec3=1;\ 00150 wait_ms(0.1);\ 00151 } 00152 00153 00154 #define flags_init {\ 00155 send_EoS_and_stop = false; \ 00156 adf_limit = false;\ 00157 stop = false;\ 00158 PA_HOT=0;\ 00159 short_TC;\ 00160 valid_SID = true;\ 00161 enable_call_sign = true;\ 00162 enable_new_segment=true;\ 00163 enable_S_frame = true;\ 00164 enable_read_block = false;\ 00165 enable_T_frame = false;\ 00166 enable_Ack_andcallsign = false;\ 00167 enable_ackandcallsign = false;\ 00168 new_session =true;\ 00169 enable_EoS=false;\ 00170 create_Ack_andcallsign = true;\ 00171 Ack_andcallsign_over = false;\ 00172 repeat_last_2T_frames = false;\ 00173 last_block = false;\ 00174 /* last_buffer = false;*/\ 00175 new_OBSRS_TC = true;\ 00176 enable_SCH = true;\ 00177 enable_FCCH = false;\ 00178 enable_DS = false;\ 00179 half_buffer = 0;\ 00180 read_success = false;\ 00181 counter_buffer_112=0;\ 00182 counter_EoS=0;\ 00183 T_frames_sent=0;\ 00184 counter_interleavedata=0;\ 00185 counter_buffer_512=0;\ 00186 ack_code = 0xA0;\ 00187 segments_sent = 0;\ 00188 counter_SCH40 = 0;\ 00189 counter_FCCH80 = 0;\ 00190 counter_S_frame = 0;\ 00191 T_frame_Ack_andcallsign_sent = 0;\ 00192 T_frame_in_Ackandcallsign ;\ 00193 block_counter = 0;\ 00194 no_of_frames =0;\ 00195 } 00196 00197 #define send_Ack_andcallsign {\ 00198 if(T_frames_sent < T_frames_in_segment){\ 00199 if (enable_SCH)\ 00200 {\ 00201 buffer_112[counter_buffer_112] = SCH40[counter_SCH40++];\ 00202 if (counter_SCH40 == 5)\ 00203 { \ 00204 counter_SCH40 = 0;\ 00205 enable_SCH = false;\ 00206 enable_DS = true;\ 00207 }\ 00208 }\ 00209 else if (enable_DS)\ 00210 {\ 00211 buffer_112[counter_buffer_112] = interleave_data[half_buffer][counter_interleavedata++];\ 00212 if (counter_interleavedata == 144)\ 00213 { \ 00214 /*gPC.printf("Ads sent %d\r\n",half_buffer);*/\ 00215 enable_DS = false;\ 00216 enable_FCCH = true;\ 00217 counter_interleavedata = 0;\ 00218 }\ 00219 }\ 00220 else if (enable_FCCH)\ 00221 {\ 00222 buffer_112[counter_buffer_112] = FCCH80[counter_FCCH80++];\ 00223 if (counter_FCCH80 == 10)\ 00224 {\ 00225 /*gPC.printf("Afcch80 sent\r\n");*/\ 00226 enable_FCCH = false;\ 00227 counter_FCCH80 = 0;\ 00228 enable_SCH = true;\ 00229 if(half_buffer == 0){\ 00230 half_buffer = 1;\ 00231 }\ 00232 else{\ 00233 half_buffer =0;\ 00234 TM_sent=true;\ 00235 }\ 00236 }\ 00237 }\ 00238 if(TM_sent){\ 00239 TM_sent =false;\ 00240 T_frames_sent = T_frames_sent +2;\ 00241 if(repeat_last_2T_frames){\ 00242 enable_SCH = true;\ 00243 /*cout<<"T_frames_sent = "<<T_frames_sent<<ENDL;*/\ 00244 }\ 00245 else{\ 00246 /*gPC.printf("Ackandcallsign sent");*/\ 00247 /*cout<<"T_frames_sent = "<<T_frames_sent<<ENDL;*/\ 00248 T_frame_Ack_andcallsign_sent = T_frame_Ack_andcallsign_sent + 2;\ 00249 if(T_frame_Ack_andcallsign_sent == T_frame_in_Ackandcallsign ){\ 00250 repeat_last_2T_frames = true;\ 00251 for(int i =0; i<144;i++)\ 00252 {interleave_data[0][i] = 0;interleave_data[1][i] = 0; }\ 00253 }\ 00254 else{\ 00255 gPC.printf("error in send ack\r\n");\ 00256 }\ 00257 }\ 00258 if(T_frames_sent == T_frames_in_segment){\ 00259 if(T_frame_Ack_andcallsign_sent < T_frame_in_Ackandcallsign){\ 00260 gPC.printf("error in tframes sent = in seg");\ 00261 }\ 00262 else{\ 00263 send_EoS_and_stop = true; \ 00264 }\ 00265 }\ 00266 }\ 00267 }\ 00268 else if(send_EoS_and_stop){\ 00269 buffer_112[counter_buffer_112] = EoS[counter_EoS++];\ 00270 counter_EoS=120;\ 00271 if(counter_EoS == 120){\ 00272 /*gPC.printf("A eos sent\r\n");*/\ 00273 /*cout<<"EoS sent"<<ENDL;*/\ 00274 counter_EoS = 0;\ 00275 enable_ackandcallsign = false;\ 00276 stop =true;\ 00277 last_buffer = true;\ 00278 send_EoS_and_stop = false;\ 00279 }\ 00280 }\ 00281 else if(adf_limit){\ 00282 buffer_112[counter_buffer_112] = EoS[counter_EoS++];\ 00283 counter_EoS=120;\ 00284 if(counter_EoS == 120){\ 00285 counter_EoS = 0;\ 00286 /*gPC.printf("EoS sent");*/\ 00287 restart_adf_flag = true;\ 00288 enable_new_segment = true;\ 00289 /*cout<<"new session"<<ENDL;*/\ 00290 /*cout<<"new segment"<<ENDL;*/\ 00291 T_frames_sent = 0;\ 00292 segments_sent = 0; \ 00293 adf_limit = false;\ 00294 }\ 00295 }\ 00296 else{\ 00297 gPC.printf("error in send_Ack_andcallsign()");\ 00298 }\ 00299 } 00300 #define send_S_frame {\ 00301 buffer_112[counter_buffer_112] = S_frame[counter_S_frame++];\ 00302 if(counter_S_frame == 48){\ 00303 enable_new_segment=false;\ 00304 counter_S_frame = 0;\ 00305 /*gPC.printf("S_frame_sent\r\n");*/\ 00306 if(new_OBSRS_TC){\ 00307 enable_call_sign = true;\ 00308 new_OBSRS_TC = false;\ 00309 get_call_sign(callsign);\ 00310 snd_tm.head_pointer_sdcard(callsign);\ 00311 int temp = snd_tm.make_shor_tm();\ 00312 delete callsign;\ 00313 /*gPC.printf("new tc\r\n");*/\ 00314 }\ 00315 else{\ 00316 if(!enable_ackandcallsign){\ 00317 enable_read_block = true;\ 00318 }\ 00319 }\ 00320 }\ 00321 } 00322 00323 #define send_call_sign {\ 00324 if (enable_SCH)\ 00325 {\ 00326 buffer_112[counter_buffer_112] = SCH40[counter_SCH40++];\ 00327 if (counter_SCH40 == 5)\ 00328 { \ 00329 counter_SCH40 = 0;\ 00330 /*gPC.printf("csch40 sent\r\n");*/\ 00331 enable_SCH = false;\ 00332 enable_DS = true;\ 00333 }\ 00334 }\ 00335 else if (enable_DS)\ 00336 {\ 00337 buffer_112[counter_buffer_112] = interleave_data[half_buffer][counter_interleavedata++];\ 00338 /*gPC.printf("csending ds %d \r\n",counter_interleavedata);*/\ 00339 if (counter_interleavedata == 144)\ 00340 { \ 00341 enable_DS = false;\ 00342 enable_FCCH = true;\ 00343 counter_interleavedata = 0;\ 00344 /*counter_interleavedata = 0;not required here*/\ 00345 /*gPC.printf("cds sent sent \r\n");*/\ 00346 }\ 00347 }\ 00348 else if (enable_FCCH)\ 00349 {\ 00350 buffer_112[counter_buffer_112] = FCCH80[counter_FCCH80++];\ 00351 if (counter_FCCH80 == 10)\ 00352 {\ 00353 enable_FCCH = false;\ 00354 counter_FCCH80 = 0;\ 00355 /*gPC.printf("cfcch sent\r\n");*/\ 00356 if(half_buffer == 0){\ 00357 enable_SCH = true;\ 00358 half_buffer = 1;\ 00359 }\ 00360 else{\ 00361 half_buffer = 0;\ 00362 TM_sent=true;\ 00363 }\ 00364 }\ 00365 }\ 00366 if(TM_sent){\ 00367 TM_sent= false;\ 00368 enable_call_sign = false;\ 00369 new_session =false;\ 00370 /*cout<<"call_sign_sent"<<" ";*/\ 00371 T_frames_sent = T_frames_sent+2;\ 00372 print_PA_temp;\ 00373 /*cout<<"pa_hot = "<<PA_HOT<<ENDL;*/\ 00374 if(PA_HOT){\ 00375 enable_ackandcallsign = true;\ 00376 create_Ack_andcallsign = true;\ 00377 enable_read_block = false;\ 00378 }\ 00379 else{\ 00380 enable_read_block = true;\ 00381 enable_ackandcallsign = false;\ 00382 }\ 00383 }\ 00384 } 00385 00386 void send_tm_from_SD_card_fun(unsigned char * buffer_112,bool & last_buffer){ 00387 for(counter_buffer_112=0;counter_buffer_112<112;counter_buffer_112++){ 00388 //if (print_stuff){ 00389 // if (restart_adf_flag){ 00390 // gPC.printf("restart_adf_flag");} 00391 // if (enable_new_segment){ 00392 // gPC.printf("enable_new_segment");} 00393 // if (enable_call_sign){ 00394 // gPC.printf("enable_call_sign");} 00395 // if (enable_T_frame){ 00396 // gPC.printf("enable_T_frame");} 00397 // if (adf_limit){ 00398 // gPC.printf("adf_limit");} 00399 // if (enable_ackandcallsign){ 00400 // gPC.printf("enable_ackandcallsign");} 00401 // if (last_buffer){ 00402 // gPC.printf("last_buffer");} 00403 // if (enable_EoS){ 00404 // gPC.printf("enable_EoS");} 00405 // if (enable_read_block && (!last_block)){ 00406 // gPC.printf("enable_read_block && (!last_block)");} 00407 // if ((PA_HOT || (gFLAGS & COM_SESSION_TIMEOUT_FLAG) ||(ack_code != 0xA0))&&(!enable_ackandcallsign)&&(!last_buffer)){ 00408 // gPC.printf("failed");} 00409 // print_stuff = false; 00410 // } 00411 if(restart_adf_flag) 00412 buffer_112[counter_buffer_112] = 0; 00413 else if(enable_new_segment){ // starting new segment 00414 send_S_frame; 00415 T_frames_sent=0; 00416 } 00417 else if(enable_call_sign){ // sending call sign 00418 send_call_sign ; 00419 } 00420 00421 else if(enable_T_frame){ 00422 if(read_success == 0){ 00423 if(T_frames_sent < T_frames_in_segment){ 00424 if (enable_SCH) 00425 { 00426 buffer_112[counter_buffer_112] = SCH40[counter_SCH40++]; 00427 if (counter_SCH40 == 5) 00428 { 00429 /* gPC.printf("tsch40 sent\r\n");*/ 00430 counter_SCH40 = 0; 00431 enable_SCH = false; 00432 enable_DS = true; 00433 } 00434 } 00435 else if (enable_DS) 00436 { 00437 buffer_112[counter_buffer_112] = buffer_512[counter_buffer_512++]; 00438 if ((counter_buffer_512 == 288) || (counter_buffer_512 == 144)) 00439 { 00440 /* gPC.printf("tds sent\r\n");*/ 00441 // counter_buffer_512 = 0; 00442 enable_DS = false; 00443 enable_FCCH = true; 00444 } 00445 } 00446 else if (enable_FCCH) 00447 { 00448 buffer_112[counter_buffer_112] = FCCH80[counter_FCCH80++]; 00449 if (counter_FCCH80 == 10) 00450 { 00451 /* gPC.printf("tfcch80 sent\r\n");*/ 00452 enable_FCCH = false; 00453 if(counter_buffer_512 == 144){ 00454 enable_SCH = true; 00455 counter_FCCH80 = 0; 00456 } 00457 else{ 00458 00459 } 00460 } 00461 } 00462 if((counter_FCCH80 == 10)&&(counter_buffer_512 == 288)){ 00463 counter_FCCH80 = 0; 00464 counter_buffer_512 = 0; 00465 T_frames_sent = T_frames_sent+2; 00466 // cout<<"T_frames_sent "<<T_frames_sent<<ENDL; 00467 if(last_block){ 00468 // cout<<"last block"<<endl<<"\r"; 00469 /* gPC.printf("last block\r\n");*/ 00470 enable_read_block = false; 00471 enable_T_frame = false; 00472 enable_ackandcallsign = true; 00473 /*putting execution status */ 00474 uint8_t temp2 = TC_STATE_SUCCESSFULLY_EXECUTED; 00475 PUTexec_status(current_obsrs_tc, temp2); 00476 create_Ack_andcallsign = true; 00477 if(T_frames_sent == T_frames_in_segment){ 00478 if(segments_sent + 1>= max_segments){ 00479 adf_limit = true; 00480 segments_sent = 0; 00481 // gPC.printf("adf limit reached here"); 00482 } 00483 else{ 00484 enable_new_segment = true; 00485 // cout<<"new segment"<<ENDL; 00486 } 00487 } 00488 //print_stuff = true; 00489 continue; 00490 00491 } 00492 else{ 00493 print_PA_temp; 00494 // cout<<"pa_hot = "<<PA_HOT<<" "; 00495 if(PA_HOT){ 00496 gPC.printf("h1"); 00497 enable_T_frame = false; 00498 enable_read_block = false; 00499 enable_ackandcallsign = true; 00500 create_Ack_andcallsign = true; 00501 } 00502 else{ 00503 enable_read_block = true; 00504 } 00505 } 00506 if(T_frames_sent == T_frames_in_segment){ 00507 enable_read_block = false; 00508 enable_T_frame = false; 00509 if((segments_sent + 1) >= max_segments){ 00510 adf_limit = true; 00511 segments_sent++; 00512 // gPC.printf("segments_sent = "<<segments_sent<<ENDL; 00513 // gPC.printf("in for adf lim reached"); 00514 } 00515 else{ 00516 enable_new_segment = true; 00517 // gPC.printf("data in next segment"); 00518 segments_sent++; 00519 // cout<<"segments_sent = "<<segments_sent<<ENDL; 00520 } 00521 continue; 00522 } 00523 else if(T_frames_sent > T_frames_in_segment){ 00524 gPC.printf("error in enable T_frame"); 00525 } 00526 } 00527 } 00528 else if(T_frames_sent > T_frames_in_segment){ 00529 gPC.printf("error in if(read_success)"); 00530 } 00531 } 00532 else{ 00533 gPC.printf("error in enable T_frame"); 00534 } 00535 } 00536 else if(adf_limit){ 00537 buffer_112[counter_buffer_112] = EoS[counter_EoS++]; 00538 counter_EoS=120;\ 00539 if(counter_EoS == 120){ 00540 // cout<<"EoS sent"<<ENDL; 00541 // restart_adf(); 00542 restart_adf_flag=true; 00543 enable_new_segment = true; 00544 counter_EoS = 0; 00545 // cout<<"new session"<<ENDL; 00546 // cout<<"new segment"<<ENDL; 00547 T_frames_sent = 0; 00548 segments_sent = 0; 00549 adf_limit = false; 00550 } 00551 } 00552 else if(enable_ackandcallsign){ 00553 if(create_Ack_andcallsign){ 00554 /*gPC.printf("cr ack\r\n")*/; 00555 enable_SCH = true; 00556 00557 if( (GETexec_status(current_obsrs_tc) == TC_STATE_EXECUTION_FAILED) && (GETabort_on_nack(current_obsrs_tc) == 1) ){ 00558 gMASTER_STATE = TCL_STATE_ABORTED; 00559 } 00560 else if( GETpacket_seq_count(current_obsrs_tc) == (gTOTAL_VALID_TC-1) ){ 00561 gMASTER_STATE = TCL_STATE_COMPLETED; 00562 } 00563 create_Ack_andcallsign = false; 00564 Base_tm *ack_and_callsign = NULL; 00565 //Base_tm *ack_head = NULL; 00566 // get_call_sign(ack_and_callsign); 00567 get_ack_l234(ack_and_callsign); 00568 ack_head = ack_and_callsign; 00569 get_ack_l1(ack_and_callsign->next_TM); 00570 while(ack_and_callsign->next_TM != NULL){ 00571 ack_and_callsign = ack_and_callsign->next_TM; 00572 } 00573 get_call_sign(ack_and_callsign->next_TM); 00574 snd_tm.head_pointer_sdcard(ack_head); 00575 T_frame_in_Ackandcallsign = (2*snd_tm.make_shor_tm()); 00576 /* gPC.printf(" T_frame_in_Ackandcallsign = %d\r\n",T_frame_in_Ackandcallsign);*/ 00577 Base_tm *ack_l234 = ack_and_callsign->next_TM; 00578 00579 ack_and_callsign = ack_head->next_TM; 00580 00581 if( GETshort_or_long_tm(ack_l234) == SHORT_TM_CODE ){ 00582 for(int i = 0 ; i < TM_SHORT_SIZE ; ++i){ 00583 gLAST_TM[i] = ack_l234->TM_string[i]; 00584 gLAST_TM_SHORT_OR_LONG = SHORT_TM_CODE; 00585 } 00586 } 00587 else{ 00588 for( int i = 0 ; i < TM_LONG_SIZE ; ++i ){ 00589 gLAST_TM[i] = ack_l234->TM_string[i]; 00590 gLAST_TM_SHORT_OR_LONG = LONG_TM_CODE; 00591 } 00592 } 00593 00594 /*gPC.printf("ex cr ack\r\n");*/ 00595 } 00596 send_Ack_andcallsign; 00597 if(last_buffer){ 00598 /*gPC.printf("last buffer"); */ 00599 // delete ack_head; 00600 // while(ack_and_callsign != NULL){ 00601 // Base_tm *temp = ack_and_callsign->next_TM; 00602 // delete ack_and_callsign; 00603 // ack_and_callsign = temp; 00604 } 00605 } 00606 else if(last_buffer){ 00607 /*gPC.printf("last buffer2");*/ 00608 buffer_112[counter_buffer_112] = 0; 00609 // delete ack_head; 00610 // while(ack_and_callsign != NULL){ 00611 // Base_tm *temp = ack_and_callsign->next_TM; 00612 // delete ack_and_callsign; 00613 // ack_and_callsign = temp; 00614 // } 00615 } 00616 else if(enable_EoS){ 00617 // send_EoS(); 00618 /*gPC.printf("eos2");*/ 00619 buffer_112[counter_buffer_112] = EoS[counter_EoS++]; 00620 counter_EoS=120;\ 00621 if(counter_EoS == 120){ 00622 // cout<<"segments_sent = "<<segments_sent<<ENDL; 00623 // cout<<"EoS sent"<<ENDL; 00624 counter_EoS = 0; 00625 enable_EoS=false; 00626 enable_new_segment = true; 00627 break; 00628 } 00629 else{ 00630 gPC.printf("Error in enable EoS"); 00631 } 00632 } 00633 else{ 00634 gPC.printf("error in for loop"); 00635 } 00636 if(enable_read_block && (!last_block)){ 00637 if(short_TC){ 00638 /*cout<<"reading"<<int(FSC)<<" "<<int(SID)<<ENDL;*/ 00639 // for(int i=0;i<512;i++){ 00640 // printf("0x%02X,",write_buffer[i]); 00641 // } 00642 //int write_success = SD_WRITE(write_buffer,FSC + block_counter,SID); 00643 // wait_ms(8); 00644 //gPC.printf("Reached here hey hey\n"); 00645 ack_code = SD_READ(buffer_512, FSC + block_counter,SID); 00646 //ack_code = 0x02; 00647 } 00648 else{ 00649 // gPC.printf("Reached here hey hey\n"); 00650 ack_code = SD_READ(buffer_512, list_of_FSC[block_counter],SID); 00651 } 00652 block_counter++; 00653 if(block_counter == no_of_frames){ 00654 last_block=true; 00655 } 00656 enable_read_block = false; 00657 if(ack_code == 0xA0){ 00658 /* gPC.puts("read one block successfully");*/ 00659 enable_T_frame = true; 00660 enable_SCH = true; 00661 } 00662 else if(ack_code == 0x88 || ack_code == 0x89){ 00663 00664 gPC.printf("Hardware failure"); 00665 enable_T_frame = false; 00666 } 00667 else if(ack_code == 0x02){ 00668 gPC.printf("Invalid SID"); 00669 enable_T_frame = false; 00670 } 00671 else if(ack_code == 0x86){ 00672 /*gPC.printf("FSC outof bounds");*/ 00673 enable_T_frame = false; 00674 } 00675 else{ 00676 gPC.printf("error Invalid ack code"); 00677 enable_T_frame = false; 00678 stop = true; 00679 } 00680 } 00681 if((PA_HOT || (gFLAGS & COM_SESSION_TIMEOUT_FLAG) ||(ack_code != 0xA0))&&(!enable_ackandcallsign)&&(!last_buffer)){ 00682 /*gPC.printf("last condition");*/ 00683 uint8_t temp2 = TC_STATE_EXECUTION_FAILED; 00684 PUTexec_status(current_obsrs_tc, temp2); 00685 enable_ackandcallsign = true; 00686 create_Ack_andcallsign = true; 00687 enable_T_frame = false; 00688 } 00689 } 00690 // for(int i=0;i<112;i++){ 00691 // printf("0x%02X,",buffer_112[i]); 00692 // } 00693 differential_encode(buffer_112, 112); 00694 if(last_buffer ==true){ 00695 diff_prev=0; 00696 } 00697 } 00698 00699 void execute_OBSRS_TC(Base_tc *tcp){ 00700 current_obsrs_tc = tcp; 00701 check_PA_temp; 00702 flags_init; 00703 sent_tmfrom_SDcard = true; 00704 diff_prev = 0; 00705 if( GETshort_or_long_tc(tcp) == SHORT_TC_CODE ){ 00706 short_TC = true; 00707 gPC.printf("it is short TC\r\n"); 00708 } 00709 else{ 00710 gPC.printf("it is long TC\r\n"); 00711 short_TC = false; 00712 } 00713 /* reading SID from TC */ 00714 SID = (tcp->TC_string[2]) & 0x0f; 00715 /* reading FSC and no. of frames from TC */ 00716 if(short_TC){ 00717 FSC = tcp->TC_string[3] << 24; 00718 FSC += tcp->TC_string[4] << 16; 00719 FSC += tcp->TC_string[5] << 8; 00720 FSC += tcp->TC_string[6]; 00721 no_of_frames = ((uint16_t)(tcp->TC_string[7]) << 8); 00722 no_of_frames |= (uint16_t)tcp->TC_string[8]; 00723 } 00724 else{ 00725 no_of_frames = tcp->TC_string[3]; 00726 for(int i=0 ;i<no_of_frames ; i++){ 00727 list_of_FSC[i] = tcp->TC_string[4+i]; 00728 } 00729 } 00730 00731 gPC.printf("sid = %u \r\n",SID); 00732 gPC.printf("FSC = %u\r\n",FSC); 00733 gPC.printf("no_of_frames = %u\r\n",no_of_frames); 00734 // gPC.puts("exit_sdcard"); 00735 00736 // SID = 0x1; 00737 // FSC = 10; 00738 // no_of_frames = 2; 00739 // cout<<"max_segments = "<<max_segments<<ENDL; 00740 //while(0){ 00741 // while(!stop){ 00742 // // send_call_sign(); 00743 // if(short_TC){ 00744 // send_tm_from_SD_card(); 00745 // } 00746 // else{ 00747 // send_tm_from_SD_card(); 00748 // } 00749 // } 00750 } 00751 00752 #endif
Generated on Tue Jul 12 2022 15:50:06 by
