#include <errno.h>
#include <time.h>
-#include <time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <termios.h>
+// #include <time.h>
+// #include <sys/types.h>
+// #include <sys/stat.h>
+// #include <fcntl.h>
+// #include <termios.h>
#include "Goldelox_Types4D.h" // defines data types used by the 4D Routines
#include "Goldelox_const4D.h" // defines for 4dgl constants, generated by conversion of 4DGL constants to target language
return;
}
// iOut = write(cPort, psOutput, nCount);
- iOut = serif->write(psOutput, nCount, TimeLimit4D);
+ iOut = serif->write_tx(psOutput, nCount);
+ serif->flush_tx(TimeLimit4D);
if (iOut < 0)
{
printf("goldelox: write error \n");
return;
}
-void WriteChars(unsigned char *psOutput)
+void WriteChars(gl_serif_t *serif, unsigned char *psOutput)
{
// Include NULL in output
- WriteBytes(psOutput, strlen((char *)psOutput) + 1);
+ WriteBytes(serif, psOutput, strlen((char *)psOutput) + 1);
return;
}
-void WriteWords(gl_word_t * Source, int Size)
+void WriteWords(gl_serif_t *serif, gl_word_t * Source, int Size)
{
gl_word_t wk ;
int i ;
{
wk = *Source++ ;
wk = (wk >> 8) + (wk << 8) ;
- WriteBytes((unsigned char *)&wk, 2);
+ WriteBytes(serif, (unsigned char *)&wk, 2);
}
}
}
iIdx = 0;
iLeft = iMax;
+ time_t curTime = time(NULL);
while (iLeft > 0)
{
// iIn = read(cPort, &psData[iIdx], iLeft);
iIn = serif->read_rx(&psData[iIdx], iLeft, TimeLimit4D);
+ if (time(NULL) - curTime > 2) {
+ printf("goldelox: timeout \n");
+ return -1;
+ }
if (iIn < 0)
{
printf("goldelox: read error \n");
return iMax;
}
-void getbytes(unsigned char *data, int size)
+void getbytes(gl_serif_t *serif, unsigned char *data, int size)
{
int readc;
- readc = ReadSerPort(data, size) ;
+ readc = ReadSerPort(serif, data, size) ;
if ((readc != size)
&& (Callback4D != NULL) )
{
}
}
-void GetAck(void)
+void GetAck(gl_serif_t *serif)
{
int readc;
unsigned char readx ;
Error4D = Err4D_OK;
return;
}
- readc = ReadSerPort(&readx, 1) ;
+ readc = ReadSerPort(serif, &readx, 1) ;
if (readc != 1)
{
}
-gl_word_t GetWord(void)
+gl_word_t GetWord(gl_serif_t *serif)
{
int readc;
unsigned char readx[2] ;
if (Error4D != Err4D_OK)
return 0 ;
- readc = ReadSerPort(&readx[0], 2) ;
+ readc = ReadSerPort(serif, &readx[0], 2) ;
if (readc != 2)
{
return readx[0] << 8 | readx[1] ;
}
-void getString(unsigned char *outStr, int strLen)
+void getString(gl_serif_t *serif, unsigned char *outStr, int strLen)
{
int readc;
return ;
}
- readc = ReadSerPort(outStr, strLen) ;
+ readc = ReadSerPort(serif, outStr, strLen) ;
if (readc != strLen)
{
return;
}
-gl_word_t GetAckResp(void)
+gl_word_t GetAckResp(gl_serif_t *serif)
{
- GetAck() ;
- return GetWord() ;
+ GetAck(serif);
+ return GetWord(serif);
}
-gl_word_t WaitForAck(void)
+gl_word_t WaitForAck(gl_serif_t *serif)
{
int saveTimeout = TimeLimit4D;
void *saveCB = Callback4D;
TimeLimit4D = 60 * 1000;
do
{
- GetAck();
+ GetAck(serif);
} while (Error4D != Err4D_OK);
// Restore callback/timeout saves
TimeLimit4D = saveTimeout;
Callback4D = saveCB;
- return GetWord();
+ return GetWord(serif);
}
-gl_word_t GetAckRes2Words(gl_word_t * word1, gl_word_t * word2)
+gl_word_t GetAckRes2Words(gl_serif_t *serif, gl_word_t * word1, gl_word_t * word2)
{
int Result ;
- GetAck() ;
- Result = GetWord() ;
- *word1 = GetWord() ;
- *word2 = GetWord() ;
+ GetAck(serif) ;
+ Result = GetWord(serif) ;
+ *word1 = GetWord(serif) ;
+ *word2 = GetWord(serif) ;
return Result ;
}
-void GetAck2Words(gl_word_t * word1, gl_word_t * word2)
+void GetAck2Words(gl_serif_t *serif, gl_word_t * word1, gl_word_t * word2)
{
- GetAck() ;
- *word1 = GetWord() ;
- *word2 = GetWord() ;
+ GetAck(serif) ;
+ *word1 = GetWord(serif) ;
+ *word2 = GetWord(serif) ;
}
-gl_word_t GetAckResSector(gl_sector_t Sector)
+gl_word_t GetAckResSector(gl_serif_t *serif, gl_sector_t Sector)
{
int Result;
- GetAck() ;
- Result = GetWord() ;
- getbytes(Sector, 512) ;
+ GetAck(serif) ;
+ Result = GetWord(serif) ;
+ getbytes(serif, Sector, 512) ;
return Result ;
}
-gl_word_t GetAckResStr(unsigned char * OutStr)
+gl_word_t GetAckResStr(gl_serif_t *serif, unsigned char * OutStr)
{
int Result ;
- GetAck() ;
- Result = GetWord() ;
- getString(OutStr, Result) ;
+ GetAck(serif) ;
+ Result = GetWord(serif) ;
+ getString(serif, OutStr, Result) ;
return Result ;
}
-gl_word_t GetAckResData(gl_byte_array_t OutData, gl_word_t size)
+gl_word_t GetAckResData(gl_serif_t *serif, gl_byte_array_t OutData, gl_word_t size)
{
int Result ;
- GetAck() ;
- Result = GetWord() ;
- getbytes(OutData, size) ;
+ GetAck(serif) ;
+ Result = GetWord(serif) ;
+ getbytes(serif, OutData, size) ;
return Result ;
}
* Starts of 4D Compound Routines
*/
-gl_word_t charheight(unsigned char TestChar)
+gl_word_t gl_charheight(gl_display_t *display, unsigned char TestChar)
{
unsigned char towrite[3] ;
towrite[0]= F_charheight >> 8 ;
towrite[1]= F_charheight ;
towrite[2]= TestChar;
- WriteBytes(towrite, 3) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 3) ;
+ return GetAckResp(display->serif);
}
-gl_word_t charwidth(unsigned char TestChar)
+gl_word_t gl_charwidth(gl_display_t *display, unsigned char TestChar)
{
unsigned char towrite[3] ;
towrite[0]= F_charwidth >> 8 ;
towrite[1]= F_charwidth ;
towrite[2]= TestChar;
- WriteBytes(towrite, 3) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 3) ;
+ return GetAckResp(display->serif) ;
}
-void gfx_BGcolour(gl_word_t Color)
+void gl_gfx_BGcolour(gl_display_t *display, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_BGcolour >> 8 ;
towrite[1]= F_gfx_BGcolour & 0xFF;
- towrite[2]= Color >> 8 ;
- towrite[3]= Color ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ towrite[2]= Color >> 8;
+ towrite[3]= Color;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif);
}
-void gfx_ChangeColour(gl_word_t OldColor, gl_word_t NewColor)
+void gl_gfx_ChangeColour(gl_display_t *display, gl_word_t OldColor,
+ gl_word_t NewColor)
{
unsigned char towrite[6] ;
towrite[0]= F_gfx_ChangeColour >> 8 ;
towrite[3]= OldColor ;
towrite[4]= NewColor >> 8 ;
towrite[5]= NewColor ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6);
+ GetAck(display->serif);
}
-void gfx_Circle(gl_word_t X, gl_word_t Y, gl_word_t Radius, gl_word_t Color)
+void gl_gfx_Circle(gl_display_t *display, gl_word_t X, gl_word_t Y,
+ gl_word_t Radius, gl_word_t Color)
{
unsigned char towrite[10] ;
towrite[0]= F_gfx_Circle >> 8 ;
towrite[7]= Radius ;
towrite[8]= Color >> 8 ;
towrite[9]= Color ;
- WriteBytes(towrite, 10) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 10) ;
+ GetAck(display->serif);
}
-void gfx_CircleFilled(gl_word_t X, gl_word_t Y, gl_word_t Radius, gl_word_t Color)
+void gl_gfx_CircleFilled(gl_display_t *display, gl_word_t X, gl_word_t Y,
+ gl_word_t Radius, gl_word_t Color)
{
unsigned char towrite[10] ;
towrite[0]= F_gfx_CircleFilled >> 8 ;
towrite[7]= Radius ;
towrite[8]= Color >> 8 ;
towrite[9]= Color ;
- WriteBytes(towrite, 10) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 10) ;
+ GetAck(display->serif) ;
}
-void gfx_Clipping(gl_word_t OnOff)
+void gl_gfx_Clipping(gl_display_t *display, gl_word_t OnOff)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_Clipping >> 8 ;
towrite[1]= F_gfx_Clipping & 0xFF;
towrite[2]= OnOff >> 8 ;
towrite[3]= OnOff ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4);
+ GetAck(display->serif);
}
-void gfx_ClipWindow(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2)
+void gl_gfx_ClipWindow(gl_display_t *display, gl_word_t X1, gl_word_t Y1,
+ gl_word_t X2, gl_word_t Y2)
{
- unsigned char towrite[10] ;
+ unsigned char towrite[10];
- towrite[0]= F_gfx_ClipWindow >> 8 ;
- towrite[1]= F_gfx_ClipWindow ;
- towrite[2]= X1 >> 8 ;
- towrite[3]= X1 ;
- towrite[4]= Y1 >> 8 ;
- towrite[5]= Y1 ;
- towrite[6]= X2 >> 8 ;
- towrite[7]= X2 ;
- towrite[8]= Y2 >> 8 ;
- towrite[9]= Y2 ;
- WriteBytes(towrite, 10) ;
- GetAck() ;
+ towrite[0]= F_gfx_ClipWindow >> 8;
+ towrite[1]= F_gfx_ClipWindow;
+ towrite[2]= X1 >> 8;
+ towrite[3]= X1;
+ towrite[4]= Y1 >> 8;
+ towrite[5]= Y1;
+ towrite[6]= X2 >> 8;
+ towrite[7]= X2;
+ towrite[8]= Y2 >> 8;
+ towrite[9]= Y2;
+ WriteBytes(display->serif, towrite, 10);
+ GetAck(display->serif);
}
-void gfx_Cls()
+void gl_gfx_Cls(gl_display_t *display)
{
- unsigned char towrite[2] ;
+ unsigned char towrite[2];
- towrite[0]= F_gfx_Cls >> 8 ;
- towrite[1]= F_gfx_Cls ;
- WriteBytes(towrite, 2) ;
- GetAck() ;
+ towrite[0]= F_gfx_Cls >> 8;
+ towrite[1]= F_gfx_Cls;
+ WriteBytes(display->serif, towrite, 2);
+ GetAck(display->serif);
}
-void gfx_Contrast(gl_word_t Contrast)
+void gl_gfx_Contrast(gl_display_t *display, gl_word_t Contrast)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_Contrast >> 8 ;
towrite[1]= F_gfx_Contrast & 0xFF;
towrite[2]= Contrast >> 8 ;
towrite[3]= Contrast ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void gfx_FrameDelay(gl_word_t Msec)
+void gl_gfx_FrameDelay(gl_display_t *display, gl_word_t Msec)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_FrameDelay >> 8 ;
towrite[1]= F_gfx_FrameDelay & 0xFF;
towrite[2]= Msec >> 8 ;
towrite[3]= Msec ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-gl_word_t gfx_GetPixel(gl_word_t X, gl_word_t Y)
+gl_word_t gl_gfx_GetPixel(gl_display_t *display, gl_word_t X, gl_word_t Y)
{
unsigned char towrite[6] ;
towrite[0]= F_gfx_GetPixel >> 8 ;
towrite[3]= X ;
towrite[4]= Y >> 8 ;
towrite[5]= Y ;
- WriteBytes(towrite, 6) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 6);
+ return GetAckResp(display->serif);
}
-void gfx_Line(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color)
+void gl_gfx_Line(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color)
{
unsigned char towrite[12] ;
towrite[0]= F_gfx_Line >> 8 ;
towrite[9]= Y2 ;
towrite[10]= Color >> 8 ;
towrite[11]= Color ;
- WriteBytes(towrite, 12) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 12) ;
+ GetAck(display->serif) ;
}
-void gfx_LinePattern(gl_word_t Pattern)
+void gl_gfx_LinePattern(gl_display_t *display, gl_word_t Pattern)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_LinePattern >> 8 ;
towrite[1]= F_gfx_LinePattern & 0xFF;
towrite[2]= Pattern >> 8 ;
towrite[3]= Pattern ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4);
+ GetAck(display->serif);
}
-void gfx_LineTo(gl_word_t X, gl_word_t Y)
+void gl_gfx_LineTo(gl_display_t *display, gl_word_t X, gl_word_t Y)
{
unsigned char towrite[6] ;
towrite[0]= F_gfx_LineTo >> 8 ;
towrite[3]= X ;
towrite[4]= Y >> 8 ;
towrite[5]= Y ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void gfx_MoveTo(gl_word_t X, gl_word_t Y)
+void gl_gfx_MoveTo(gl_display_t *display, gl_word_t X, gl_word_t Y)
{
unsigned char towrite[6] ;
towrite[0]= F_gfx_MoveTo >> 8 ;
towrite[3]= X ;
towrite[4]= Y >> 8 ;
towrite[5]= Y ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6);
+ GetAck(display->serif);
}
-gl_word_t gfx_Orbit(gl_word_t Angle, gl_word_t Distance, gl_word_t * Xdest, gl_word_t * Ydest)
+gl_word_t gl_gfx_Orbit(gl_display_t *display, gl_word_t Angle, gl_word_t Distance, gl_word_t * Xdest, gl_word_t * Ydest)
{
unsigned char towrite[6] ;
towrite[0]= F_gfx_Orbit >> 8 ;
towrite[3]= Angle ;
towrite[4]= Distance >> 8 ;
towrite[5]= Distance ;
- WriteBytes(towrite, 6) ;
- GetAck2Words(Xdest,Ydest) ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck2Words(display->serif, Xdest,Ydest) ;
return 0 ;
}
-void gfx_OutlineColour(gl_word_t Color)
+void gl_gfx_OutlineColour(gl_display_t *display, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_OutlineColour >> 8 ;
towrite[1]= F_gfx_OutlineColour & 0xFF;
towrite[2]= Color >> 8 ;
towrite[3]= Color ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void gfx_Polygon(gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color)
+void gl_gfx_Polygon(gl_display_t *display, gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_Polygon >> 8 ;
towrite[1]= F_gfx_Polygon ;
towrite[2]= n >> 8 ;
towrite[3]= n ;
- WriteBytes(towrite, 4) ;
- WriteWords(Xvalues, n) ;
- WriteWords(Yvalues, n) ;
+ WriteBytes(display->serif, towrite, 4) ;
+ WriteWords(display->serif,Xvalues, n) ;
+ WriteWords(display->serif,Yvalues, n) ;
towrite[0]= Color >> 8 ;
towrite[1]= Color ;
- WriteBytes(towrite, 2) ;
- GetAck() ;
+ WriteBytes(display->serif,towrite, 2) ;
+ GetAck(display->serif) ;
}
-void gfx_Polyline(gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color)
+void gl_gfx_Polyline(gl_display_t *display, gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_Polyline >> 8 ;
towrite[1]= F_gfx_Polyline ;
towrite[2]= n >> 8 ;
towrite[3]= n ;
- WriteBytes(towrite, 4) ;
- WriteWords(Xvalues, n) ;
- WriteWords(Yvalues, n) ;
+ WriteBytes(display->serif, towrite, 4) ;
+ WriteWords(display->serif, Xvalues, n) ;
+ WriteWords(display->serif, Yvalues, n) ;
towrite[0]= Color >> 8 ;
towrite[1]= Color ;
- WriteBytes(towrite, 2) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ GetAck(display->serif) ;
}
-void gfx_PutPixel(gl_word_t X, gl_word_t Y, gl_word_t Color)
+void gl_gfx_PutPixel(gl_display_t *display, gl_word_t X, gl_word_t Y, gl_word_t Color)
{
unsigned char towrite[8] ;
towrite[0]= F_gfx_PutPixel >> 8 ;
towrite[5]= Y ;
towrite[6]= Color >> 8 ;
towrite[7]= Color ;
- WriteBytes(towrite, 8) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 8) ;
+ GetAck(display->serif) ;
}
-void gfx_Rectangle(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color)
+void gl_gfx_Rectangle(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color)
{
unsigned char towrite[12] ;
towrite[0]= F_gfx_Rectangle >> 8 ;
towrite[9]= Y2 ;
towrite[10]= Color >> 8 ;
towrite[11]= Color ;
- WriteBytes(towrite, 12) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 12) ;
+ GetAck(display->serif) ;
}
-void gfx_RectangleFilled(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color)
+void gl_gfx_RectangleFilled(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color)
{
unsigned char towrite[12] ;
towrite[0]= F_gfx_RectangleFilled >> 8 ;
towrite[9]= Y2 ;
towrite[10]= Color >> 8 ;
towrite[11]= Color ;
- WriteBytes(towrite, 12) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 12) ;
+ GetAck(display->serif) ;
}
-void gfx_ScreenMode(gl_word_t ScreenMode)
+void gl_gfx_ScreenMode(gl_display_t *display, gl_word_t ScreenMode)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_ScreenMode >> 8 ;
towrite[1]= F_gfx_ScreenMode & 0xFF;
towrite[2]= ScreenMode >> 8 ;
towrite[3]= ScreenMode ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void gfx_Set(gl_word_t Func, gl_word_t Value)
+void gl_gfx_Set(gl_display_t *display, gl_word_t Func, gl_word_t Value)
{
unsigned char towrite[6] ;
towrite[0]= F_gfx_Set >> 8 ;
towrite[3]= Func ;
towrite[4]= Value >> 8 ;
towrite[5]= Value ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void gfx_SetClipRegion()
+void gl_gfx_SetClipRegion(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_gfx_SetClipRegion >> 8 ;
towrite[1]= F_gfx_SetClipRegion ;
- WriteBytes(towrite, 2) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ GetAck(display->serif) ;
}
-void gfx_Transparency(gl_word_t OnOff)
+void gl_gfx_Transparency(gl_display_t *display, gl_word_t OnOff)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_Transparency >> 8 ;
towrite[1]= F_gfx_Transparency & 0xFF;
towrite[2]= OnOff >> 8 ;
towrite[3]= OnOff ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void gfx_TransparentColour(gl_word_t Color)
+void gl_gfx_TransparentColour(gl_display_t *display, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_gfx_TransparentColour >> 8 ;
towrite[1]= F_gfx_TransparentColour & 0xFF;
towrite[2]= Color >> 8 ;
towrite[3]= Color ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void gfx_Triangle(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t X3, gl_word_t Y3, gl_word_t Color)
+void gl_gfx_Triangle(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t X3, gl_word_t Y3, gl_word_t Color)
{
unsigned char towrite[16] ;
towrite[0]= F_gfx_Triangle >> 8 ;
towrite[13]= Y3 ;
towrite[14]= Color >> 8 ;
towrite[15]= Color ;
- WriteBytes(towrite, 16) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 16) ;
+ GetAck(display->serif) ;
}
-gl_word_t media_Flush()
+gl_word_t gl_media_Flush(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_media_Flush >> 8 ;
towrite[1]= F_media_Flush ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-void media_Image(gl_word_t X, gl_word_t Y)
+void gl_media_Image(gl_display_t *display, gl_word_t X, gl_word_t Y)
{
unsigned char towrite[6] ;
towrite[0]= F_media_Image >> 8 ;
towrite[3]= X ;
towrite[4]= Y >> 8 ;
towrite[5]= Y ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-gl_word_t media_Init()
+gl_word_t gl_media_Init(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_media_Init >> 8 ;
towrite[1]= F_media_Init ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-gl_word_t media_ReadByte()
+gl_word_t gl_media_ReadByte(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_media_ReadByte >> 8 ;
towrite[1]= F_media_ReadByte ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-gl_word_t media_ReadWord()
+gl_word_t gl_media_ReadWord(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_media_ReadWord >> 8 ;
towrite[1]= F_media_ReadWord ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-void media_SetAdd(gl_word_t HiWord, gl_word_t LoWord)
+void gl_media_SetAdd(gl_display_t *display, gl_word_t HiWord, gl_word_t LoWord)
{
unsigned char towrite[6] ;
towrite[0]= F_media_SetAdd >> 8 ;
towrite[3]= HiWord ;
towrite[4]= LoWord >> 8 ;
towrite[5]= LoWord ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void media_SetSector(gl_word_t HiWord, gl_word_t LoWord)
+void gl_media_SetSector(gl_display_t *display, gl_word_t HiWord, gl_word_t LoWord)
{
unsigned char towrite[6] ;
towrite[0]= F_media_SetSector >> 8 ;
towrite[3]= HiWord ;
towrite[4]= LoWord >> 8 ;
towrite[5]= LoWord ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void media_Video(gl_word_t X, gl_word_t Y)
+void gl_media_Video(gl_display_t *display, gl_word_t X, gl_word_t Y)
{
unsigned char towrite[6] ;
towrite[0]= F_media_Video >> 8 ;
towrite[3]= X ;
towrite[4]= Y >> 8 ;
towrite[5]= Y ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void media_VideoFrame(gl_word_t X, gl_word_t Y, gl_word_t Framenumber)
+void gl_media_VideoFrame(gl_display_t *display, gl_word_t X, gl_word_t Y, gl_word_t Framenumber)
{
unsigned char towrite[8] ;
towrite[0]= F_media_VideoFrame >> 8 ;
towrite[5]= Y ;
towrite[6]= Framenumber >> 8 ;
towrite[7]= Framenumber ;
- WriteBytes(towrite, 8) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 8) ;
+ GetAck(display->serif) ;
}
-gl_word_t media_WriteByte(gl_word_t Byte)
+gl_word_t gl_media_WriteByte(gl_display_t *display, gl_word_t Byte)
{
unsigned char towrite[4] ;
towrite[0]= F_media_WriteByte >> 8 ;
towrite[1]= F_media_WriteByte ;
towrite[2]= Byte >> 8 ;
towrite[3]= Byte ;
- WriteBytes(towrite, 4) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ return GetAckResp(display->serif) ;
}
-gl_word_t media_WriteWord(gl_word_t Word)
+gl_word_t gl_media_WriteWord(gl_display_t *display, gl_word_t Word)
{
unsigned char towrite[4] ;
towrite[0]= F_media_WriteWord >> 8 ;
towrite[1]= F_media_WriteWord ;
towrite[2]= Word >> 8 ;
towrite[3]= Word ;
- WriteBytes(towrite, 4) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ return GetAckResp(display->serif) ;
}
-void putCH(gl_word_t WordChar)
+void gl_putCH(gl_display_t *display, gl_word_t WordChar)
{
unsigned char towrite[4] ;
towrite[0]= F_putCH >> 8 ;
towrite[1]= F_putCH ;
towrite[2]= WordChar >> 8 ;
towrite[3]= WordChar ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void putstr(unsigned char * InString)
+void gl_putstr(gl_display_t *display, unsigned char * InString)
{
unsigned char towrite[2] ;
towrite[0]= F_putstr >> 8 ;
towrite[1]= F_putstr ;
- WriteBytes(towrite, 2) ;
- WriteChars(InString) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ WriteChars(display->serif, InString) ;
+ GetAck(display->serif) ;
}
-void txt_Attributes(gl_word_t Attribs)
+void gl_txt_Attributes(gl_display_t *display, gl_word_t Attribs)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Attributes >> 8 ;
towrite[1]= F_txt_Attributes & 0xFF;
towrite[2]= Attribs >> 8 ;
towrite[3]= Attribs ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_BGcolour(gl_word_t Color)
+void gl_txt_BGcolour(gl_display_t *display, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_BGcolour >> 8 ;
towrite[1]= F_txt_BGcolour & 0xFF;
towrite[2]= Color >> 8 ;
towrite[3]= Color ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Bold(gl_word_t Bold)
+void gl_txt_Bold(gl_display_t *display, gl_word_t Bold)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Bold >> 8 ;
towrite[1]= F_txt_Bold & 0xFF;
towrite[2]= Bold >> 8 ;
towrite[3]= Bold ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_FGcolour(gl_word_t Color)
+void gl_txt_FGcolour(gl_display_t *display, gl_word_t Color)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_FGcolour >> 8 ;
towrite[1]= F_txt_FGcolour & 0xFF;
towrite[2]= Color >> 8 ;
towrite[3]= Color ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_FontID(gl_word_t FontNumber)
+void gl_txt_FontID(gl_display_t *display, gl_word_t FontNumber)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_FontID >> 8 ;
towrite[1]= F_txt_FontID & 0xFF;
towrite[2]= FontNumber >> 8 ;
towrite[3]= FontNumber ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Height(gl_word_t Multiplier)
+void gl_txt_Height(gl_display_t *display, gl_word_t Multiplier)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Height >> 8 ;
towrite[1]= F_txt_Height & 0xFF;
towrite[2]= Multiplier >> 8 ;
towrite[3]= Multiplier ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Inverse(gl_word_t Inverse)
+void gl_txt_Inverse(gl_display_t *display, gl_word_t Inverse)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Inverse >> 8 ;
towrite[1]= F_txt_Inverse & 0xFF;
towrite[2]= Inverse >> 8 ;
towrite[3]= Inverse ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Italic(gl_word_t Italic)
+void gl_txt_Italic(gl_display_t *display, gl_word_t Italic)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Italic >> 8 ;
towrite[1]= F_txt_Italic & 0xFF;
towrite[2]= Italic >> 8 ;
towrite[3]= Italic ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_MoveCursor(gl_word_t Line, gl_word_t Column)
+void gl_txt_MoveCursor(gl_display_t *display, gl_word_t Line, gl_word_t Column)
{
unsigned char towrite[6] ;
towrite[0]= F_txt_MoveCursor >> 8 ;
towrite[3]= Line ;
towrite[4]= Column >> 8 ;
towrite[5]= Column ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void txt_Opacity(gl_word_t TransparentOpaque)
+void gl_txt_Opacity(gl_display_t *display, gl_word_t TransparentOpaque)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Opacity >> 8 ;
towrite[1]= F_txt_Opacity & 0xFF;
towrite[2]= TransparentOpaque >> 8 ;
towrite[3]= TransparentOpaque ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Set(gl_word_t Func, gl_word_t Value)
+void gl_txt_Set(gl_display_t *display, gl_word_t Func, gl_word_t Value)
{
unsigned char towrite[6] ;
towrite[0]= F_txt_Set >> 8 ;
towrite[3]= Func ;
towrite[4]= Value >> 8 ;
towrite[5]= Value ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-void txt_Underline(gl_word_t Underline)
+void gl_txt_Underline(gl_display_t *display, gl_word_t Underline)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Underline >> 8 ;
towrite[1]= F_txt_Underline & 0xFF;
towrite[2]= Underline >> 8 ;
towrite[3]= Underline ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Width(gl_word_t Multiplier)
+void gl_txt_Width(gl_display_t *display, gl_word_t Multiplier)
{
unsigned char towrite[4] ;
towrite[1]= F_txt_Width & 0xFF;
towrite[2]= Multiplier >> 8 ;
towrite[3]= Multiplier ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Xgap(gl_word_t Pixels)
+void gl_txt_Xgap(gl_display_t *display, gl_word_t Pixels)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Xgap >> 8 ;
towrite[1]= F_txt_Xgap & 0xFF;
towrite[2]= Pixels >> 8 ;
towrite[3]= Pixels ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void txt_Ygap(gl_word_t Pixels)
+void gl_txt_Ygap(gl_display_t *display, gl_word_t Pixels)
{
unsigned char towrite[4] ;
towrite[0]= F_txt_Ygap >> 8 ;
towrite[1]= F_txt_Ygap & 0xFF;
towrite[2]= Pixels >> 8 ;
towrite[3]= Pixels ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void BeeP(gl_word_t Note, gl_word_t Duration)
+void gl_BeeP(gl_display_t *display, gl_word_t Note, gl_word_t Duration)
{
unsigned char towrite[6] ;
towrite[0]= F_BeeP >> 8 ;
towrite[3]= Note ;
towrite[4]= Duration >> 8 ;
towrite[5]= Duration ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-gl_word_t sys_GetModel(unsigned char * ModelStr)
+gl_word_t gl_sys_GetModel(gl_display_t *display, unsigned char * ModelStr)
{
unsigned char towrite[2] ;
towrite[0]= F_sys_GetModel >> 8 ;
towrite[1]= F_sys_GetModel ;
- WriteBytes(towrite, 2) ;
- return GetAckResStr(ModelStr) ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResStr(display->serif, ModelStr) ;
}
-gl_word_t sys_GetVersion()
+gl_word_t gl_sys_GetVersion(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_sys_GetVersion >> 8 ;
towrite[1]= F_sys_GetVersion ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-gl_word_t sys_GetPmmC()
+gl_word_t gl_sys_GetPmmC(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_sys_GetPmmC >> 8 ;
towrite[1]= F_sys_GetPmmC ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-void blitComtoDisplay(gl_word_t X, gl_word_t Y, gl_word_t Width, gl_word_t Height, gl_byte_array_t Pixels)
+void gl_blitComtoDisplay(gl_display_t *display, gl_word_t X, gl_word_t Y, gl_word_t Width, gl_word_t Height, gl_byte_array_t Pixels)
{
unsigned char towrite[10] ;
towrite[0]= F_blitComtoDisplay >> 8 ;
towrite[7]= Width ;
towrite[8]= Height >> 8 ;
towrite[9]= Height ;
- WriteBytes(towrite, 10) ;
- WriteBytes(Pixels, Width*Height*2) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 10) ;
+ WriteBytes(display->serif, Pixels, Width*Height*2) ;
+ GetAck(display->serif) ;
}
-void setbaudWait(gl_word_t Newrate)
+void gl_setbaudWait(gl_display_t *display, gl_word_t Newrate)
{
unsigned char towrite[4] ;
towrite[0]= F_setbaudWait >> 8 ;
towrite[1]= F_setbaudWait ;
towrite[2]= Newrate >> 8 ;
towrite[3]= Newrate ;
- WriteBytes(towrite, 4) ;
+ WriteBytes(display->serif, towrite, 4) ;
//SetThisBaudrate(Newrate) ; // change this systems baud rate to match new display rate, ACK is 100ms away
- GetAck() ;
+ GetAck(display->serif) ;
}
-gl_word_t peekW(gl_word_t Address)
+gl_word_t gl_peekW(gl_display_t *display, gl_word_t Address)
{
unsigned char towrite[4] ;
towrite[0]= F_peekW >> 8 ;
towrite[1]= F_peekW ;
towrite[2]= Address >> 8 ;
towrite[3]= Address ;
- WriteBytes(towrite, 4) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ return GetAckResp(display->serif) ;
}
-void pokeW(gl_word_t Address, gl_word_t WordValue)
+void gl_pokeW(gl_display_t *display, gl_word_t Address, gl_word_t WordValue)
{
unsigned char towrite[6] ;
towrite[0]= F_pokeW >> 8 ;
towrite[3]= Address ;
towrite[4]= WordValue >> 8 ;
towrite[5]= WordValue ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-gl_word_t peekB(gl_word_t Address)
+gl_word_t gl_peekB(gl_display_t *display, gl_word_t Address)
{
unsigned char towrite[4] ;
towrite[0]= F_peekB >> 8 ;
towrite[1]= F_peekB ;
towrite[2]= Address >> 8 ;
towrite[3]= Address ;
- WriteBytes(towrite, 4) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ return GetAckResp(display->serif) ;
}
-void pokeB(gl_word_t Address, gl_word_t ByteValue)
+void gl_pokeB(gl_display_t *display, gl_word_t Address, gl_word_t ByteValue)
{
unsigned char towrite[6] ;
towrite[0]= F_pokeB >> 8 ;
towrite[3]= Address ;
towrite[4]= ByteValue >> 8 ;
towrite[5]= ByteValue ;
- WriteBytes(towrite, 6) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 6) ;
+ GetAck(display->serif) ;
}
-gl_word_t joystick()
+gl_word_t gl_joystick(gl_display_t *display)
{
unsigned char towrite[2] ;
towrite[0]= F_joystick >> 8 ;
towrite[1]= F_joystick ;
- WriteBytes(towrite, 2) ;
- return GetAckResp() ;
+ WriteBytes(display->serif, towrite, 2) ;
+ return GetAckResp(display->serif) ;
}
-void SSTimeout(gl_word_t Seconds)
+void gl_SSTimeout(gl_display_t *display, gl_word_t Seconds)
{
unsigned char towrite[4] ;
towrite[0]= F_SSTimeout >> 8 ;
towrite[1]= F_SSTimeout ;
towrite[2]= Seconds >> 8 ;
towrite[3]= Seconds ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void SSSpeed(gl_word_t Speed)
+void gl_SSSpeed(gl_display_t *display, gl_word_t Speed)
{
unsigned char towrite[4] ;
towrite[0]= F_SSSpeed >> 8 ;
towrite[1]= F_SSSpeed ;
towrite[2]= Speed >> 8 ;
towrite[3]= Speed ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
-void SSMode(gl_word_t Parm)
+void gl_SSMode(gl_display_t *display, gl_word_t Parm)
{
unsigned char towrite[4] ;
towrite[0]= F_SSMode >> 8 ;
towrite[1]= F_SSMode ;
towrite[2]= Parm >> 8 ;
towrite[3]= Parm ;
- WriteBytes(towrite, 4) ;
- GetAck() ;
+ WriteBytes(display->serif, towrite, 4) ;
+ GetAck(display->serif) ;
}
/*
gl_err_t gl_init(gl_display_t *disp, gl_serif_t *serif) {
- int k, ch, tSave;
+ int k, tSave;
+ unsigned char ch;
//gl_word_t nBaud;
TimeLimit4D = 2000;
for (k = 0 ; k < 10 ; k++)
{
ch = 'X';
- disp->serif->write_tx((void *)&ch, 1, 500);
- ReadSerPort(disp->serif, &ch, 1);
+ disp->serif->write_tx((void *)&ch, 1);
+ disp->serif->flush_tx(TimeLimit4D);
+ if (ReadSerPort(disp->serif, &ch, 1) == -1)
+ break;
if (ch == 0x15)
break ;
}
return 0;
}
-int OpenComm(char *sDeviceName, int newrate)
-{
- struct termios new_port_settings;
- //gl_word_t nBaud;
- int k, ch, tSave, baudr;
-
-switch(newrate)
- {
- case 50 : baudr = B50; break;
- case 75 : baudr = B75; break;
- case 110 : baudr = B110; break;
- case 134 : baudr = B134; break;
- case 150 : baudr = B150; break;
- case 200 : baudr = B200; break;
- case 300 : baudr = B300; break;
- case 600 : baudr = B600; break;
- case 1200 : baudr = B1200; break;
- case 1800 : baudr = B1800; break;
- case 2400 : baudr = B2400; break;
- case 4800 : baudr = B4800; break;
- case 9600 : baudr = B9600; break;
- case 19200 : baudr = B19200; break;
- case 38400 : baudr = B38400; break;
- case 57600 : baudr = B57600; break;
- case 115200 : baudr = B115200; break;
- case 230400 : baudr = B230400; break;
- case 460800 : baudr = B460800; break;
- case 500000 : baudr = B500000; break;
- case 576000 : baudr = B576000; break;
- case 921600 : baudr = B921600; break;
- case 1000000 : baudr = B1000000; break;
- default : printf("invalid baudrate\n");
- return(1);
- break;
-}
- cPort = open(sDeviceName, O_RDWR | O_NOCTTY | O_NDELAY);
-// Current config
- tcgetattr(cPort, &new_port_settings);
- // Set the line to RAW
- cfmakeraw(&new_port_settings);
- memset(&new_port_settings, 0, sizeof(new_port_settings)); /* clear the new struct */
- new_port_settings.c_cflag = baudr | CS8 | CLOCAL | CREAD;
- new_port_settings.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
- new_port_settings.c_iflag = IGNPAR;
- new_port_settings.c_oflag = 0;
- new_port_settings.c_lflag = 0;
- new_port_settings.c_cc[VMIN] = 0; /* block untill n bytes are received */
- new_port_settings.c_cc[VTIME] = 100; /* block untill a timer expires (n * 100 mSec.) */
-/*
- cfsetospeed(&new_port_settings, nBaud);
- cfsetispeed(&new_port_settings, nBaud);
-*/
- // set new config
- tcsetattr(cPort, TCSANOW, &new_port_settings);
- // Set non-blocking
- fcntl(cPort, F_SETFL, FNDELAY);
-
- tSave = TimeLimit4D;
- TimeLimit4D = 500;
- for (k = 0 ; k < 10 ; k++)
- {
- ch = 'X';
- write(cPort, (unsigned char *)&ch, 1);
- tcflush(cPort, TCOFLUSH);
- ReadSerPort((unsigned char *)&ch, 1);
- if (ch == 0x15)
- break ;
- }
- TimeLimit4D = tSave;
-
- tcflush(cPort, TCIOFLUSH);
- return 0;
-}
-
-void CloseComm(void)
-{
- close(cPort);
- cPort = -1;
- Error4D = Err4D_OK;
-
- return;
-}
+// int OpenComm(char *sDeviceName, int newrate)
+// {
+// struct termios new_port_settings;
+// //gl_word_t nBaud;
+// int k, ch, tSave, baudr;
+//
+// switch(newrate)
+// {
+// case 50 : baudr = B50; break;
+// case 75 : baudr = B75; break;
+// case 110 : baudr = B110; break;
+// case 134 : baudr = B134; break;
+// case 150 : baudr = B150; break;
+// case 200 : baudr = B200; break;
+// case 300 : baudr = B300; break;
+// case 600 : baudr = B600; break;
+// case 1200 : baudr = B1200; break;
+// case 1800 : baudr = B1800; break;
+// case 2400 : baudr = B2400; break;
+// case 4800 : baudr = B4800; break;
+// case 9600 : baudr = B9600; break;
+// case 19200 : baudr = B19200; break;
+// case 38400 : baudr = B38400; break;
+// case 57600 : baudr = B57600; break;
+// case 115200 : baudr = B115200; break;
+// case 230400 : baudr = B230400; break;
+// case 460800 : baudr = B460800; break;
+// case 500000 : baudr = B500000; break;
+// case 576000 : baudr = B576000; break;
+// case 921600 : baudr = B921600; break;
+// case 1000000 : baudr = B1000000; break;
+// default : printf("invalid baudrate\n");
+// return(1);
+// break;
+// }
+// cPort = open(sDeviceName, O_RDWR | O_NOCTTY | O_NDELAY);
+// // Current config
+// tcgetattr(cPort, &new_port_settings);
+// // Set the line to RAW
+// cfmakeraw(&new_port_settings);
+// memset(&new_port_settings, 0, sizeof(new_port_settings)); /* clear the new struct */
+// new_port_settings.c_cflag = baudr | CS8 | CLOCAL | CREAD;
+// new_port_settings.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+// new_port_settings.c_iflag = IGNPAR;
+// new_port_settings.c_oflag = 0;
+// new_port_settings.c_lflag = 0;
+// new_port_settings.c_cc[VMIN] = 0; /* block untill n bytes are received */
+// new_port_settings.c_cc[VTIME] = 100; /* block untill a timer expires (n * 100 mSec.) */
+// /*
+// cfsetospeed(&new_port_settings, nBaud);
+// cfsetispeed(&new_port_settings, nBaud);
+// */
+// // set new config
+// tcsetattr(cPort, TCSANOW, &new_port_settings);
+// // Set non-blocking
+// fcntl(cPort, F_SETFL, FNDELAY);
+//
+// tSave = TimeLimit4D;
+// TimeLimit4D = 500;
+// for (k = 0 ; k < 10 ; k++)
+// {
+// ch = 'X';
+// write(cPort, (unsigned char *)&ch, 1);
+// tcflush(cPort, TCOFLUSH);
+// ReadSerPort((unsigned char *)&ch, 1);
+// if (ch == 0x15)
+// break ;
+// }
+// TimeLimit4D = tSave;
+//
+// tcflush(cPort, TCIOFLUSH);
+// return 0;
+// }
+//
+// void CloseComm(void)
+// {
+// close(cPort);
+// cPort = -1;
+// Error4D = Err4D_OK;
+//
+// return;
+// }
* @return error code
*/
gl_err_t gl_init(gl_display_t *disp, gl_serif_t *serif);
-int OpenComm(char *comport, int newrate) ;
-void blitComtoDisplay(gl_word_t X, gl_word_t Y, gl_word_t Width, gl_word_t Height, gl_byte_array_t Pixels) ;
-void gfx_BGcolour(gl_word_t Color) ;
-void gfx_ChangeColour(gl_word_t OldColor, gl_word_t NewColor) ;
-void gfx_Circle(gl_word_t X, gl_word_t Y, gl_word_t Radius, gl_word_t Color) ;
-void gfx_CircleFilled(gl_word_t X, gl_word_t Y, gl_word_t Radius, gl_word_t Color) ;
-void gfx_Clipping(gl_word_t OnOff) ;
-void gfx_ClipWindow(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2) ;
-void gfx_Cls() ;
-void gfx_Contrast(gl_word_t Contrast) ;
-void gfx_FrameDelay(gl_word_t Msec) ;
-void gfx_Line(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color) ;
-void gfx_LinePattern(gl_word_t Pattern) ;
-void gfx_LineTo(gl_word_t X, gl_word_t Y) ;
-void gfx_MoveTo(gl_word_t X, gl_word_t Y) ;
-void gfx_OutlineColour(gl_word_t Color) ;
-void gfx_Polygon(gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color) ;
-void gfx_Polyline(gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color) ;
-void gfx_PutPixel(gl_word_t X, gl_word_t Y, gl_word_t Color) ;
-void gfx_Rectangle(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color) ;
-void gfx_RectangleFilled(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color) ;
-void gfx_ScreenMode(gl_word_t ScreenMode) ;
-void gfx_Set(gl_word_t Func, gl_word_t Value) ;
-void gfx_Transparency(gl_word_t OnOff) ;
-void gfx_TransparentColour(gl_word_t Color) ;
-void gfx_Triangle(gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t X3, gl_word_t Y3, gl_word_t Color) ;
-void media_Image(gl_word_t X, gl_word_t Y) ;
-void media_SetAdd(gl_word_t HiWord, gl_word_t LoWord) ;
-void media_SetSector(gl_word_t HiWord, gl_word_t LoWord) ;
-void media_Video(gl_word_t X, gl_word_t Y) ;
-void media_VideoFrame(gl_word_t X, gl_word_t Y, gl_word_t Framenumber) ;
-void pokeB(gl_word_t Address, gl_word_t ByteValue) ;
-void pokeW(gl_word_t Address, gl_word_t WordValue) ;
-void putCH(gl_word_t WordChar) ;
-void setbaudWait(gl_word_t Newrate) ;
-void SSMode(gl_word_t Parm) ;
-void SSSpeed(gl_word_t Speed) ;
-void SSTimeout(gl_word_t Seconds) ;
-void txt_Attributes(gl_word_t Attribs) ;
-void txt_BGcolour(gl_word_t Color) ;
-void txt_Bold(gl_word_t Bold) ;
-void txt_FGcolour(gl_word_t Color) ;
-void txt_FontID(gl_word_t FontNumber) ;
-void txt_Height(gl_word_t Multiplier) ;
-void txt_Inverse(gl_word_t Inverse) ;
-void txt_Italic(gl_word_t Italic) ;
-void txt_MoveCursor(gl_word_t Line, gl_word_t Column) ;
-void txt_Opacity(gl_word_t TransparentOpaque) ;
-void txt_Set(gl_word_t Func, gl_word_t Value) ;
-void txt_Underline(gl_word_t Underline) ;
-void txt_Width(gl_word_t Multiplier) ;
-void txt_Xgap(gl_word_t Pixels) ;
-void txt_Ygap(gl_word_t Pixels) ;
-void BeeP(gl_word_t Note, gl_word_t Duration) ;
-gl_word_t charheight(unsigned char TestChar) ;
-gl_word_t charwidth(unsigned char TestChar) ;
-gl_word_t gfx_GetPixel(gl_word_t X, gl_word_t Y) ;
-gl_word_t gfx_Orbit(gl_word_t Angle, gl_word_t Distance, gl_word_t * Xdest, gl_word_t * Ydest) ;
-void gfx_SetClipRegion() ;
-gl_word_t joystick() ;
-gl_word_t media_Flush() ;
-gl_word_t media_Init() ;
-gl_word_t media_ReadByte() ;
-gl_word_t media_ReadWord() ;
-gl_word_t media_WriteByte(gl_word_t Byte) ;
-gl_word_t media_WriteWord(gl_word_t Word) ;
-gl_word_t peekB(gl_word_t Address) ;
-gl_word_t peekW(gl_word_t Address) ;
-void putstr(unsigned char * InString) ;
-gl_word_t sys_GetModel(unsigned char * ModelStr) ;
-gl_word_t sys_GetPmmC() ;
-gl_word_t sys_GetVersion() ;
+
+/**
+ * @brief Return Character Height for the given char in
+ * pixels.
+ * @param display The display object to use
+ * @param test_char Presumably, a test character?
+ * @return The height of that character
+ */
+gl_word_t gl_charheight(gl_display_t *display, unsigned char test_char);
+
+/**
+ * @brief Return Character width for the given char in
+ * pixels.
+ * @param display The display object to use
+ * @param test_char Presumably, a test character?
+ * @return The width of that character
+ */
+gl_word_t gl_charwidth(gl_display_t *display, unsigned char TestChar) ;
+
+/**
+ * @brief Set the screen background color.
+ * @param display The display object to use
+ * @param color The color to set the background to.
+ */
+void gl_gfx_BGcolour(gl_display_t *display, gl_word_t color);
+
+/**
+ * @brief Changes all old colored pixels to new colored pixels.
+ * @param display The display object to use
+ * @param old The old color to find
+ * @param new The new color to replace
+ */
+void gl_gfx_ChangeColour(gl_display_t *display, gl_word_t old, gl_word_t new);
+
+/**
+ * @brief Draw a circle (not filled).
+ * @param display The display object to use
+ * @param x The center X coordimate of the circle
+ * @param y The center Y coordinate of the circle
+ * @param rad The radius of the circle
+ * @param col The color of the circle
+ */
+void gl_gfx_Circle(gl_display_t *display, gl_word_t x, gl_word_t y,
+ gl_word_t rad, gl_word_t col);
+
+/**
+ * @brief Draw a circle (filled).
+ * @param display The display object to use
+ * @param x The center X coordimate of the circle
+ * @param y The center Y coordinate of the circle
+ * @param rad The radius of the circle
+ * @param col The color of the circle
+ */
+void gl_gfx_CircleFilled(gl_display_t *display, gl_word_t x, gl_word_t y,
+ gl_word_t rad, gl_word_t col);
+
+/**
+ * @brief Enables/disables Clipping.
+ * @param display The display object to use
+ * @param value zero = disabled, 1 = enabled.
+ */
+void gl_gfx_Clipping(gl_display_t *display, gl_word_t value);
+
+/**
+ * @brief All objects will only be visible in this region.
+ *
+ * Enable clipping first using gl_gfx_Clipping.
+ * @param display The display object to use
+ * @param x1 Horizontal Top Left position
+ * @param y1 Vertical Top Left Position
+ * @param x2 Horizontal Bottom Right position
+ * @param y2 Vertical Bot Right Position
+ */
+void gl_gfx_ClipWindow(gl_display_t *display, gl_word_t x1, gl_word_t y1,
+ gl_word_t x2, gl_word_t y2);
+
+/**
+ * @brief Clear screen using the defaults.
+ *
+ * Some settings may be reset, such as outline color, pen, origin and text
+ * magnification. Consult the 4D Library manuals for more info.
+ * @param display The display object to use
+ */
+void gl_gfx_Cls(gl_display_t *display);
+
+/**
+ * @brief Sets contrast, or turns display on/off depending on model.
+ * @param display The display object to use
+ * @param contrast Contrast 0 = Display OFF
+ * Contrast 1 - 15 = Contrast Level
+ *
+ * @note uLCD-144-G2 does not support Contrast ‘levels’, values from 1-15 could
+ * be set to turn the display ‘On’ and 0 to turn the Display ‘Off’.
+ */
+void gl_gfx_Contrast(gl_display_t *display, gl_word_t contrast);
+
+/**
+ * @brief sets frame delay for Media Video command
+ * @param display The display object to use
+ * @param msec 0-255 ms
+ */
+void gl_gfx_FrameDelay(gl_display_t *display, gl_word_t msec);
+
+gl_word_t gl_gfx_GetPixel(gl_display_t *display, gl_word_t X, gl_word_t Y);
+
+void gl_gfx_Line(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color) ;
+
+void gl_gfx_LinePattern(gl_display_t *display, gl_word_t Pattern) ;
+
+void gl_gfx_LineTo(gl_display_t *display, gl_word_t X, gl_word_t Y) ;
+
+void gl_gfx_MoveTo(gl_display_t *display, gl_word_t X, gl_word_t Y) ;
+
+gl_word_t gl_gfx_Orbit(gl_display_t *display, gl_word_t Angle, gl_word_t Distance, gl_word_t * Xdest, gl_word_t * Ydest) ;
+
+void gl_gfx_OutlineColour(gl_display_t *display, gl_word_t Color) ;
+
+void gl_gfx_Polygon(gl_display_t *display, gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color) ;
+
+void gl_gfx_Polyline(gl_display_t *display, gl_word_t n, gl_word_array_t Xvalues, gl_word_array_t Yvalues, gl_word_t Color) ;
+
+void gl_gfx_PutPixel(gl_display_t *disp, gl_word_t X, gl_word_t Y, gl_word_t Color) ;
+
+void gl_gfx_Rectangle(gl_display_t *disp, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color) ;
+
+void gl_gfx_RectangleFilled(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t Color) ;
+
+void gl_gfx_ScreenMode(gl_display_t *display, gl_word_t ScreenMode) ;
+
+void gl_gfx_SetClipRegion(gl_display_t *display) ;
+void gl_blitComtoDisplay(gl_display_t *disp, gl_word_t X, gl_word_t Y, gl_word_t Width, gl_word_t Height, gl_byte_array_t Pixels) ;
+void gl_gfx_Set(gl_display_t *display, gl_word_t Func, gl_word_t Value) ;
+void gl_gfx_Transparency(gl_display_t *display, gl_word_t OnOff) ;
+void gl_gfx_TransparentColour(gl_display_t *display, gl_word_t Color) ;
+void gl_gfx_Triangle(gl_display_t *display, gl_word_t X1, gl_word_t Y1, gl_word_t X2, gl_word_t Y2, gl_word_t X3, gl_word_t Y3, gl_word_t Color) ;
+gl_word_t gl_media_Flush(gl_display_t *display) ;
+gl_word_t gl_media_Init(gl_display_t *display) ;
+gl_word_t gl_media_ReadByte(gl_display_t *display) ;
+gl_word_t gl_media_ReadWord(gl_display_t *display) ;
+gl_word_t gl_media_WriteByte(gl_display_t *display, gl_word_t Byte) ;
+gl_word_t gl_media_WriteWord(gl_display_t *display, gl_word_t Word) ;
+void gl_media_Image(gl_display_t *display, gl_word_t X, gl_word_t Y) ;
+void gl_media_SetAdd(gl_display_t *display, gl_word_t HiWord, gl_word_t LoWord) ;
+void gl_media_SetSector(gl_display_t *display, gl_word_t HiWord, gl_word_t LoWord) ;
+void gl_media_Video(gl_display_t *display, gl_word_t X, gl_word_t Y) ;
+void gl_media_VideoFrame(gl_display_t *display, gl_word_t X, gl_word_t Y, gl_word_t Framenumber) ;
+void gl_putCH(gl_display_t *display, gl_word_t WordChar) ;
+void gl_putstr(gl_display_t *display, unsigned char * InString) ;
+
+void gl_txt_Attributes(gl_display_t *display, gl_word_t Attribs) ;
+void gl_txt_BGcolour(gl_display_t *display, gl_word_t Color) ;
+void gl_txt_Bold(gl_display_t *display, gl_word_t Bold) ;
+void gl_txt_FGcolour(gl_display_t *display, gl_word_t Color) ;
+void gl_txt_FontID(gl_display_t *display, gl_word_t FontNumber) ;
+void gl_txt_Height(gl_display_t *display, gl_word_t Multiplier) ;
+void gl_txt_Inverse(gl_display_t *display, gl_word_t Inverse) ;
+void gl_txt_Italic(gl_display_t *display, gl_word_t Italic) ;
+void gl_txt_MoveCursor(gl_display_t *display, gl_word_t Line, gl_word_t Column) ;
+void gl_txt_Opacity(gl_display_t *display, gl_word_t TransparentOpaque) ;
+void gl_txt_Set(gl_display_t *display, gl_word_t Func, gl_word_t Value) ;
+void gl_txt_Underline(gl_display_t *display, gl_word_t Underline) ;
+void gl_txt_Width(gl_display_t *display, gl_word_t Multiplier) ;
+void gl_txt_Xgap(gl_display_t *display, gl_word_t Pixels) ;
+void gl_txt_Ygap(gl_display_t *display, gl_word_t Pixels) ;
+
+void gl_BeeP(gl_display_t *display, gl_word_t Note, gl_word_t Duration) ;
+
+gl_word_t gl_sys_GetModel(gl_display_t *display, unsigned char * ModelStr) ;
+gl_word_t gl_sys_GetPmmC(gl_display_t *display) ;
+gl_word_t gl_sys_GetVersion(gl_display_t *display) ;
+
+// AVOID ME SINCE I DON"T CHANGE ESP BAUD RATE
+void gl_setbaudWait(gl_display_t *display, gl_word_t Newrate) ;
+
+void gl_pokeB(gl_display_t *display, gl_word_t Address, gl_word_t ByteValue) ;
+void gl_pokeW(gl_display_t *display, gl_word_t Address, gl_word_t WordValue) ;
+void gl_SSMode(gl_display_t *display, gl_word_t Parm) ;
+void gl_SSSpeed(gl_display_t *display, gl_word_t Speed) ;
+void gl_SSTimeout(gl_display_t *display, gl_word_t Seconds) ;
+gl_word_t gl_joystick(gl_display_t *display) ;
+gl_word_t gl_peekB(gl_display_t *display, gl_word_t Address) ;
+gl_word_t gl_peekW(gl_display_t *display, gl_word_t Address) ;
+
+
#ifdef __cplusplus