unsigned int RageFileSink::Put2(const byte *inString, unsigned int length, int messageEnd, bool blocking) { if (!m_file.IsOpen()) throw Err("FileSink: output stream not opened"); if( m_file.Write((const char *)inString, length) == -1 ) throw WriteErr( m_file ); if (messageEnd) if( m_file.Flush() == -1 ) throw WriteErr( m_file ); return 0; }
bool SpriteBlock::addCondition(BlockCondition* cond){ if (conditions != NULL) { WriteErr("Too many condition elements for SpriteBlock\n"); return false; } conditions = cond; return true; }
bool includeFile(SpriteNode* node, TiXmlElement* includeNode, SpriteBlock* &oldSibling) { // get path... ugly char configfilepath[FILENAME_BUFFERSIZE] = {0}; const char* documentRef = getDocument(includeNode); if (!getLocalFilename(configfilepath,includeNode->Attribute("file"),documentRef)) { return false; } ALLEGRO_PATH * incpath = al_create_path(configfilepath); al_append_path_component(incpath, "include"); TiXmlDocument doc( al_path_cstr(incpath, ALLEGRO_NATIVE_PATH_SEP) ); al_destroy_path(incpath); bool loadOkay = doc.LoadFile(); TiXmlHandle hDoc(&doc); TiXmlElement* elemParent; if(!loadOkay) { contentError("Include failed",includeNode); WriteErr("File load failed: %s\n",configfilepath); WriteErr("Line %d: %s\n",doc.ErrorRow(),doc.ErrorDesc()); return false; } elemParent = hDoc.FirstChildElement("include").Element(); if( elemParent == NULL) { contentError("Main <include> node not present",&doc); return false; } TiXmlElement* elemNode = elemParent->FirstChildElement(); if (elemNode == NULL) { contentError("Empty include",elemParent); return false; } while (elemNode) { if (!readNode(node, elemNode, elemParent, oldSibling)) return false; elemNode = elemNode->NextSiblingElement(); } return true; }
void RTErrHandler( int errcode, va_list args ) { //=============================================== // Print a run-time error message and halt execution. WriteErr( errcode, args ); _RWD_XcptFlags |= XF_FATAL_ERROR; if( (_RWD_XcptFlags & XF_IO_INTERRUPTED) == 0 ) { RTSuicide(); } }
bool RageFileSink::IsolatedFlush(bool hardFlush, bool blocking) { if (!m_file.IsOpen()) throw Err("FileSink: output stream not opened"); if( m_file.Flush() == -1 ) throw WriteErr( m_file ); return false; }
bool FileSink::IsolatedFlush(bool hardFlush, bool blocking) { CRYPTOPP_UNUSED(hardFlush), CRYPTOPP_UNUSED(blocking); if (!m_stream) throw Err("FileSink: output stream not opened"); m_stream->flush(); if (!m_stream->good()) throw WriteErr(); return false; }
bool includeFile(SpriteNode* node, TiXmlElement* includeNode, SpriteBlock* &oldSibling) { string filenameStr("buildings/include/"); filenameStr.append(includeNode->Attribute("file")); TiXmlDocument doc( filenameStr.c_str() ); bool loadOkay = doc.LoadFile(); TiXmlHandle hDoc(&doc); TiXmlElement* elemParent; if(!loadOkay) { contentError("Include failed",includeNode); WriteErr("File load failed: %s\n",filenameStr.c_str()); WriteErr("Line %d: %s\n",doc.ErrorRow(),doc.ErrorDesc()); return false; } elemParent = hDoc.FirstChildElement("include").Element(); if( elemParent == NULL) { contentError("Main <include> node not present",&doc); return false; } TiXmlElement* elemNode = elemParent->FirstChildElement(); if (elemNode == NULL) { contentError("Empty include",elemParent); return false; } while (elemNode) { if (!readNode(node, elemNode, elemParent, oldSibling)) return false; elemNode = elemNode->NextSiblingElement(); } return true; }
void CObjectManager::AddSimpleCardRead ( TComponent *Owner, const AnsiString &commName ) { CSimpleCardRead *simpleCardRead = 0; try { simpleCardRead = new CSimpleCardRead ( commName, CBR_9600, NOPARITY, ONESTOPBIT, 8 ); } catch ( Exception &ex ) { WriteErr ( ex.Message ); } if (FCardReader == 0) FCardReader = new TFormCardRead ( Owner ); if ( simpleCardRead ) FCardReader->PushScanner ( simpleCardRead) ; }
int translateProfession(const char* currentProf) { if (currentProf == NULL || currentProf[0]==0) return INVALID_INDEX; uint32_t j; string proffStr; for(j=0; (proffStr = dfMemoryInfo.getProfession(j)) != "" ; j++) { if( proffStr.compare( currentProf ) == 0) { //assign ID return j; } } WriteErr("Unable to match profession '%s' to anything in-game\n", currentProf); return INT_MAX; //if it is left at INVALID_INDEX, the condition is ignored entierly. }
size_t FileSink::Put2(const byte *inString, size_t length, int messageEnd, bool blocking) { CRYPTOPP_UNUSED(blocking); if (!m_stream) throw Err("FileSink: output stream not opened"); while (length > 0) { std::streamsize size; if (!SafeConvert(length, size)) size = ((std::numeric_limits<std::streamsize>::max)()); m_stream->write((const char *)inString, size); inString += size; length -= (size_t)size; } if (messageEnd) m_stream->flush(); if (!m_stream->good()) throw WriteErr(); return 0; }
CObjectManager::CObjectManager ( OBJECT_OPTIONS &opt ) { FKKM = 0; FComPort = 0;//принтера FScannerPort = 0; FPultPort = 0; FPrinterPort = 0; FKKMPort = 0; FPrinterPortS = 0; FPultPortS = 0; FScannerPortS = 0; FCardReader = 0; FTRK = 0; FGoldCrown = 0; FMagRead = 0; m_MifareCard = 0; m_pStruna = NULL; TErrInfo ErrInfo; ErrInfo.UUnum = 850; ErrInfo.Kind = HardError; ErrInfo.ErrCode = -1; /* FComPort = new TComPort; FComPort->ComName = opt.PrintComName; FScannerPort = new TComPort; FScannerPort->ComName = opt.CardReadComName;*/ InitializeCriticalSection ( &cs ); /* opt.KKMType = PRINTER_MSTAR; opt.KKMComName = "COM2"; opt.PrintBaudRate = 0;//115200;*/ // opt.KKMType = NOT_INSTALLED; switch ( opt.KKMType ) { CKassMStar *MStar; CKassShtrihKKM *ShtrishKKM; case PRINTER_MSTAR: FKKMPort = new CSimpleCommPort; FKKMPort->SetCommPort ( opt.KKMComName ); MStar = new CKassMStar ( opt.Owner, FKKMPort, opt.PrintBaudRate ); FKKM = MStar; break; case KKM_STROKE: try { ShtrishKKM = new CKassShtrihKKM ( opt.Owner, opt.KKMComName, opt.PrintBaudRate ); FKKM = ShtrishKKM; ShtrishKKM->SetTextWidth ( 28 ); ShtrishKKM->OpenCommPort(); }catch ( ECommError &E ) { //DeleteAll(); //throw Exception( "Не удалось открыть порт ККМ Штрих: " + // AnsiString ( E.what() ) ); WriteErr ( "Не удалось открыть порт ККМ Штрих: " + AnsiString ( E.what() ) ); } break; case KKM_PRIM: try { FKKM = new CKassPrim (opt.Owner, opt.KKMComName, opt.PrintBaudRate ); }catch ( ECommError E ) { //DeleteAll(); //throw Exception( "Не удалось открыть порт ККМ Прим: " + // AnsiString ( E.what() ) ); WriteErr ( "Не удалось открыть порт ККМ Прим: " + AnsiString (E.what()) ); } break; case NOT_INSTALLED: break; default: ErrInfo.ErrText = "Не известная ККМ"; throw ErrInfo; } if ( ( KKM && opt.PrintBaudRate == 0 ) || ( KKM && opt.PrintBaudRate != 0 && ! KKM->TestKKM() ) ) if ( ! KKM->SearchKKM() ) { //ошибка поиска ккм } switch ( opt.KKMType ) { TStringList *FormBuy, *FormReturnBuy; CKassMStar *MStar; case PRINTER_MSTAR: MStar = (CKassMStar*)FKKM; FormBuy = new TStringList; FormReturnBuy = new TStringList; if ( Data->GetPatternMStar ( FormBuy, FormReturnBuy, &ErrInfo ) ) { if(!FormBuy->Text.Trim().IsEmpty() ) MStar->SetFormBuy ( FormBuy ); else MStar->SetDefaultFormBuy(); if(!FormReturnBuy->Text.Trim().IsEmpty() ) MStar->SetFormReturnBuy ( FormReturnBuy ); else MStar->SetDefaultReturnBuy(); } else { MStar->SetDefaultFormBuy(); MStar->SetDefaultReturnBuy(); // WriteProt ( ErrInfo ); } delete FormReturnBuy; delete FormBuy; break; } switch ( opt.PrinterType ) { CKassShtrihKKM *ShtrishKKM; case PRINTER_MSTAR: if ( opt.KKMType == PRINTER_MSTAR ) FPrinter = FKKM; else { FPrinterPortS = new CSimpleCommPort; FPrinterPortS->SetCommPort ( opt.PrintComName ); FPrinter = new CKassMStar ( opt.Owner, FPrinterPortS, opt.PrintBaudRate ); if ( opt.PrintBaudRate == 0 ) ((CKassKKM*)FPrinter)->SearchKKM(); } break; case PRINTER_FILE: FPrinter = new CKassPrinterFile ( opt.PrintComName ); break; case NOT_INSTALLED: break; case KKM_STROKE: if ( opt.KKMType == KKM_STROKE ) FPrinter = FKKM; else { ShtrishKKM = new CKassShtrihKKM ( opt.Owner, opt.PrintComName, opt.PrintBaudRate ); // ShtrishKKM->SetTextWidth ( 28 ); ShtrishKKM->OpenCommPort(); FPrinter = ShtrishKKM; } break; case KKM_PRIM: if ( opt.KKMType == KKM_PRIM ) FPrinter = FKKM; else try { FPrinter = new CKassPrim ( opt.Owner, opt.PrintComName, opt.PrintBaudRate ); } catch ( ECommError &E ) { //DeleteAll(); //throw Exception( "Не удалось открыть порт ККМ Прим: " + // AnsiString ( E.what() ) ); WriteErr ( "Не удалось открыть порт ККМ Прим: " + AnsiString (E.what()) ); } break; default: DeleteAll(); ErrInfo.ErrText = "Не известный принтер"; throw ErrInfo; } AnsiString Foot, Head; if ( Data->GetTicketAttr ( &Head, &Foot, &ErrInfo ) ) { FPrinter->SetHead ( Head ); FPrinter->SetFoot ( Foot ); } // else // WriteProt ( ErrInfo ); if ( opt.ExistPult ) { switch ( opt.PultType ) { CKassPult_v2 *pv2; CKassTRKAZT *azt; case NOT_INSTALLED: FTRK = new CKassNoPult ( opt.Owner ); break; case PULT_AMUR: FPultPortS = new CSimpleCommPort; CPultScannerCommand::SetDCBProperty ( FPultPortS ); FPultPortS->SetCommPort ( opt.PultComName ); FTRK = new CKassPult_v1 ( opt.Owner, FPultPortS, &cs ); break; case HEAD_VESNA: try { FTRK = new CKassVesnaTRK ( opt.Owner, opt.PultComName, 9600 ); }catch ( ECommError &E ) { DeleteAll(); throw Exception( "Не удалось открыть порт Весны: " + AnsiString ( E.what() ) ); } break; case PULT_AMUR_v2: FPultPortS = new CSimpleCommPort; CPultScannerCommand::SetDCBProperty ( FPultPortS ); FPultPortS->SetCommPort ( opt.PultComName ); pv2 = new CKassPult_v2 ( opt.Owner, FPultPortS, &cs, 2 ); FTRK = pv2; pv2->AddColon ( 0, 0x10 ); pv2->AddColon ( 1, 0x11 ); break; case HEAD_AZT: try { FTRK = new CKassTRKAZT ( opt.Owner, opt.PultComName, opt.HeadBaudRate ); }catch ( ECommError &E ) { DeleteAll(); throw Exception( "Не удалось открыть порт ТРК АЗТ: " + AnsiString ( E.what() ) ); } break; case HEAD_STROKE_MINI_COMP: case HEAD_STROKE_TRK: try { FTRK = new CKassStrokeAZS ( opt.Owner, opt.PultComName, opt.HeadBaudRate/*38400/*9600*/, (opt.PultType == HEAD_STROKE_MINI_COMP) ); }catch ( ECommError &E ) { DeleteAll(); throw Exception( "Не удалось открыть порт Штрих АЗС: " + AnsiString ( E.what() ) ); } break; case HEAD_DRESSER_WAYNE: try { FTRK = new KassTRKDresserWayne ( opt.Owner, opt.PultComName, opt.HeadBaudRate ); }catch ( ECommError &E ) { DeleteAll(); throw Exception( "Не удалось открыть порт TRK Dresser Wayne: " + AnsiString ( E.what() ) ); } break; default: ErrInfo.ErrText = "Неизвестный пульт"; DeleteAll(); throw ErrInfo; } }else { FTRK = new CKassNoPult ( opt.Owner ); } switch ( opt.CardReadType ) { case CARD_READ_SCANNER: /* if ( opt.UnionScannerAndPult ) { if (( opt.PultType != PULT_AMUR && opt.PultType != PULT_AMUR_v2 ) || !opt.ExistPult) { FScannerPortS = new CSimpleCommPort; CPultScannerCommand::SetDCBProperty ( FScannerPortS ); FScannerPortS->SetCommPort ( opt.CardReadComName ); scannerCardRead = new CScannerCardRead ( FScannerPortS, &cs ); }else scannerCardRead = new CScannerCardRead ( FPultPortS, &cs ); } else { FScannerPortS = new CSimpleCommPort; CPultScannerCommand::SetDCBProperty ( FScannerPortS ); FScannerPortS->SetCommPort ( opt.CardReadComName ); scannerCardRead = new CScannerCardRead ( FScannerPortS, 0 ); } FCardReader = new TFormCardRead ( opt.Owner ); FCardReader->PushScanner ( scannerCardRead) ; */ AddScannerCardRead(opt); break; case NOT_INSTALLED: break; case CARD_READ_SIMPLE: /*simpleCardRead = new CSimpleCardRead ( opt.CardReadComName, 9600, 1, ONESTOPBIT, 8 ); FCardReader = new TFormCardRead ( opt.Owner ); FCardReader->PushScanner ( simpleCardRead) ;*/ AddSimpleCardRead ( opt.Owner, opt.CardReadComName ); break; /* case CARD_READ_COMBINE: if ( opt.UnionScannerAndPult ) { if (( opt.PultType != PULT_AMUR && opt.PultType != PULT_AMUR_v2 ) || !opt.ExistPult) { FScannerPortS = new CSimpleCommPort; CPultScannerCommand::SetDCBProperty ( FScannerPortS ); FScannerPortS->SetCommPort ( opt.CardReadComName ); FCardReader = new CCombineCardRead ( opt.Owner, FScannerPortS, &cs, opt.CardReadComName, 9600, 1, ONESTOPBIT, 8 ); }else FCardReader = new CCombineCardRead ( opt.Owner, FPultPortS, &cs, opt.CardReadComName, 9600, 1, ONESTOPBIT, 8 ); } else { FScannerPortS = new CSimpleCommPort; CPultScannerCommand::SetDCBProperty ( FScannerPortS ); FScannerPortS->SetCommPort ( opt.CardReadComName ); FCardReader = new CCombineCardRead ( opt.Owner, FScannerPortS, 0, opt.CardReadComName, 9600, 1, ONESTOPBIT, 8 ); } break; */ case CARD_READ_COMBINE: AddScannerCardRead(opt); AddSimpleCardRead (opt.Owner, opt.CardReadComName ); break; default: //ErrInfo.ErrText = "Не известный сканер"; //throw ErrInfo; WriteErr ( "Не известный сканер" ); } if ( opt.bUseSecondScanner ) { AddSimpleCardRead (opt.Owner, opt.SecondScannerCommName ); } if ( opt.UseGoldCrown ) { FGoldCrown = new CGoldCrown ( opt.GoldCrownComName ); } if ( opt.MagReader ) { CSimpleCardRead *simpleCardRead = new CSimpleCardRead ( opt.MagComName ); FMagRead = new TFormCardRead (opt.Owner ); FMagRead->PushScanner ( simpleCardRead ); } if ( opt.UseMifareCard ) { try { m_MifareCard = new CMifareCard ( "001DC001", opt.MifarePortName ); } catch ( const TErrInfo &err ) { opt.UseMifareCard = false; WriteProt ( err ); } } switch ( opt.m_siu ) { case siuStruna: m_pStruna = new CListenStruna_v1 ( opt.StrunaCommName ); if ( ! m_pStruna->StartListen() ) WriteErr ( "Не удалось соединится со струной" ); break; case siuIgla: m_pStruna = new LevelGageIgla ( opt.StrunaCommName ); if ( ! m_pStruna->StartListen() ) WriteErr ( "Не удалось соединится с Иглой" ); break; case siuService: m_pStruna = new LevelGageInet(opt.m_SIUIPAddress, opt.m_SIUPort); if ( ! m_pStruna->StartListen() ) WriteErr ( "Не удалось соединится с Сервисом СИУ" ); break; default: m_pStruna = NULL; break; } if ( opt.TerminalRegim ) { m_TerminalServer = boost::shared_ptr<TerminalServer> ( new TerminalServer() ); } if ( opt.SendSMSMode ) { m_SMSSender = boost::shared_ptr<KassSMSSender> ( new KassSMSSender(opt.PhoneCommPortName, opt.PhoneCommPortBaudRate ) ); } int OpenPortNumber = 0; try { if ( FComPort ) FComPort->Open ( ); OpenPortNumber = 1; if ( FScannerPort ) FScannerPort->Open ( ); OpenPortNumber = 2; if ( FPrinterPort ) FPrinterPort->Open ( ); OpenPortNumber = 3; if ( FPultPort ) FPultPort->Open ( ); OpenPortNumber = 4; if ( FPrinterPortS ) FPrinterPortS->OpenCommPort(); OpenPortNumber = 5; if ( FKKMPort && FKKMPort->GetConnected() ) FKKMPort->OpenCommPort(); OpenPortNumber = 6; if ( FPultPortS ) FPultPortS->OpenCommPort(); OpenPortNumber = 7; if ( FScannerPortS ) FScannerPortS->OpenCommPort(); } catch ( ECommError E ) { /*Информативное оповещение об ошибках ком порта 30.11.2005 Ногин В.Г.*/ AnsiString errinfo; switch ( OpenPortNumber ) { case 0: errinfo = "Не удалось открыть ком порт, который кстати давно не используется, чёрт знает зачем мы его открываем: "; DeleteAll(); throw Exception( errinfo + AnsiString(E.what()) ); case 1: errinfo = "Не удалось открыть ком порт, который кстати давно не используется, но был для сканера, чёрт знает зачем мы его открываем: "; DeleteAll(); throw Exception( errinfo + AnsiString(E.what()) ); case 2: errinfo = "Не удалось открыть ком порт, который кстати давно не используется, но был судя по названию для принтера, чёрт знает зачем мы его открываем: "; DeleteAll(); throw Exception( errinfo + AnsiString(E.what()) ); case 3: errinfo = "Не удалось открыть ком порт, который кстати давно не используется, но был для пульта, чёрт знает зачем мы его открываем: "; DeleteAll(); throw Exception( errinfo + AnsiString(E.what()) ); case 4: errinfo = "Не удалось открыть ком порт принтера (M-Start ФР): "; WriteErr ( errinfo + AnsiString(E.what()) ); break; case 5: errinfo = "Не удалось открыть ком порт ККМ (M-Start ФР): "; WriteErr ( errinfo + AnsiString(E.what()) ); break; case 6: errinfo = "Не удалось открыть порт пульта: "; DeleteAll(); throw Exception( errinfo + AnsiString(E.what()) ); case 7: errinfo = "Не уадлось открыть порт штрих кодового сканера: "; WriteErr ( errinfo + AnsiString(E.what()) ); break; default: DeleteAll(); throw Exception( AnsiString(E.what()) ); } } }
void FileSink::Put(const byte *inString, unsigned int length) { out.write((const char *)inString, length); if (!out.good()) throw WriteErr(); }
void FileSink::InputFinished() { out.flush(); if (!out.good()) throw WriteErr(); }
bool addSingleCreatureConfig( TiXmlElement* elemCreature, vector<vector<CreatureConfiguration>*>& knownCreatures, int basefile ){ int gameID = lookupIndexedType(elemCreature->Attribute("gameID"),contentLoader.creatureNameStrings); if (gameID == INVALID_INDEX) return false; const char* sheetIndexStr; t_SpriteWithOffset sprite; sprite.fileIndex=basefile; sprite.x=0; sprite.y=0; sprite.animFrames=ALL_FRAMES; int baseShadow = DEFAULT_SHADOW; const char* shadowStr = elemCreature->Attribute("shadow"); if (shadowStr != NULL && shadowStr[0] != 0) { baseShadow = atoi( shadowStr ); } if (baseShadow < 0 || baseShadow > MAX_SHADOW) baseShadow = DEFAULT_SHADOW; const char* filename = elemCreature->Attribute("file"); if (filename != NULL && filename[0] != 0) { sprite.fileIndex = loadConfigImgFile((char*)filename,elemCreature); } TiXmlElement* elemVariant = elemCreature->FirstChildElement("variant"); while( elemVariant ){ int professionID = INVALID_INDEX; const char* profStr = elemVariant->Attribute("prof"); if (profStr == NULL || profStr[0] == 0) { profStr = elemVariant->Attribute("profession"); } professionID = translateProfession(profStr); const char* customStr = elemVariant->Attribute("custom"); if (customStr != NULL && customStr[0] == 0) { customStr = NULL; } if (customStr != NULL) { WriteErr("custom: %s\n",customStr); } const char* sexstr = elemVariant->Attribute("sex"); sheetIndexStr = elemVariant->Attribute("sheetIndex"); enumCreatureSex cresex = eCreatureSex_NA; if(sexstr){ if(strcmp( sexstr, "M" ) == 0) cresex = eCreatureSex_Male; if(strcmp( sexstr, "F" ) == 0) cresex = eCreatureSex_Female; } const char* specstr = elemVariant->Attribute("special"); enumCreatureSpecialCases crespec = eCSC_Any; if (specstr) { if(strcmp( specstr, "Normal" ) == 0) crespec = eCSC_Normal; if(strcmp( specstr, "Zombie" ) == 0) crespec = eCSC_Zombie; if(strcmp( specstr, "Skeleton" ) == 0) crespec = eCSC_Skeleton; } sprite.animFrames = getAnimFrames(elemVariant->Attribute("frames")); if (sprite.animFrames == 0) sprite.animFrames = ALL_FRAMES; int shadow = baseShadow; const char* shadowStr = elemVariant->Attribute("shadow"); if (shadowStr != NULL && shadowStr[0] != 0) { shadow = atoi( shadowStr ); } if (shadow < 0 || shadow > MAX_SHADOW) shadow = baseShadow; //create profession config sprite.sheetIndex=atoi(sheetIndexStr); CreatureConfiguration cre( professionID, customStr , cresex, crespec, sprite, shadow); //add a copy to known creatures pushCreatureConfig(knownCreatures, gameID, cre); elemVariant = elemVariant->NextSiblingElement("variant"); } //create default config baseShadow; sheetIndexStr = elemCreature->Attribute("sheetIndex"); sprite.animFrames = ALL_FRAMES; if (sheetIndexStr) { sprite.sheetIndex = atoi( sheetIndexStr ); CreatureConfiguration cre( INVALID_INDEX, NULL, eCreatureSex_NA, eCSC_Any, sprite, baseShadow); //add a copy to known creatures pushCreatureConfig(knownCreatures, gameID, cre); } return true; }
static bool chargeTVP3026(PixMap *pPixMap) { byte reg1, curCtl, curPos[4]; bool valeurRetour = mtxOK; int i; if (pPixMap->Data) toBitPlane(pPixMap); if (!pPixMap->Data) /* If Data Empty, no Load */ { WriteErr("chargeTVP3026: data empty no load\n"); return(mtxFAIL); } /* Hide cursor */ dacReadBYTE(TVP3026_CUR_XLOW, curPos[0]); dacReadBYTE(TVP3026_CUR_XHI , curPos[1]); dacReadBYTE(TVP3026_CUR_YLOW, curPos[2]); dacReadBYTE(TVP3026_CUR_YHI , curPos[3]); dacWriteBYTE(TVP3026_CUR_XLOW, 0x00 ); dacWriteBYTE(TVP3026_CUR_XHI , 0x00 ); dacWriteBYTE(TVP3026_CUR_YLOW, 0x00 ); dacWriteBYTE(TVP3026_CUR_YHI , 0x00 ); /* update TVP Revision */ dacWriteBYTE(TVP3026_INDEX, TVP3026_SILICON_REV); dacReadBYTE(TVP3026_DATA, revTVP[iBoard]); switch(pPixMap->Width) { case 32: /* Transfer 1st 256 bytes */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacReadBYTE(TVP3026_DATA, curCtl); reg1 = curCtl & 0xf0; /* CCR[3:2] = 00 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i = 0; i < 128; i+=4) { dacWriteBYTE(TVP3026_CUR_RAM, planData[i]); dacWriteBYTE(TVP3026_CUR_RAM, planData[i+1]); dacWriteBYTE(TVP3026_CUR_RAM, planData[i+2]); dacWriteBYTE(TVP3026_CUR_RAM, planData[i+3]); dacWriteBYTE(TVP3026_CUR_RAM, 0); dacWriteBYTE(TVP3026_CUR_RAM, 0); dacWriteBYTE(TVP3026_CUR_RAM, 0); dacWriteBYTE(TVP3026_CUR_RAM, 0); } /* Transfer 2nd 256 bytes */ reg1 = reg1 | 0x04; /* CCR[3:2] = 01 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i=0; i<256; i++) dacWriteBYTE(TVP3026_CUR_RAM, 0); /* Transfer 3rd 256 bytes (Start of second PLAN) */ reg1 = reg1 & 0xf0; reg1 = reg1 | 0x08; /* CCR[3:2] = 10 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i = 128; i < 256; i+=4) { dacWriteBYTE(TVP3026_CUR_RAM, planData[i]); dacWriteBYTE(TVP3026_CUR_RAM, planData[i+1]); dacWriteBYTE(TVP3026_CUR_RAM, planData[i+2]); dacWriteBYTE(TVP3026_CUR_RAM, planData[i+3]); dacWriteBYTE(TVP3026_CUR_RAM, 0); dacWriteBYTE(TVP3026_CUR_RAM, 0); dacWriteBYTE(TVP3026_CUR_RAM, 0); dacWriteBYTE(TVP3026_CUR_RAM, 0); } /* Transfer 4th 256 bytes */ reg1 = reg1 | 0x0c; /* CCR[3:2] = 11 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i=0; i<256; i++) dacWriteBYTE(TVP3026_CUR_RAM, 0); break; case 64: /* Transfer 1st 256 bytes */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacReadBYTE(TVP3026_DATA, curCtl); reg1 = curCtl & 0xf0; /* CCR[3:2] = 00 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i = 0; i < 0x100; i++) dacWriteBYTE(TVP3026_CUR_RAM, planData[i]); /* Transfer 2nd 256 bytes */ reg1 = reg1 | 0x04; /* CCR[3:2] = 01 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i = 0; i < 0x100; i++) dacWriteBYTE(TVP3026_CUR_RAM, planData[0x100+i]); /* Transfer 3rd 256 bytes (Start of second PLAN) */ reg1 = reg1 & 0xf0; reg1 = reg1 | 0x08; /* CCR[3:2] = 10 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i = 0; i < 0x100; i++) dacWriteBYTE(TVP3026_CUR_RAM, planData[0x200+i]); /* Transfer 4th 256 bytes */ reg1 = reg1 | 0x0c; /* CCR[3:2] = 11 */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, reg1); dacWriteBYTE(TVP3026_WADR_PAL, 0); /* address RAM cursor to 0 */ for(i = 0; i < 0x100; i++) dacWriteBYTE(TVP3026_CUR_RAM, planData[0x300+i]); break; } /* Fix bug TVP3026 rev x */ if (currentTVPDelta[iBoard]) shiftCursorTVP3026(currentTVPDelta[iBoard]); /* Display cursor */ dacWriteBYTE(TVP3026_INDEX, TVP3026_CURSOR_CTL); dacWriteBYTE(TVP3026_DATA, curCtl); dacWriteBYTE(TVP3026_CUR_XLOW, curPos[0]); dacWriteBYTE(TVP3026_CUR_XHI , curPos[1]); dacWriteBYTE(TVP3026_CUR_YLOW, curPos[2]); dacWriteBYTE(TVP3026_CUR_YHI , curPos[3]); if (iBoard) { if (!planTVP[iBoard]) { #ifndef WINDOWS_NT if ( (planTVP[iBoard] = (byte *)malloc( 1024 )) == (byte *)0) #else if ( (planTVP[iBoard] = (PUCHAR)AllocateSystemMemory(1024)) == NULL) #endif { WriteErr("chargeTVP3026: malloc failed\n"); return mtxFAIL; } } for (i = 0; i < 1024; i++) (planTVP[iBoard])[i] = planData[i]; } return valeurRetour; }
bool RotationBlock::addCondition(BlockCondition* cond){ WriteErr("Condition elements not permitted for RotationBlock\n"); return false; }