with Ada.Text_IO; with bcm2835_h; with st7565lcd; with Interfaces; use Interfaces; with Ada.Text_IO; use Ada.Text_IO; with Ada.Streams.Stream_IO; with Ada.Command_Line; use Ada.Command_Line; procedure raspilcd is -- shorter names for packages package IO renames Ada.Text_IO; package LCD renames st7565lcd; package IOS renames Ada.Streams.Stream_IO; -- stream.io definitions My_File : IOS.FILE_TYPE; My_File_Access : IOS.STREAM_ACCESS; -- picture data bmp_picture : LCD.t_bmp_picture; -- lcd pixel array lcd_data : LCD.t_lcd_array; -- exception handling cli_exception : exception; begin -- no picture given if Argument_Count /= 1 then raise cli_exception; end if; -- open picture file declare filename : string := Argument(1); begin IOS.Open(My_File, IOS.In_File, filename); My_File_Access := IOS.Stream(My_File); end; -- read in picture LCD.read_bmp(file => My_File, file_access => My_File_Access, bmp_picture => bmp_picture); --Put_Line("Width: " & Integer'Image(picture_header.biWidth)); --Put_Line("Height: " & Integer'Image(picture_header.biHeight)); --Put_Line("Color Depth: " & Integer'Image(Integer(picture_header.biBitCount))); --Put_Line("Compression: " & Integer'Image(Integer(picture_header.biCompression))); -- close picture file Ada.Streams.Stream_IO.Close(My_File); -- convert bmp to lcd matrix lcd_data := LCD.bmp_to_lcd(bmp_picture); -- load bcm2835 lib -- print picture and some text on lcd if integer(bcm2835_h.bcm2835_init) = 0 then IO.Put_Line("Error while initializing BCM2835 library"); else LCD.io_init; LCD.lcd_init; LCD.lcd_picture(xpos => 0, ypos => 0, picture => lcd_data); --bcm2835_h.bcm2835_delay(5000); --LCD.lcd_clear; --LCD.lcd_ascii57_string(xpos => 0, ypos => 0, data => "raspiFPGA 0.1"); --LCD.lcd_ascii57_string(xpos => 0, ypos => 1, data => "(c) raspiDEV 2013"); -- close library if integer(bcm2835_h.bcm2835_close) = 0 then IO.Put_Line("Error while closing BCM2835 library"); end if; end if; -- exception handling exception when cli_exception => put_line(LCD.exception_head); put_line("usage: ./raspitest BMP-FILE (as root)"); when LCD.bmp_exception => put_line(LCD.exception_head); put_line("error: malformed BMP-FILE (valid: 128x64, no compression, 32bpp)"); when LCD.mask_exception => put_line(LCD.exception_head); put_line("error: malformed BMP color mask"); end raspilcd;