- Make a small program to create a unique revision Nr. This can be a counter, but we simply use a simple "Binarized" Timestamp. This does not only give a small and unique number, it also allows to backtrack the version date and time. This small command line program was written in Delphi and the important bits look like:
Code: Select all
program SetRev; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Classes; var FileName:String; ResFile:tFileStream; Data:array[0..1] of integer; Bin:ARRAY[0..7] of byte; begin try if ParamCount=1 then begin FileName:=ChangeFileExt(ParamStr(1), '.res'); ResFile:=tFileStream.Create(FileName, fmCreate or fmOpenWrite or fmShareExclusive); Data[0]:=DateToInt(Now); //This procedure translates the current date into an integer. We use the same format as the LPC1769 uses. Data[1]:=TimeToInt(Now); //This procedure translates the current time into an integer. Again, the same format as the LPC1769 uses. //any other unique number generator (e.g. like Delphi built-in UUID's) would be fine too. Just keep an eye on the length of the ID System.Move(Data, Bin, 8); ResFile.WriteData(Bin, Length(Bin)); ResFile.Free; Writeln('New Revision Data Written to '+FileName); end else Halt(1); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
- Install this program in the Astrobe Folder.
- Now select a module to add the RES to and add the following lines to the "Tools.ini" File (assuming that "MYAPP.mod" is your file to hold the version):
Code: Select all
[Command5] MenuItem=Set APP &Revision Path=C:\Program Files (x86)\AstrobeM3 Professional Edition\SetRev.exe Parameters="MYAPP.mod" WorkingFolder=%FileDir% ConsoleApp=TRUE Prompt=FALSE
- To read the firmware revision code as bytes, add into MYAPP.mod
Code: Select all
PROCEDURE GetFirmware*(VAR FW:ARRAY OF BYTE); VAR Res:ResData.Resource; I:INTEGER; BEGIN ResData.Open(Res, "MYAPP"); IF ResData.Size(Res) = 8 THEN FOR I:=0 TO 7 DO ResData.GetByte(Res, I, FW[I]) END ELSE FOR I:=0 TO 7 DO FW[I]:=0 END END; END GetFirmware;
- This proc can be easily modified to get back the original two integers of even the timestamp
Hope this is useful....................
(PS. Drop a line if you would need the SetRev.exe)