Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 }
Generated on Tue Jul 19 2022 22:57:03 by
 1.7.2
 1.7.2