#include #include #include #include #include #include typedef struct _CVTDescriptor { unsigned char descriptor_tag; unsigned char descriptor_len; unsigned char descriptor_data[128]; } CVTDescriptor; void makefile(char * outputName, unsigned char *header, unsigned char *buff, unsigned char nBytes, int count) { FILE * pFile; pFile = fopen(outputName , "wb" ); int i =0; for(i=0;i>8); pCvt[24] = (unsigned char)(frequency_vector&0x00FF); pCvt[25] = transport_value; pCvt[26] = (unsigned char)((PID&0xFF00)>>8); pCvt[27] = (unsigned char)(PID&0x00FF); pCvt[28] = code_file_name_length; for(i=29;i<29+code_file_name_length;i++) { pCvt[i] = code_file_name_byte[i-29]; } pCvt[29+code_file_name_length] = code_verification_certificate; pCvtHeader[0] = 0xD9; pCvtHeader[1] = 0x30; pCvtHeader[2] = length_field; switch(download_command) { case 0:sprintf(filename,"cvt_dn_%d.%d", (pCvt[18]<<8)+pCvt[19],(pCvt[20]<<8)+pCvt[21]); break; case 1:sprintf(filename,"cvt_df_%d.%d", (pCvt[18]<<8)+pCvt[19],(pCvt[20]<<8)+pCvt[21]); break; case 2:sprintf(filename,"cvt_ne_%d.%d", (pCvt[18]<<8)+pCvt[19],(pCvt[20]<<8)+pCvt[21]); break; default: break; } makefile(filename,pCvtHeader,pCvt,length_field,3000); printf("code_version_table_tag = 0x%6x\n",(pCvt[0]<<16) + (pCvt[1]<<8) + pCvt[2]); printf("length_field = 0x%2x\n",pCvt[3]); printf("number_of_descriptors = 0x%02x\n",pCvt[4]); printf("descriptors[0].descriptor_tag = 0x%02x\n",pCvt[5]); printf("descriptors[0].descriptor_len = 0x%02x\n",pCvt[6]); printf("descriptors[0].descriptor_data = %c%c%c\n",pCvt[7],pCvt[8],pCvt[9]); printf("descriptors[1].descriptor_tag = 0x%02x\n",pCvt[10]); printf("descriptors[1].descriptor_len = 0x%02x\n",pCvt[11]); printf("descriptors[1].descriptor_data = %c%c%c%c\n",pCvt[12],pCvt[13],pCvt[14],pCvt[15]); printf("descriptors[2].descriptor_tag = 0x%02x\n",pCvt[16]); printf("descriptors[2].descriptor_len = 0x%02x\n",pCvt[17]); printf("descriptors[2].descriptor_data = %02x%02x%02x%02x\n",pCvt[18],pCvt[19],pCvt[20],pCvt[21]); printf("download_type = 0x%02x\n",(pCvt[22]&0xF0)>>4); printf("download_command = 0x%02x\n",pCvt[22]&0x0F); printf("frequency_vector = 0x%04x\n",(pCvt[23]<<8) + pCvt[24]); printf("transport_value = 0x%02x\n",pCvt[25]); printf("PID = 0x%2x\n",(pCvt[26]<<8) + pCvt[27]); printf("code_file_name_length = 0x%02x\n",pCvt[28]); printf("code_file_name_byte = "); for(i=29;i<29+code_file_name_length;i++) { printf("%c",pCvt[i]); } printf("\n"); printf("code_verification_certificate = 0x%2x\n",pCvt[29+code_file_name_length]); free(pCvt); return 0; }