Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int dataReceived;
- int status_notification;
- static int table[256];
- static int have_table ;
- int Checksum(unsigned char *buf , int len)
- {
- int Sum=0;
- for(int i=0;i<len;i++)
- {
- Sum+=buf[i];
- }
- //Sum=~Sum;
- unsigned low8bits = 0;
- low8bits = Sum & 0xFF;
- return low8bits;
- }
- char* concat(const char *s1, const char *s2)
- {
- char *result = malloc(strlen(s1) + strlen(s2) + 1);
- strcpy(result, s1);
- strcat(result, s2);
- return result;
- }
- int main(int argc, char *argv[])
- {
- int rem;
- int i, j;
- have_table = 0;
- /* This check is not thread safe; there is no mutex. */
- if (have_table == 0) {
- /* Calculate CRC table. */
- for (i = 0; i < 256; i++) {
- rem = i; /* remainder from polynomial division */
- for (j = 0; j < 8; j++) {
- if (rem & 1) {
- rem >>= 1;
- rem ^= 0xedb88320;
- } else
- rem >>= 1;
- }
- table[i] = rem;
- }
- have_table = 1;
- }
- FILE *pf,*temp,*readtemp,*spf;
- int q=0;
- int n = 4096;
- int byteCount=0;
- int checkSum=0;
- char c;
- unsigned char buff[0x1000]={0x00};
- unsigned char tempSrecStr[79];
- pf=fopen(argv[1],"rb+");
- readtemp=fopen("Temp.txt","r");
- spf=fopen("SREC-Output.text","w");
- temp=fopen("Temp.txt","w");
- int pos=0;
- int pos2=0;
- if(pf==NULL)
- {
- printf("error");
- }
- fseek(pf, 0L, SEEK_END);
- int res = ftell(pf);
- fseek(pf, 0L, SEEK_SET);
- while(!feof(pf))
- {
- fread(&buff,res,1,pf);
- }
- for(int i=0;i<res/16;i++){
- for(int j=0;j<16;j++){
- printf("0x%02x ",buff[pos]);
- fprintf(temp,"0x%02x ",buff[pos]);
- pos++;
- }
- printf("\n");
- fprintf(temp, "\n");
- }
- //printf("%d ",pos2);
- //function to s3 size adresa(???)
- for (c = getc(readtemp); c != '\n'; c = getc(readtemp))
- {
- byteCount++;
- }
- //snprintf(buff2,32,"S3" "%x" "%d" "%2x" "%s",byteCount, &buff, buff,checksum(buff,0x1000));
- // for(int i=0;i<res/16;i++){
- // for(int j=0;j<16;j++){
- //
- // fprintf(spf,"0x%02x ",buff2[pos]);
- //
- // }
- //
- char *s3="S3";
- char *len="25";
- int addr=00000000;
- unsigned char myCurrentByte=0x16;
- int Suma=0;
- int aux = 0;
- unsigned char auxBuf[32]={0};
- int sum;
- for(int p=0;p<128;p++){
- fprintf(spf,"%s%s%.8x ",s3,len,addr);
- sum =0x25;
- if(addr>0xff)
- {
- int ax = addr & 0xff;
- sum += ax;
- ax = addr >> 8;
- sum += ax;
- }
- else
- {
- sum = sum + addr;
- }
- addr += 0x20;
- for(int j=0;j<32;j++){
- auxBuf[i]=buff[j+aux];
- fprintf(spf,"%.2x",auxBuf[i]);
- sum+=auxBuf[i];
- }
- sum = ~sum;
- // printf("\n%x ",sum);
- //printf("%.2x",crc)
- fprintf(spf,"%.2x",sum & 0xff);
- aux += 32;
- fprintf(spf,"\n");
- }
- fclose(pf);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement