Just4Trionic - CAN and BDM FLASH programmer for Saab cars

Dependencies:   mbed

Committer:
Just4pLeisure
Date:
Wed May 19 12:39:18 2010 +0000
Revision:
0:e0b964252a05

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Just4pLeisure 0:e0b964252a05 1
Just4pLeisure 0:e0b964252a05 2 #include "SRecUtils.h"
Just4pLeisure 0:e0b964252a05 3
Just4pLeisure 0:e0b964252a05 4 // SRecGetByte
Just4pLeisure 0:e0b964252a05 5 //
Just4pLeisure 0:e0b964252a05 6 // Returns an int which is a single byte made up from two ascii characters read from an S-record file
Just4pLeisure 0:e0b964252a05 7 //
Just4pLeisure 0:e0b964252a05 8 // inputs: a file pointer for the S-record file
Just4pLeisure 0:e0b964252a05 9 // return: an integer which is the byte in hex format
Just4pLeisure 0:e0b964252a05 10
Just4pLeisure 0:e0b964252a05 11 int SRecGetByte(FILE *fp) {
Just4pLeisure 0:e0b964252a05 12 int c = 0;
Just4pLeisure 0:e0b964252a05 13 int retbyte = 0;
Just4pLeisure 0:e0b964252a05 14
Just4pLeisure 0:e0b964252a05 15 for(int i=0; i<2; i++) {
Just4pLeisure 0:e0b964252a05 16 if ((c = fgetc(fp)) == EOF) return -1;
Just4pLeisure 0:e0b964252a05 17 c -= (c > '9') ? ('A' - 10) : '0';
Just4pLeisure 0:e0b964252a05 18 retbyte = (retbyte << 4) + c;
Just4pLeisure 0:e0b964252a05 19 }
Just4pLeisure 0:e0b964252a05 20 return retbyte;
Just4pLeisure 0:e0b964252a05 21 }
Just4pLeisure 0:e0b964252a05 22
Just4pLeisure 0:e0b964252a05 23 // SRecGetAddress
Just4pLeisure 0:e0b964252a05 24 //
Just4pLeisure 0:e0b964252a05 25 // Returns an int which is the address part of the S-record line
Just4pLeisure 0:e0b964252a05 26 // The S-record type 1/2/3 or 9/8/7 determines if there are 2, 3 or 4 bytes in the address
Just4pLeisure 0:e0b964252a05 27 //
Just4pLeisure 0:e0b964252a05 28 // inputs: an integer which is the number of bytes that make up the address; 2, 3 or 4 bytes
Just4pLeisure 0:e0b964252a05 29 // a file pointer for the S-record file
Just4pLeisure 0:e0b964252a05 30 // return: an integer which is the load address for the S-record
Just4pLeisure 0:e0b964252a05 31
Just4pLeisure 0:e0b964252a05 32 int SRecGetAddress(int size, FILE *fp) {
Just4pLeisure 0:e0b964252a05 33 int address = 0;
Just4pLeisure 0:e0b964252a05 34 for (int i = 0; i<size; i++)
Just4pLeisure 0:e0b964252a05 35 {
Just4pLeisure 0:e0b964252a05 36 address <<= 8;
Just4pLeisure 0:e0b964252a05 37 address |= SRecGetByte (fp);
Just4pLeisure 0:e0b964252a05 38 }
Just4pLeisure 0:e0b964252a05 39 return address;
Just4pLeisure 0:e0b964252a05 40 }