Tim Borland / Goldelox_SerialLCD

Dependents:   mbed_rifletool

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Goldelox_Serial_4DLib.cpp Source File

Goldelox_Serial_4DLib.cpp

00001 /*
00002    Goldelox_Serial_4DLib.cpp - Library for 4D Systems Serial Environment.
00003  */
00004 
00005 #include "mbed.h"
00006 #include "Goldelox_Serial_4DLib.h"
00007 
00008 
00009 Goldelox_Serial_4DLib::Goldelox_Serial_4DLib(Serial * virtualPort) {
00010         _virtualPort = virtualPort; 
00011         TimeLimit4D = 2000; // Give a default value to the timeout
00012         while(_virtualPort->readable())
00013         {
00014           _virtualPort->getc() ;
00015         }
00016 
00017 }
00018 
00019 //*********************************************************************************************//
00020 //**********************************Intrinsic 4D Routines**************************************//
00021 //*********************************************************************************************//
00022 
00023 void Goldelox_Serial_4DLib::WriteChars(char * charsout)
00024 {
00025     _virtualPort->printf(charsout) ;
00026     _virtualPort->putc(0);
00027 }
00028 
00029 void Goldelox_Serial_4DLib::WriteBytes(char * Source, int Size)
00030 {
00031     unsigned char wk ;
00032     int i ;
00033     for (i = 0; i < Size; i++)
00034     {
00035         wk = *Source++ ;
00036                 _virtualPort->putc(wk) ;
00037     }
00038 }
00039 
00040 void Goldelox_Serial_4DLib::WriteWords(short * Source, short Size)
00041 {
00042   short wk ;
00043   short i ;
00044   for (i = 0; i < Size; i++)
00045   {
00046     wk = *Source++ ;
00047     _virtualPort->putc(wk >> 8) ;
00048     _virtualPort->putc(wk) ;
00049   }
00050 }
00051 
00052 void Goldelox_Serial_4DLib::getbytes(char * data, int size)
00053 {
00054   int readc ;
00055   readc  = 0 ;
00056   Timer t;
00057   t.start();
00058   while ((readc != size) && (t.read_ms() < TimeLimit4D))
00059   {
00060     if(_virtualPort->readable())
00061     {
00062       data[readc++] = _virtualPort->getc() ;
00063     }
00064   }
00065   if (readc != size)
00066   {
00067     Error4D = Err4D_Timeout ;
00068     if (Callback4D != NULL)
00069       Callback4D(Error4D, Error4D_Inv) ;
00070   }
00071 }
00072 
00073 void Goldelox_Serial_4DLib::GetAck(void)
00074 {
00075   int read ;
00076   unsigned char readx = ' ' ;
00077   Error4D = Err4D_OK ;
00078   Timer t;
00079   t.start();
00080   read    = 0 ;
00081   int ms = 0;
00082   while ((read != 1) && (t.read_ms() < TimeLimit4D))
00083   {
00084       ms = t.read_ms();
00085     if(_virtualPort->readable() != 0)
00086     {
00087       readx = _virtualPort->getc() ;
00088       read = 1 ;
00089     }
00090   }
00091   if (read == 0)
00092   {
00093     Error4D = Err4D_Timeout ;
00094     if (Callback4D != NULL)
00095       Callback4D(ms, 'T') ;
00096   }
00097   else if (readx != 6)
00098   {
00099     Error4D     = Err4D_NAK ;
00100     Error4D_Inv = readx ;
00101     if (Callback4D != NULL)
00102       Callback4D(Error4D, Error4D_Inv) ;
00103   }
00104 }
00105 
00106 short Goldelox_Serial_4DLib::GetWord(void)
00107 {
00108   unsigned char readx[2] ;
00109   int readc ;
00110   
00111   if (Error4D != Err4D_OK)
00112     return 0 ;
00113   Timer t;
00114   t.start();
00115   readc    = 0 ;
00116   while ((readc != 2) && (t.read_ms() < TimeLimit4D))
00117   {
00118     if(_virtualPort->readable())
00119     {
00120       readx[readc++] = _virtualPort->getc() ;
00121     }
00122   }
00123   
00124   if (readc != 2)
00125   {
00126     Error4D  = Err4D_Timeout ;
00127     if (Callback4D != NULL)
00128       Callback4D(Error4D, Error4D_Inv) ;
00129   return 0 ;
00130   }
00131   else
00132     return readx[0] << 8 | readx[1] ;
00133 }
00134 
00135 void Goldelox_Serial_4DLib::getString(char * outStr, int strLen)
00136 {
00137   int readc ;
00138   
00139   if (Error4D != Err4D_OK)
00140   {
00141     outStr[0] = 0 ;
00142     return ;
00143   }
00144   Timer t;
00145   t.start();
00146   readc    = 0 ;
00147   while ((readc != strLen) && (t.read_ms() < TimeLimit4D))
00148   {
00149     if(_virtualPort->readable())
00150     {
00151       outStr[readc++] = _virtualPort->getc() ;
00152     }
00153   }
00154   
00155   if (readc != strLen)
00156   {
00157     Error4D  = Err4D_Timeout ;
00158     if (Callback4D != NULL)
00159       Callback4D(Error4D, Error4D_Inv) ;
00160   }
00161   outStr[readc] = 0 ;
00162 }
00163 
00164 short Goldelox_Serial_4DLib::GetAckResp(void)
00165 {
00166     GetAck() ;
00167     return GetWord() ;
00168 }
00169 
00170 short Goldelox_Serial_4DLib::GetAckRes2Words(short * word1, short * word2)
00171 {
00172     int Result ;
00173     GetAck() ;
00174     Result = GetWord() ;
00175     *word1 = GetWord() ;
00176     *word2 = GetWord() ;
00177     return Result ;
00178 }
00179 
00180 void Goldelox_Serial_4DLib::GetAck2Words(short * word1, short * word2)
00181 {
00182     GetAck() ;
00183     *word1 = GetWord() ;
00184     *word2 = GetWord() ;
00185 }
00186 
00187 short Goldelox_Serial_4DLib::GetAckResStr(char * OutStr)
00188 {
00189     int Result ;
00190     GetAck() ;
00191     Result = GetWord() ;
00192     getString(OutStr, Result) ;
00193     return Result ;
00194 }
00195 /*
00196 short Goldelox_Serial_4DLib::GetAckResData(t4DByteArray OutData, short size)
00197 {
00198     int Result ;
00199     GetAck() ;
00200     Result = GetWord() ;
00201     getbytes(OutData, size) ;
00202     return Result ;
00203 }
00204 */
00205 void Goldelox_Serial_4DLib::SetThisBaudrate(int Newrate)
00206 {
00207   int br = 0;
00208   while(_virtualPort->readable())
00209   {
00210       _virtualPort->getc() ;
00211   }
00212   switch(Newrate)
00213   {
00214     case BAUD_110    : br = 110 ;
00215       break ;
00216     case BAUD_300    : br = 300 ;
00217       break ;
00218     case BAUD_600    : br = 600 ;
00219       break ;
00220     case BAUD_1200   : br = 1200 ;
00221       break ;
00222     case BAUD_2400   : br = 2400 ;
00223       break ;
00224     case BAUD_4800   : br = 4800 ;
00225       break ;
00226     case BAUD_9600   : br = 9600 ;
00227       break ;
00228    case BAUD_14400  : br = 14400 ;
00229       break ;
00230     case BAUD_19200  : br = 19200 ;
00231       break ;
00232  /*   case BAUD_31250  : br = 31250 ;
00233       break ;*/
00234     case BAUD_38400  : br = 38400 ;
00235       break ;
00236     case BAUD_56000  : br = 56000 ;
00237       break ;
00238     case BAUD_57600  : br = 57600 ;
00239       break ;
00240     case BAUD_115200 : br = 115200 ;
00241       break ;
00242 /*    case BAUD_128000 : br = 133928 ; // actual rate is not 128000 ;
00243       break ;
00244     case BAUD_256000 : br = 281250 ; // actual rate is not  256000 ;
00245       break ;
00246     case BAUD_300000 : br = 312500 ; // actual rate is not  300000 ;
00247       break ;
00248     case BAUD_375000 : br = 401785 ; // actual rate is not  375000 ;
00249       break ;
00250     case BAUD_500000 : br = 562500 ; // actual rate is not  500000 ;
00251       break ;
00252     case BAUD_600000 : br = 703125 ; // actual rate is not  600000 ;
00253       break ;*/
00254   }
00255   _virtualPort->baud(br) ;
00256   wait_ms(50); // Display sleeps for 100
00257   while(_virtualPort->readable())
00258   {
00259       _virtualPort->getc() ;
00260   }
00261 }
00262 
00263 //*********************************************************************************************//
00264 //**********************************Compound 4D Routines***************************************//
00265 //*********************************************************************************************//
00266 
00267 short Goldelox_Serial_4DLib::charheight(char  TestChar)
00268 {
00269   _virtualPort->putc((char)(F_charheight >> 8)) ;
00270   _virtualPort->putc((char)(F_charheight)) ;
00271   _virtualPort->putc((char)(TestChar)) ;
00272   return GetAckResp() ;
00273 }
00274 
00275 short Goldelox_Serial_4DLib::charwidth(char  TestChar)
00276 {
00277   _virtualPort->putc((char)(F_charwidth >> 8)) ;
00278   _virtualPort->putc((char)(F_charwidth)) ;
00279   _virtualPort->putc((char)(TestChar)) ;
00280   return GetAckResp() ;
00281 }
00282 
00283 void Goldelox_Serial_4DLib::gfx_BGcolour(short  Color)
00284 {
00285   _virtualPort->putc((char)(F_gfx_BGcolour >> 8)) ;
00286   _virtualPort->putc((char)(F_gfx_BGcolour)) ;
00287   _virtualPort->putc((char)(Color >> 8)) ;
00288   _virtualPort->putc((char)(Color)) ;
00289   GetAck() ;
00290 }
00291 
00292 void Goldelox_Serial_4DLib::gfx_ChangeColour(short  OldColor, short  NewColor)
00293 {
00294   _virtualPort->putc((char)(F_gfx_ChangeColour >> 8)) ;
00295   _virtualPort->putc((char)(F_gfx_ChangeColour)) ;
00296   _virtualPort->putc((char)(OldColor >> 8)) ;
00297   _virtualPort->putc((char)(OldColor)) ;
00298   _virtualPort->putc((char)(NewColor >> 8)) ;
00299   _virtualPort->putc((char)(NewColor)) ;
00300   GetAck() ;
00301 }
00302 
00303 void Goldelox_Serial_4DLib::gfx_Circle(short  X, short  Y, short  Radius, short  Color)
00304 {
00305   _virtualPort->putc((char)(F_gfx_Circle >> 8)) ;
00306   _virtualPort->putc((char)(F_gfx_Circle)) ;
00307   _virtualPort->putc((char)(X >> 8)) ;
00308   _virtualPort->putc((char)(X)) ;
00309   _virtualPort->putc((char)(Y >> 8)) ;
00310   _virtualPort->putc((char)(Y)) ;
00311   _virtualPort->putc((char)(Radius >> 8)) ;
00312   _virtualPort->putc((char)(Radius)) ;
00313   _virtualPort->putc((char)(Color >> 8)) ;
00314   _virtualPort->putc((char)(Color)) ;
00315   GetAck() ;
00316 }
00317 
00318 void Goldelox_Serial_4DLib::gfx_CircleFilled(short  X, short  Y, short  Radius, short  Color)
00319 {
00320   _virtualPort->putc((char)(F_gfx_CircleFilled >> 8)) ;
00321   _virtualPort->putc((char)(F_gfx_CircleFilled)) ;
00322   _virtualPort->putc((char)(X >> 8)) ;
00323   _virtualPort->putc((char)(X)) ;
00324   _virtualPort->putc((char)(Y >> 8)) ;
00325   _virtualPort->putc((char)(Y)) ;
00326   _virtualPort->putc((char)(Radius >> 8)) ;
00327   _virtualPort->putc((char)(Radius)) ;
00328   _virtualPort->putc((char)(Color >> 8)) ;
00329   _virtualPort->putc((char)(Color)) ;
00330   GetAck() ;
00331 }
00332 
00333 void Goldelox_Serial_4DLib::gfx_Clipping(short  OnOff)
00334 {
00335   _virtualPort->putc((char)(F_gfx_Clipping >> 8)) ;
00336   _virtualPort->putc((char)(F_gfx_Clipping)) ;
00337   _virtualPort->putc((char)(OnOff >> 8)) ;
00338   _virtualPort->putc((char)(OnOff)) ;
00339   GetAck() ;
00340 }
00341 
00342 void Goldelox_Serial_4DLib::gfx_ClipWindow(short  X1, short  Y1, short  X2, short  Y2)
00343 {
00344   _virtualPort->putc((char)(F_gfx_ClipWindow >> 8)) ;
00345   _virtualPort->putc((char)(F_gfx_ClipWindow)) ;
00346   _virtualPort->putc((char)(X1 >> 8)) ;
00347   _virtualPort->putc((char)(X1)) ;
00348   _virtualPort->putc((char)(Y1 >> 8)) ;
00349   _virtualPort->putc((char)(Y1)) ;
00350   _virtualPort->putc((char)(X2 >> 8)) ;
00351   _virtualPort->putc((char)(X2)) ;
00352   _virtualPort->putc((char)(Y2 >> 8)) ;
00353   _virtualPort->putc((char)(Y2)) ;
00354   GetAck() ;
00355 }
00356 
00357 void Goldelox_Serial_4DLib::gfx_Cls()
00358 {
00359   _virtualPort->putc((char)(F_gfx_Cls >> 8)) ;
00360   _virtualPort->putc((char)(F_gfx_Cls)) ;
00361   GetAck() ;
00362 }
00363 
00364 void Goldelox_Serial_4DLib::gfx_Contrast(short  Contrast)
00365 {
00366   _virtualPort->putc((char)(F_gfx_Contrast >> 8)) ;
00367   _virtualPort->putc((char)(F_gfx_Contrast)) ;
00368   _virtualPort->putc((char)(Contrast >> 8)) ;
00369   _virtualPort->putc((char)(Contrast)) ;
00370   GetAck() ;
00371 }
00372 
00373 void Goldelox_Serial_4DLib::gfx_FrameDelay(short  Msec)
00374 {
00375   _virtualPort->putc((char)(F_gfx_FrameDelay >> 8)) ;
00376   _virtualPort->putc((char)(F_gfx_FrameDelay)) ;
00377   _virtualPort->putc((char)(Msec >> 8)) ;
00378   _virtualPort->putc((char)(Msec)) ;
00379   GetAck() ;
00380 }
00381 
00382 short Goldelox_Serial_4DLib::gfx_GetPixel(short  X, short  Y)
00383 {
00384   _virtualPort->putc((char)(F_gfx_GetPixel >> 8 )) ;
00385   _virtualPort->putc((char)(F_gfx_GetPixel )) ;
00386   _virtualPort->putc((char)(X >> 8 )) ;
00387   _virtualPort->putc((char)(X )) ;
00388   _virtualPort->putc((char)(Y >> 8 )) ;
00389   _virtualPort->putc((char)(Y )) ;
00390   return GetAckResp() ;
00391 }
00392 
00393 void Goldelox_Serial_4DLib::gfx_Line(short  X1, short  Y1, short  X2, short  Y2, short  Color)
00394 {
00395   _virtualPort->putc((char)(F_gfx_Line >> 8 )) ;
00396   _virtualPort->putc((char)(F_gfx_Line )) ;
00397   _virtualPort->putc((char)(X1 >> 8 )) ;
00398   _virtualPort->putc((char)(X1 )) ;
00399   _virtualPort->putc((char)(Y1 >> 8 )) ;
00400   _virtualPort->putc((char)(Y1 )) ;
00401   _virtualPort->putc((char)(X2 >> 8 )) ;
00402   _virtualPort->putc((char)(X2 )) ;
00403   _virtualPort->putc((char)(Y2 >> 8 )) ;
00404   _virtualPort->putc((char)(Y2 )) ;
00405   _virtualPort->putc((char)(Color >> 8 )) ;
00406   _virtualPort->putc((char)(Color )) ;
00407   GetAck() ;
00408 }
00409 
00410 void Goldelox_Serial_4DLib::gfx_LinePattern(short  Pattern)
00411 {
00412   _virtualPort->putc((char)(F_gfx_LinePattern >> 8 )) ;
00413   _virtualPort->putc((char)(F_gfx_LinePattern )) ;
00414   _virtualPort->putc((char)(Pattern >> 8 )) ;
00415   _virtualPort->putc((char)(Pattern )) ;
00416   GetAck() ;
00417 }
00418 
00419 void Goldelox_Serial_4DLib::gfx_LineTo(short  X, short  Y)
00420 {
00421   _virtualPort->putc((char)(F_gfx_LineTo >> 8 )) ;
00422   _virtualPort->putc((char)(F_gfx_LineTo )) ;
00423   _virtualPort->putc((char)(X >> 8 )) ;
00424   _virtualPort->putc((char)(X )) ;
00425   _virtualPort->putc((char)(Y >> 8 )) ;
00426   _virtualPort->putc((char)(Y )) ;
00427   GetAck() ;
00428 }
00429 
00430 void Goldelox_Serial_4DLib::gfx_MoveTo(short  X, short  Y)
00431 {
00432   _virtualPort->putc((char)(F_gfx_MoveTo >> 8 )) ;
00433   _virtualPort->putc((char)(F_gfx_MoveTo )) ;
00434   _virtualPort->putc((char)(X >> 8 )) ;
00435   _virtualPort->putc((char)(X )) ;
00436   _virtualPort->putc((char)(Y >> 8 )) ;
00437   _virtualPort->putc((char)(Y )) ;
00438   GetAck() ;
00439 }
00440 
00441 short Goldelox_Serial_4DLib::gfx_Orbit(short  Angle, short  Distance, short *  Xdest, short *  Ydest)
00442 {
00443   _virtualPort->putc((char)(F_gfx_Orbit >> 8 )) ;
00444   _virtualPort->putc((char)(F_gfx_Orbit )) ;
00445   _virtualPort->putc((char)(Angle >> 8 )) ;
00446   _virtualPort->putc((char)(Angle )) ;
00447   _virtualPort->putc((char)(Distance >> 8 )) ;
00448   _virtualPort->putc((char)(Distance )) ;
00449   GetAck2Words(Xdest,Ydest) ;
00450   return 0 ;
00451 }
00452 
00453 void Goldelox_Serial_4DLib::gfx_OutlineColour(short  Color)
00454 {
00455   _virtualPort->putc((char)(F_gfx_OutlineColour >> 8 )) ;
00456   _virtualPort->putc((char)(F_gfx_OutlineColour )) ;
00457   _virtualPort->putc((char)(Color >> 8 )) ;
00458   _virtualPort->putc((char)(Color )) ;
00459   GetAck() ;
00460 }
00461 
00462 void Goldelox_Serial_4DLib::gfx_Polygon(short  n, t4DWordArray  Xvalues, t4DWordArray  Yvalues, short  Color)
00463 {
00464   _virtualPort->putc((char)(F_gfx_Polygon >> 8 )) ;
00465   _virtualPort->putc((char)(F_gfx_Polygon )) ;
00466   _virtualPort->putc((char)(n >> 8 )) ;
00467   _virtualPort->putc((char)(n )) ;
00468   WriteWords(Xvalues, (int)n) ;
00469   WriteWords(Yvalues, (int)n) ;
00470   _virtualPort->putc((char)(Color >> 8 )) ;
00471   _virtualPort->putc((char)(Color )) ;
00472   GetAck() ;
00473 }
00474 
00475 void Goldelox_Serial_4DLib::gfx_Polyline(short  n, t4DWordArray  Xvalues, t4DWordArray  Yvalues, short  Color)
00476 {
00477   _virtualPort->putc((char)(F_gfx_Polyline >> 8 )) ;
00478   _virtualPort->putc((char)(F_gfx_Polyline )) ;
00479   _virtualPort->putc((char)(n >> 8 )) ;
00480   _virtualPort->putc((char)(n )) ;
00481   WriteWords(Xvalues, n) ;
00482   WriteWords(Yvalues, n) ;
00483   _virtualPort->putc((char)(Color >> 8 )) ;
00484   _virtualPort->putc((char)(Color )) ;
00485   GetAck() ;
00486 }
00487 
00488 void Goldelox_Serial_4DLib::gfx_PutPixel(short  X, short  Y, short  Color)
00489 {
00490   _virtualPort->putc((char)(F_gfx_PutPixel >> 8 )) ;
00491   _virtualPort->putc((char)(F_gfx_PutPixel )) ;
00492   _virtualPort->putc((char)(X >> 8 )) ;
00493   _virtualPort->putc((char)(X )) ;
00494   _virtualPort->putc((char)(Y >> 8 )) ;
00495   _virtualPort->putc((char)(Y )) ;
00496   _virtualPort->putc((char)(Color >> 8 )) ;
00497   _virtualPort->putc((char)(Color )) ;
00498   GetAck() ;
00499 }
00500 
00501 void Goldelox_Serial_4DLib::gfx_Rectangle(short  X1, short  Y1, short  X2, short  Y2, short  Color)
00502 {
00503   _virtualPort->putc((char)(F_gfx_Rectangle >> 8 )) ;
00504   _virtualPort->putc((char)(F_gfx_Rectangle )) ;
00505   _virtualPort->putc((char)(X1 >> 8 )) ;
00506   _virtualPort->putc((char)(X1 )) ;
00507   _virtualPort->putc((char)(Y1 >> 8 )) ;
00508   _virtualPort->putc((char)(Y1 )) ;
00509   _virtualPort->putc((char)(X2 >> 8 )) ;
00510   _virtualPort->putc((char)(X2 )) ;
00511   _virtualPort->putc((char)(Y2 >> 8 )) ;
00512   _virtualPort->putc((char)(Y2 )) ;
00513   _virtualPort->putc((char)(Color >> 8 )) ;
00514   _virtualPort->putc((char)(Color )) ;
00515   GetAck() ;
00516 }
00517 
00518 void Goldelox_Serial_4DLib::gfx_RectangleFilled(short  X1, short  Y1, short  X2, short  Y2, short  Color)
00519 {
00520   _virtualPort->putc((char)(F_gfx_RectangleFilled >> 8 )) ;
00521   _virtualPort->putc((char)(F_gfx_RectangleFilled )) ;
00522   _virtualPort->putc((char)(X1 >> 8 )) ;
00523   _virtualPort->putc((char)(X1 )) ;
00524   _virtualPort->putc((char)(Y1 >> 8 )) ;
00525   _virtualPort->putc((char)(Y1 )) ;
00526   _virtualPort->putc((char)(X2 >> 8 )) ;
00527   _virtualPort->putc((char)(X2 )) ;
00528   _virtualPort->putc((char)(Y2 >> 8 )) ;
00529   _virtualPort->putc((char)(Y2 )) ;
00530   _virtualPort->putc((char)(Color >> 8 )) ;
00531   _virtualPort->putc((char)(Color )) ;
00532   GetAck() ;
00533 }
00534 
00535 void Goldelox_Serial_4DLib::gfx_ScreenMode(short  ScreenMode)
00536 {
00537   _virtualPort->putc((char)(F_gfx_ScreenMode >> 8 )) ;
00538   _virtualPort->putc((char)(F_gfx_ScreenMode )) ;
00539   _virtualPort->putc((char)(ScreenMode >> 8 )) ;
00540   _virtualPort->putc((char)(ScreenMode )) ;
00541   GetAck() ;
00542 }
00543 
00544 void Goldelox_Serial_4DLib::gfx_Set(short  Func, short  Value)
00545 {
00546   _virtualPort->putc((char)(F_gfx_Set >> 8 )) ;
00547   _virtualPort->putc((char)(F_gfx_Set )) ;
00548   _virtualPort->putc((char)(Func >> 8 )) ;
00549   _virtualPort->putc((char)(Func )) ;
00550   _virtualPort->putc((char)(Value >> 8 )) ;
00551   _virtualPort->putc((char)(Value )) ;
00552   GetAck() ;
00553 }
00554 
00555 void Goldelox_Serial_4DLib::gfx_SetClipRegion()
00556 {
00557   _virtualPort->putc((char)(F_gfx_SetClipRegion >> 8)) ;
00558   _virtualPort->putc((char)(F_gfx_SetClipRegion)) ;
00559   GetAck() ;
00560 }
00561 
00562 void Goldelox_Serial_4DLib::gfx_Transparency(short  OnOff)
00563 {
00564   _virtualPort->putc((char)(F_gfx_Transparency >> 8)) ;
00565   _virtualPort->putc((char)(F_gfx_Transparency)) ;
00566   _virtualPort->putc((char)(OnOff >> 8)) ;
00567   _virtualPort->putc((char)(OnOff)) ;
00568   GetAck() ;
00569 }
00570 
00571 void Goldelox_Serial_4DLib::gfx_TransparentColour(short  Color)
00572 {
00573   _virtualPort->putc((char)(F_gfx_TransparentColour >> 8)) ;
00574   _virtualPort->putc((char)(F_gfx_TransparentColour)) ;
00575   _virtualPort->putc((char)(Color >> 8)) ;
00576   _virtualPort->putc((char)(Color)) ;
00577   GetAck() ;
00578 }
00579 
00580 void Goldelox_Serial_4DLib::gfx_Triangle(short  X1, short  Y1, short  X2, short  Y2, short  X3, short  Y3, short  Color)
00581 {
00582   _virtualPort->putc((char)(F_gfx_Triangle >> 8)) ;
00583   _virtualPort->putc((char)(F_gfx_Triangle)) ;
00584   _virtualPort->putc((char)(X1 >> 8)) ;
00585   _virtualPort->putc((char)(X1)) ;
00586   _virtualPort->putc((char)(Y1 >> 8)) ;
00587   _virtualPort->putc((char)(Y1)) ;
00588   _virtualPort->putc((char)(X2 >> 8)) ;
00589   _virtualPort->putc((char)(X2)) ;
00590   _virtualPort->putc((char)(Y2 >> 8)) ;
00591   _virtualPort->putc((char)(Y2)) ;
00592   _virtualPort->putc((char)(X3 >> 8)) ;
00593   _virtualPort->putc((char)(X3)) ;
00594   _virtualPort->putc((char)(Y3 >> 8)) ;
00595   _virtualPort->putc((char)(Y3)) ;
00596   _virtualPort->putc((char)(Color >> 8)) ;
00597   _virtualPort->putc((char)(Color)) ;
00598   GetAck() ;
00599 }
00600 
00601 short Goldelox_Serial_4DLib::media_Flush()
00602 {
00603   _virtualPort->putc((char)(F_media_Flush >> 8)) ;
00604   _virtualPort->putc((char)(F_media_Flush)) ;
00605   return GetAckResp() ;
00606 }
00607 
00608 void Goldelox_Serial_4DLib::media_Image(short  X, short  Y)
00609 {
00610   _virtualPort->putc((char)(F_media_Image >> 8)) ;
00611   _virtualPort->putc((char)(F_media_Image)) ;
00612   _virtualPort->putc((char)(X >> 8)) ;
00613   _virtualPort->putc((char)(X)) ;
00614   _virtualPort->putc((char)(Y >> 8)) ;
00615   _virtualPort->putc((char)(Y)) ;
00616   GetAck() ;
00617 }
00618 
00619 short Goldelox_Serial_4DLib::media_Init()
00620 {
00621   _virtualPort->putc((char)(F_media_Init >> 8)) ;
00622   _virtualPort->putc((char)(F_media_Init)) ;
00623   return GetAckResp() ;
00624 }
00625 
00626 short Goldelox_Serial_4DLib::media_ReadByte()
00627 {
00628   _virtualPort->putc((char)(F_media_ReadByte >> 8)) ;
00629   _virtualPort->putc((char)(F_media_ReadByte)) ;
00630   return GetAckResp() ;
00631 }
00632 
00633 short Goldelox_Serial_4DLib::media_ReadWord()
00634 {
00635   _virtualPort->putc((char)(F_media_ReadWord >> 8)) ;
00636   _virtualPort->putc((char)(F_media_ReadWord)) ;
00637   return GetAckResp() ;
00638 }
00639 
00640 void Goldelox_Serial_4DLib::media_SetAdd(short  HiWord, short  LoWord)
00641 {
00642   _virtualPort->putc((char)(F_media_SetAdd >> 8)) ;
00643   _virtualPort->putc((char)(F_media_SetAdd)) ;
00644   _virtualPort->putc((char)(HiWord >> 8)) ;
00645   _virtualPort->putc((char)(HiWord)) ;
00646   _virtualPort->putc((char)(LoWord >> 8)) ;
00647   _virtualPort->putc((char)(LoWord)) ;
00648   GetAck() ;
00649 }
00650 
00651 void Goldelox_Serial_4DLib::media_SetSector(short  HiWord, short  LoWord)
00652 {
00653   _virtualPort->putc((char)(F_media_SetSector >> 8)) ;
00654   _virtualPort->putc((char)(F_media_SetSector)) ;
00655   _virtualPort->putc((char)(HiWord >> 8)) ;
00656   _virtualPort->putc((char)(HiWord)) ;
00657   _virtualPort->putc((char)(LoWord >> 8)) ;
00658   _virtualPort->putc((char)(LoWord)) ;
00659   GetAck() ;
00660 }
00661 
00662 void Goldelox_Serial_4DLib::media_Video(short  X, short  Y)
00663 {
00664   _virtualPort->putc((char)(F_media_Video >> 8)) ;
00665   _virtualPort->putc((char)(F_media_Video)) ;
00666   _virtualPort->putc((char)(X >> 8)) ;
00667   _virtualPort->putc((char)(X)) ;
00668   _virtualPort->putc((char)(Y >> 8)) ;
00669   _virtualPort->putc((char)(Y)) ;
00670   GetAck() ;
00671 }
00672 
00673 void Goldelox_Serial_4DLib::media_VideoFrame(short  X, short  Y, short  Framenumber)
00674 {
00675   _virtualPort->putc((char)(F_media_VideoFrame >> 8)) ;
00676   _virtualPort->putc((char)(F_media_VideoFrame)) ;
00677   _virtualPort->putc((char)(X >> 8)) ;
00678   _virtualPort->putc((char)(X)) ;
00679   _virtualPort->putc((char)(Y >> 8)) ;
00680   _virtualPort->putc((char)(Y)) ;
00681   _virtualPort->putc((char)(Framenumber >> 8)) ;
00682   _virtualPort->putc((char)(Framenumber)) ;
00683   GetAck() ;
00684 }
00685 
00686 short Goldelox_Serial_4DLib::media_WriteByte(short  Byte)
00687 {
00688   _virtualPort->putc((char)(F_media_WriteByte >> 8)) ;
00689   _virtualPort->putc((char)(F_media_WriteByte)) ;
00690   _virtualPort->putc((char)(Byte >> 8)) ;
00691   _virtualPort->putc((char)(Byte)) ;
00692   return GetAckResp() ;
00693 }
00694 
00695 short Goldelox_Serial_4DLib::media_WriteWord(short  Word)
00696 {
00697   _virtualPort->putc((char)(F_media_WriteWord >> 8)) ;
00698   _virtualPort->putc((char)(F_media_WriteWord)) ;
00699   _virtualPort->putc((char)(Word >> 8)) ;
00700   _virtualPort->putc((char)(Word)) ;
00701   return GetAckResp() ;
00702 }
00703 
00704 void Goldelox_Serial_4DLib::putCH(short  WordChar)
00705 {
00706   _virtualPort->putc((char)(F_putCH >> 8)) ;
00707   _virtualPort->putc((char)(F_putCH)) ;
00708   _virtualPort->putc((char)(WordChar >> 8)) ;
00709   _virtualPort->putc((char)(WordChar)) ;
00710   GetAck() ;
00711 }
00712 
00713 void Goldelox_Serial_4DLib::putstr(char *  InString)
00714 {
00715   _virtualPort->putc((char)(F_putstr >> 8)) ;
00716   _virtualPort->putc((char)(F_putstr)) ;
00717   WriteChars(InString) ;
00718   GetAck() ;
00719 }
00720 
00721 void Goldelox_Serial_4DLib::txt_Attributes(short  Attribs)
00722 {
00723   _virtualPort->putc((char)(F_txt_Attributes >> 8)) ;
00724   _virtualPort->putc((char)(F_txt_Attributes)) ;
00725   _virtualPort->putc((char)(Attribs >> 8)) ;
00726   _virtualPort->putc((char)(Attribs)) ;
00727   GetAck() ;
00728 }
00729 
00730 void Goldelox_Serial_4DLib::txt_BGcolour(short  Color)
00731 {
00732   _virtualPort->putc((char)(F_txt_BGcolour >> 8)) ;
00733   _virtualPort->putc((char)(F_txt_BGcolour)) ;
00734   _virtualPort->putc((char)(Color >> 8)) ;
00735   _virtualPort->putc((char)(Color)) ;
00736   GetAck() ;
00737 }
00738 
00739 void Goldelox_Serial_4DLib::txt_Bold(short  Bold)
00740 {
00741   _virtualPort->putc((char)(F_txt_Bold >> 8)) ;
00742   _virtualPort->putc((char)(F_txt_Bold)) ;
00743   _virtualPort->putc((char)(Bold >> 8)) ;
00744   _virtualPort->putc((char)(Bold)) ;
00745   GetAck() ;
00746 }
00747 
00748 void Goldelox_Serial_4DLib::txt_FGcolour(short  Color)
00749 {
00750   _virtualPort->putc((char)(F_txt_FGcolour >> 8)) ;
00751   _virtualPort->putc((char)(F_txt_FGcolour)) ;
00752   _virtualPort->putc((char)(Color >> 8)) ;
00753   _virtualPort->putc((char)(Color)) ;
00754   GetAck() ;
00755 }
00756 
00757 void Goldelox_Serial_4DLib::txt_FontID(short  FontNumber)
00758 {
00759   _virtualPort->putc((char)(F_txt_FontID >> 8)) ;
00760   _virtualPort->putc((char)(F_txt_FontID)) ;
00761   _virtualPort->putc((char)(FontNumber >> 8)) ;
00762   _virtualPort->putc((char)(FontNumber)) ;
00763   GetAck() ;
00764 }
00765 
00766 void Goldelox_Serial_4DLib::txt_Height(short  Multiplier)
00767 {
00768   _virtualPort->putc((char)(F_txt_Height >> 8)) ;
00769   _virtualPort->putc((char)(F_txt_Height)) ;
00770   _virtualPort->putc((char)(Multiplier >> 8)) ;
00771   _virtualPort->putc((char)(Multiplier)) ;
00772   GetAck() ;
00773 }
00774 
00775 void Goldelox_Serial_4DLib::txt_Inverse(short  Inverse)
00776 {
00777   _virtualPort->putc((char)(F_txt_Inverse >> 8)) ;
00778   _virtualPort->putc((char)(F_txt_Inverse)) ;
00779   _virtualPort->putc((char)(Inverse >> 8)) ;
00780   _virtualPort->putc((char)(Inverse)) ;
00781   GetAck() ;
00782 }
00783 
00784 void Goldelox_Serial_4DLib::txt_Italic(short  Italic)
00785 {
00786   _virtualPort->putc((char)(F_txt_Italic >> 8)) ;
00787   _virtualPort->putc((char)(F_txt_Italic)) ;
00788   _virtualPort->putc((char)(Italic >> 8)) ;
00789   _virtualPort->putc((char)(Italic)) ;
00790   GetAck() ;
00791 }
00792 
00793 void Goldelox_Serial_4DLib::txt_MoveCursor(short  Line, short  Column)
00794 {
00795   _virtualPort->putc((char)(F_txt_MoveCursor >> 8)) ;
00796   _virtualPort->putc((char)(F_txt_MoveCursor)) ;
00797   _virtualPort->putc((char)(Line >> 8)) ;
00798   _virtualPort->putc((char)(Line)) ;
00799   _virtualPort->putc((char)(Column >> 8)) ;
00800   _virtualPort->putc((char)(Column)) ;
00801   GetAck() ;
00802 }
00803 
00804 void Goldelox_Serial_4DLib::txt_Opacity(short  TransparentOpaque)
00805 {
00806   _virtualPort->putc((char)(F_txt_Opacity >> 8)) ;
00807   _virtualPort->putc((char)(F_txt_Opacity)) ;
00808   _virtualPort->putc((char)(TransparentOpaque >> 8)) ;
00809   _virtualPort->putc((char)(TransparentOpaque)) ;
00810   GetAck() ;
00811 }
00812 
00813 void Goldelox_Serial_4DLib::txt_Set(short  Func, short  Value)
00814 {
00815   _virtualPort->putc((char)(F_txt_Set >> 8)) ;
00816   _virtualPort->putc((char)(F_txt_Set)) ;
00817   _virtualPort->putc((char)(Func >> 8)) ;
00818   _virtualPort->putc((char)(Func)) ;
00819   _virtualPort->putc((char)(Value >> 8)) ;
00820   _virtualPort->putc((char)(Value)) ;
00821   GetAck() ;
00822 }
00823 
00824 void Goldelox_Serial_4DLib::txt_Underline(short  Underline)
00825 {
00826   _virtualPort->putc((char)(F_txt_Underline >> 8)) ;
00827   _virtualPort->putc((char)(F_txt_Underline)) ;
00828   _virtualPort->putc((char)(Underline >> 8)) ;
00829   _virtualPort->putc((char)(Underline)) ;
00830   GetAck() ;
00831 }
00832 
00833 void Goldelox_Serial_4DLib::txt_Width(short  Multiplier)
00834 {
00835   _virtualPort->putc((char)(F_txt_Width >> 8)) ;
00836   _virtualPort->putc((char)(F_txt_Width)) ;
00837   _virtualPort->putc((char)(Multiplier >> 8)) ;
00838   _virtualPort->putc((char)(Multiplier)) ;
00839   GetAck() ;
00840 }
00841 
00842 void Goldelox_Serial_4DLib::txt_Xgap(short  Pixels)
00843 {
00844   _virtualPort->putc((char)(F_txt_Xgap >> 8)) ;
00845   _virtualPort->putc((char)(F_txt_Xgap)) ;
00846   _virtualPort->putc((char)(Pixels >> 8)) ;
00847   _virtualPort->putc((char)(Pixels)) ;
00848   GetAck() ;
00849 }
00850 
00851 void Goldelox_Serial_4DLib::txt_Ygap(short  Pixels)
00852 {
00853   _virtualPort->putc((char)(F_txt_Ygap >> 8)) ;
00854   _virtualPort->putc((char)(F_txt_Ygap)) ;
00855   _virtualPort->putc((char)(Pixels >> 8)) ;
00856   _virtualPort->putc((char)(Pixels)) ;
00857   GetAck() ;
00858 }
00859 
00860 void Goldelox_Serial_4DLib::BeeP(short  Note, short  Duration)
00861 {
00862   _virtualPort->putc((char)(F_BeeP >> 8)) ;
00863   _virtualPort->putc((char)(F_BeeP)) ;
00864   _virtualPort->putc((char)(Note >> 8)) ;
00865   _virtualPort->putc((char)(Note)) ;
00866   _virtualPort->putc((char)(Duration >> 8)) ;
00867   _virtualPort->putc((char)(Duration)) ;
00868   GetAck() ;
00869 }
00870 
00871 short Goldelox_Serial_4DLib::sys_GetModel(char *  ModelStr)
00872 {
00873   _virtualPort->putc((char)(F_sys_GetModel >> 8)) ;
00874   _virtualPort->putc((char)(F_sys_GetModel)) ;
00875   return GetAckResStr(ModelStr) ;
00876 }
00877 
00878 short Goldelox_Serial_4DLib::sys_GetVersion()
00879 {
00880   _virtualPort->putc((char)(F_sys_GetVersion >> 8)) ;
00881   _virtualPort->putc((char)(F_sys_GetVersion)) ;
00882   return GetAckResp() ;
00883 }
00884 
00885 short Goldelox_Serial_4DLib::sys_GetPmmC()
00886 {
00887   _virtualPort->putc((char)(F_sys_GetPmmC >> 8)) ;
00888   _virtualPort->putc((char)(F_sys_GetPmmC)) ;
00889   return GetAckResp() ;
00890 }
00891 
00892 void Goldelox_Serial_4DLib::blitComtoDisplay(short  X, short  Y, short  Width, short  Height, t4DByteArray  Pixels)
00893 {
00894   _virtualPort->putc((char)(F_blitComtoDisplay >> 8)) ;
00895   _virtualPort->putc((char)(F_blitComtoDisplay)) ;
00896   _virtualPort->putc((char)(X >> 8)) ;
00897   _virtualPort->putc((char)(X)) ;
00898   _virtualPort->putc((char)(Y >> 8)) ;
00899   _virtualPort->putc((char)(Y)) ;
00900   _virtualPort->putc((char)(Width >> 8)) ;
00901   _virtualPort->putc((char)(Width)) ;
00902   _virtualPort->putc((char)(Height >> 8)) ;
00903   _virtualPort->putc((char)(Height)) ;
00904   WriteBytes(Pixels, Width*Height*2) ;
00905   GetAck() ;
00906 }
00907 
00908 void Goldelox_Serial_4DLib::setbaudWait(short  Newrate)
00909 {
00910   _virtualPort->putc((char)(F_setbaudWait >> 8)) ;
00911   _virtualPort->putc((char)(F_setbaudWait)) ;
00912   _virtualPort->putc((char)(Newrate >> 8)) ;
00913   _virtualPort->putc((char)(Newrate)) ;
00914   SetThisBaudrate(Newrate) ; // change this systems baud rate to match new display rate, ACK is 100ms away
00915   GetAck() ;
00916 }
00917 
00918 short Goldelox_Serial_4DLib::peekW(short  Address)
00919 {
00920   _virtualPort->putc((char)(F_peekW >> 8)) ;
00921   _virtualPort->putc((char)(F_peekW)) ;
00922   _virtualPort->putc((char)(Address >> 8)) ;
00923   _virtualPort->putc((char)(Address)) ;
00924   return GetAckResp() ;
00925 }
00926 
00927 void Goldelox_Serial_4DLib::pokeW(short  Address, short  WordValue)
00928 {
00929   _virtualPort->putc((char)(F_pokeW >> 8)) ;
00930   _virtualPort->putc((char)(F_pokeW)) ;
00931   _virtualPort->putc((char)(Address >> 8)) ;
00932   _virtualPort->putc((char)(Address)) ;
00933   _virtualPort->putc((char)(WordValue >> 8)) ;
00934   _virtualPort->putc((char)(WordValue)) ;
00935   GetAck() ;
00936 }
00937 
00938 short Goldelox_Serial_4DLib::peekB(short  Address)
00939 {
00940   _virtualPort->putc((char)(F_peekB >> 8)) ;
00941   _virtualPort->putc((char)(F_peekB)) ;
00942   _virtualPort->putc((char)(Address >> 8)) ;
00943   _virtualPort->putc((char)(Address)) ;
00944   return GetAckResp() ;
00945 }
00946 
00947 void Goldelox_Serial_4DLib::pokeB(short  Address, short  ByteValue)
00948 {
00949   _virtualPort->putc((char)(F_pokeB >> 8)) ;
00950   _virtualPort->putc((char)(F_pokeB)) ;
00951   _virtualPort->putc((char)(Address >> 8)) ;
00952   _virtualPort->putc((char)(Address)) ;
00953   _virtualPort->putc((char)(ByteValue >> 8)) ;
00954   _virtualPort->putc((char)(ByteValue)) ;
00955   GetAck() ;
00956 }
00957 
00958 short Goldelox_Serial_4DLib::joystick()
00959 {
00960   _virtualPort->putc((char)(F_joystick >> 8)) ;
00961   _virtualPort->putc((char)(F_joystick)) ;
00962   return GetAckResp() ;
00963 }
00964 
00965 void Goldelox_Serial_4DLib::SSTimeout(short  Seconds)
00966 {
00967   _virtualPort->putc((char)(F_SSTimeout >> 8)) ;
00968   _virtualPort->putc((char)(F_SSTimeout)) ;
00969   _virtualPort->putc((char)(Seconds >> 8)) ;
00970   _virtualPort->putc((char)(Seconds)) ;
00971   GetAck() ;
00972 }
00973 
00974 void Goldelox_Serial_4DLib::SSSpeed(short  Speed)
00975 {
00976   _virtualPort->putc((char)(F_SSSpeed >> 8)) ;
00977   _virtualPort->putc((char)(F_SSSpeed)) ;
00978   _virtualPort->putc((char)(Speed >> 8)) ;
00979   _virtualPort->putc((char)(Speed)) ;
00980   GetAck() ;
00981 }
00982 
00983 void Goldelox_Serial_4DLib::SSMode(short  Parm)
00984 {
00985   _virtualPort->putc((char)(F_SSMode >> 8)) ;
00986   _virtualPort->putc((char)(F_SSMode)) ;
00987   _virtualPort->putc((char)(Parm >> 8)) ;
00988   _virtualPort->putc((char)(Parm)) ;
00989   GetAck() ;
00990 }