====== Write Request ======
* Tu je uvedenny sposob prace s write requestom ak sa pouziva priamy potomok EAppChipCard
* Existuje aj iny sposob vytvarania requestu napr. TypListka (vytvoril ho T.Bruna)
=== Vytvorenie write request-u ===
EDataCollection writeCollection;// write request
EDataCollection *collection = (EDataCollection*)instanceOfEAppChipCard->GetCollection();// make access to collection with readed data
EAbstractCardData *data = (EAbstractCardData*)collection->GetClassByType(TYPE_COMMON_DATA);
if (!data)
return someError;//the problem could be that you didn't read TYPE_COMMON_DATA before writing
data->NodeOut();// take the object out of received collection
data->SetCardOperation(EAbstractCardData::OPERATION_WRITE);
// now you have typecast the object to right one
(ECommonCardDataEN*)data;
implement here initialization of object
writeCollection.InsertLast(data);
writeCollection.SetRequestType(EDataCollection::RQ_WRITE);
writeCollection.SetSNR(serialNumber);// set here serial number of readed card
mClient->SendDataCollection(&writeCollection);
== rozdiel oproti verzii 2.4 ==
* kolekcii ktoru posielam je potrebne nastavit typ requestu __**!!! Zapis !!!**__
* pre jednotlive aplikacne objekty je nutne urcit typ operacie __**!!! Zapis !!!**__. Metoda na to sluziaca "SetCardOperation"
EDataCollection tmpCollection;
tmpCollection.SetRequestType(EDataCollection::RQ_WRITE);
tmpCollection.SetSNR(Aktualne seriove cislo karty);
EAbstractCardData *tmpData = "Vytvorim data ktore chcem zapisovat";
tmpData->SetCardOperation(EAbstractCardData::OPERATION_WRITE);
tmpCollection.InsertLast(tmpData);
=== Vytvorenie write request-u pre odjazdenie komercnej zlavy so zapisom (dekrementom) do ponazenky ===
* treba si vsimnut ze sa 3x nastavuje write
* na makre ifdef QT_4 je vidiet novu cast kodu
//get datacollection, we have it saved when the card was approached for reading
EDataCollection *dataCollectionForSend = CopyDataCollection(d->mDataCollectionTemp);//copy datacollection
ECommercialDiscounts *commercialDiscountsForSend = (ECommercialDiscounts*)dataCollectionForSend->GetClassByType(TYPE_COMMERCIAL_DISCOUNT);
//vytiahnem nod z kolekcie
commercialDiscountsForSend->NodeOut();
//create collection for write
EDataCollection* dataCollection = new EDataCollection();
dataCollection->SetSNR(commonCardData->GetSNR());
//ktoru komecnu zlavu som zmenil aby bajvoc vedel co zapisat
commercialDiscountsForSend->SetIndexToWrite(d->mKomercnaZlavaID);
//create and set purse, prepare it for decrement
EPurseData *purseData = new EPurseData();
purseData->SetSNR(commonCardData->GetSNR());
purseData->SetValue(commercialDiscountTemp->GetCena());
purseData->SetPurseChangeType(EPurseData::PURSE_DEC);
#ifdef QT_4
//nastavim poziadavok na write
commercialDiscountsForSend->SetCardOperation(EAbstractCardData::OPERATION_WRITE);
//nastavim aj penazenky na write
purseData->SetCardOperation(EAbstractCardData::OPERATION_WRITE);
#endif
commercialDiscountsForSend->SetPurseData(purseData);//nastav penazenku do komercnych zliav
//vloz komercne zlavy do datacolection
dataCollection->InsertLast(commercialDiscountsForSend);
//wait for card approach to write data on card
#ifdef QT_4
dataCollection->SetRequestType(EDataCollection::RQ_WRITE);
EChipCard::GetInstance().SendAplRequestWrite(dataCollection);
#else
EBlCard::GetInstance()->GetEAppChipCard()->SendAplRequestWrite(dataCollection);
#endif
=== Poslanie read request-u ===
PotomokEAppChipCard->SendDataCollection(&tmpCollection);