Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.76 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int dataReceived;
  6. int status_notification;
  7. static int table[256];
  8. static int have_table ;
  9.  
  10.  
  11.  
  12. int Checksum(unsigned char *buf , int len)
  13. {
  14.     int Sum=0;
  15.     for(int i=0;i<len;i++)
  16.     {
  17.         Sum+=buf[i];
  18.     }
  19.  
  20.     //Sum=~Sum;
  21.     unsigned low8bits = 0;
  22.     low8bits = Sum & 0xFF;
  23.     return low8bits;
  24. }
  25.  
  26.  
  27. char* concat(const char *s1, const char *s2)
  28. {
  29.     char *result = malloc(strlen(s1) + strlen(s2) + 1);
  30.  
  31.     strcpy(result, s1);
  32.     strcat(result, s2);
  33.     return result;
  34. }
  35. int main(int argc, char *argv[])
  36. {
  37.  
  38.     int rem;
  39.     int i, j;
  40.  
  41.     have_table = 0;
  42.  
  43.     /* This check is not thread safe; there is no mutex. */
  44.     if (have_table == 0) {
  45.         /* Calculate CRC table. */
  46.         for (i = 0; i < 256; i++) {
  47.             rem = i;  /* remainder from polynomial division */
  48.             for (j = 0; j < 8; j++) {
  49.                 if (rem & 1) {
  50.                     rem >>= 1;
  51.                     rem ^= 0xedb88320;
  52.                 } else
  53.                     rem >>= 1;
  54.             }
  55.             table[i] = rem;
  56.         }
  57.         have_table = 1;
  58.     }
  59.  
  60.  
  61.     FILE *pf,*temp,*readtemp,*spf;
  62.  
  63.     int q=0;
  64.     int n = 4096;
  65.     int byteCount=0;
  66.     int checkSum=0;
  67.     char c;
  68.     unsigned char buff[0x1000]={0x00};
  69.     unsigned char tempSrecStr[79];
  70.  
  71.     pf=fopen(argv[1],"rb+");
  72.     readtemp=fopen("Temp.txt","r");
  73.     spf=fopen("SREC-Output.text","w");
  74.    
  75.     temp=fopen("Temp.txt","w");
  76.  
  77.     int pos=0;
  78.     int pos2=0;
  79.  
  80.  
  81.     if(pf==NULL)
  82.     {
  83.         printf("error");
  84.     }
  85.  
  86.     fseek(pf, 0L, SEEK_END);
  87.  
  88.     int res = ftell(pf);
  89.     fseek(pf, 0L, SEEK_SET);
  90.     while(!feof(pf))
  91.     {
  92.  
  93.         fread(&buff,res,1,pf);
  94.  
  95.  
  96.     }
  97.  
  98.     for(int i=0;i<res/16;i++){
  99.         for(int j=0;j<16;j++){
  100.  
  101.             printf("0x%02x ",buff[pos]);
  102.             fprintf(temp,"0x%02x ",buff[pos]);
  103.             pos++;
  104.         }
  105.         printf("\n");
  106.         fprintf(temp, "\n");
  107.  
  108.     }
  109.     //printf("%d ",pos2);
  110.  
  111.     //function to s3 size adresa(???)
  112.     for (c = getc(readtemp); c != '\n'; c = getc(readtemp))
  113.     {
  114.         byteCount++;
  115.     }
  116.  
  117.  
  118.     //snprintf(buff2,32,"S3" "%x" "%d" "%2x" "%s",byteCount, &buff, buff,checksum(buff,0x1000));
  119.  
  120.     //  for(int i=0;i<res/16;i++){
  121.     //          for(int j=0;j<16;j++){
  122.     //             
  123.     //              fprintf(spf,"0x%02x ",buff2[pos]);
  124.     //             
  125.     //          }
  126.     // 
  127.  
  128.     char  *s3="S3";
  129.     char  *len="25";
  130.     int addr=00000000;
  131.  
  132.     unsigned char myCurrentByte=0x16;
  133.  
  134.  
  135.     int Suma=0;
  136.     int aux = 0;
  137.     unsigned char auxBuf[32]={0};
  138.     int sum;
  139.     for(int p=0;p<128;p++){
  140.         fprintf(spf,"%s%s%.8x  ",s3,len,addr);
  141.  
  142.         sum =0x25;
  143.         if(addr>0xff)
  144.         {
  145.             int ax = addr & 0xff;
  146.             sum += ax;
  147.             ax = addr >> 8;
  148.             sum += ax;
  149.         }
  150.         else
  151.         {
  152.             sum = sum + addr;
  153.         }
  154.         addr += 0x20;
  155.  
  156.         for(int j=0;j<32;j++){
  157.             auxBuf[i]=buff[j+aux];
  158.  
  159.  
  160.             fprintf(spf,"%.2x",auxBuf[i]);
  161.  
  162.             sum+=auxBuf[i];
  163.  
  164.  
  165.         }
  166.         sum = ~sum;
  167.         //  printf("\n%x  ",sum);
  168.         //printf("%.2x",crc)
  169.         fprintf(spf,"%.2x",sum & 0xff);
  170.         aux += 32;
  171.  
  172.  
  173.         fprintf(spf,"\n");
  174.     }
  175.  
  176.  
  177.     fclose(pf);
  178.     return 0;
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement