jnlj

Dependencies:   mbed-rtos mbed

Fork of TFOX_CDMS_VR_1_0_WORKING by Team Fox

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TC.cpp Source File

TC.cpp

00001 #include "mbed.h"
00002 #include "TC.h"
00003 #include "SDCard.h"
00004 #include "func_head.h"
00005 #include "i2c.h"
00006 
00007 Serial sc(USBTX,USBRX);
00008    
00009 void FUNC_CDMS_RLY_TC()
00010 {
00011     sc.printf("in FUNC_CDMS_RLY_TC\r\n");
00012     uint8_t read;
00013     sc.scanf("%d",&read); //Packet sequence count
00014     pac_seq_cnt = read;
00015     sc.scanf("%d",&read); //Data[0] contains APID,LFB,long_or_short,AoN,Spr and Ack
00016     apid_size = read;
00017     apid=(apid_size&0xC0)>>6; //apid is decoded
00018     long_or_short=(apid_size&0x10)>>4; //size of tc is known
00019         switch(apid)
00020         {
00021              case 1:             //apid=01 implies it corresponds to bae
00022              {
00023                    sc.printf("BAE\r\r\r\n");
00024                    uint8_t p_i2c_bae[long_or_short*124+11];
00025                    p_i2c_bae[0]=pac_seq_cnt;
00026                    p_i2c_bae[1]=apid_size;
00027                    sc.scanf("%d",&read); //services contains service_type and sub_service_type
00028                    p_i2c_bae[2] = read;
00029                    for(int i=3;i<(long_or_short*124+11);i++){
00030                       sc.scanf("%d",&read);
00031                       p_i2c_bae[i] = read;
00032                    }
00033                    sc.printf("informing BAE about TC using I2C\r\r\n"); //interrupt to be sent to the bae
00034                    if(long_or_short==0)
00035                    FCTN_MASTER_I2C('s', (char *)p_i2c_bae);
00036                    else if(long_or_short==1)
00037                    FCTN_MASTER_I2C('l', (char *)p_i2c_bae);
00038                    else
00039                    sc.printf("long_or_short invalid\r\r\n");
00040                    sc.printf("send the packet + CRC to the BAE after receving i2c signal from BAE\r\r\n"); //packet along with crc will be sent when bae is ready
00041             break;
00042             }
00043             case 3:
00044             {
00045                    sc.printf("SPEED\r\r\n"); //speed corresponds to apid = 11
00046                    uint8_t p_i2c_speed[long_or_short*124+11];
00047                    p_i2c_speed[0]=pac_seq_cnt;
00048                    p_i2c_speed[1]=apid_size;
00049                    sc.scanf("%d",&read);
00050                    p_i2c_speed[2] = read; //services contains service_type and sub_service_type
00051                    for(int i=3;i<(long_or_short*124+11);i++){
00052                       sc.scanf("%d",&read);
00053                       p_i2c_speed[i] = read;
00054                    }
00055                    sc.printf("inform PL about TC using I2C\r\r\n");
00056                    sc.printf("send the packet + CRC to the PL after receving i2c signal from PL\r\r\n");
00057             break;
00058             }
00059             case 2:
00060             {
00061                    sc.printf("CDMS\r\r\n"); //apid = 10 corresponds to cdms
00062                    uint8_t services,appdata[long_or_short*124+6],crc[2];
00063                    sc.scanf("%d",&read);
00064                    services = read; //services contains service_type and sub_service_type
00065                    for(int i=3;i<(long_or_short*124+6);i++){
00066                       sc.scanf("%d",&read);
00067                       appdata[i-3] = read;
00068                    }
00069                    sc.scanf("%d",&read);
00070                    crc[0] = read;
00071                    sc.scanf("%d",&read);
00072                    crc[1] = read;
00073                    service_type=(services&0xF0)>>4;
00074                    sub_service_type=(services&0x0F);
00075                    switch(service_type){
00076                         case 6:
00077                         {
00078                                sc.printf("memory management syservice_typeem\r\r\n");
00079                                switch(sub_service_type){
00080                                     case 1:
00081                                     {
00082                                            sc.printf("READ FROM MEMORY\r\r\n");
00083                                            if(appdata[0]==2){             //appdata[0] is pid                     
00084                                             sc.printf("RD_L_FLASH1\r\r\n"); //tm is lmb
00085                         //P_CDMS_RD_FLASH
00086 
00087                                               for(int i=0;i<128;i++){
00088                                                 telemetry_type1[i]=long_memory_block_tm[i-1]; 
00089                                               }
00090                                               for(int i=128;i<130;i++){
00091                                                 telemetry_type1[i]=crc_tm[i-128];
00092                                               }
00093                                            }
00094                                            else if ((appdata[0]&0xF0)==0x10){
00095                                             sc.printf("RD_L_FLASH2\r\r\n"); //tm is lmb
00096                         //P_CDMS_RD_FLASH
00097 
00098                                               for(int i=0;i<128;i++){
00099                                                 telemetry_type1[i]=long_memory_block_tm[i-1];
00100                                               }
00101                                               for(int i=128;i<130;i++){
00102                                                 telemetry_type1[i]=crc_tm[i-128];
00103                                               }
00104                                            }
00105                                            else if (appdata[0]==0x22){
00106                                             sc.printf("RD_S_FLASH1\r\r\n"); //tm is smb
00107                         //P_CDMS_RD_FLASH
00108 
00109                                             telemetry_type2[0]=tmid3_spr_tm;
00110                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00111                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00112                                             for(int i=4;i<11;i++){
00113                                                   telemetry_type2[i]=small_memory_block_tm[i-4];
00114                                                 }
00115                                               for(int i=11;i<13;i++){
00116                                                   telemetry_type2[i]=crc_tm[i-11];
00117                                                 }
00118                                            }
00119                                            else if ((appdata[0]&0xF0)==0x30){
00120                                             sc.printf("RD_S_FLASH2\r\r\n"); //tm is smb
00121                         //P_CDMS_RD_FLASH
00122 
00123                                             telemetry_type2[0]=tmid3_spr_tm;
00124                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00125                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00126                                             for(int i=3;i<11;i++){
00127                                                   telemetry_type2[i]=small_memory_block_tm[i-3];
00128                                                 }
00129                                               for(int i=11;i<13;i++){
00130                                                   telemetry_type2[i]=crc_tm[i-11];
00131                                                 }
00132                                            }
00133                                            else if (appdata[0]==0x42){
00134                                             sc.printf("RD_L_RAM1\r\r\n"); //tm is lmb
00135                             //P_CDMS_RD_RAM
00136 
00137                                               for(int i=0;i<128;i++){
00138                                                 telemetry_type1[i]=long_memory_block_tm[i-1];
00139                                               }
00140                                               for(int i=128;i<130;i++){
00141                                                 telemetry_type1[i]=crc_tm[i-128];
00142                                               }
00143                                            }
00144                                            else if ((appdata[0]&0xF0)==0x50){
00145                                             sc.printf("RD_L_RAM2\r\r\n"); //tm is lmb
00146                         //P_CDMS_RD_RAM
00147 
00148                                               for(int i=0;i<128;i++){
00149                                                 telemetry_type1[i]=long_memory_block_tm[i-1];
00150                                               }
00151                                               for(int i=128;i<130;i++){
00152                                                 telemetry_type1[i]=crc_tm[i-128];
00153                                               }
00154                                            }
00155                                            else if (appdata[0]==0x62){
00156                                             sc.printf("RD_S_RAM\r\r\n"); //tm is smb
00157                         //P_CDMS_RD_RAM
00158 
00159                                             telemetry_type2[0]=tmid3_spr_tm;
00160                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00161                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00162                                             for(int i=3;i<11;i++){
00163                                                   telemetry_type2[i]=small_memory_block_tm[i-3];
00164                                                 }
00165                                               for(int i=11;i<13;i++){
00166                                                   telemetry_type2[i]=crc_tm[i-11];
00167                                                 }
00168                                            }
00169                                            else if ((appdata[0]&0xF0)==0x70){
00170                                             sc.printf("RD_S_RAM2\r\r\n"); //tm is smb
00171                         //P_CDMS_RD_RAM
00172 
00173                                             telemetry_type2[0]=tmid3_spr_tm;
00174                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00175                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00176                                             for(int i=3;i<11;i++){
00177                                                   telemetry_type2[i]=small_memory_block_tm[i-3];
00178                                                 }
00179                                               for(int i=11;i<13;i++){
00180                                                   telemetry_type2[i]=crc_tm[i-11];
00181                                                 }
00182                                            }
00183                     else {
00184                         sc.printf("INVALID TC");
00185                         //Send Invalid TC Telemetry
00186                     }
00187                                     break;
00188                                     }
00189                                     case 5:
00190                                     {
00191                                            sc.printf("WRITE ON MEMORY\r\r\n");
00192                                            switch(appdata[0]){
00193                                                 case 0:sc.printf("WR_S_FLASH\r\r\n");
00194                         //P_CDMS_WR_FLASH
00195                                                  telemetry_type2[0]=0XB0;
00196                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00197                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00198                                                  telemetry_type2[3]=ackcode_tm;
00199                                             for(int i=4;i<11;i++){
00200                                                   telemetry_type2[i]=0X00;
00201                                                 }
00202 
00203                                                 break;
00204                                                 case 1:sc.printf("WR_S_RAM\r\r\n");
00205                         //P_CDMS_WR_RAM
00206                                                  telemetry_type2[0]=0XB0;
00207                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00208                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00209                                                  telemetry_type2[3]=ackcode_tm;
00210                                             for(int i=4;i<11;i++){
00211                                                   telemetry_type2[i]=0X00;
00212                                                 }
00213 
00214                                                 break;
00215                                                 case 16:sc.printf("WR_L_FLASH\r\r\n");
00216                                                  telemetry_type2[0]=0XB0;
00217                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00218                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00219                                                  telemetry_type2[3]=ackcode_tm;
00220                                             for(int i=4;i<11;i++){
00221                                                   telemetry_type2[i]=0X00;
00222                                                 }
00223                         //P_CDMS_WR_FLASH
00224 
00225                                                 break;
00226                                                 case 17:sc.printf("WR_L_RAM\r\r\n");
00227                                                 //P_CDMS_WR_RAM
00228                                                  telemetry_type2[0]=0XB0;
00229                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00230                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00231                                                  telemetry_type2[3]=ackcode_tm;
00232                                             for(int i=4;i<11;i++){
00233                                                   telemetry_type2[i]=0X00;
00234                                                 }
00235 
00236                                                 break;
00237                         default:{sc.printf("INVALID TC");
00238                             //send invalid TC TM
00239                              break;}
00240                                            }
00241                                     break;
00242                                     }
00243                                     case 6:
00244                                     {
00245                                            sc.printf("WRITE FROM ONE MEMORY TO ANOTHER\r\r\n");
00246                                            switch(appdata[0]){
00247                                                 case 0:sc.printf("WR_S_FLASH\r\r\n");
00248                         //P_CDMS_WR_FLASH
00249                                                  telemetry_type2[0]=0XB0;
00250                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00251                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00252                                                  telemetry_type2[3]=ackcode_tm;
00253                                             for(int i=4;i<11;i++){
00254                                                   telemetry_type2[i]=0X00;
00255                                                 }
00256                                                 break;
00257                                                 case 1:sc.printf("WR_S_RAM\r\r\n");
00258                         //P_CDMS_WR_RAM
00259                                                  telemetry_type2[0]=0XB0;
00260                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00261                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00262                                                  telemetry_type2[3]=ackcode_tm;
00263                                             for(int i=4;i<11;i++){
00264                                                   telemetry_type2[i]=0X00;
00265                                                 }
00266                                                 break;
00267                                                 case 16:sc.printf("WR_L_FLASH\r\r\n");
00268                         //P_CDMS_WR_FLASH
00269                                                  telemetry_type2[0]=0XB0;
00270                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00271                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00272                                                  telemetry_type2[3]=ackcode_tm;
00273                                             for(int i=4;i<11;i++){
00274                                                   telemetry_type2[i]=0X00;
00275                                                 }
00276                                                 break;
00277                                                 case 17:sc.printf("WR_L_RAM\r\r\n");
00278                         //P_CDMS_WR_RAM
00279                                                  telemetry_type2[0]=0XB0;
00280                                                  telemetry_type2[1]=tc_pac_seq_cnt_tm;
00281                                                  telemetry_type2[2]=tm_pac_seq_cnt_tm;
00282                                                  telemetry_type2[3]=ackcode_tm;
00283                                             for(int i=4;i<11;i++){
00284                                                   telemetry_type2[i]=0X00;
00285                                                 }
00286                                                 break;
00287                         default:{sc.printf("INVALID TC");
00288                             //send invalid TC TM
00289                              break;}
00290                                            }
00291                                     break;
00292                                     }
00293                                     case 9:
00294                                     {
00295                                            sc.printf("SEND CRC OF FLASH MEMORY\r\r\n");
00296                                            if(appdata[0]==2){
00297                                             sc.printf("GET_FLASH_CRC\r\r\n"); //tm is crc_flash
00298                         //P_CDMS_GET_FLASH_CRC
00299 
00300                                           for(int i=0;i<2;i++){
00301                                                 telemetry_type1[i]=crc1_tm[i];
00302                                               }
00303                                             for(int i=2;i<4;i++){
00304                                                 telemetry_type1[i]=crc2_tm[i-2];
00305                                               }
00306                                             for(int i=128;i<130;i++){
00307                                                 telemetry_type1[i]=crc_tm[i-128];
00308                                               }
00309                                            }
00310                     else {
00311                         sc.printf("INVALID TC");
00312                         //Send Invalid TC Telemetry
00313                     }
00314                                     break;
00315                                     }
00316                     default:{sc.printf("INVALID TC");
00317                             //send invalid TC TM
00318                              break;}
00319                                 }
00320                         break;
00321                         }
00322                         case 8:
00323                         {
00324                                sc.printf("FUNCTION MANAGEMENT SERVICE\r\r\n"); 
00325                                if(sub_service_type==1){
00326                                 if((appdata[0]&0xF0)==0x00){
00327                                     sc.printf("RUN_PRCS\r\r\n");
00328                                     switch(appdata[0]){
00329                                         case 1:sc.printf("P_PL_INIT\r\r\n");//tm is ack_l234
00330                     //P_PL_INIT
00331                                         telemetry_type2[0]=tmid2_spr_tm;
00332                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00333                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00334                                             telemetry_type2[3]=ackcode_tm;
00335                                             for(int i=3;i<11;i++){
00336                                                   telemetry_type2[i]=0x00;
00337                                                 }
00338                                               for(int i=11;i<13;i++){
00339                                                   telemetry_type2[i]=crc_tm[i-11];
00340                                                 }
00341                                         break;
00342                                         case 2:sc.printf("P_PL_MNGR\r\r\n");//tm is ack_l234
00343                     //P_PL_MNGR
00344                                         telemetry_type2[0]=tmid2_spr_tm;
00345                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00346                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00347                                             telemetry_type2[3]=ackcode_tm;
00348                                             for(int i=3;i<11;i++){
00349                                                   telemetry_type2[i]=0x00;
00350                                                 }
00351                                               for(int i=11;i<13;i++){
00352                                                   telemetry_type2[i]=crc_tm[i-11];
00353                                                 }
00354                                         break;
00355                                         case 3:sc.printf("P_COM_INIT\r\r\n");//tm is ack_l234
00356                     //P_COM_INIT
00357                                         telemetry_type2[0]=tmid2_spr_tm;
00358                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00359                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00360                                             telemetry_type2[3]=ackcode_tm;
00361                                             for(int i=3;i<11;i++){
00362                                                   telemetry_type2[i]=0x00;
00363                                                 }
00364                                               for(int i=11;i<13;i++){
00365                                                   telemetry_type2[i]=crc_tm[i-11];
00366                                                 }
00367                                         break;
00368                                         case 4:sc.printf("P_CDMS_HK_MNGR\r\r\n");//tm is ack_l234
00369                     //P_CDMS_HK_MNGR
00370                                         telemetry_type2[0]=tmid2_spr_tm;
00371                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00372                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00373                                             telemetry_type2[3]=ackcode_tm;
00374                                             for(int i=3;i<11;i++){
00375                                                   telemetry_type2[i]=0x00;
00376                                                 }
00377                                               for(int i=11;i<13;i++){
00378                                                   telemetry_type2[i]=crc_tm[i-11];
00379                                                 }
00380                                         break;
00381                     default:{sc.printf("INVALID TC");
00382                             //send invalid TC TM
00383                              break;}
00384                                     }
00385                                 }
00386                                 else if((appdata[0]&0xF0)==0x10){
00387                                     sc.printf("PWR_SWCH\r\r\n");
00388                     //P_CDMS_SWCH_PWR
00389 
00390                                 }
00391                                 else if((appdata[0]&0xF0)==0x20){
00392                                     sc.printf("PWR_Rservice_type\r\r\n");
00393                     //P_CDMS_RST_PWR
00394 
00395                                 }
00396                                         else if((appdata[0]&0xF0)==0xE0){
00397                                         sc.printf("RD_\r\n"); //tm is func_mngmt_service_tm
00398                                         FUNC_CDMS_RD_RTC(rtc_tc_data);
00399                                         for(int i=0;i<8;i++)
00400                                         {
00401                                            printf("%d\r\r\n",rtc_tc_data[i]);
00402                                         }
00403                                         telemetry_type2[0]=tmid4_spr_tm;
00404                                         telemetry_type2[1]=tc_pac_seq_cnt_tm;
00405                                         telemetry_type2[2]=tm_pac_seq_cnt_tm;
00406                                         for(int i=3;i<11;i++)
00407                                         {
00408                                               telemetry_type2[i]=rtc_tc_data[i-3];
00409                                         }
00410                                         for(int i=0;i<13;i++)
00411                                         {
00412                                            printf("%d\r\r\n",telemetry_type2[i]);
00413                                         }
00414                                         for(int i=11;i<13;i++)
00415                                         {
00416                                               telemetry_type2[i]=crc_tm[i-11];
00417                                         }
00418                                          for(int i=0;i<13;i++)
00419                                             sd_data[i]=telemetry_type2[i];
00420                                          for(int i=13;i<512;i++)
00421                                             sd_data[i]='\0';
00422                                          FUNC_WR_SD(sd_data, 512);
00423                                          FUNC_RD_SD(sd_read_data,512);
00424                                          sc.printf("data read from sd card\r\r\n");
00425                                          for(int i=0;i<512;i++)
00426                                             sc.printf("%d ",sd_read_data[i]);
00427                                     } 
00428                                 else if((appdata[0]&0xF0)==0xF0){
00429                                     sc.printf("SD_MNGR\r\r\n"); //tm is func_mngmt_service_tm
00430                     //P_CDMS_MNG_SD
00431 
00432                                     telemetry_type2[0]=tmid4_spr_tm;
00433                                     telemetry_type2[1]=tc_pac_seq_cnt_tm;
00434                                     telemetry_type2[2]=tm_pac_seq_cnt_tm;
00435                                     for(int i=3;i<11;i++){
00436                                           telemetry_type2[i]=func_mngmt_service_tm[i-3];
00437                                         }
00438                                       for(int i=11;i<13;i++){
00439                                           telemetry_type2[i]=crc_tm[i-11];
00440                                         }
00441                                 }
00442                 else {
00443                         sc.printf("INVALID TC");
00444                         //Send Invalid TC Telemetry
00445                     }
00446                                }
00447                 else {
00448                         sc.printf("INVALID TC");
00449                         //Send Invalid TC Telemetry
00450                     }
00451                         break;
00452                         }
00453                         case 7:
00454                         {
00455                                sc.printf("PAYLOAD MANAGEMENT SERVICE\r\r\n"); //TM is ACKL234
00456                                switch(sub_service_type){
00457                                     case 1:sc.printf("INSERT PL SCHEDULE\r\r\n");
00458                                       telemetry_type2[0]=tmid2_spr_tm;
00459                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00460                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00461                                             telemetry_type2[3]=ackcode_tm;
00462                                             for(int i=3;i<11;i++){
00463                                                   telemetry_type2[i]=0x00;
00464                                                 }
00465                                               for(int i=11;i<13;i++){
00466                                                   telemetry_type2[i]=crc_tm[i-11];
00467                                                 }
00468                                     break;
00469                                     case 2:sc.printf("DELETE PL SCHEDULE\r\r\n");
00470                                         telemetry_type2[0]=tmid2_spr_tm;
00471                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00472                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00473                                             telemetry_type2[3]=ackcode_tm;
00474                                             for(int i=3;i<11;i++){
00475                                                   telemetry_type2[i]=0x00;
00476                                                 }
00477                                               for(int i=11;i<13;i++){
00478                                                   telemetry_type2[i]=crc_tm[i-11];
00479                                                 }
00480                                     break; 
00481                        default:{sc.printf("INVALID TC");
00482                             //send invalid TC TM
00483                              break;}
00484                                }
00485                         break;
00486                         }
00487                         case 11:
00488                         {
00489                                 sc.printf("ONBOARD OPERATIONS SCHEDULING SERVICE\r\r\n");
00490                                 switch(sub_service_type){
00491                                     case 1:
00492                                     {
00493                                            sc.printf("DISABLE RELEASE OF TCs\r\r\n"); //tm is ack_l1
00494                                            telemetry_type2[0]=tmid1_spr_tm;
00495                                            telemetry_type2[1]=tc_exec_tm;
00496                                            telemetry_type2[2]=tc_service_typeatus_tm;
00497                                            for(int i=3;i<11;i++){
00498                                                 telemetry_type2[i]=pac_seq_cnt_of_tc_tm[i-3];
00499                                                }
00500                                              for(int i=11;i<13;i++){
00501                                                 telemetry_type2[i]=crc_tm[i-11];
00502                                               }
00503                                     break;
00504                                     }
00505                                     case 2:
00506                                     {
00507                                       sc.printf("ENABLE RELEASE OF TCs\r\r\n");
00508                                     break;
00509                                     }
00510                                     case 5:
00511                                     {
00512                                       sc.printf("DELETE TELECOMMANDS\r\r\n");
00513                                     break;
00514                                     }
00515                                     case 6:
00516                                     {
00517                                       sc.printf("REPORT TC LIST IN DETAILED FORM\r\r\n"); //tm is tc_liservice_type 
00518                                            for(int i=0;i<9;i++){
00519                                               telemetry_type1[i]=tc_liservice_type_packet1_tm[i];
00520                                                }
00521                                            for(int i=9;i<18;i++){
00522                                               telemetry_type1[i]=tc_liservice_type_packet2_tm[i-9];
00523                                               }
00524                                            for(int i=128;i<130;i++){
00525                                               telemetry_type1[i]=crc_tm[i-128];
00526                                             }
00527                                     break;
00528                                     }
00529                                     case 8:
00530                                     {
00531                                            sc.printf("REPORT STATUS OF TC LIST\r\r\n"); //tm is ack_l1
00532                                            telemetry_type2[0]=tmid1_spr_tm;
00533                                            telemetry_type2[1]=tc_exec_tm;
00534                                            telemetry_type2[2]=tc_service_typeatus_tm;
00535                                            for(int i=3;i<11;i++){
00536                                                 telemetry_type2[i]=pac_seq_cnt_of_tc_tm[i-3];
00537                                                }
00538                                              for(int i=11;i<13;i++){
00539                                                 telemetry_type2[i]=crc_tm[i-11];
00540                                               }
00541                                     break;
00542                                     }
00543                                     case 15:
00544                                     {
00545                                             sc.printf("REPORT STATUS OF LAST UNEXECUTED TC\r\r\n"); //tm is ack_l234
00546                                             telemetry_type2[0]=tmid2_spr_tm;
00547                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00548                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00549                                             telemetry_type2[3]=ackcode_tm;
00550                                             for(int i=3;i<11;i++){
00551                                                   telemetry_type2[i]=0x00;
00552                                                 }
00553                                               for(int i=11;i<13;i++){
00554                                                   telemetry_type2[i]=crc_tm[i-11];
00555                                                 }
00556                                     break;
00557                                     }
00558                      default:{sc.printf("INVALID TC");
00559                             //send invalid TC TM
00560                              break;}
00561                                 }
00562                         break;
00563                         }
00564                         case 13:
00565                         {
00566                                sc.printf("LARGE DATA TRANSFER\r\r\n");  //tm is ack_l234
00567                                 telemetry_type2[0]=tmid2_spr_tm;
00568                                             telemetry_type2[1]=tc_pac_seq_cnt_tm;
00569                                             telemetry_type2[2]=tm_pac_seq_cnt_tm;
00570                                             telemetry_type2[3]=ackcode_tm;
00571                                             for(int i=3;i<11;i++){
00572                                                   telemetry_type2[i]=0x00;
00573                                                 }
00574                                               for(int i=11;i<13;i++){
00575                                                   telemetry_type2[i]=crc_tm[i-11];
00576                                                 }
00577                         break;
00578                         }
00579                         case 15:
00580                         {
00581                                 sc.printf("ONBOARD STORAGE AND RETRIEVAL SERVICE\r\r\n");
00582                                 switch(sub_service_type){
00583                                     case 0:
00584                                     {
00585                                            sc.printf("SCF\r\r\n"); //tm is obsrs
00586                                            telemetry_type1[0]=frmseqcnt_fileheadpointer_tm;
00587                                            for(int i=1;i<128;i++){
00588                                              telemetry_type1[i]=multi_obsrs_tm_packets[i-1];
00589                                            }
00590                                            for(int i=128;i<130;i++){
00591                                              telemetry_type1[i]=crc_tm[i-128];
00592                                            }
00593                                     break;
00594                                     }
00595                                     case 1:
00596                                     {
00597                                            sc.printf("SFF-AT\r\r\n");
00598                                            telemetry_type1[0]=frmseqcnt_fileheadpointer_tm; //tm is obsrs
00599                                            for(int i=1;i<128;i++){
00600                                              telemetry_type1[i]=multi_obsrs_tm_packets[i-1];
00601                                            }
00602                                            for(int i=128;i<130;i++){
00603                                              telemetry_type1[i]=crc_tm[i-128];
00604                                            }
00605                                     break;
00606                                     }
00607                                     case 2:
00608                                     {
00609                                            sc.printf("SFF-BT\r\r\n"); //tm is obsrs
00610                                            telemetry_type1[0]=frmseqcnt_fileheadpointer_tm;
00611                                            for(int i=1;i<128;i++){
00612                                              telemetry_type1[i]=multi_obsrs_tm_packets[i-1];
00613                                            }
00614                                            for(int i=128;i<130;i++){
00615                                              telemetry_type1[i]=crc_tm[i-128];
00616                                            }
00617                                     break;
00618                                     }
00619                                     case 3:
00620                                     {
00621                                            sc.printf("LOG\r\r\n"); //tm is obsrs
00622                                            telemetry_type1[0]=frmseqcnt_fileheadpointer_tm;
00623                                            for(int i=1;i<128;i++){
00624                                              telemetry_type1[i]=multi_obsrs_tm_packets[i-1];
00625                                            }
00626                                            for(int i=128;i<130;i++){
00627                                              telemetry_type1[i]=crc_tm[i-128];
00628                                            }
00629                                     break;
00630                                     }
00631                                     case 4:
00632                                     {
00633                                            sc.printf("HK_ARCHIVE\r\r\n"); //tm is obsrs
00634                                            telemetry_type1[0]=frmseqcnt_fileheadpointer_tm;
00635                                            for(int i=1;i<128;i++){
00636                                              telemetry_type1[i]=multi_obsrs_tm_packets[i-1];
00637                                            }
00638                                            for(int i=128;i<130;i++){
00639                                              telemetry_type1[i]=crc_tm[i-128];
00640                                            }
00641                                     break;
00642                                     }
00643                                    default:{sc.printf("INVALID TC");
00644                             //send invalid TC TM
00645                             break;
00646                              }
00647                                 } 
00648                         break;
00649                         }
00650                  default:{sc.printf("INVALID TC");
00651                          //send invalid TC TM
00652                         break;
00653                          }
00654                    }
00655             break;
00656             }
00657           default:{sc.printf("INVALID TC");
00658                    //send invalid TC TM
00659                    break;
00660                    }
00661         }
00662 
00663 }