iso1EXIDatatypesEncoder.c 596 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589
  1. /*
  2. * Copyright (C) 2007-2018 Siemens AG
  3. *
  4. * This program is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU Lesser General Public License as published
  6. * by the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public License
  15. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. /*******************************************************************
  18. *
  19. * @author Daniel.Peintner.EXT@siemens.com
  20. * @version 0.9.4
  21. * @contact Richard.Kuntschke@siemens.com
  22. *
  23. * <p>Code generated by EXIdizer</p>
  24. * <p>Schema: V2G_CI_MsgDef.xsd</p>
  25. *
  26. *
  27. ********************************************************************/
  28. #include "iso1EXIDatatypesEncoder.h"
  29. #include "EncoderChannel.h"
  30. #include "EXIHeaderEncoder.h"
  31. #include "iso1EXIDatatypes.h"
  32. #include "ErrorCodes.h"
  33. #ifndef EXI_iso1_DATATYPES_ENCODER_C
  34. #define EXI_iso1_DATATYPES_ENCODER_C
  35. #if DEPLOY_ISO1_CODEC == SUPPORT_YES
  36. static int errn;
  37. /* Forward Declarations */
  38. static int encode_iso1MessageHeaderType(bitstream_t* stream, struct iso1MessageHeaderType* iso1MessageHeaderType);
  39. static int encode_iso1SignatureType(bitstream_t* stream, struct iso1SignatureType* iso1SignatureType);
  40. static int encode_iso1PowerDeliveryReqType(bitstream_t* stream, struct iso1PowerDeliveryReqType* iso1PowerDeliveryReqType);
  41. static int encode_iso1ParameterType(bitstream_t* stream, struct iso1ParameterType* iso1ParameterType);
  42. static int encode_iso1CertificateInstallationReqType(bitstream_t* stream, struct iso1CertificateInstallationReqType* iso1CertificateInstallationReqType);
  43. static int encode_iso1SessionSetupResType(bitstream_t* stream, struct iso1SessionSetupResType* iso1SessionSetupResType);
  44. static int encode_iso1EVChargeParameterType(bitstream_t* stream, struct iso1EVChargeParameterType* iso1EVChargeParameterType);
  45. static int encode_iso1DiffieHellmanPublickeyType(bitstream_t* stream, struct iso1DiffieHellmanPublickeyType* iso1DiffieHellmanPublickeyType);
  46. static int encode_iso1ServiceDiscoveryResType(bitstream_t* stream, struct iso1ServiceDiscoveryResType* iso1ServiceDiscoveryResType);
  47. static int encode_iso1ServiceParameterListType(bitstream_t* stream, struct iso1ServiceParameterListType* iso1ServiceParameterListType);
  48. static int encode_iso1CertificateChainType(bitstream_t* stream, struct iso1CertificateChainType* iso1CertificateChainType);
  49. static int encode_iso1SASchedulesType(bitstream_t* stream, struct iso1SASchedulesType* iso1SASchedulesType);
  50. static int encode_iso1DC_EVSEStatusType(bitstream_t* stream, struct iso1DC_EVSEStatusType* iso1DC_EVSEStatusType);
  51. static int encode_iso1PreChargeResType(bitstream_t* stream, struct iso1PreChargeResType* iso1PreChargeResType);
  52. static int encode_iso1ParameterSetType(bitstream_t* stream, struct iso1ParameterSetType* iso1ParameterSetType);
  53. static int encode_iso1ServiceDetailReqType(bitstream_t* stream, struct iso1ServiceDetailReqType* iso1ServiceDetailReqType);
  54. static int encode_iso1RelativeTimeIntervalType(bitstream_t* stream, struct iso1RelativeTimeIntervalType* iso1RelativeTimeIntervalType);
  55. static int encode_iso1SignedInfoType(bitstream_t* stream, struct iso1SignedInfoType* iso1SignedInfoType);
  56. static int encode_iso1EMAIDType(bitstream_t* stream, struct iso1EMAIDType* iso1EMAIDType);
  57. static int encode_iso1EVStatusType(bitstream_t* stream, struct iso1EVStatusType* iso1EVStatusType);
  58. static int encode_iso1ServiceListType(bitstream_t* stream, struct iso1ServiceListType* iso1ServiceListType);
  59. static int encode_iso1EVSEChargeParameterType(bitstream_t* stream, struct iso1EVSEChargeParameterType* iso1EVSEChargeParameterType);
  60. static int encode_iso1EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1EVPowerDeliveryParameterType* iso1EVPowerDeliveryParameterType);
  61. static int encode_iso1ProfileEntryType(bitstream_t* stream, struct iso1ProfileEntryType* iso1ProfileEntryType);
  62. static int encode_iso1AuthorizationReqType(bitstream_t* stream, struct iso1AuthorizationReqType* iso1AuthorizationReqType);
  63. static int encode_iso1MeterInfoType(bitstream_t* stream, struct iso1MeterInfoType* iso1MeterInfoType);
  64. static int encode_iso1ManifestType(bitstream_t* stream, struct iso1ManifestType* iso1ManifestType);
  65. static int encode_iso1ChargeParameterDiscoveryResType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryResType* iso1ChargeParameterDiscoveryResType);
  66. static int encode_iso1PowerDeliveryResType(bitstream_t* stream, struct iso1PowerDeliveryResType* iso1PowerDeliveryResType);
  67. static int encode_iso1DC_EVChargeParameterType(bitstream_t* stream, struct iso1DC_EVChargeParameterType* iso1DC_EVChargeParameterType);
  68. static int encode_iso1ConsumptionCostType(bitstream_t* stream, struct iso1ConsumptionCostType* iso1ConsumptionCostType);
  69. static int encode_iso1PMaxScheduleType(bitstream_t* stream, struct iso1PMaxScheduleType* iso1PMaxScheduleType);
  70. static int encode_iso1PaymentOptionListType(bitstream_t* stream, struct iso1PaymentOptionListType* iso1PaymentOptionListType);
  71. static int encode_iso1ObjectType(bitstream_t* stream, struct iso1ObjectType* iso1ObjectType);
  72. static int encode_iso1PhysicalValueType(bitstream_t* stream, struct iso1PhysicalValueType* iso1PhysicalValueType);
  73. static int encode_iso1RSAKeyValueType(bitstream_t* stream, struct iso1RSAKeyValueType* iso1RSAKeyValueType);
  74. static int encode_iso1SessionStopResType(bitstream_t* stream, struct iso1SessionStopResType* iso1SessionStopResType);
  75. static int encode_iso1CertificateUpdateReqType(bitstream_t* stream, struct iso1CertificateUpdateReqType* iso1CertificateUpdateReqType);
  76. static int encode_iso1SignatureValueType(bitstream_t* stream, struct iso1SignatureValueType* iso1SignatureValueType);
  77. static int encode_iso1PaymentDetailsReqType(bitstream_t* stream, struct iso1PaymentDetailsReqType* iso1PaymentDetailsReqType);
  78. static int encode_iso1AuthorizationResType(bitstream_t* stream, struct iso1AuthorizationResType* iso1AuthorizationResType);
  79. static int encode_iso1DC_EVSEChargeParameterType(bitstream_t* stream, struct iso1DC_EVSEChargeParameterType* iso1DC_EVSEChargeParameterType);
  80. static int encode_iso1SubCertificatesType(bitstream_t* stream, struct iso1SubCertificatesType* iso1SubCertificatesType);
  81. static int encode_iso1ChargingStatusResType(bitstream_t* stream, struct iso1ChargingStatusResType* iso1ChargingStatusResType);
  82. static int encode_iso1DSAKeyValueType(bitstream_t* stream, struct iso1DSAKeyValueType* iso1DSAKeyValueType);
  83. static int encode_iso1ListOfRootCertificateIDsType(bitstream_t* stream, struct iso1ListOfRootCertificateIDsType* iso1ListOfRootCertificateIDsType);
  84. static int encode_iso1ChargeServiceType(bitstream_t* stream, struct iso1ChargeServiceType* iso1ChargeServiceType);
  85. static int encode_iso1IntervalType(bitstream_t* stream, struct iso1IntervalType* iso1IntervalType);
  86. static int encode_iso1MeteringReceiptReqType(bitstream_t* stream, struct iso1MeteringReceiptReqType* iso1MeteringReceiptReqType);
  87. static int encode_iso1ServiceDetailResType(bitstream_t* stream, struct iso1ServiceDetailResType* iso1ServiceDetailResType);
  88. static int encode_iso1KeyValueType(bitstream_t* stream, struct iso1KeyValueType* iso1KeyValueType);
  89. static int encode_iso1SelectedServiceListType(bitstream_t* stream, struct iso1SelectedServiceListType* iso1SelectedServiceListType);
  90. static int encode_iso1CableCheckResType(bitstream_t* stream, struct iso1CableCheckResType* iso1CableCheckResType);
  91. static int encode_iso1X509IssuerSerialType(bitstream_t* stream, struct iso1X509IssuerSerialType* iso1X509IssuerSerialType);
  92. static int encode_iso1KeyInfoType(bitstream_t* stream, struct iso1KeyInfoType* iso1KeyInfoType);
  93. static int encode_iso1TransformsType(bitstream_t* stream, struct iso1TransformsType* iso1TransformsType);
  94. static int encode_iso1ChargeParameterDiscoveryReqType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryReqType* iso1ChargeParameterDiscoveryReqType);
  95. static int encode_iso1PreChargeReqType(bitstream_t* stream, struct iso1PreChargeReqType* iso1PreChargeReqType);
  96. static int encode_iso1EVSEStatusType(bitstream_t* stream, struct iso1EVSEStatusType* iso1EVSEStatusType);
  97. static int encode_iso1SignatureMethodType(bitstream_t* stream, struct iso1SignatureMethodType* iso1SignatureMethodType);
  98. static int encode_iso1X509DataType(bitstream_t* stream, struct iso1X509DataType* iso1X509DataType);
  99. static int encode_iso1NotificationType(bitstream_t* stream, struct iso1NotificationType* iso1NotificationType);
  100. static int encode_iso1SAScheduleListType(bitstream_t* stream, struct iso1SAScheduleListType* iso1SAScheduleListType);
  101. static int encode_iso1BodyType(bitstream_t* stream, struct iso1BodyType* iso1BodyType);
  102. static int encode_iso1ChargingProfileType(bitstream_t* stream, struct iso1ChargingProfileType* iso1ChargingProfileType);
  103. static int encode_iso1TransformType(bitstream_t* stream, struct iso1TransformType* iso1TransformType);
  104. static int encode_iso1SAScheduleTupleType(bitstream_t* stream, struct iso1SAScheduleTupleType* iso1SAScheduleTupleType);
  105. static int encode_iso1AC_EVChargeParameterType(bitstream_t* stream, struct iso1AC_EVChargeParameterType* iso1AC_EVChargeParameterType);
  106. static int encode_iso1AnonType_V2G_Message(bitstream_t* stream, struct iso1AnonType_V2G_Message* iso1AnonType_V2G_Message);
  107. static int encode_iso1PaymentDetailsResType(bitstream_t* stream, struct iso1PaymentDetailsResType* iso1PaymentDetailsResType);
  108. static int encode_iso1ContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct iso1ContractSignatureEncryptedPrivateKeyType* iso1ContractSignatureEncryptedPrivateKeyType);
  109. static int encode_iso1PMaxScheduleEntryType(bitstream_t* stream, struct iso1PMaxScheduleEntryType* iso1PMaxScheduleEntryType);
  110. static int encode_iso1SPKIDataType(bitstream_t* stream, struct iso1SPKIDataType* iso1SPKIDataType);
  111. static int encode_iso1MeteringReceiptResType(bitstream_t* stream, struct iso1MeteringReceiptResType* iso1MeteringReceiptResType);
  112. static int encode_iso1SessionStopReqType(bitstream_t* stream, struct iso1SessionStopReqType* iso1SessionStopReqType);
  113. static int encode_iso1WeldingDetectionResType(bitstream_t* stream, struct iso1WeldingDetectionResType* iso1WeldingDetectionResType);
  114. static int encode_iso1ReferenceType(bitstream_t* stream, struct iso1ReferenceType* iso1ReferenceType);
  115. static int encode_iso1CurrentDemandReqType(bitstream_t* stream, struct iso1CurrentDemandReqType* iso1CurrentDemandReqType);
  116. static int encode_iso1SalesTariffEntryType(bitstream_t* stream, struct iso1SalesTariffEntryType* iso1SalesTariffEntryType);
  117. static int encode_iso1EntryType(bitstream_t* stream, struct iso1EntryType* iso1EntryType);
  118. static int encode_iso1SessionSetupReqType(bitstream_t* stream, struct iso1SessionSetupReqType* iso1SessionSetupReqType);
  119. static int encode_iso1CostType(bitstream_t* stream, struct iso1CostType* iso1CostType);
  120. static int encode_iso1DC_EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1DC_EVPowerDeliveryParameterType* iso1DC_EVPowerDeliveryParameterType);
  121. static int encode_iso1RetrievalMethodType(bitstream_t* stream, struct iso1RetrievalMethodType* iso1RetrievalMethodType);
  122. static int encode_iso1CertificateUpdateResType(bitstream_t* stream, struct iso1CertificateUpdateResType* iso1CertificateUpdateResType);
  123. static int encode_iso1CertificateInstallationResType(bitstream_t* stream, struct iso1CertificateInstallationResType* iso1CertificateInstallationResType);
  124. static int encode_iso1CanonicalizationMethodType(bitstream_t* stream, struct iso1CanonicalizationMethodType* iso1CanonicalizationMethodType);
  125. static int encode_iso1WeldingDetectionReqType(bitstream_t* stream, struct iso1WeldingDetectionReqType* iso1WeldingDetectionReqType);
  126. static int encode_iso1DC_EVStatusType(bitstream_t* stream, struct iso1DC_EVStatusType* iso1DC_EVStatusType);
  127. static int encode_iso1CurrentDemandResType(bitstream_t* stream, struct iso1CurrentDemandResType* iso1CurrentDemandResType);
  128. static int encode_iso1ServiceType(bitstream_t* stream, struct iso1ServiceType* iso1ServiceType);
  129. static int encode_iso1ServiceDiscoveryReqType(bitstream_t* stream, struct iso1ServiceDiscoveryReqType* iso1ServiceDiscoveryReqType);
  130. static int encode_iso1AC_EVSEChargeParameterType(bitstream_t* stream, struct iso1AC_EVSEChargeParameterType* iso1AC_EVSEChargeParameterType);
  131. static int encode_iso1CableCheckReqType(bitstream_t* stream, struct iso1CableCheckReqType* iso1CableCheckReqType);
  132. static int encode_iso1SelectedServiceType(bitstream_t* stream, struct iso1SelectedServiceType* iso1SelectedServiceType);
  133. static int encode_iso1AC_EVSEStatusType(bitstream_t* stream, struct iso1AC_EVSEStatusType* iso1AC_EVSEStatusType);
  134. static int encode_iso1SalesTariffType(bitstream_t* stream, struct iso1SalesTariffType* iso1SalesTariffType);
  135. static int encode_iso1PaymentServiceSelectionReqType(bitstream_t* stream, struct iso1PaymentServiceSelectionReqType* iso1PaymentServiceSelectionReqType);
  136. static int encode_iso1SignaturePropertiesType(bitstream_t* stream, struct iso1SignaturePropertiesType* iso1SignaturePropertiesType);
  137. static int encode_iso1BodyBaseType(bitstream_t* stream, struct iso1BodyBaseType* iso1BodyBaseType);
  138. static int encode_iso1SupportedEnergyTransferModeType(bitstream_t* stream, struct iso1SupportedEnergyTransferModeType* iso1SupportedEnergyTransferModeType);
  139. static int encode_iso1ChargingStatusReqType(bitstream_t* stream, struct iso1ChargingStatusReqType* iso1ChargingStatusReqType);
  140. static int encode_iso1PaymentServiceSelectionResType(bitstream_t* stream, struct iso1PaymentServiceSelectionResType* iso1PaymentServiceSelectionResType);
  141. static int encode_iso1DigestMethodType(bitstream_t* stream, struct iso1DigestMethodType* iso1DigestMethodType);
  142. static int encode_iso1SignaturePropertyType(bitstream_t* stream, struct iso1SignaturePropertyType* iso1SignaturePropertyType);
  143. static int encode_iso1PGPDataType(bitstream_t* stream, struct iso1PGPDataType* iso1PGPDataType);
  144. /* Complex type name='urn:iso:15118:2:2013:MsgHeader,MessageHeaderType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgHeader":SessionID,"urn:iso:15118:2:2013:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})', derivedBy='RESTRICTION'. */
  145. static int encode_iso1MessageHeaderType(bitstream_t* stream, struct iso1MessageHeaderType* iso1MessageHeaderType) {
  146. int grammarID = 0;
  147. int done = 0;
  148. while(!done) {
  149. switch(grammarID) {
  150. case 0:
  151. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */
  152. if ( 1 == 1 ) {
  153. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  154. if(errn == 0) {
  155. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  156. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  157. if(errn == 0) {
  158. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MessageHeaderType->SessionID.bytesLen));
  159. if (errn == 0) {
  160. errn = encodeBytes(stream, iso1MessageHeaderType->SessionID.bytes, iso1MessageHeaderType->SessionID.bytesLen);
  161. }
  162. /* valid EE */
  163. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  164. }
  165. }
  166. grammarID = 1;
  167. } else {
  168. errn = EXI_ERROR_UNKOWN_EVENT;
  169. }
  170. break;
  171. case 1:
  172. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */
  173. if ( iso1MessageHeaderType->Notification_isUsed == 1u ) {
  174. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  175. if(errn == 0) {
  176. errn = encode_iso1NotificationType(stream, &iso1MessageHeaderType->Notification );
  177. }
  178. grammarID = 2;
  179. } else if ( iso1MessageHeaderType->Signature_isUsed == 1u ) {
  180. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  181. if(errn == 0) {
  182. errn = encode_iso1SignatureType(stream, &iso1MessageHeaderType->Signature );
  183. }
  184. grammarID = 3;
  185. } else if (1==1) {
  186. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  187. if(errn == 0) {
  188. done = 1;
  189. }
  190. grammarID = 4;
  191. } else {
  192. errn = EXI_ERROR_UNKOWN_EVENT;
  193. }
  194. break;
  195. case 2:
  196. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */
  197. if ( iso1MessageHeaderType->Signature_isUsed == 1u ) {
  198. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  199. if(errn == 0) {
  200. errn = encode_iso1SignatureType(stream, &iso1MessageHeaderType->Signature );
  201. }
  202. grammarID = 3;
  203. } else if (1==1) {
  204. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  205. if(errn == 0) {
  206. done = 1;
  207. }
  208. grammarID = 4;
  209. } else {
  210. errn = EXI_ERROR_UNKOWN_EVENT;
  211. }
  212. break;
  213. case 3:
  214. /* Element[END_ELEMENT] */
  215. if (1==1) {
  216. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  217. if(errn == 0) {
  218. done = 1;
  219. }
  220. grammarID = 4;
  221. } else {
  222. errn = EXI_ERROR_UNKOWN_EVENT;
  223. }
  224. break;
  225. default:
  226. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  227. break;
  228. }
  229. if(errn) {
  230. done = 1;
  231. }
  232. }
  233. return errn;
  234. }
  235. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})', derivedBy='RESTRICTION'. */
  236. static int encode_iso1SignatureType(bitstream_t* stream, struct iso1SignatureType* iso1SignatureType) {
  237. int grammarID = 5;
  238. int done = 0;
  239. unsigned int iso1SignatureType_Object_currArrayIndex = 0;
  240. while(!done) {
  241. switch(grammarID) {
  242. case 5:
  243. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */
  244. if ( iso1SignatureType->Id_isUsed == 1u ) {
  245. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  246. if(errn == 0) {
  247. /* encode string as string table miss (+2 len)*/
  248. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureType->Id.charactersLen + 2));
  249. if (errn == 0) {
  250. errn = encodeCharacters(stream, iso1SignatureType->Id.characters, iso1SignatureType->Id.charactersLen);
  251. }
  252. }
  253. grammarID = 6;
  254. } else if ( 1 == 1 ) {
  255. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  256. if(errn == 0) {
  257. errn = encode_iso1SignedInfoType(stream, &iso1SignatureType->SignedInfo );
  258. }
  259. grammarID = 7;
  260. } else {
  261. errn = EXI_ERROR_UNKOWN_EVENT;
  262. }
  263. break;
  264. case 6:
  265. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */
  266. if ( 1 == 1 ) {
  267. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  268. if(errn == 0) {
  269. errn = encode_iso1SignedInfoType(stream, &iso1SignatureType->SignedInfo );
  270. }
  271. grammarID = 7;
  272. } else {
  273. errn = EXI_ERROR_UNKOWN_EVENT;
  274. }
  275. break;
  276. case 7:
  277. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */
  278. if ( 1 == 1 ) {
  279. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  280. if(errn == 0) {
  281. errn = encode_iso1SignatureValueType(stream, &iso1SignatureType->SignatureValue );
  282. }
  283. grammarID = 8;
  284. } else {
  285. errn = EXI_ERROR_UNKOWN_EVENT;
  286. }
  287. break;
  288. case 8:
  289. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */
  290. if ( iso1SignatureType->KeyInfo_isUsed == 1u ) {
  291. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  292. if(errn == 0) {
  293. errn = encode_iso1KeyInfoType(stream, &iso1SignatureType->KeyInfo );
  294. }
  295. grammarID = 9;
  296. } else if (iso1SignatureType_Object_currArrayIndex < iso1SignatureType->Object.arrayLen ) {
  297. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  298. if(errn == 0) {
  299. errn = encode_iso1ObjectType(stream, &iso1SignatureType->Object.array [iso1SignatureType_Object_currArrayIndex++]);
  300. }
  301. grammarID = 9;
  302. } else if (1==1) {
  303. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  304. if(errn == 0) {
  305. done = 1;
  306. }
  307. grammarID = 4;
  308. } else {
  309. errn = EXI_ERROR_UNKOWN_EVENT;
  310. }
  311. break;
  312. case 9:
  313. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */
  314. if (iso1SignatureType_Object_currArrayIndex < iso1SignatureType->Object.arrayLen ) {
  315. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  316. if(errn == 0) {
  317. errn = encode_iso1ObjectType(stream, &iso1SignatureType->Object.array [iso1SignatureType_Object_currArrayIndex++]);
  318. }
  319. grammarID = 9;
  320. } else if (1==1) {
  321. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  322. if(errn == 0) {
  323. done = 1;
  324. }
  325. grammarID = 4;
  326. } else {
  327. errn = EXI_ERROR_UNKOWN_EVENT;
  328. }
  329. break;
  330. default:
  331. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  332. break;
  333. }
  334. if(errn) {
  335. done = 1;
  336. }
  337. }
  338. return errn;
  339. }
  340. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargeProgress,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVPowerDeliveryParameter{0-1})', derivedBy='EXTENSION'. */
  341. static int encode_iso1PowerDeliveryReqType(bitstream_t* stream, struct iso1PowerDeliveryReqType* iso1PowerDeliveryReqType) {
  342. int grammarID = 10;
  343. int done = 0;
  344. while(!done) {
  345. switch(grammarID) {
  346. case 10:
  347. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */
  348. if ( 1 == 1 ) {
  349. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  350. if(errn == 0) {
  351. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  352. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  353. if(errn == 0) {
  354. errn = encodeNBitUnsignedInteger(stream, 2, iso1PowerDeliveryReqType->ChargeProgress);
  355. /* valid EE */
  356. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  357. }
  358. }
  359. grammarID = 11;
  360. } else {
  361. errn = EXI_ERROR_UNKOWN_EVENT;
  362. }
  363. break;
  364. case 11:
  365. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */
  366. if ( 1 == 1 ) {
  367. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  368. if(errn == 0) {
  369. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  370. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  371. if(errn == 0) {
  372. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1PowerDeliveryReqType->SAScheduleTupleID - 1));
  373. /* valid EE */
  374. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  375. }
  376. }
  377. grammarID = 12;
  378. } else {
  379. errn = EXI_ERROR_UNKOWN_EVENT;
  380. }
  381. break;
  382. case 12:
  383. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */
  384. if ( iso1PowerDeliveryReqType->ChargingProfile_isUsed == 1u ) {
  385. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  386. if(errn == 0) {
  387. errn = encode_iso1ChargingProfileType(stream, &iso1PowerDeliveryReqType->ChargingProfile );
  388. }
  389. grammarID = 13;
  390. } else if ( iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed == 1u ) {
  391. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  392. if(errn == 0) {
  393. errn = encode_iso1DC_EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter );
  394. }
  395. grammarID = 3;
  396. } else if ( iso1PowerDeliveryReqType->EVPowerDeliveryParameter_isUsed == 1u ) {
  397. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  398. if(errn == 0) {
  399. errn = encode_iso1EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->EVPowerDeliveryParameter );
  400. }
  401. grammarID = 3;
  402. } else if (1==1) {
  403. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  404. if(errn == 0) {
  405. done = 1;
  406. }
  407. grammarID = 4;
  408. } else {
  409. errn = EXI_ERROR_UNKOWN_EVENT;
  410. }
  411. break;
  412. case 13:
  413. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */
  414. if ( iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed == 1u ) {
  415. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  416. if(errn == 0) {
  417. errn = encode_iso1DC_EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter );
  418. }
  419. grammarID = 3;
  420. } else if ( iso1PowerDeliveryReqType->EVPowerDeliveryParameter_isUsed == 1u ) {
  421. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  422. if(errn == 0) {
  423. errn = encode_iso1EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->EVPowerDeliveryParameter );
  424. }
  425. grammarID = 3;
  426. } else if (1==1) {
  427. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  428. if(errn == 0) {
  429. done = 1;
  430. }
  431. grammarID = 4;
  432. } else {
  433. errn = EXI_ERROR_UNKOWN_EVENT;
  434. }
  435. break;
  436. case 3:
  437. /* Element[END_ELEMENT] */
  438. if (1==1) {
  439. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  440. if(errn == 0) {
  441. done = 1;
  442. }
  443. grammarID = 4;
  444. } else {
  445. errn = EXI_ERROR_UNKOWN_EVENT;
  446. }
  447. break;
  448. default:
  449. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  450. break;
  451. }
  452. if(errn) {
  453. done = 1;
  454. }
  455. }
  456. return errn;
  457. }
  458. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":boolValue|"urn:iso:15118:2:2013:MsgDataTypes":byteValue|"urn:iso:15118:2:2013:MsgDataTypes":shortValue|"urn:iso:15118:2:2013:MsgDataTypes":intValue|"urn:iso:15118:2:2013:MsgDataTypes":physicalValue|"urn:iso:15118:2:2013:MsgDataTypes":stringValue)', derivedBy='RESTRICTION'. */
  459. static int encode_iso1ParameterType(bitstream_t* stream, struct iso1ParameterType* iso1ParameterType) {
  460. int grammarID = 14;
  461. int done = 0;
  462. while(!done) {
  463. switch(grammarID) {
  464. case 14:
  465. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */
  466. if (1==1) {
  467. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  468. if(errn == 0) {
  469. /* encode string as string table miss (+2 len)*/
  470. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ParameterType->Name.charactersLen + 2));
  471. if (errn == 0) {
  472. errn = encodeCharacters(stream, iso1ParameterType->Name.characters, iso1ParameterType->Name.charactersLen);
  473. }
  474. }
  475. grammarID = 15;
  476. } else {
  477. errn = EXI_ERROR_UNKOWN_EVENT;
  478. }
  479. break;
  480. case 15:
  481. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */
  482. if ( iso1ParameterType->boolValue_isUsed == 1u ) {
  483. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  484. if(errn == 0) {
  485. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  486. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  487. if(errn == 0) {
  488. errn = encodeBoolean(stream, iso1ParameterType->boolValue);
  489. /* valid EE */
  490. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  491. }
  492. }
  493. grammarID = 3;
  494. } else if ( iso1ParameterType->byteValue_isUsed == 1u ) {
  495. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  496. if(errn == 0) {
  497. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  498. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  499. if(errn == 0) {
  500. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1ParameterType->byteValue + 128));
  501. /* valid EE */
  502. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  503. }
  504. }
  505. grammarID = 3;
  506. } else if ( iso1ParameterType->shortValue_isUsed == 1u ) {
  507. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  508. if(errn == 0) {
  509. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  510. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  511. if(errn == 0) {
  512. errn = encodeInteger16(stream, iso1ParameterType->shortValue);
  513. /* valid EE */
  514. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  515. }
  516. }
  517. grammarID = 3;
  518. } else if ( iso1ParameterType->intValue_isUsed == 1u ) {
  519. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  520. if(errn == 0) {
  521. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  522. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  523. if(errn == 0) {
  524. errn = encodeInteger32(stream, iso1ParameterType->intValue);
  525. /* valid EE */
  526. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  527. }
  528. }
  529. grammarID = 3;
  530. } else if ( iso1ParameterType->physicalValue_isUsed == 1u ) {
  531. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  532. if(errn == 0) {
  533. errn = encode_iso1PhysicalValueType(stream, &iso1ParameterType->physicalValue );
  534. }
  535. grammarID = 3;
  536. } else if ( iso1ParameterType->stringValue_isUsed == 1u ) {
  537. errn = encodeNBitUnsignedInteger(stream, 3, 5);
  538. if(errn == 0) {
  539. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  540. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  541. if(errn == 0) {
  542. /* encode string as string table miss (+2 len)*/
  543. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ParameterType->stringValue.charactersLen + 2));
  544. if (errn == 0) {
  545. errn = encodeCharacters(stream, iso1ParameterType->stringValue.characters, iso1ParameterType->stringValue.charactersLen);
  546. }
  547. /* valid EE */
  548. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  549. }
  550. }
  551. grammarID = 3;
  552. } else {
  553. errn = EXI_ERROR_UNKOWN_EVENT;
  554. }
  555. break;
  556. case 3:
  557. /* Element[END_ELEMENT] */
  558. if (1==1) {
  559. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  560. if(errn == 0) {
  561. done = 1;
  562. }
  563. grammarID = 4;
  564. } else {
  565. errn = EXI_ERROR_UNKOWN_EVENT;
  566. }
  567. break;
  568. default:
  569. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  570. break;
  571. }
  572. if(errn) {
  573. done = 1;
  574. }
  575. }
  576. return errn;
  577. }
  578. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */
  579. static int encode_iso1CertificateInstallationReqType(bitstream_t* stream, struct iso1CertificateInstallationReqType* iso1CertificateInstallationReqType) {
  580. int grammarID = 16;
  581. int done = 0;
  582. while(!done) {
  583. switch(grammarID) {
  584. case 16:
  585. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */
  586. if (1==1) {
  587. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  588. if(errn == 0) {
  589. /* encode string as string table miss (+2 len)*/
  590. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateInstallationReqType->Id.charactersLen + 2));
  591. if (errn == 0) {
  592. errn = encodeCharacters(stream, iso1CertificateInstallationReqType->Id.characters, iso1CertificateInstallationReqType->Id.charactersLen);
  593. }
  594. }
  595. grammarID = 17;
  596. } else {
  597. errn = EXI_ERROR_UNKOWN_EVENT;
  598. }
  599. break;
  600. case 17:
  601. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */
  602. if ( 1 == 1 ) {
  603. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  604. if(errn == 0) {
  605. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  606. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  607. if(errn == 0) {
  608. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateInstallationReqType->OEMProvisioningCert.bytesLen));
  609. if (errn == 0) {
  610. errn = encodeBytes(stream, iso1CertificateInstallationReqType->OEMProvisioningCert.bytes, iso1CertificateInstallationReqType->OEMProvisioningCert.bytesLen);
  611. }
  612. /* valid EE */
  613. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  614. }
  615. }
  616. grammarID = 18;
  617. } else {
  618. errn = EXI_ERROR_UNKOWN_EVENT;
  619. }
  620. break;
  621. case 18:
  622. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */
  623. if ( 1 == 1 ) {
  624. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  625. if(errn == 0) {
  626. errn = encode_iso1ListOfRootCertificateIDsType(stream, &iso1CertificateInstallationReqType->ListOfRootCertificateIDs );
  627. }
  628. grammarID = 3;
  629. } else {
  630. errn = EXI_ERROR_UNKOWN_EVENT;
  631. }
  632. break;
  633. case 3:
  634. /* Element[END_ELEMENT] */
  635. if (1==1) {
  636. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  637. if(errn == 0) {
  638. done = 1;
  639. }
  640. grammarID = 4;
  641. } else {
  642. errn = EXI_ERROR_UNKOWN_EVENT;
  643. }
  644. break;
  645. default:
  646. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  647. break;
  648. }
  649. if(errn) {
  650. done = 1;
  651. }
  652. }
  653. return errn;
  654. }
  655. /* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp{0-1})', derivedBy='EXTENSION'. */
  656. static int encode_iso1SessionSetupResType(bitstream_t* stream, struct iso1SessionSetupResType* iso1SessionSetupResType) {
  657. int grammarID = 19;
  658. int done = 0;
  659. while(!done) {
  660. switch(grammarID) {
  661. case 19:
  662. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  663. if ( 1 == 1 ) {
  664. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  665. if(errn == 0) {
  666. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  667. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  668. if(errn == 0) {
  669. errn = encodeNBitUnsignedInteger(stream, 5, iso1SessionSetupResType->ResponseCode);
  670. /* valid EE */
  671. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  672. }
  673. }
  674. grammarID = 20;
  675. } else {
  676. errn = EXI_ERROR_UNKOWN_EVENT;
  677. }
  678. break;
  679. case 20:
  680. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  681. if ( 1 == 1 ) {
  682. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  683. if(errn == 0) {
  684. /* FirstStartTag[CHARACTERS[STRING]] */
  685. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  686. if(errn == 0) {
  687. /* encode string as string table miss (+2 len)*/
  688. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SessionSetupResType->EVSEID.charactersLen + 2));
  689. if (errn == 0) {
  690. errn = encodeCharacters(stream, iso1SessionSetupResType->EVSEID.characters, iso1SessionSetupResType->EVSEID.charactersLen);
  691. }
  692. /* valid EE */
  693. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  694. }
  695. }
  696. grammarID = 21;
  697. } else {
  698. errn = EXI_ERROR_UNKOWN_EVENT;
  699. }
  700. break;
  701. case 21:
  702. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */
  703. if ( iso1SessionSetupResType->EVSETimeStamp_isUsed == 1u ) {
  704. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  705. if(errn == 0) {
  706. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  707. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  708. if(errn == 0) {
  709. errn = encodeInteger64(stream, iso1SessionSetupResType->EVSETimeStamp);
  710. /* valid EE */
  711. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  712. }
  713. }
  714. grammarID = 3;
  715. } else if (1==1) {
  716. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  717. if(errn == 0) {
  718. done = 1;
  719. }
  720. grammarID = 4;
  721. } else {
  722. errn = EXI_ERROR_UNKOWN_EVENT;
  723. }
  724. break;
  725. case 3:
  726. /* Element[END_ELEMENT] */
  727. if (1==1) {
  728. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  729. if(errn == 0) {
  730. done = 1;
  731. }
  732. grammarID = 4;
  733. } else {
  734. errn = EXI_ERROR_UNKOWN_EVENT;
  735. }
  736. break;
  737. default:
  738. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  739. break;
  740. }
  741. if(errn) {
  742. done = 1;
  743. }
  744. }
  745. return errn;
  746. }
  747. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVChargeParameterType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1})', derivedBy='RESTRICTION'. */
  748. static int encode_iso1EVChargeParameterType(bitstream_t* stream, struct iso1EVChargeParameterType* iso1EVChargeParameterType) {
  749. int grammarID = 22;
  750. int done = 0;
  751. while(!done) {
  752. switch(grammarID) {
  753. case 22:
  754. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */
  755. if ( iso1EVChargeParameterType->DepartureTime_isUsed == 1u ) {
  756. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  757. if(errn == 0) {
  758. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  759. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  760. if(errn == 0) {
  761. errn = encodeUnsignedInteger32(stream, iso1EVChargeParameterType->DepartureTime);
  762. /* valid EE */
  763. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  764. }
  765. }
  766. grammarID = 3;
  767. } else if (1==1) {
  768. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  769. if(errn == 0) {
  770. done = 1;
  771. }
  772. grammarID = 4;
  773. } else {
  774. errn = EXI_ERROR_UNKOWN_EVENT;
  775. }
  776. break;
  777. case 3:
  778. /* Element[END_ELEMENT] */
  779. if (1==1) {
  780. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  781. if(errn == 0) {
  782. done = 1;
  783. }
  784. grammarID = 4;
  785. } else {
  786. errn = EXI_ERROR_UNKOWN_EVENT;
  787. }
  788. break;
  789. default:
  790. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  791. break;
  792. }
  793. if(errn) {
  794. done = 1;
  795. }
  796. }
  797. return errn;
  798. }
  799. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DiffieHellmanPublickeyType', base type name='dHpublickeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */
  800. static int encode_iso1DiffieHellmanPublickeyType(bitstream_t* stream, struct iso1DiffieHellmanPublickeyType* iso1DiffieHellmanPublickeyType) {
  801. int grammarID = 23;
  802. int done = 0;
  803. while(!done) {
  804. switch(grammarID) {
  805. case 23:
  806. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */
  807. if (1==1) {
  808. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  809. if(errn == 0) {
  810. /* encode string as string table miss (+2 len)*/
  811. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DiffieHellmanPublickeyType->Id.charactersLen + 2));
  812. if (errn == 0) {
  813. errn = encodeCharacters(stream, iso1DiffieHellmanPublickeyType->Id.characters, iso1DiffieHellmanPublickeyType->Id.charactersLen);
  814. }
  815. }
  816. grammarID = 24;
  817. } else {
  818. errn = EXI_ERROR_UNKOWN_EVENT;
  819. }
  820. break;
  821. case 24:
  822. /* StartTag[CHARACTERS[BINARY_BASE64]] */
  823. if (1==1) {
  824. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  825. if(errn == 0) {
  826. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DiffieHellmanPublickeyType->CONTENT.bytesLen));
  827. if (errn == 0) {
  828. errn = encodeBytes(stream, iso1DiffieHellmanPublickeyType->CONTENT.bytes, iso1DiffieHellmanPublickeyType->CONTENT.bytesLen);
  829. }
  830. }
  831. grammarID = 3;
  832. } else {
  833. errn = EXI_ERROR_UNKOWN_EVENT;
  834. }
  835. break;
  836. case 3:
  837. /* Element[END_ELEMENT] */
  838. if (1==1) {
  839. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  840. if(errn == 0) {
  841. done = 1;
  842. }
  843. grammarID = 4;
  844. } else {
  845. errn = EXI_ERROR_UNKOWN_EVENT;
  846. }
  847. break;
  848. default:
  849. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  850. break;
  851. }
  852. if(errn) {
  853. done = 1;
  854. }
  855. }
  856. return errn;
  857. }
  858. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":PaymentOptionList,"urn:iso:15118:2:2013:MsgBody":ChargeService,"urn:iso:15118:2:2013:MsgBody":ServiceList{0-1})', derivedBy='EXTENSION'. */
  859. static int encode_iso1ServiceDiscoveryResType(bitstream_t* stream, struct iso1ServiceDiscoveryResType* iso1ServiceDiscoveryResType) {
  860. int grammarID = 25;
  861. int done = 0;
  862. while(!done) {
  863. switch(grammarID) {
  864. case 25:
  865. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  866. if ( 1 == 1 ) {
  867. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  868. if(errn == 0) {
  869. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  870. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  871. if(errn == 0) {
  872. errn = encodeNBitUnsignedInteger(stream, 5, iso1ServiceDiscoveryResType->ResponseCode);
  873. /* valid EE */
  874. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  875. }
  876. }
  877. grammarID = 26;
  878. } else {
  879. errn = EXI_ERROR_UNKOWN_EVENT;
  880. }
  881. break;
  882. case 26:
  883. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */
  884. if ( 1 == 1 ) {
  885. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  886. if(errn == 0) {
  887. errn = encode_iso1PaymentOptionListType(stream, &iso1ServiceDiscoveryResType->PaymentOptionList );
  888. }
  889. grammarID = 27;
  890. } else {
  891. errn = EXI_ERROR_UNKOWN_EVENT;
  892. }
  893. break;
  894. case 27:
  895. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */
  896. if ( 1 == 1 ) {
  897. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  898. if(errn == 0) {
  899. errn = encode_iso1ChargeServiceType(stream, &iso1ServiceDiscoveryResType->ChargeService );
  900. }
  901. grammarID = 28;
  902. } else {
  903. errn = EXI_ERROR_UNKOWN_EVENT;
  904. }
  905. break;
  906. case 28:
  907. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */
  908. if ( iso1ServiceDiscoveryResType->ServiceList_isUsed == 1u ) {
  909. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  910. if(errn == 0) {
  911. errn = encode_iso1ServiceListType(stream, &iso1ServiceDiscoveryResType->ServiceList );
  912. }
  913. grammarID = 3;
  914. } else if (1==1) {
  915. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  916. if(errn == 0) {
  917. done = 1;
  918. }
  919. grammarID = 4;
  920. } else {
  921. errn = EXI_ERROR_UNKOWN_EVENT;
  922. }
  923. break;
  924. case 3:
  925. /* Element[END_ELEMENT] */
  926. if (1==1) {
  927. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  928. if(errn == 0) {
  929. done = 1;
  930. }
  931. grammarID = 4;
  932. } else {
  933. errn = EXI_ERROR_UNKOWN_EVENT;
  934. }
  935. break;
  936. default:
  937. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  938. break;
  939. }
  940. if(errn) {
  941. done = 1;
  942. }
  943. }
  944. return errn;
  945. }
  946. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceParameterListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSet{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  947. static int encode_iso1ServiceParameterListType(bitstream_t* stream, struct iso1ServiceParameterListType* iso1ServiceParameterListType) {
  948. int grammarID = 29;
  949. int done = 0;
  950. unsigned int iso1ServiceParameterListType_ParameterSet_currArrayIndex = 0;
  951. while(!done) {
  952. switch(grammarID) {
  953. case 29:
  954. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */
  955. if (iso1ServiceParameterListType_ParameterSet_currArrayIndex < iso1ServiceParameterListType->ParameterSet.arrayLen ) {
  956. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  957. if(errn == 0) {
  958. errn = encode_iso1ParameterSetType(stream, &iso1ServiceParameterListType->ParameterSet.array [iso1ServiceParameterListType_ParameterSet_currArrayIndex++]);
  959. }
  960. grammarID = 30;
  961. } else {
  962. errn = EXI_ERROR_UNKOWN_EVENT;
  963. }
  964. break;
  965. case 30:
  966. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */
  967. if (iso1ServiceParameterListType_ParameterSet_currArrayIndex < iso1ServiceParameterListType->ParameterSet.arrayLen ) {
  968. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  969. if(errn == 0) {
  970. errn = encode_iso1ParameterSetType(stream, &iso1ServiceParameterListType->ParameterSet.array [iso1ServiceParameterListType_ParameterSet_currArrayIndex++]);
  971. }
  972. grammarID = 30;
  973. } else if (1==1) {
  974. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  975. if(errn == 0) {
  976. done = 1;
  977. }
  978. grammarID = 4;
  979. } else {
  980. errn = EXI_ERROR_UNKOWN_EVENT;
  981. }
  982. break;
  983. default:
  984. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  985. break;
  986. }
  987. if(errn) {
  988. done = 1;
  989. }
  990. }
  991. return errn;
  992. }
  993. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */
  994. static int encode_iso1CertificateChainType(bitstream_t* stream, struct iso1CertificateChainType* iso1CertificateChainType) {
  995. int grammarID = 31;
  996. int done = 0;
  997. while(!done) {
  998. switch(grammarID) {
  999. case 31:
  1000. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */
  1001. if ( iso1CertificateChainType->Id_isUsed == 1u ) {
  1002. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1003. if(errn == 0) {
  1004. /* encode string as string table miss (+2 len)*/
  1005. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateChainType->Id.charactersLen + 2));
  1006. if (errn == 0) {
  1007. errn = encodeCharacters(stream, iso1CertificateChainType->Id.characters, iso1CertificateChainType->Id.charactersLen);
  1008. }
  1009. }
  1010. grammarID = 32;
  1011. } else if ( 1 == 1 ) {
  1012. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1013. if(errn == 0) {
  1014. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  1015. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1016. if(errn == 0) {
  1017. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateChainType->Certificate.bytesLen));
  1018. if (errn == 0) {
  1019. errn = encodeBytes(stream, iso1CertificateChainType->Certificate.bytes, iso1CertificateChainType->Certificate.bytesLen);
  1020. }
  1021. /* valid EE */
  1022. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1023. }
  1024. }
  1025. grammarID = 33;
  1026. } else {
  1027. errn = EXI_ERROR_UNKOWN_EVENT;
  1028. }
  1029. break;
  1030. case 32:
  1031. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */
  1032. if ( 1 == 1 ) {
  1033. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1034. if(errn == 0) {
  1035. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  1036. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1037. if(errn == 0) {
  1038. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateChainType->Certificate.bytesLen));
  1039. if (errn == 0) {
  1040. errn = encodeBytes(stream, iso1CertificateChainType->Certificate.bytes, iso1CertificateChainType->Certificate.bytesLen);
  1041. }
  1042. /* valid EE */
  1043. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1044. }
  1045. }
  1046. grammarID = 33;
  1047. } else {
  1048. errn = EXI_ERROR_UNKOWN_EVENT;
  1049. }
  1050. break;
  1051. case 33:
  1052. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */
  1053. if ( iso1CertificateChainType->SubCertificates_isUsed == 1u ) {
  1054. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1055. if(errn == 0) {
  1056. errn = encode_iso1SubCertificatesType(stream, &iso1CertificateChainType->SubCertificates );
  1057. }
  1058. grammarID = 3;
  1059. } else if (1==1) {
  1060. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1061. if(errn == 0) {
  1062. done = 1;
  1063. }
  1064. grammarID = 4;
  1065. } else {
  1066. errn = EXI_ERROR_UNKOWN_EVENT;
  1067. }
  1068. break;
  1069. case 3:
  1070. /* Element[END_ELEMENT] */
  1071. if (1==1) {
  1072. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1073. if(errn == 0) {
  1074. done = 1;
  1075. }
  1076. grammarID = 4;
  1077. } else {
  1078. errn = EXI_ERROR_UNKOWN_EVENT;
  1079. }
  1080. break;
  1081. default:
  1082. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1083. break;
  1084. }
  1085. if(errn) {
  1086. done = 1;
  1087. }
  1088. }
  1089. return errn;
  1090. }
  1091. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SASchedulesType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */
  1092. static int encode_iso1SASchedulesType(bitstream_t* stream, struct iso1SASchedulesType* iso1SASchedulesType) {
  1093. int grammarID = 34;
  1094. int done = 0;
  1095. while(!done) {
  1096. switch(grammarID) {
  1097. case 34:
  1098. /* FirstStartTag[END_ELEMENT] */
  1099. if (1==1) {
  1100. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1101. if(errn == 0) {
  1102. done = 1;
  1103. }
  1104. grammarID = 4;
  1105. } else {
  1106. errn = EXI_ERROR_UNKOWN_EVENT;
  1107. }
  1108. break;
  1109. default:
  1110. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1111. break;
  1112. }
  1113. if(errn) {
  1114. done = 1;
  1115. }
  1116. }
  1117. return errn;
  1118. }
  1119. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */
  1120. static int encode_iso1DC_EVSEStatusType(bitstream_t* stream, struct iso1DC_EVSEStatusType* iso1DC_EVSEStatusType) {
  1121. int grammarID = 35;
  1122. int done = 0;
  1123. while(!done) {
  1124. switch(grammarID) {
  1125. case 35:
  1126. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */
  1127. if ( 1 == 1 ) {
  1128. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1129. if(errn == 0) {
  1130. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  1131. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1132. if(errn == 0) {
  1133. errn = encodeUnsignedInteger16(stream, iso1DC_EVSEStatusType->NotificationMaxDelay);
  1134. /* valid EE */
  1135. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1136. }
  1137. }
  1138. grammarID = 36;
  1139. } else {
  1140. errn = EXI_ERROR_UNKOWN_EVENT;
  1141. }
  1142. break;
  1143. case 36:
  1144. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */
  1145. if ( 1 == 1 ) {
  1146. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1147. if(errn == 0) {
  1148. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1149. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1150. if(errn == 0) {
  1151. errn = encodeNBitUnsignedInteger(stream, 2, iso1DC_EVSEStatusType->EVSENotification);
  1152. /* valid EE */
  1153. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1154. }
  1155. }
  1156. grammarID = 37;
  1157. } else {
  1158. errn = EXI_ERROR_UNKOWN_EVENT;
  1159. }
  1160. break;
  1161. case 37:
  1162. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */
  1163. if ( iso1DC_EVSEStatusType->EVSEIsolationStatus_isUsed == 1u ) {
  1164. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1165. if(errn == 0) {
  1166. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1167. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1168. if(errn == 0) {
  1169. errn = encodeNBitUnsignedInteger(stream, 3, iso1DC_EVSEStatusType->EVSEIsolationStatus);
  1170. /* valid EE */
  1171. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1172. }
  1173. }
  1174. grammarID = 38;
  1175. } else if ( 1 == 1 ) {
  1176. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1177. if(errn == 0) {
  1178. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1179. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1180. if(errn == 0) {
  1181. errn = encodeNBitUnsignedInteger(stream, 4, iso1DC_EVSEStatusType->EVSEStatusCode);
  1182. /* valid EE */
  1183. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1184. }
  1185. }
  1186. grammarID = 3;
  1187. } else {
  1188. errn = EXI_ERROR_UNKOWN_EVENT;
  1189. }
  1190. break;
  1191. case 38:
  1192. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */
  1193. if ( 1 == 1 ) {
  1194. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1195. if(errn == 0) {
  1196. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1197. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1198. if(errn == 0) {
  1199. errn = encodeNBitUnsignedInteger(stream, 4, iso1DC_EVSEStatusType->EVSEStatusCode);
  1200. /* valid EE */
  1201. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1202. }
  1203. }
  1204. grammarID = 3;
  1205. } else {
  1206. errn = EXI_ERROR_UNKOWN_EVENT;
  1207. }
  1208. break;
  1209. case 3:
  1210. /* Element[END_ELEMENT] */
  1211. if (1==1) {
  1212. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1213. if(errn == 0) {
  1214. done = 1;
  1215. }
  1216. grammarID = 4;
  1217. } else {
  1218. errn = EXI_ERROR_UNKOWN_EVENT;
  1219. }
  1220. break;
  1221. default:
  1222. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1223. break;
  1224. }
  1225. if(errn) {
  1226. done = 1;
  1227. }
  1228. }
  1229. return errn;
  1230. }
  1231. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */
  1232. static int encode_iso1PreChargeResType(bitstream_t* stream, struct iso1PreChargeResType* iso1PreChargeResType) {
  1233. int grammarID = 39;
  1234. int done = 0;
  1235. while(!done) {
  1236. switch(grammarID) {
  1237. case 39:
  1238. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  1239. if ( 1 == 1 ) {
  1240. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1241. if(errn == 0) {
  1242. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1243. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1244. if(errn == 0) {
  1245. errn = encodeNBitUnsignedInteger(stream, 5, iso1PreChargeResType->ResponseCode);
  1246. /* valid EE */
  1247. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1248. }
  1249. }
  1250. grammarID = 40;
  1251. } else {
  1252. errn = EXI_ERROR_UNKOWN_EVENT;
  1253. }
  1254. break;
  1255. case 40:
  1256. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  1257. if ( 1 == 1 ) {
  1258. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1259. if(errn == 0) {
  1260. errn = encode_iso1DC_EVSEStatusType(stream, &iso1PreChargeResType->DC_EVSEStatus );
  1261. }
  1262. grammarID = 41;
  1263. } else {
  1264. errn = EXI_ERROR_UNKOWN_EVENT;
  1265. }
  1266. break;
  1267. case 41:
  1268. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */
  1269. if ( 1 == 1 ) {
  1270. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1271. if(errn == 0) {
  1272. errn = encode_iso1PhysicalValueType(stream, &iso1PreChargeResType->EVSEPresentVoltage );
  1273. }
  1274. grammarID = 3;
  1275. } else {
  1276. errn = EXI_ERROR_UNKOWN_EVENT;
  1277. }
  1278. break;
  1279. case 3:
  1280. /* Element[END_ELEMENT] */
  1281. if (1==1) {
  1282. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1283. if(errn == 0) {
  1284. done = 1;
  1285. }
  1286. grammarID = 4;
  1287. } else {
  1288. errn = EXI_ERROR_UNKOWN_EVENT;
  1289. }
  1290. break;
  1291. default:
  1292. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1293. break;
  1294. }
  1295. if(errn) {
  1296. done = 1;
  1297. }
  1298. }
  1299. return errn;
  1300. }
  1301. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterSetType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2013:MsgDataTypes":Parameter{1-16})', derivedBy='RESTRICTION'. */
  1302. static int encode_iso1ParameterSetType(bitstream_t* stream, struct iso1ParameterSetType* iso1ParameterSetType) {
  1303. int grammarID = 42;
  1304. int done = 0;
  1305. unsigned int iso1ParameterSetType_Parameter_currArrayIndex = 0;
  1306. while(!done) {
  1307. switch(grammarID) {
  1308. case 42:
  1309. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */
  1310. if ( 1 == 1 ) {
  1311. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1312. if(errn == 0) {
  1313. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  1314. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1315. if(errn == 0) {
  1316. errn = encodeInteger16(stream, iso1ParameterSetType->ParameterSetID);
  1317. /* valid EE */
  1318. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1319. }
  1320. }
  1321. grammarID = 43;
  1322. } else {
  1323. errn = EXI_ERROR_UNKOWN_EVENT;
  1324. }
  1325. break;
  1326. case 43:
  1327. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */
  1328. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1329. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1330. if(errn == 0) {
  1331. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1332. }
  1333. grammarID = 44;
  1334. } else {
  1335. errn = EXI_ERROR_UNKOWN_EVENT;
  1336. }
  1337. break;
  1338. case 44:
  1339. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1340. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1341. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1342. if(errn == 0) {
  1343. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1344. }
  1345. grammarID = 45;
  1346. } else if (1==1) {
  1347. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1348. if(errn == 0) {
  1349. done = 1;
  1350. }
  1351. grammarID = 4;
  1352. } else {
  1353. errn = EXI_ERROR_UNKOWN_EVENT;
  1354. }
  1355. break;
  1356. case 45:
  1357. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1358. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1359. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1360. if(errn == 0) {
  1361. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1362. }
  1363. grammarID = 46;
  1364. } else if (1==1) {
  1365. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1366. if(errn == 0) {
  1367. done = 1;
  1368. }
  1369. grammarID = 4;
  1370. } else {
  1371. errn = EXI_ERROR_UNKOWN_EVENT;
  1372. }
  1373. break;
  1374. case 46:
  1375. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1376. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1377. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1378. if(errn == 0) {
  1379. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1380. }
  1381. grammarID = 47;
  1382. } else if (1==1) {
  1383. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1384. if(errn == 0) {
  1385. done = 1;
  1386. }
  1387. grammarID = 4;
  1388. } else {
  1389. errn = EXI_ERROR_UNKOWN_EVENT;
  1390. }
  1391. break;
  1392. case 47:
  1393. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1394. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1395. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1396. if(errn == 0) {
  1397. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1398. }
  1399. grammarID = 48;
  1400. } else if (1==1) {
  1401. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1402. if(errn == 0) {
  1403. done = 1;
  1404. }
  1405. grammarID = 4;
  1406. } else {
  1407. errn = EXI_ERROR_UNKOWN_EVENT;
  1408. }
  1409. break;
  1410. case 48:
  1411. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1412. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1413. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1414. if(errn == 0) {
  1415. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1416. }
  1417. grammarID = 49;
  1418. } else if (1==1) {
  1419. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1420. if(errn == 0) {
  1421. done = 1;
  1422. }
  1423. grammarID = 4;
  1424. } else {
  1425. errn = EXI_ERROR_UNKOWN_EVENT;
  1426. }
  1427. break;
  1428. case 49:
  1429. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1430. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1431. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1432. if(errn == 0) {
  1433. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1434. }
  1435. grammarID = 50;
  1436. } else if (1==1) {
  1437. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1438. if(errn == 0) {
  1439. done = 1;
  1440. }
  1441. grammarID = 4;
  1442. } else {
  1443. errn = EXI_ERROR_UNKOWN_EVENT;
  1444. }
  1445. break;
  1446. case 50:
  1447. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1448. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1449. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1450. if(errn == 0) {
  1451. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1452. }
  1453. grammarID = 51;
  1454. } else if (1==1) {
  1455. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1456. if(errn == 0) {
  1457. done = 1;
  1458. }
  1459. grammarID = 4;
  1460. } else {
  1461. errn = EXI_ERROR_UNKOWN_EVENT;
  1462. }
  1463. break;
  1464. case 51:
  1465. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1466. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1467. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1468. if(errn == 0) {
  1469. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1470. }
  1471. grammarID = 52;
  1472. } else if (1==1) {
  1473. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1474. if(errn == 0) {
  1475. done = 1;
  1476. }
  1477. grammarID = 4;
  1478. } else {
  1479. errn = EXI_ERROR_UNKOWN_EVENT;
  1480. }
  1481. break;
  1482. case 52:
  1483. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1484. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1485. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1486. if(errn == 0) {
  1487. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1488. }
  1489. grammarID = 53;
  1490. } else if (1==1) {
  1491. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1492. if(errn == 0) {
  1493. done = 1;
  1494. }
  1495. grammarID = 4;
  1496. } else {
  1497. errn = EXI_ERROR_UNKOWN_EVENT;
  1498. }
  1499. break;
  1500. case 53:
  1501. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1502. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1503. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1504. if(errn == 0) {
  1505. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1506. }
  1507. grammarID = 54;
  1508. } else if (1==1) {
  1509. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1510. if(errn == 0) {
  1511. done = 1;
  1512. }
  1513. grammarID = 4;
  1514. } else {
  1515. errn = EXI_ERROR_UNKOWN_EVENT;
  1516. }
  1517. break;
  1518. case 54:
  1519. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1520. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1521. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1522. if(errn == 0) {
  1523. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1524. }
  1525. grammarID = 55;
  1526. } else if (1==1) {
  1527. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1528. if(errn == 0) {
  1529. done = 1;
  1530. }
  1531. grammarID = 4;
  1532. } else {
  1533. errn = EXI_ERROR_UNKOWN_EVENT;
  1534. }
  1535. break;
  1536. case 55:
  1537. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1538. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1539. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1540. if(errn == 0) {
  1541. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1542. }
  1543. grammarID = 56;
  1544. } else if (1==1) {
  1545. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1546. if(errn == 0) {
  1547. done = 1;
  1548. }
  1549. grammarID = 4;
  1550. } else {
  1551. errn = EXI_ERROR_UNKOWN_EVENT;
  1552. }
  1553. break;
  1554. case 56:
  1555. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1556. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1557. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1558. if(errn == 0) {
  1559. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1560. }
  1561. grammarID = 57;
  1562. } else if (1==1) {
  1563. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1564. if(errn == 0) {
  1565. done = 1;
  1566. }
  1567. grammarID = 4;
  1568. } else {
  1569. errn = EXI_ERROR_UNKOWN_EVENT;
  1570. }
  1571. break;
  1572. case 57:
  1573. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1574. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1575. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1576. if(errn == 0) {
  1577. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1578. }
  1579. grammarID = 58;
  1580. } else if (1==1) {
  1581. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1582. if(errn == 0) {
  1583. done = 1;
  1584. }
  1585. grammarID = 4;
  1586. } else {
  1587. errn = EXI_ERROR_UNKOWN_EVENT;
  1588. }
  1589. break;
  1590. case 58:
  1591. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1592. if (iso1ParameterSetType_Parameter_currArrayIndex < iso1ParameterSetType->Parameter.arrayLen ) {
  1593. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1594. if(errn == 0) {
  1595. errn = encode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array [iso1ParameterSetType_Parameter_currArrayIndex++]);
  1596. }
  1597. grammarID = 3;
  1598. } else if (1==1) {
  1599. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1600. if(errn == 0) {
  1601. done = 1;
  1602. }
  1603. grammarID = 4;
  1604. } else {
  1605. errn = EXI_ERROR_UNKOWN_EVENT;
  1606. }
  1607. break;
  1608. case 3:
  1609. /* Element[END_ELEMENT] */
  1610. if (1==1) {
  1611. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1612. if(errn == 0) {
  1613. done = 1;
  1614. }
  1615. grammarID = 4;
  1616. } else {
  1617. errn = EXI_ERROR_UNKOWN_EVENT;
  1618. }
  1619. break;
  1620. default:
  1621. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1622. break;
  1623. }
  1624. if(errn) {
  1625. done = 1;
  1626. }
  1627. }
  1628. return errn;
  1629. }
  1630. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceID)', derivedBy='EXTENSION'. */
  1631. static int encode_iso1ServiceDetailReqType(bitstream_t* stream, struct iso1ServiceDetailReqType* iso1ServiceDetailReqType) {
  1632. int grammarID = 59;
  1633. int done = 0;
  1634. while(!done) {
  1635. switch(grammarID) {
  1636. case 59:
  1637. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */
  1638. if ( 1 == 1 ) {
  1639. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1640. if(errn == 0) {
  1641. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  1642. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1643. if(errn == 0) {
  1644. errn = encodeUnsignedInteger16(stream, iso1ServiceDetailReqType->ServiceID);
  1645. /* valid EE */
  1646. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1647. }
  1648. }
  1649. grammarID = 3;
  1650. } else {
  1651. errn = EXI_ERROR_UNKOWN_EVENT;
  1652. }
  1653. break;
  1654. case 3:
  1655. /* Element[END_ELEMENT] */
  1656. if (1==1) {
  1657. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1658. if(errn == 0) {
  1659. done = 1;
  1660. }
  1661. grammarID = 4;
  1662. } else {
  1663. errn = EXI_ERROR_UNKOWN_EVENT;
  1664. }
  1665. break;
  1666. default:
  1667. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1668. break;
  1669. }
  1670. if(errn) {
  1671. done = 1;
  1672. }
  1673. }
  1674. return errn;
  1675. }
  1676. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */
  1677. static int encode_iso1RelativeTimeIntervalType(bitstream_t* stream, struct iso1RelativeTimeIntervalType* iso1RelativeTimeIntervalType) {
  1678. int grammarID = 60;
  1679. int done = 0;
  1680. while(!done) {
  1681. switch(grammarID) {
  1682. case 60:
  1683. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */
  1684. if ( 1 == 1 ) {
  1685. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1686. if(errn == 0) {
  1687. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  1688. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1689. if(errn == 0) {
  1690. errn = encodeUnsignedInteger32(stream, iso1RelativeTimeIntervalType->start);
  1691. /* valid EE */
  1692. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1693. }
  1694. }
  1695. grammarID = 61;
  1696. } else {
  1697. errn = EXI_ERROR_UNKOWN_EVENT;
  1698. }
  1699. break;
  1700. case 61:
  1701. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */
  1702. if ( iso1RelativeTimeIntervalType->duration_isUsed == 1u ) {
  1703. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1704. if(errn == 0) {
  1705. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  1706. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1707. if(errn == 0) {
  1708. errn = encodeUnsignedInteger32(stream, iso1RelativeTimeIntervalType->duration);
  1709. /* valid EE */
  1710. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1711. }
  1712. }
  1713. grammarID = 3;
  1714. } else if (1==1) {
  1715. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1716. if(errn == 0) {
  1717. done = 1;
  1718. }
  1719. grammarID = 4;
  1720. } else {
  1721. errn = EXI_ERROR_UNKOWN_EVENT;
  1722. }
  1723. break;
  1724. case 3:
  1725. /* Element[END_ELEMENT] */
  1726. if (1==1) {
  1727. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1728. if(errn == 0) {
  1729. done = 1;
  1730. }
  1731. grammarID = 4;
  1732. } else {
  1733. errn = EXI_ERROR_UNKOWN_EVENT;
  1734. }
  1735. break;
  1736. default:
  1737. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1738. break;
  1739. }
  1740. if(errn) {
  1741. done = 1;
  1742. }
  1743. }
  1744. return errn;
  1745. }
  1746. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  1747. static int encode_iso1SignedInfoType(bitstream_t* stream, struct iso1SignedInfoType* iso1SignedInfoType) {
  1748. int grammarID = 62;
  1749. int done = 0;
  1750. unsigned int iso1SignedInfoType_Reference_currArrayIndex = 0;
  1751. while(!done) {
  1752. switch(grammarID) {
  1753. case 62:
  1754. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */
  1755. if ( iso1SignedInfoType->Id_isUsed == 1u ) {
  1756. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1757. if(errn == 0) {
  1758. /* encode string as string table miss (+2 len)*/
  1759. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignedInfoType->Id.charactersLen + 2));
  1760. if (errn == 0) {
  1761. errn = encodeCharacters(stream, iso1SignedInfoType->Id.characters, iso1SignedInfoType->Id.charactersLen);
  1762. }
  1763. }
  1764. grammarID = 63;
  1765. } else if ( 1 == 1 ) {
  1766. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1767. if(errn == 0) {
  1768. errn = encode_iso1CanonicalizationMethodType(stream, &iso1SignedInfoType->CanonicalizationMethod );
  1769. }
  1770. grammarID = 64;
  1771. } else {
  1772. errn = EXI_ERROR_UNKOWN_EVENT;
  1773. }
  1774. break;
  1775. case 63:
  1776. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */
  1777. if ( 1 == 1 ) {
  1778. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1779. if(errn == 0) {
  1780. errn = encode_iso1CanonicalizationMethodType(stream, &iso1SignedInfoType->CanonicalizationMethod );
  1781. }
  1782. grammarID = 64;
  1783. } else {
  1784. errn = EXI_ERROR_UNKOWN_EVENT;
  1785. }
  1786. break;
  1787. case 64:
  1788. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */
  1789. if ( 1 == 1 ) {
  1790. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1791. if(errn == 0) {
  1792. errn = encode_iso1SignatureMethodType(stream, &iso1SignedInfoType->SignatureMethod );
  1793. }
  1794. grammarID = 65;
  1795. } else {
  1796. errn = EXI_ERROR_UNKOWN_EVENT;
  1797. }
  1798. break;
  1799. case 65:
  1800. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
  1801. if (iso1SignedInfoType_Reference_currArrayIndex < iso1SignedInfoType->Reference.arrayLen ) {
  1802. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1803. if(errn == 0) {
  1804. errn = encode_iso1ReferenceType(stream, &iso1SignedInfoType->Reference.array [iso1SignedInfoType_Reference_currArrayIndex++]);
  1805. }
  1806. grammarID = 66;
  1807. } else {
  1808. errn = EXI_ERROR_UNKOWN_EVENT;
  1809. }
  1810. break;
  1811. case 66:
  1812. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */
  1813. if (iso1SignedInfoType_Reference_currArrayIndex < iso1SignedInfoType->Reference.arrayLen ) {
  1814. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1815. if(errn == 0) {
  1816. errn = encode_iso1ReferenceType(stream, &iso1SignedInfoType->Reference.array [iso1SignedInfoType_Reference_currArrayIndex++]);
  1817. }
  1818. grammarID = 66;
  1819. } else if (1==1) {
  1820. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1821. if(errn == 0) {
  1822. done = 1;
  1823. }
  1824. grammarID = 4;
  1825. } else {
  1826. errn = EXI_ERROR_UNKOWN_EVENT;
  1827. }
  1828. break;
  1829. default:
  1830. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1831. break;
  1832. }
  1833. if(errn) {
  1834. done = 1;
  1835. }
  1836. }
  1837. return errn;
  1838. }
  1839. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EMAIDType', base type name='eMAIDType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */
  1840. static int encode_iso1EMAIDType(bitstream_t* stream, struct iso1EMAIDType* iso1EMAIDType) {
  1841. int grammarID = 67;
  1842. int done = 0;
  1843. while(!done) {
  1844. switch(grammarID) {
  1845. case 67:
  1846. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */
  1847. if (1==1) {
  1848. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1849. if(errn == 0) {
  1850. /* encode string as string table miss (+2 len)*/
  1851. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1EMAIDType->Id.charactersLen + 2));
  1852. if (errn == 0) {
  1853. errn = encodeCharacters(stream, iso1EMAIDType->Id.characters, iso1EMAIDType->Id.charactersLen);
  1854. }
  1855. }
  1856. grammarID = 68;
  1857. } else {
  1858. errn = EXI_ERROR_UNKOWN_EVENT;
  1859. }
  1860. break;
  1861. case 68:
  1862. /* StartTag[CHARACTERS[STRING]] */
  1863. if (1==1) {
  1864. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1865. if(errn == 0) {
  1866. /* encode string as string table miss (+2 len)*/
  1867. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1EMAIDType->CONTENT.charactersLen + 2));
  1868. if (errn == 0) {
  1869. errn = encodeCharacters(stream, iso1EMAIDType->CONTENT.characters, iso1EMAIDType->CONTENT.charactersLen);
  1870. }
  1871. }
  1872. grammarID = 3;
  1873. } else {
  1874. errn = EXI_ERROR_UNKOWN_EVENT;
  1875. }
  1876. break;
  1877. case 3:
  1878. /* Element[END_ELEMENT] */
  1879. if (1==1) {
  1880. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1881. if(errn == 0) {
  1882. done = 1;
  1883. }
  1884. grammarID = 4;
  1885. } else {
  1886. errn = EXI_ERROR_UNKOWN_EVENT;
  1887. }
  1888. break;
  1889. default:
  1890. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1891. break;
  1892. }
  1893. if(errn) {
  1894. done = 1;
  1895. }
  1896. }
  1897. return errn;
  1898. }
  1899. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVStatusType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */
  1900. static int encode_iso1EVStatusType(bitstream_t* stream, struct iso1EVStatusType* iso1EVStatusType) {
  1901. int grammarID = 34;
  1902. int done = 0;
  1903. while(!done) {
  1904. switch(grammarID) {
  1905. case 34:
  1906. /* FirstStartTag[END_ELEMENT] */
  1907. if (1==1) {
  1908. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1909. if(errn == 0) {
  1910. done = 1;
  1911. }
  1912. grammarID = 4;
  1913. } else {
  1914. errn = EXI_ERROR_UNKOWN_EVENT;
  1915. }
  1916. break;
  1917. default:
  1918. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1919. break;
  1920. }
  1921. if(errn) {
  1922. done = 1;
  1923. }
  1924. }
  1925. return errn;
  1926. }
  1927. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Service{1-8})', derivedBy='RESTRICTION'. */
  1928. static int encode_iso1ServiceListType(bitstream_t* stream, struct iso1ServiceListType* iso1ServiceListType) {
  1929. int grammarID = 69;
  1930. int done = 0;
  1931. unsigned int iso1ServiceListType_Service_currArrayIndex = 0;
  1932. while(!done) {
  1933. switch(grammarID) {
  1934. case 69:
  1935. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */
  1936. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  1937. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  1938. if(errn == 0) {
  1939. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  1940. }
  1941. grammarID = 70;
  1942. } else {
  1943. errn = EXI_ERROR_UNKOWN_EVENT;
  1944. }
  1945. break;
  1946. case 70:
  1947. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  1948. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  1949. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1950. if(errn == 0) {
  1951. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  1952. }
  1953. grammarID = 71;
  1954. } else if (1==1) {
  1955. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1956. if(errn == 0) {
  1957. done = 1;
  1958. }
  1959. grammarID = 4;
  1960. } else {
  1961. errn = EXI_ERROR_UNKOWN_EVENT;
  1962. }
  1963. break;
  1964. case 71:
  1965. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  1966. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  1967. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1968. if(errn == 0) {
  1969. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  1970. }
  1971. grammarID = 72;
  1972. } else if (1==1) {
  1973. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1974. if(errn == 0) {
  1975. done = 1;
  1976. }
  1977. grammarID = 4;
  1978. } else {
  1979. errn = EXI_ERROR_UNKOWN_EVENT;
  1980. }
  1981. break;
  1982. case 72:
  1983. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  1984. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  1985. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  1986. if(errn == 0) {
  1987. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  1988. }
  1989. grammarID = 73;
  1990. } else if (1==1) {
  1991. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  1992. if(errn == 0) {
  1993. done = 1;
  1994. }
  1995. grammarID = 4;
  1996. } else {
  1997. errn = EXI_ERROR_UNKOWN_EVENT;
  1998. }
  1999. break;
  2000. case 73:
  2001. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2002. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  2003. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2004. if(errn == 0) {
  2005. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  2006. }
  2007. grammarID = 74;
  2008. } else if (1==1) {
  2009. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2010. if(errn == 0) {
  2011. done = 1;
  2012. }
  2013. grammarID = 4;
  2014. } else {
  2015. errn = EXI_ERROR_UNKOWN_EVENT;
  2016. }
  2017. break;
  2018. case 74:
  2019. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2020. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  2021. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2022. if(errn == 0) {
  2023. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  2024. }
  2025. grammarID = 75;
  2026. } else if (1==1) {
  2027. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2028. if(errn == 0) {
  2029. done = 1;
  2030. }
  2031. grammarID = 4;
  2032. } else {
  2033. errn = EXI_ERROR_UNKOWN_EVENT;
  2034. }
  2035. break;
  2036. case 75:
  2037. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2038. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  2039. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2040. if(errn == 0) {
  2041. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  2042. }
  2043. grammarID = 76;
  2044. } else if (1==1) {
  2045. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2046. if(errn == 0) {
  2047. done = 1;
  2048. }
  2049. grammarID = 4;
  2050. } else {
  2051. errn = EXI_ERROR_UNKOWN_EVENT;
  2052. }
  2053. break;
  2054. case 76:
  2055. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2056. if (iso1ServiceListType_Service_currArrayIndex < iso1ServiceListType->Service.arrayLen ) {
  2057. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2058. if(errn == 0) {
  2059. errn = encode_iso1ServiceType(stream, &iso1ServiceListType->Service.array [iso1ServiceListType_Service_currArrayIndex++]);
  2060. }
  2061. grammarID = 3;
  2062. } else if (1==1) {
  2063. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2064. if(errn == 0) {
  2065. done = 1;
  2066. }
  2067. grammarID = 4;
  2068. } else {
  2069. errn = EXI_ERROR_UNKOWN_EVENT;
  2070. }
  2071. break;
  2072. case 3:
  2073. /* Element[END_ELEMENT] */
  2074. if (1==1) {
  2075. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2076. if(errn == 0) {
  2077. done = 1;
  2078. }
  2079. grammarID = 4;
  2080. } else {
  2081. errn = EXI_ERROR_UNKOWN_EVENT;
  2082. }
  2083. break;
  2084. default:
  2085. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2086. break;
  2087. }
  2088. if(errn) {
  2089. done = 1;
  2090. }
  2091. }
  2092. return errn;
  2093. }
  2094. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEChargeParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */
  2095. static int encode_iso1EVSEChargeParameterType(bitstream_t* stream, struct iso1EVSEChargeParameterType* iso1EVSEChargeParameterType) {
  2096. int grammarID = 34;
  2097. int done = 0;
  2098. while(!done) {
  2099. switch(grammarID) {
  2100. case 34:
  2101. /* FirstStartTag[END_ELEMENT] */
  2102. if (1==1) {
  2103. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2104. if(errn == 0) {
  2105. done = 1;
  2106. }
  2107. grammarID = 4;
  2108. } else {
  2109. errn = EXI_ERROR_UNKOWN_EVENT;
  2110. }
  2111. break;
  2112. default:
  2113. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2114. break;
  2115. }
  2116. if(errn) {
  2117. done = 1;
  2118. }
  2119. }
  2120. return errn;
  2121. }
  2122. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVPowerDeliveryParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */
  2123. static int encode_iso1EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1EVPowerDeliveryParameterType* iso1EVPowerDeliveryParameterType) {
  2124. int grammarID = 34;
  2125. int done = 0;
  2126. while(!done) {
  2127. switch(grammarID) {
  2128. case 34:
  2129. /* FirstStartTag[END_ELEMENT] */
  2130. if (1==1) {
  2131. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2132. if(errn == 0) {
  2133. done = 1;
  2134. }
  2135. grammarID = 4;
  2136. } else {
  2137. errn = EXI_ERROR_UNKOWN_EVENT;
  2138. }
  2139. break;
  2140. default:
  2141. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2142. break;
  2143. }
  2144. if(errn) {
  2145. done = 1;
  2146. }
  2147. }
  2148. return errn;
  2149. }
  2150. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ProfileEntryType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxPower,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxNumberOfPhasesInUse{0-1})', derivedBy='RESTRICTION'. */
  2151. static int encode_iso1ProfileEntryType(bitstream_t* stream, struct iso1ProfileEntryType* iso1ProfileEntryType) {
  2152. int grammarID = 77;
  2153. int done = 0;
  2154. while(!done) {
  2155. switch(grammarID) {
  2156. case 77:
  2157. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */
  2158. if ( 1 == 1 ) {
  2159. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2160. if(errn == 0) {
  2161. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2162. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2163. if(errn == 0) {
  2164. errn = encodeUnsignedInteger32(stream, iso1ProfileEntryType->ChargingProfileEntryStart);
  2165. /* valid EE */
  2166. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2167. }
  2168. }
  2169. grammarID = 78;
  2170. } else {
  2171. errn = EXI_ERROR_UNKOWN_EVENT;
  2172. }
  2173. break;
  2174. case 78:
  2175. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */
  2176. if ( 1 == 1 ) {
  2177. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2178. if(errn == 0) {
  2179. errn = encode_iso1PhysicalValueType(stream, &iso1ProfileEntryType->ChargingProfileEntryMaxPower );
  2180. }
  2181. grammarID = 79;
  2182. } else {
  2183. errn = EXI_ERROR_UNKOWN_EVENT;
  2184. }
  2185. break;
  2186. case 79:
  2187. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */
  2188. if ( iso1ProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed == 1u ) {
  2189. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2190. if(errn == 0) {
  2191. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2192. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2193. if(errn == 0) {
  2194. errn = encodeNBitUnsignedInteger(stream, 2, (uint32_t)(iso1ProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse - 1));
  2195. /* valid EE */
  2196. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2197. }
  2198. }
  2199. grammarID = 3;
  2200. } else if (1==1) {
  2201. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2202. if(errn == 0) {
  2203. done = 1;
  2204. }
  2205. grammarID = 4;
  2206. } else {
  2207. errn = EXI_ERROR_UNKOWN_EVENT;
  2208. }
  2209. break;
  2210. case 3:
  2211. /* Element[END_ELEMENT] */
  2212. if (1==1) {
  2213. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2214. if(errn == 0) {
  2215. done = 1;
  2216. }
  2217. grammarID = 4;
  2218. } else {
  2219. errn = EXI_ERROR_UNKOWN_EVENT;
  2220. }
  2221. break;
  2222. default:
  2223. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2224. break;
  2225. }
  2226. if(errn) {
  2227. done = 1;
  2228. }
  2229. }
  2230. return errn;
  2231. }
  2232. /* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":GenChallenge{0-1})', derivedBy='EXTENSION'. */
  2233. static int encode_iso1AuthorizationReqType(bitstream_t* stream, struct iso1AuthorizationReqType* iso1AuthorizationReqType) {
  2234. int grammarID = 80;
  2235. int done = 0;
  2236. while(!done) {
  2237. switch(grammarID) {
  2238. case 80:
  2239. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */
  2240. if ( iso1AuthorizationReqType->Id_isUsed == 1u ) {
  2241. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2242. if(errn == 0) {
  2243. /* encode string as string table miss (+2 len)*/
  2244. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1AuthorizationReqType->Id.charactersLen + 2));
  2245. if (errn == 0) {
  2246. errn = encodeCharacters(stream, iso1AuthorizationReqType->Id.characters, iso1AuthorizationReqType->Id.charactersLen);
  2247. }
  2248. }
  2249. grammarID = 81;
  2250. } else if ( iso1AuthorizationReqType->GenChallenge_isUsed == 1u ) {
  2251. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2252. if(errn == 0) {
  2253. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  2254. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2255. if(errn == 0) {
  2256. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1AuthorizationReqType->GenChallenge.bytesLen));
  2257. if (errn == 0) {
  2258. errn = encodeBytes(stream, iso1AuthorizationReqType->GenChallenge.bytes, iso1AuthorizationReqType->GenChallenge.bytesLen);
  2259. }
  2260. /* valid EE */
  2261. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2262. }
  2263. }
  2264. grammarID = 3;
  2265. } else if (1==1) {
  2266. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  2267. if(errn == 0) {
  2268. done = 1;
  2269. }
  2270. grammarID = 4;
  2271. } else {
  2272. errn = EXI_ERROR_UNKOWN_EVENT;
  2273. }
  2274. break;
  2275. case 81:
  2276. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */
  2277. if ( iso1AuthorizationReqType->GenChallenge_isUsed == 1u ) {
  2278. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2279. if(errn == 0) {
  2280. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  2281. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2282. if(errn == 0) {
  2283. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1AuthorizationReqType->GenChallenge.bytesLen));
  2284. if (errn == 0) {
  2285. errn = encodeBytes(stream, iso1AuthorizationReqType->GenChallenge.bytes, iso1AuthorizationReqType->GenChallenge.bytesLen);
  2286. }
  2287. /* valid EE */
  2288. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2289. }
  2290. }
  2291. grammarID = 3;
  2292. } else if (1==1) {
  2293. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2294. if(errn == 0) {
  2295. done = 1;
  2296. }
  2297. grammarID = 4;
  2298. } else {
  2299. errn = EXI_ERROR_UNKOWN_EVENT;
  2300. }
  2301. break;
  2302. case 3:
  2303. /* Element[END_ELEMENT] */
  2304. if (1==1) {
  2305. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2306. if(errn == 0) {
  2307. done = 1;
  2308. }
  2309. grammarID = 4;
  2310. } else {
  2311. errn = EXI_ERROR_UNKOWN_EVENT;
  2312. }
  2313. break;
  2314. default:
  2315. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2316. break;
  2317. }
  2318. if(errn) {
  2319. done = 1;
  2320. }
  2321. }
  2322. return errn;
  2323. }
  2324. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */
  2325. static int encode_iso1MeterInfoType(bitstream_t* stream, struct iso1MeterInfoType* iso1MeterInfoType) {
  2326. int grammarID = 82;
  2327. int done = 0;
  2328. while(!done) {
  2329. switch(grammarID) {
  2330. case 82:
  2331. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */
  2332. if ( 1 == 1 ) {
  2333. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2334. if(errn == 0) {
  2335. /* FirstStartTag[CHARACTERS[STRING]] */
  2336. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2337. if(errn == 0) {
  2338. /* encode string as string table miss (+2 len)*/
  2339. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MeterInfoType->MeterID.charactersLen + 2));
  2340. if (errn == 0) {
  2341. errn = encodeCharacters(stream, iso1MeterInfoType->MeterID.characters, iso1MeterInfoType->MeterID.charactersLen);
  2342. }
  2343. /* valid EE */
  2344. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2345. }
  2346. }
  2347. grammarID = 83;
  2348. } else {
  2349. errn = EXI_ERROR_UNKOWN_EVENT;
  2350. }
  2351. break;
  2352. case 83:
  2353. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */
  2354. if ( iso1MeterInfoType->MeterReading_isUsed == 1u ) {
  2355. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  2356. if(errn == 0) {
  2357. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2358. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2359. if(errn == 0) {
  2360. errn = encodeUnsignedInteger64(stream, iso1MeterInfoType->MeterReading);
  2361. /* valid EE */
  2362. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2363. }
  2364. }
  2365. grammarID = 84;
  2366. } else if ( iso1MeterInfoType->SigMeterReading_isUsed == 1u ) {
  2367. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  2368. if(errn == 0) {
  2369. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  2370. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2371. if(errn == 0) {
  2372. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MeterInfoType->SigMeterReading.bytesLen));
  2373. if (errn == 0) {
  2374. errn = encodeBytes(stream, iso1MeterInfoType->SigMeterReading.bytes, iso1MeterInfoType->SigMeterReading.bytesLen);
  2375. }
  2376. /* valid EE */
  2377. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2378. }
  2379. }
  2380. grammarID = 85;
  2381. } else if ( iso1MeterInfoType->MeterStatus_isUsed == 1u ) {
  2382. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  2383. if(errn == 0) {
  2384. /* FirstStartTag[CHARACTERS[INTEGER]] */
  2385. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2386. if(errn == 0) {
  2387. errn = encodeInteger16(stream, iso1MeterInfoType->MeterStatus);
  2388. /* valid EE */
  2389. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2390. }
  2391. }
  2392. grammarID = 86;
  2393. } else if ( iso1MeterInfoType->TMeter_isUsed == 1u ) {
  2394. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  2395. if(errn == 0) {
  2396. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  2397. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2398. if(errn == 0) {
  2399. errn = encodeInteger64(stream, iso1MeterInfoType->TMeter);
  2400. /* valid EE */
  2401. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2402. }
  2403. }
  2404. grammarID = 3;
  2405. } else if (1==1) {
  2406. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  2407. if(errn == 0) {
  2408. done = 1;
  2409. }
  2410. grammarID = 4;
  2411. } else {
  2412. errn = EXI_ERROR_UNKOWN_EVENT;
  2413. }
  2414. break;
  2415. case 84:
  2416. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */
  2417. if ( iso1MeterInfoType->SigMeterReading_isUsed == 1u ) {
  2418. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  2419. if(errn == 0) {
  2420. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  2421. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2422. if(errn == 0) {
  2423. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MeterInfoType->SigMeterReading.bytesLen));
  2424. if (errn == 0) {
  2425. errn = encodeBytes(stream, iso1MeterInfoType->SigMeterReading.bytes, iso1MeterInfoType->SigMeterReading.bytesLen);
  2426. }
  2427. /* valid EE */
  2428. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2429. }
  2430. }
  2431. grammarID = 85;
  2432. } else if ( iso1MeterInfoType->MeterStatus_isUsed == 1u ) {
  2433. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  2434. if(errn == 0) {
  2435. /* FirstStartTag[CHARACTERS[INTEGER]] */
  2436. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2437. if(errn == 0) {
  2438. errn = encodeInteger16(stream, iso1MeterInfoType->MeterStatus);
  2439. /* valid EE */
  2440. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2441. }
  2442. }
  2443. grammarID = 86;
  2444. } else if ( iso1MeterInfoType->TMeter_isUsed == 1u ) {
  2445. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  2446. if(errn == 0) {
  2447. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  2448. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2449. if(errn == 0) {
  2450. errn = encodeInteger64(stream, iso1MeterInfoType->TMeter);
  2451. /* valid EE */
  2452. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2453. }
  2454. }
  2455. grammarID = 3;
  2456. } else if (1==1) {
  2457. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  2458. if(errn == 0) {
  2459. done = 1;
  2460. }
  2461. grammarID = 4;
  2462. } else {
  2463. errn = EXI_ERROR_UNKOWN_EVENT;
  2464. }
  2465. break;
  2466. case 85:
  2467. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */
  2468. if ( iso1MeterInfoType->MeterStatus_isUsed == 1u ) {
  2469. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2470. if(errn == 0) {
  2471. /* FirstStartTag[CHARACTERS[INTEGER]] */
  2472. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2473. if(errn == 0) {
  2474. errn = encodeInteger16(stream, iso1MeterInfoType->MeterStatus);
  2475. /* valid EE */
  2476. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2477. }
  2478. }
  2479. grammarID = 86;
  2480. } else if ( iso1MeterInfoType->TMeter_isUsed == 1u ) {
  2481. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2482. if(errn == 0) {
  2483. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  2484. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2485. if(errn == 0) {
  2486. errn = encodeInteger64(stream, iso1MeterInfoType->TMeter);
  2487. /* valid EE */
  2488. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2489. }
  2490. }
  2491. grammarID = 3;
  2492. } else if (1==1) {
  2493. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  2494. if(errn == 0) {
  2495. done = 1;
  2496. }
  2497. grammarID = 4;
  2498. } else {
  2499. errn = EXI_ERROR_UNKOWN_EVENT;
  2500. }
  2501. break;
  2502. case 86:
  2503. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */
  2504. if ( iso1MeterInfoType->TMeter_isUsed == 1u ) {
  2505. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2506. if(errn == 0) {
  2507. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  2508. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2509. if(errn == 0) {
  2510. errn = encodeInteger64(stream, iso1MeterInfoType->TMeter);
  2511. /* valid EE */
  2512. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2513. }
  2514. }
  2515. grammarID = 3;
  2516. } else if (1==1) {
  2517. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2518. if(errn == 0) {
  2519. done = 1;
  2520. }
  2521. grammarID = 4;
  2522. } else {
  2523. errn = EXI_ERROR_UNKOWN_EVENT;
  2524. }
  2525. break;
  2526. case 3:
  2527. /* Element[END_ELEMENT] */
  2528. if (1==1) {
  2529. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2530. if(errn == 0) {
  2531. done = 1;
  2532. }
  2533. grammarID = 4;
  2534. } else {
  2535. errn = EXI_ERROR_UNKOWN_EVENT;
  2536. }
  2537. break;
  2538. default:
  2539. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2540. break;
  2541. }
  2542. if(errn) {
  2543. done = 1;
  2544. }
  2545. }
  2546. return errn;
  2547. }
  2548. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,ManifestType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  2549. static int encode_iso1ManifestType(bitstream_t* stream, struct iso1ManifestType* iso1ManifestType) {
  2550. int grammarID = 87;
  2551. int done = 0;
  2552. unsigned int iso1ManifestType_Reference_currArrayIndex = 0;
  2553. while(!done) {
  2554. switch(grammarID) {
  2555. case 87:
  2556. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
  2557. if ( iso1ManifestType->Id_isUsed == 1u ) {
  2558. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2559. if(errn == 0) {
  2560. /* encode string as string table miss (+2 len)*/
  2561. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ManifestType->Id.charactersLen + 2));
  2562. if (errn == 0) {
  2563. errn = encodeCharacters(stream, iso1ManifestType->Id.characters, iso1ManifestType->Id.charactersLen);
  2564. }
  2565. }
  2566. grammarID = 88;
  2567. } else if (iso1ManifestType_Reference_currArrayIndex < iso1ManifestType->Reference.arrayLen ) {
  2568. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2569. if(errn == 0) {
  2570. errn = encode_iso1ReferenceType(stream, &iso1ManifestType->Reference.array [iso1ManifestType_Reference_currArrayIndex++]);
  2571. }
  2572. grammarID = 66;
  2573. } else {
  2574. errn = EXI_ERROR_UNKOWN_EVENT;
  2575. }
  2576. break;
  2577. case 88:
  2578. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
  2579. if (iso1ManifestType_Reference_currArrayIndex < iso1ManifestType->Reference.arrayLen ) {
  2580. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2581. if(errn == 0) {
  2582. errn = encode_iso1ReferenceType(stream, &iso1ManifestType->Reference.array [iso1ManifestType_Reference_currArrayIndex++]);
  2583. }
  2584. grammarID = 66;
  2585. } else {
  2586. errn = EXI_ERROR_UNKOWN_EVENT;
  2587. }
  2588. break;
  2589. case 66:
  2590. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */
  2591. if (iso1ManifestType_Reference_currArrayIndex < iso1ManifestType->Reference.arrayLen ) {
  2592. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2593. if(errn == 0) {
  2594. errn = encode_iso1ReferenceType(stream, &iso1ManifestType->Reference.array [iso1ManifestType_Reference_currArrayIndex++]);
  2595. }
  2596. grammarID = 66;
  2597. } else if (1==1) {
  2598. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2599. if(errn == 0) {
  2600. done = 1;
  2601. }
  2602. grammarID = 4;
  2603. } else {
  2604. errn = EXI_ERROR_UNKOWN_EVENT;
  2605. }
  2606. break;
  2607. default:
  2608. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2609. break;
  2610. }
  2611. if(errn) {
  2612. done = 1;
  2613. }
  2614. }
  2615. return errn;
  2616. }
  2617. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing,"urn:iso:15118:2:2013:MsgDataTypes":SASchedules{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEChargeParameter)', derivedBy='EXTENSION'. */
  2618. static int encode_iso1ChargeParameterDiscoveryResType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryResType* iso1ChargeParameterDiscoveryResType) {
  2619. int grammarID = 89;
  2620. int done = 0;
  2621. while(!done) {
  2622. switch(grammarID) {
  2623. case 89:
  2624. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  2625. if ( 1 == 1 ) {
  2626. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2627. if(errn == 0) {
  2628. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  2629. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2630. if(errn == 0) {
  2631. errn = encodeNBitUnsignedInteger(stream, 5, iso1ChargeParameterDiscoveryResType->ResponseCode);
  2632. /* valid EE */
  2633. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2634. }
  2635. }
  2636. grammarID = 90;
  2637. } else {
  2638. errn = EXI_ERROR_UNKOWN_EVENT;
  2639. }
  2640. break;
  2641. case 90:
  2642. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */
  2643. if ( 1 == 1 ) {
  2644. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2645. if(errn == 0) {
  2646. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  2647. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2648. if(errn == 0) {
  2649. errn = encodeNBitUnsignedInteger(stream, 2, iso1ChargeParameterDiscoveryResType->EVSEProcessing);
  2650. /* valid EE */
  2651. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2652. }
  2653. }
  2654. grammarID = 91;
  2655. } else {
  2656. errn = EXI_ERROR_UNKOWN_EVENT;
  2657. }
  2658. break;
  2659. case 91:
  2660. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */
  2661. if ( iso1ChargeParameterDiscoveryResType->SAScheduleList_isUsed == 1u ) {
  2662. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  2663. if(errn == 0) {
  2664. errn = encode_iso1SAScheduleListType(stream, &iso1ChargeParameterDiscoveryResType->SAScheduleList );
  2665. }
  2666. grammarID = 92;
  2667. } else if ( iso1ChargeParameterDiscoveryResType->SASchedules_isUsed == 1u ) {
  2668. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  2669. if(errn == 0) {
  2670. errn = encode_iso1SASchedulesType(stream, &iso1ChargeParameterDiscoveryResType->SASchedules );
  2671. }
  2672. grammarID = 92;
  2673. } else if ( iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed == 1u ) {
  2674. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  2675. if(errn == 0) {
  2676. errn = encode_iso1AC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter );
  2677. }
  2678. grammarID = 3;
  2679. } else if ( iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed == 1u ) {
  2680. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  2681. if(errn == 0) {
  2682. errn = encode_iso1DC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter );
  2683. }
  2684. grammarID = 3;
  2685. } else if ( iso1ChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed == 1u ) {
  2686. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  2687. if(errn == 0) {
  2688. errn = encode_iso1EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->EVSEChargeParameter );
  2689. }
  2690. grammarID = 3;
  2691. } else {
  2692. errn = EXI_ERROR_UNKOWN_EVENT;
  2693. }
  2694. break;
  2695. case 92:
  2696. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */
  2697. if ( iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed == 1u ) {
  2698. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2699. if(errn == 0) {
  2700. errn = encode_iso1AC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter );
  2701. }
  2702. grammarID = 3;
  2703. } else if ( iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed == 1u ) {
  2704. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2705. if(errn == 0) {
  2706. errn = encode_iso1DC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter );
  2707. }
  2708. grammarID = 3;
  2709. } else if ( iso1ChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed == 1u ) {
  2710. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  2711. if(errn == 0) {
  2712. errn = encode_iso1EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->EVSEChargeParameter );
  2713. }
  2714. grammarID = 3;
  2715. } else {
  2716. errn = EXI_ERROR_UNKOWN_EVENT;
  2717. }
  2718. break;
  2719. case 3:
  2720. /* Element[END_ELEMENT] */
  2721. if (1==1) {
  2722. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2723. if(errn == 0) {
  2724. done = 1;
  2725. }
  2726. grammarID = 4;
  2727. } else {
  2728. errn = EXI_ERROR_UNKOWN_EVENT;
  2729. }
  2730. break;
  2731. default:
  2732. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2733. break;
  2734. }
  2735. if(errn) {
  2736. done = 1;
  2737. }
  2738. }
  2739. return errn;
  2740. }
  2741. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */
  2742. static int encode_iso1PowerDeliveryResType(bitstream_t* stream, struct iso1PowerDeliveryResType* iso1PowerDeliveryResType) {
  2743. int grammarID = 93;
  2744. int done = 0;
  2745. while(!done) {
  2746. switch(grammarID) {
  2747. case 93:
  2748. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  2749. if ( 1 == 1 ) {
  2750. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2751. if(errn == 0) {
  2752. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  2753. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2754. if(errn == 0) {
  2755. errn = encodeNBitUnsignedInteger(stream, 5, iso1PowerDeliveryResType->ResponseCode);
  2756. /* valid EE */
  2757. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2758. }
  2759. }
  2760. grammarID = 94;
  2761. } else {
  2762. errn = EXI_ERROR_UNKOWN_EVENT;
  2763. }
  2764. break;
  2765. case 94:
  2766. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */
  2767. if ( iso1PowerDeliveryResType->AC_EVSEStatus_isUsed == 1u ) {
  2768. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2769. if(errn == 0) {
  2770. errn = encode_iso1AC_EVSEStatusType(stream, &iso1PowerDeliveryResType->AC_EVSEStatus );
  2771. }
  2772. grammarID = 3;
  2773. } else if ( iso1PowerDeliveryResType->DC_EVSEStatus_isUsed == 1u ) {
  2774. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2775. if(errn == 0) {
  2776. errn = encode_iso1DC_EVSEStatusType(stream, &iso1PowerDeliveryResType->DC_EVSEStatus );
  2777. }
  2778. grammarID = 3;
  2779. } else if ( iso1PowerDeliveryResType->EVSEStatus_isUsed == 1u ) {
  2780. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  2781. if(errn == 0) {
  2782. errn = encode_iso1EVSEStatusType(stream, &iso1PowerDeliveryResType->EVSEStatus );
  2783. }
  2784. grammarID = 3;
  2785. } else {
  2786. errn = EXI_ERROR_UNKOWN_EVENT;
  2787. }
  2788. break;
  2789. case 3:
  2790. /* Element[END_ELEMENT] */
  2791. if (1==1) {
  2792. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2793. if(errn == 0) {
  2794. done = 1;
  2795. }
  2796. grammarID = 4;
  2797. } else {
  2798. errn = EXI_ERROR_UNKOWN_EVENT;
  2799. }
  2800. break;
  2801. default:
  2802. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2803. break;
  2804. }
  2805. if(errn) {
  2806. done = 1;
  2807. }
  2808. }
  2809. return errn;
  2810. }
  2811. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2013:MsgDataTypes":BulkSOC{0-1}))', derivedBy='EXTENSION'. */
  2812. static int encode_iso1DC_EVChargeParameterType(bitstream_t* stream, struct iso1DC_EVChargeParameterType* iso1DC_EVChargeParameterType) {
  2813. int grammarID = 95;
  2814. int done = 0;
  2815. while(!done) {
  2816. switch(grammarID) {
  2817. case 95:
  2818. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */
  2819. if ( iso1DC_EVChargeParameterType->DepartureTime_isUsed == 1u ) {
  2820. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2821. if(errn == 0) {
  2822. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2823. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2824. if(errn == 0) {
  2825. errn = encodeUnsignedInteger32(stream, iso1DC_EVChargeParameterType->DepartureTime);
  2826. /* valid EE */
  2827. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2828. }
  2829. }
  2830. grammarID = 96;
  2831. } else if ( 1 == 1 ) {
  2832. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2833. if(errn == 0) {
  2834. errn = encode_iso1DC_EVStatusType(stream, &iso1DC_EVChargeParameterType->DC_EVStatus );
  2835. }
  2836. grammarID = 97;
  2837. } else {
  2838. errn = EXI_ERROR_UNKOWN_EVENT;
  2839. }
  2840. break;
  2841. case 96:
  2842. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */
  2843. if ( 1 == 1 ) {
  2844. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2845. if(errn == 0) {
  2846. errn = encode_iso1DC_EVStatusType(stream, &iso1DC_EVChargeParameterType->DC_EVStatus );
  2847. }
  2848. grammarID = 97;
  2849. } else {
  2850. errn = EXI_ERROR_UNKOWN_EVENT;
  2851. }
  2852. break;
  2853. case 97:
  2854. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */
  2855. if ( 1 == 1 ) {
  2856. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2857. if(errn == 0) {
  2858. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumCurrentLimit );
  2859. }
  2860. grammarID = 98;
  2861. } else {
  2862. errn = EXI_ERROR_UNKOWN_EVENT;
  2863. }
  2864. break;
  2865. case 98:
  2866. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */
  2867. if ( iso1DC_EVChargeParameterType->EVMaximumPowerLimit_isUsed == 1u ) {
  2868. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2869. if(errn == 0) {
  2870. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumPowerLimit );
  2871. }
  2872. grammarID = 99;
  2873. } else if ( 1 == 1 ) {
  2874. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  2875. if(errn == 0) {
  2876. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumVoltageLimit );
  2877. }
  2878. grammarID = 100;
  2879. } else {
  2880. errn = EXI_ERROR_UNKOWN_EVENT;
  2881. }
  2882. break;
  2883. case 99:
  2884. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */
  2885. if ( 1 == 1 ) {
  2886. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2887. if(errn == 0) {
  2888. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumVoltageLimit );
  2889. }
  2890. grammarID = 100;
  2891. } else {
  2892. errn = EXI_ERROR_UNKOWN_EVENT;
  2893. }
  2894. break;
  2895. case 100:
  2896. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */
  2897. if ( iso1DC_EVChargeParameterType->EVEnergyCapacity_isUsed == 1u ) {
  2898. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  2899. if(errn == 0) {
  2900. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVEnergyCapacity );
  2901. }
  2902. grammarID = 101;
  2903. } else if ( iso1DC_EVChargeParameterType->EVEnergyRequest_isUsed == 1u ) {
  2904. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  2905. if(errn == 0) {
  2906. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVEnergyRequest );
  2907. }
  2908. grammarID = 102;
  2909. } else if ( iso1DC_EVChargeParameterType->FullSOC_isUsed == 1u ) {
  2910. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  2911. if(errn == 0) {
  2912. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2913. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2914. if(errn == 0) {
  2915. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->FullSOC - 0));
  2916. /* valid EE */
  2917. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2918. }
  2919. }
  2920. grammarID = 103;
  2921. } else if ( iso1DC_EVChargeParameterType->BulkSOC_isUsed == 1u ) {
  2922. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  2923. if(errn == 0) {
  2924. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2925. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2926. if(errn == 0) {
  2927. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->BulkSOC - 0));
  2928. /* valid EE */
  2929. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2930. }
  2931. }
  2932. grammarID = 3;
  2933. } else if (1==1) {
  2934. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  2935. if(errn == 0) {
  2936. done = 1;
  2937. }
  2938. grammarID = 4;
  2939. } else {
  2940. errn = EXI_ERROR_UNKOWN_EVENT;
  2941. }
  2942. break;
  2943. case 101:
  2944. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */
  2945. if ( iso1DC_EVChargeParameterType->EVEnergyRequest_isUsed == 1u ) {
  2946. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  2947. if(errn == 0) {
  2948. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVEnergyRequest );
  2949. }
  2950. grammarID = 102;
  2951. } else if ( iso1DC_EVChargeParameterType->FullSOC_isUsed == 1u ) {
  2952. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  2953. if(errn == 0) {
  2954. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2955. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2956. if(errn == 0) {
  2957. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->FullSOC - 0));
  2958. /* valid EE */
  2959. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2960. }
  2961. }
  2962. grammarID = 103;
  2963. } else if ( iso1DC_EVChargeParameterType->BulkSOC_isUsed == 1u ) {
  2964. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  2965. if(errn == 0) {
  2966. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2967. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2968. if(errn == 0) {
  2969. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->BulkSOC - 0));
  2970. /* valid EE */
  2971. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2972. }
  2973. }
  2974. grammarID = 3;
  2975. } else if (1==1) {
  2976. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  2977. if(errn == 0) {
  2978. done = 1;
  2979. }
  2980. grammarID = 4;
  2981. } else {
  2982. errn = EXI_ERROR_UNKOWN_EVENT;
  2983. }
  2984. break;
  2985. case 102:
  2986. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */
  2987. if ( iso1DC_EVChargeParameterType->FullSOC_isUsed == 1u ) {
  2988. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  2989. if(errn == 0) {
  2990. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2991. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2992. if(errn == 0) {
  2993. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->FullSOC - 0));
  2994. /* valid EE */
  2995. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  2996. }
  2997. }
  2998. grammarID = 103;
  2999. } else if ( iso1DC_EVChargeParameterType->BulkSOC_isUsed == 1u ) {
  3000. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3001. if(errn == 0) {
  3002. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  3003. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3004. if(errn == 0) {
  3005. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->BulkSOC - 0));
  3006. /* valid EE */
  3007. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3008. }
  3009. }
  3010. grammarID = 3;
  3011. } else if (1==1) {
  3012. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  3013. if(errn == 0) {
  3014. done = 1;
  3015. }
  3016. grammarID = 4;
  3017. } else {
  3018. errn = EXI_ERROR_UNKOWN_EVENT;
  3019. }
  3020. break;
  3021. case 103:
  3022. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */
  3023. if ( iso1DC_EVChargeParameterType->BulkSOC_isUsed == 1u ) {
  3024. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  3025. if(errn == 0) {
  3026. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  3027. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3028. if(errn == 0) {
  3029. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVChargeParameterType->BulkSOC - 0));
  3030. /* valid EE */
  3031. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3032. }
  3033. }
  3034. grammarID = 3;
  3035. } else if (1==1) {
  3036. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3037. if(errn == 0) {
  3038. done = 1;
  3039. }
  3040. grammarID = 4;
  3041. } else {
  3042. errn = EXI_ERROR_UNKOWN_EVENT;
  3043. }
  3044. break;
  3045. case 3:
  3046. /* Element[END_ELEMENT] */
  3047. if (1==1) {
  3048. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3049. if(errn == 0) {
  3050. done = 1;
  3051. }
  3052. grammarID = 4;
  3053. } else {
  3054. errn = EXI_ERROR_UNKOWN_EVENT;
  3055. }
  3056. break;
  3057. default:
  3058. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3059. break;
  3060. }
  3061. if(errn) {
  3062. done = 1;
  3063. }
  3064. }
  3065. return errn;
  3066. }
  3067. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ConsumptionCostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":startValue,"urn:iso:15118:2:2013:MsgDataTypes":Cost{1-3})', derivedBy='RESTRICTION'. */
  3068. static int encode_iso1ConsumptionCostType(bitstream_t* stream, struct iso1ConsumptionCostType* iso1ConsumptionCostType) {
  3069. int grammarID = 104;
  3070. int done = 0;
  3071. unsigned int iso1ConsumptionCostType_Cost_currArrayIndex = 0;
  3072. while(!done) {
  3073. switch(grammarID) {
  3074. case 104:
  3075. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */
  3076. if ( 1 == 1 ) {
  3077. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3078. if(errn == 0) {
  3079. errn = encode_iso1PhysicalValueType(stream, &iso1ConsumptionCostType->startValue );
  3080. }
  3081. grammarID = 105;
  3082. } else {
  3083. errn = EXI_ERROR_UNKOWN_EVENT;
  3084. }
  3085. break;
  3086. case 105:
  3087. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */
  3088. if (iso1ConsumptionCostType_Cost_currArrayIndex < iso1ConsumptionCostType->Cost.arrayLen ) {
  3089. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3090. if(errn == 0) {
  3091. errn = encode_iso1CostType(stream, &iso1ConsumptionCostType->Cost.array [iso1ConsumptionCostType_Cost_currArrayIndex++]);
  3092. }
  3093. grammarID = 106;
  3094. } else {
  3095. errn = EXI_ERROR_UNKOWN_EVENT;
  3096. }
  3097. break;
  3098. case 106:
  3099. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */
  3100. if (iso1ConsumptionCostType_Cost_currArrayIndex < iso1ConsumptionCostType->Cost.arrayLen ) {
  3101. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  3102. if(errn == 0) {
  3103. errn = encode_iso1CostType(stream, &iso1ConsumptionCostType->Cost.array [iso1ConsumptionCostType_Cost_currArrayIndex++]);
  3104. }
  3105. grammarID = 107;
  3106. } else if (1==1) {
  3107. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3108. if(errn == 0) {
  3109. done = 1;
  3110. }
  3111. grammarID = 4;
  3112. } else {
  3113. errn = EXI_ERROR_UNKOWN_EVENT;
  3114. }
  3115. break;
  3116. case 107:
  3117. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */
  3118. if (iso1ConsumptionCostType_Cost_currArrayIndex < iso1ConsumptionCostType->Cost.arrayLen ) {
  3119. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  3120. if(errn == 0) {
  3121. errn = encode_iso1CostType(stream, &iso1ConsumptionCostType->Cost.array [iso1ConsumptionCostType_Cost_currArrayIndex++]);
  3122. }
  3123. grammarID = 3;
  3124. } else if (1==1) {
  3125. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3126. if(errn == 0) {
  3127. done = 1;
  3128. }
  3129. grammarID = 4;
  3130. } else {
  3131. errn = EXI_ERROR_UNKOWN_EVENT;
  3132. }
  3133. break;
  3134. case 3:
  3135. /* Element[END_ELEMENT] */
  3136. if (1==1) {
  3137. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3138. if(errn == 0) {
  3139. done = 1;
  3140. }
  3141. grammarID = 4;
  3142. } else {
  3143. errn = EXI_ERROR_UNKOWN_EVENT;
  3144. }
  3145. break;
  3146. default:
  3147. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3148. break;
  3149. }
  3150. if(errn) {
  3151. done = 1;
  3152. }
  3153. }
  3154. return errn;
  3155. }
  3156. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  3157. static int encode_iso1PMaxScheduleType(bitstream_t* stream, struct iso1PMaxScheduleType* iso1PMaxScheduleType) {
  3158. int grammarID = 108;
  3159. int done = 0;
  3160. unsigned int iso1PMaxScheduleType_PMaxScheduleEntry_currArrayIndex = 0;
  3161. while(!done) {
  3162. switch(grammarID) {
  3163. case 108:
  3164. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */
  3165. if (iso1PMaxScheduleType_PMaxScheduleEntry_currArrayIndex < iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen ) {
  3166. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3167. if(errn == 0) {
  3168. errn = encode_iso1PMaxScheduleEntryType(stream, &iso1PMaxScheduleType->PMaxScheduleEntry.array [iso1PMaxScheduleType_PMaxScheduleEntry_currArrayIndex++]);
  3169. }
  3170. grammarID = 109;
  3171. } else {
  3172. errn = EXI_ERROR_UNKOWN_EVENT;
  3173. }
  3174. break;
  3175. case 109:
  3176. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */
  3177. if (iso1PMaxScheduleType_PMaxScheduleEntry_currArrayIndex < iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen ) {
  3178. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  3179. if(errn == 0) {
  3180. errn = encode_iso1PMaxScheduleEntryType(stream, &iso1PMaxScheduleType->PMaxScheduleEntry.array [iso1PMaxScheduleType_PMaxScheduleEntry_currArrayIndex++]);
  3181. }
  3182. grammarID = 109;
  3183. } else if (1==1) {
  3184. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3185. if(errn == 0) {
  3186. done = 1;
  3187. }
  3188. grammarID = 4;
  3189. } else {
  3190. errn = EXI_ERROR_UNKOWN_EVENT;
  3191. }
  3192. break;
  3193. default:
  3194. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3195. break;
  3196. }
  3197. if(errn) {
  3198. done = 1;
  3199. }
  3200. }
  3201. return errn;
  3202. }
  3203. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PaymentOptionListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PaymentOption{1-2})', derivedBy='RESTRICTION'. */
  3204. static int encode_iso1PaymentOptionListType(bitstream_t* stream, struct iso1PaymentOptionListType* iso1PaymentOptionListType) {
  3205. int grammarID = 110;
  3206. int done = 0;
  3207. unsigned int iso1PaymentOptionListType_PaymentOption_currArrayIndex = 0;
  3208. while(!done) {
  3209. switch(grammarID) {
  3210. case 110:
  3211. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */
  3212. if (iso1PaymentOptionListType_PaymentOption_currArrayIndex < iso1PaymentOptionListType->PaymentOption.arrayLen ) {
  3213. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3214. if(errn == 0) {
  3215. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3216. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3217. if(errn == 0) {
  3218. errn = encodeNBitUnsignedInteger(stream, 1, iso1PaymentOptionListType->PaymentOption.array[iso1PaymentOptionListType_PaymentOption_currArrayIndex++]);
  3219. /* valid EE */
  3220. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3221. }
  3222. }
  3223. grammarID = 111;
  3224. } else {
  3225. errn = EXI_ERROR_UNKOWN_EVENT;
  3226. }
  3227. break;
  3228. case 111:
  3229. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */
  3230. if (iso1PaymentOptionListType_PaymentOption_currArrayIndex < iso1PaymentOptionListType->PaymentOption.arrayLen ) {
  3231. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  3232. if(errn == 0) {
  3233. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3234. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3235. if(errn == 0) {
  3236. errn = encodeNBitUnsignedInteger(stream, 1, iso1PaymentOptionListType->PaymentOption.array[iso1PaymentOptionListType_PaymentOption_currArrayIndex++]);
  3237. /* valid EE */
  3238. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3239. }
  3240. }
  3241. grammarID = 3;
  3242. } else if (1==1) {
  3243. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3244. if(errn == 0) {
  3245. done = 1;
  3246. }
  3247. grammarID = 4;
  3248. } else {
  3249. errn = EXI_ERROR_UNKOWN_EVENT;
  3250. }
  3251. break;
  3252. case 3:
  3253. /* Element[END_ELEMENT] */
  3254. if (1==1) {
  3255. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3256. if(errn == 0) {
  3257. done = 1;
  3258. }
  3259. grammarID = 4;
  3260. } else {
  3261. errn = EXI_ERROR_UNKOWN_EVENT;
  3262. }
  3263. break;
  3264. default:
  3265. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3266. break;
  3267. }
  3268. if(errn) {
  3269. done = 1;
  3270. }
  3271. }
  3272. return errn;
  3273. }
  3274. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any])){0-UNBOUNDED}', derivedBy='RESTRICTION'. */
  3275. static int encode_iso1ObjectType(bitstream_t* stream, struct iso1ObjectType* iso1ObjectType) {
  3276. int grammarID = 112;
  3277. int done = 0;
  3278. int wcDone = 0;
  3279. while(!done) {
  3280. switch(grammarID) {
  3281. case 112:
  3282. /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  3283. if ( iso1ObjectType->Encoding_isUsed == 1u ) {
  3284. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  3285. if(errn == 0) {
  3286. /* encode string as string table miss (+2 len)*/
  3287. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->Encoding.charactersLen + 2));
  3288. if (errn == 0) {
  3289. errn = encodeCharacters(stream, iso1ObjectType->Encoding.characters, iso1ObjectType->Encoding.charactersLen);
  3290. }
  3291. }
  3292. grammarID = 113;
  3293. } else if ( iso1ObjectType->Id_isUsed == 1u ) {
  3294. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  3295. if(errn == 0) {
  3296. /* encode string as string table miss (+2 len)*/
  3297. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->Id.charactersLen + 2));
  3298. if (errn == 0) {
  3299. errn = encodeCharacters(stream, iso1ObjectType->Id.characters, iso1ObjectType->Id.charactersLen);
  3300. }
  3301. }
  3302. grammarID = 114;
  3303. } else if ( iso1ObjectType->MimeType_isUsed == 1u ) {
  3304. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  3305. if(errn == 0) {
  3306. /* encode string as string table miss (+2 len)*/
  3307. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->MimeType.charactersLen + 2));
  3308. if (errn == 0) {
  3309. errn = encodeCharacters(stream, iso1ObjectType->MimeType.characters, iso1ObjectType->MimeType.charactersLen);
  3310. }
  3311. }
  3312. grammarID = 115;
  3313. } else if (1==0) {
  3314. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3315. grammarID = 116;
  3316. } else if ( iso1ObjectType->ANY_isUsed == 0u || wcDone ) {
  3317. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  3318. if(errn == 0) {
  3319. done = 1;
  3320. }
  3321. grammarID = 4;
  3322. } else if ( iso1ObjectType->ANY_isUsed == 1u ) {
  3323. errn = encodeNBitUnsignedInteger(stream, 3, 5);
  3324. if(errn == 0) {
  3325. /* encode string as string table miss (+2 len)*/
  3326. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->ANY.charactersLen + 2));
  3327. if (errn == 0) {
  3328. errn = encodeCharacters(stream, iso1ObjectType->ANY.characters, iso1ObjectType->ANY.charactersLen);
  3329. }
  3330. }
  3331. wcDone = 1;
  3332. grammarID = 116;
  3333. } else {
  3334. errn = EXI_ERROR_UNKOWN_EVENT;
  3335. }
  3336. break;
  3337. case 113:
  3338. /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  3339. if ( iso1ObjectType->Id_isUsed == 1u ) {
  3340. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  3341. if(errn == 0) {
  3342. /* encode string as string table miss (+2 len)*/
  3343. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->Id.charactersLen + 2));
  3344. if (errn == 0) {
  3345. errn = encodeCharacters(stream, iso1ObjectType->Id.characters, iso1ObjectType->Id.charactersLen);
  3346. }
  3347. }
  3348. grammarID = 114;
  3349. } else if ( iso1ObjectType->MimeType_isUsed == 1u ) {
  3350. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  3351. if(errn == 0) {
  3352. /* encode string as string table miss (+2 len)*/
  3353. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->MimeType.charactersLen + 2));
  3354. if (errn == 0) {
  3355. errn = encodeCharacters(stream, iso1ObjectType->MimeType.characters, iso1ObjectType->MimeType.charactersLen);
  3356. }
  3357. }
  3358. grammarID = 115;
  3359. } else if (1==0) {
  3360. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3361. grammarID = 116;
  3362. } else if ( iso1ObjectType->ANY_isUsed == 0u || wcDone ) {
  3363. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  3364. if(errn == 0) {
  3365. done = 1;
  3366. }
  3367. grammarID = 4;
  3368. } else if ( iso1ObjectType->ANY_isUsed == 1u ) {
  3369. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  3370. if(errn == 0) {
  3371. /* encode string as string table miss (+2 len)*/
  3372. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->ANY.charactersLen + 2));
  3373. if (errn == 0) {
  3374. errn = encodeCharacters(stream, iso1ObjectType->ANY.characters, iso1ObjectType->ANY.charactersLen);
  3375. }
  3376. }
  3377. wcDone = 1;
  3378. grammarID = 116;
  3379. } else {
  3380. errn = EXI_ERROR_UNKOWN_EVENT;
  3381. }
  3382. break;
  3383. case 114:
  3384. /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  3385. if ( iso1ObjectType->MimeType_isUsed == 1u ) {
  3386. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  3387. if(errn == 0) {
  3388. /* encode string as string table miss (+2 len)*/
  3389. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->MimeType.charactersLen + 2));
  3390. if (errn == 0) {
  3391. errn = encodeCharacters(stream, iso1ObjectType->MimeType.characters, iso1ObjectType->MimeType.charactersLen);
  3392. }
  3393. }
  3394. grammarID = 115;
  3395. } else if (1==0) {
  3396. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3397. grammarID = 116;
  3398. } else if ( iso1ObjectType->ANY_isUsed == 0u || wcDone ) {
  3399. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  3400. if(errn == 0) {
  3401. done = 1;
  3402. }
  3403. grammarID = 4;
  3404. } else if ( iso1ObjectType->ANY_isUsed == 1u ) {
  3405. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  3406. if(errn == 0) {
  3407. /* encode string as string table miss (+2 len)*/
  3408. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->ANY.charactersLen + 2));
  3409. if (errn == 0) {
  3410. errn = encodeCharacters(stream, iso1ObjectType->ANY.characters, iso1ObjectType->ANY.charactersLen);
  3411. }
  3412. }
  3413. wcDone = 1;
  3414. grammarID = 116;
  3415. } else {
  3416. errn = EXI_ERROR_UNKOWN_EVENT;
  3417. }
  3418. break;
  3419. case 115:
  3420. /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  3421. if (1==0) {
  3422. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3423. grammarID = 116;
  3424. } else if ( iso1ObjectType->ANY_isUsed == 0u || wcDone ) {
  3425. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3426. if(errn == 0) {
  3427. done = 1;
  3428. }
  3429. grammarID = 4;
  3430. } else if ( iso1ObjectType->ANY_isUsed == 1u ) {
  3431. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  3432. if(errn == 0) {
  3433. /* encode string as string table miss (+2 len)*/
  3434. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->ANY.charactersLen + 2));
  3435. if (errn == 0) {
  3436. errn = encodeCharacters(stream, iso1ObjectType->ANY.characters, iso1ObjectType->ANY.charactersLen);
  3437. }
  3438. }
  3439. wcDone = 1;
  3440. grammarID = 116;
  3441. } else {
  3442. errn = EXI_ERROR_UNKOWN_EVENT;
  3443. }
  3444. break;
  3445. case 116:
  3446. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  3447. if (1==0) {
  3448. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3449. grammarID = 116;
  3450. } else if ( iso1ObjectType->ANY_isUsed == 0u || wcDone ) {
  3451. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3452. if(errn == 0) {
  3453. done = 1;
  3454. }
  3455. grammarID = 4;
  3456. } else if ( iso1ObjectType->ANY_isUsed == 1u ) {
  3457. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  3458. if(errn == 0) {
  3459. /* encode string as string table miss (+2 len)*/
  3460. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ObjectType->ANY.charactersLen + 2));
  3461. if (errn == 0) {
  3462. errn = encodeCharacters(stream, iso1ObjectType->ANY.characters, iso1ObjectType->ANY.charactersLen);
  3463. }
  3464. }
  3465. wcDone = 1;
  3466. grammarID = 116;
  3467. } else {
  3468. errn = EXI_ERROR_UNKOWN_EVENT;
  3469. }
  3470. break;
  3471. default:
  3472. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3473. break;
  3474. }
  3475. if(errn) {
  3476. done = 1;
  3477. }
  3478. }
  3479. return errn;
  3480. }
  3481. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */
  3482. static int encode_iso1PhysicalValueType(bitstream_t* stream, struct iso1PhysicalValueType* iso1PhysicalValueType) {
  3483. int grammarID = 117;
  3484. int done = 0;
  3485. while(!done) {
  3486. switch(grammarID) {
  3487. case 117:
  3488. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */
  3489. if ( 1 == 1 ) {
  3490. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3491. if(errn == 0) {
  3492. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  3493. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3494. if(errn == 0) {
  3495. errn = encodeNBitUnsignedInteger(stream, 3, (uint32_t)(iso1PhysicalValueType->Multiplier + 3));
  3496. /* valid EE */
  3497. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3498. }
  3499. }
  3500. grammarID = 118;
  3501. } else {
  3502. errn = EXI_ERROR_UNKOWN_EVENT;
  3503. }
  3504. break;
  3505. case 118:
  3506. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */
  3507. if ( 1 == 1 ) {
  3508. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3509. if(errn == 0) {
  3510. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3511. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3512. if(errn == 0) {
  3513. errn = encodeNBitUnsignedInteger(stream, 3, iso1PhysicalValueType->Unit);
  3514. /* valid EE */
  3515. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3516. }
  3517. }
  3518. grammarID = 119;
  3519. } else {
  3520. errn = EXI_ERROR_UNKOWN_EVENT;
  3521. }
  3522. break;
  3523. case 119:
  3524. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */
  3525. if ( 1 == 1 ) {
  3526. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3527. if(errn == 0) {
  3528. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  3529. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3530. if(errn == 0) {
  3531. errn = encodeInteger16(stream, iso1PhysicalValueType->Value);
  3532. /* valid EE */
  3533. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3534. }
  3535. }
  3536. grammarID = 3;
  3537. } else {
  3538. errn = EXI_ERROR_UNKOWN_EVENT;
  3539. }
  3540. break;
  3541. case 3:
  3542. /* Element[END_ELEMENT] */
  3543. if (1==1) {
  3544. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3545. if(errn == 0) {
  3546. done = 1;
  3547. }
  3548. grammarID = 4;
  3549. } else {
  3550. errn = EXI_ERROR_UNKOWN_EVENT;
  3551. }
  3552. break;
  3553. default:
  3554. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3555. break;
  3556. }
  3557. if(errn) {
  3558. done = 1;
  3559. }
  3560. }
  3561. return errn;
  3562. }
  3563. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)', derivedBy='RESTRICTION'. */
  3564. static int encode_iso1RSAKeyValueType(bitstream_t* stream, struct iso1RSAKeyValueType* iso1RSAKeyValueType) {
  3565. int grammarID = 120;
  3566. int done = 0;
  3567. while(!done) {
  3568. switch(grammarID) {
  3569. case 120:
  3570. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */
  3571. if ( 1 == 1 ) {
  3572. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3573. if(errn == 0) {
  3574. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  3575. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3576. if(errn == 0) {
  3577. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1RSAKeyValueType->Modulus.bytesLen));
  3578. if (errn == 0) {
  3579. errn = encodeBytes(stream, iso1RSAKeyValueType->Modulus.bytes, iso1RSAKeyValueType->Modulus.bytesLen);
  3580. }
  3581. /* valid EE */
  3582. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3583. }
  3584. }
  3585. grammarID = 121;
  3586. } else {
  3587. errn = EXI_ERROR_UNKOWN_EVENT;
  3588. }
  3589. break;
  3590. case 121:
  3591. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */
  3592. if ( 1 == 1 ) {
  3593. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3594. if(errn == 0) {
  3595. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  3596. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3597. if(errn == 0) {
  3598. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1RSAKeyValueType->Exponent.bytesLen));
  3599. if (errn == 0) {
  3600. errn = encodeBytes(stream, iso1RSAKeyValueType->Exponent.bytes, iso1RSAKeyValueType->Exponent.bytesLen);
  3601. }
  3602. /* valid EE */
  3603. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3604. }
  3605. }
  3606. grammarID = 3;
  3607. } else {
  3608. errn = EXI_ERROR_UNKOWN_EVENT;
  3609. }
  3610. break;
  3611. case 3:
  3612. /* Element[END_ELEMENT] */
  3613. if (1==1) {
  3614. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3615. if(errn == 0) {
  3616. done = 1;
  3617. }
  3618. grammarID = 4;
  3619. } else {
  3620. errn = EXI_ERROR_UNKOWN_EVENT;
  3621. }
  3622. break;
  3623. default:
  3624. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3625. break;
  3626. }
  3627. if(errn) {
  3628. done = 1;
  3629. }
  3630. }
  3631. return errn;
  3632. }
  3633. /* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */
  3634. static int encode_iso1SessionStopResType(bitstream_t* stream, struct iso1SessionStopResType* iso1SessionStopResType) {
  3635. int grammarID = 122;
  3636. int done = 0;
  3637. while(!done) {
  3638. switch(grammarID) {
  3639. case 122:
  3640. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  3641. if ( 1 == 1 ) {
  3642. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3643. if(errn == 0) {
  3644. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3645. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3646. if(errn == 0) {
  3647. errn = encodeNBitUnsignedInteger(stream, 5, iso1SessionStopResType->ResponseCode);
  3648. /* valid EE */
  3649. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3650. }
  3651. }
  3652. grammarID = 3;
  3653. } else {
  3654. errn = EXI_ERROR_UNKOWN_EVENT;
  3655. }
  3656. break;
  3657. case 3:
  3658. /* Element[END_ELEMENT] */
  3659. if (1==1) {
  3660. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3661. if(errn == 0) {
  3662. done = 1;
  3663. }
  3664. grammarID = 4;
  3665. } else {
  3666. errn = EXI_ERROR_UNKOWN_EVENT;
  3667. }
  3668. break;
  3669. default:
  3670. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3671. break;
  3672. }
  3673. if(errn) {
  3674. done = 1;
  3675. }
  3676. }
  3677. return errn;
  3678. }
  3679. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */
  3680. static int encode_iso1CertificateUpdateReqType(bitstream_t* stream, struct iso1CertificateUpdateReqType* iso1CertificateUpdateReqType) {
  3681. int grammarID = 123;
  3682. int done = 0;
  3683. while(!done) {
  3684. switch(grammarID) {
  3685. case 123:
  3686. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */
  3687. if (1==1) {
  3688. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3689. if(errn == 0) {
  3690. /* encode string as string table miss (+2 len)*/
  3691. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateUpdateReqType->Id.charactersLen + 2));
  3692. if (errn == 0) {
  3693. errn = encodeCharacters(stream, iso1CertificateUpdateReqType->Id.characters, iso1CertificateUpdateReqType->Id.charactersLen);
  3694. }
  3695. }
  3696. grammarID = 124;
  3697. } else {
  3698. errn = EXI_ERROR_UNKOWN_EVENT;
  3699. }
  3700. break;
  3701. case 124:
  3702. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  3703. if ( 1 == 1 ) {
  3704. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3705. if(errn == 0) {
  3706. errn = encode_iso1CertificateChainType(stream, &iso1CertificateUpdateReqType->ContractSignatureCertChain );
  3707. }
  3708. grammarID = 125;
  3709. } else {
  3710. errn = EXI_ERROR_UNKOWN_EVENT;
  3711. }
  3712. break;
  3713. case 125:
  3714. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  3715. if ( 1 == 1 ) {
  3716. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3717. if(errn == 0) {
  3718. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  3719. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3720. if(errn == 0) {
  3721. /* encode string as string table miss (+2 len)*/
  3722. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CertificateUpdateReqType->eMAID.charactersLen + 2));
  3723. if (errn == 0) {
  3724. errn = encodeCharacters(stream, iso1CertificateUpdateReqType->eMAID.characters, iso1CertificateUpdateReqType->eMAID.charactersLen);
  3725. }
  3726. /* valid EE */
  3727. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3728. }
  3729. }
  3730. grammarID = 18;
  3731. } else {
  3732. errn = EXI_ERROR_UNKOWN_EVENT;
  3733. }
  3734. break;
  3735. case 18:
  3736. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */
  3737. if ( 1 == 1 ) {
  3738. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3739. if(errn == 0) {
  3740. errn = encode_iso1ListOfRootCertificateIDsType(stream, &iso1CertificateUpdateReqType->ListOfRootCertificateIDs );
  3741. }
  3742. grammarID = 3;
  3743. } else {
  3744. errn = EXI_ERROR_UNKOWN_EVENT;
  3745. }
  3746. break;
  3747. case 3:
  3748. /* Element[END_ELEMENT] */
  3749. if (1==1) {
  3750. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3751. if(errn == 0) {
  3752. done = 1;
  3753. }
  3754. grammarID = 4;
  3755. } else {
  3756. errn = EXI_ERROR_UNKOWN_EVENT;
  3757. }
  3758. break;
  3759. default:
  3760. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3761. break;
  3762. }
  3763. if(errn) {
  3764. done = 1;
  3765. }
  3766. }
  3767. return errn;
  3768. }
  3769. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType', base type name='base64Binary', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */
  3770. static int encode_iso1SignatureValueType(bitstream_t* stream, struct iso1SignatureValueType* iso1SignatureValueType) {
  3771. int grammarID = 126;
  3772. int done = 0;
  3773. while(!done) {
  3774. switch(grammarID) {
  3775. case 126:
  3776. /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */
  3777. if ( iso1SignatureValueType->Id_isUsed == 1u ) {
  3778. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  3779. if(errn == 0) {
  3780. /* encode string as string table miss (+2 len)*/
  3781. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureValueType->Id.charactersLen + 2));
  3782. if (errn == 0) {
  3783. errn = encodeCharacters(stream, iso1SignatureValueType->Id.characters, iso1SignatureValueType->Id.charactersLen);
  3784. }
  3785. }
  3786. grammarID = 24;
  3787. } else if (1==1) {
  3788. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  3789. if(errn == 0) {
  3790. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureValueType->CONTENT.bytesLen));
  3791. if (errn == 0) {
  3792. errn = encodeBytes(stream, iso1SignatureValueType->CONTENT.bytes, iso1SignatureValueType->CONTENT.bytesLen);
  3793. }
  3794. }
  3795. grammarID = 3;
  3796. } else {
  3797. errn = EXI_ERROR_UNKOWN_EVENT;
  3798. }
  3799. break;
  3800. case 24:
  3801. /* StartTag[CHARACTERS[BINARY_BASE64]] */
  3802. if (1==1) {
  3803. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3804. if(errn == 0) {
  3805. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureValueType->CONTENT.bytesLen));
  3806. if (errn == 0) {
  3807. errn = encodeBytes(stream, iso1SignatureValueType->CONTENT.bytes, iso1SignatureValueType->CONTENT.bytesLen);
  3808. }
  3809. }
  3810. grammarID = 3;
  3811. } else {
  3812. errn = EXI_ERROR_UNKOWN_EVENT;
  3813. }
  3814. break;
  3815. case 3:
  3816. /* Element[END_ELEMENT] */
  3817. if (1==1) {
  3818. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3819. if(errn == 0) {
  3820. done = 1;
  3821. }
  3822. grammarID = 4;
  3823. } else {
  3824. errn = EXI_ERROR_UNKOWN_EVENT;
  3825. }
  3826. break;
  3827. default:
  3828. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3829. break;
  3830. }
  3831. if(errn) {
  3832. done = 1;
  3833. }
  3834. }
  3835. return errn;
  3836. }
  3837. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain)', derivedBy='EXTENSION'. */
  3838. static int encode_iso1PaymentDetailsReqType(bitstream_t* stream, struct iso1PaymentDetailsReqType* iso1PaymentDetailsReqType) {
  3839. int grammarID = 127;
  3840. int done = 0;
  3841. while(!done) {
  3842. switch(grammarID) {
  3843. case 127:
  3844. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  3845. if ( 1 == 1 ) {
  3846. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3847. if(errn == 0) {
  3848. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  3849. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3850. if(errn == 0) {
  3851. /* encode string as string table miss (+2 len)*/
  3852. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1PaymentDetailsReqType->eMAID.charactersLen + 2));
  3853. if (errn == 0) {
  3854. errn = encodeCharacters(stream, iso1PaymentDetailsReqType->eMAID.characters, iso1PaymentDetailsReqType->eMAID.charactersLen);
  3855. }
  3856. /* valid EE */
  3857. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3858. }
  3859. }
  3860. grammarID = 128;
  3861. } else {
  3862. errn = EXI_ERROR_UNKOWN_EVENT;
  3863. }
  3864. break;
  3865. case 128:
  3866. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  3867. if ( 1 == 1 ) {
  3868. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3869. if(errn == 0) {
  3870. errn = encode_iso1CertificateChainType(stream, &iso1PaymentDetailsReqType->ContractSignatureCertChain );
  3871. }
  3872. grammarID = 3;
  3873. } else {
  3874. errn = EXI_ERROR_UNKOWN_EVENT;
  3875. }
  3876. break;
  3877. case 3:
  3878. /* Element[END_ELEMENT] */
  3879. if (1==1) {
  3880. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3881. if(errn == 0) {
  3882. done = 1;
  3883. }
  3884. grammarID = 4;
  3885. } else {
  3886. errn = EXI_ERROR_UNKOWN_EVENT;
  3887. }
  3888. break;
  3889. default:
  3890. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3891. break;
  3892. }
  3893. if(errn) {
  3894. done = 1;
  3895. }
  3896. }
  3897. return errn;
  3898. }
  3899. /* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */
  3900. static int encode_iso1AuthorizationResType(bitstream_t* stream, struct iso1AuthorizationResType* iso1AuthorizationResType) {
  3901. int grammarID = 129;
  3902. int done = 0;
  3903. while(!done) {
  3904. switch(grammarID) {
  3905. case 129:
  3906. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  3907. if ( 1 == 1 ) {
  3908. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3909. if(errn == 0) {
  3910. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3911. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3912. if(errn == 0) {
  3913. errn = encodeNBitUnsignedInteger(stream, 5, iso1AuthorizationResType->ResponseCode);
  3914. /* valid EE */
  3915. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3916. }
  3917. }
  3918. grammarID = 130;
  3919. } else {
  3920. errn = EXI_ERROR_UNKOWN_EVENT;
  3921. }
  3922. break;
  3923. case 130:
  3924. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */
  3925. if ( 1 == 1 ) {
  3926. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3927. if(errn == 0) {
  3928. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3929. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3930. if(errn == 0) {
  3931. errn = encodeNBitUnsignedInteger(stream, 2, iso1AuthorizationResType->EVSEProcessing);
  3932. /* valid EE */
  3933. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3934. }
  3935. }
  3936. grammarID = 3;
  3937. } else {
  3938. errn = EXI_ERROR_UNKOWN_EVENT;
  3939. }
  3940. break;
  3941. case 3:
  3942. /* Element[END_ELEMENT] */
  3943. if (1==1) {
  3944. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3945. if(errn == 0) {
  3946. done = 1;
  3947. }
  3948. grammarID = 4;
  3949. } else {
  3950. errn = EXI_ERROR_UNKOWN_EVENT;
  3951. }
  3952. break;
  3953. default:
  3954. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3955. break;
  3956. }
  3957. if(errn) {
  3958. done = 1;
  3959. }
  3960. }
  3961. return errn;
  3962. }
  3963. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumPowerLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2013:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})', derivedBy='EXTENSION'. */
  3964. static int encode_iso1DC_EVSEChargeParameterType(bitstream_t* stream, struct iso1DC_EVSEChargeParameterType* iso1DC_EVSEChargeParameterType) {
  3965. int grammarID = 131;
  3966. int done = 0;
  3967. while(!done) {
  3968. switch(grammarID) {
  3969. case 131:
  3970. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */
  3971. if ( 1 == 1 ) {
  3972. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3973. if(errn == 0) {
  3974. errn = encode_iso1DC_EVSEStatusType(stream, &iso1DC_EVSEChargeParameterType->DC_EVSEStatus );
  3975. }
  3976. grammarID = 132;
  3977. } else {
  3978. errn = EXI_ERROR_UNKOWN_EVENT;
  3979. }
  3980. break;
  3981. case 132:
  3982. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */
  3983. if ( 1 == 1 ) {
  3984. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3985. if(errn == 0) {
  3986. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMaximumCurrentLimit );
  3987. }
  3988. grammarID = 133;
  3989. } else {
  3990. errn = EXI_ERROR_UNKOWN_EVENT;
  3991. }
  3992. break;
  3993. case 133:
  3994. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */
  3995. if ( 1 == 1 ) {
  3996. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  3997. if(errn == 0) {
  3998. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMaximumPowerLimit );
  3999. }
  4000. grammarID = 134;
  4001. } else {
  4002. errn = EXI_ERROR_UNKOWN_EVENT;
  4003. }
  4004. break;
  4005. case 134:
  4006. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */
  4007. if ( 1 == 1 ) {
  4008. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4009. if(errn == 0) {
  4010. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMaximumVoltageLimit );
  4011. }
  4012. grammarID = 135;
  4013. } else {
  4014. errn = EXI_ERROR_UNKOWN_EVENT;
  4015. }
  4016. break;
  4017. case 135:
  4018. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */
  4019. if ( 1 == 1 ) {
  4020. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4021. if(errn == 0) {
  4022. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMinimumCurrentLimit );
  4023. }
  4024. grammarID = 136;
  4025. } else {
  4026. errn = EXI_ERROR_UNKOWN_EVENT;
  4027. }
  4028. break;
  4029. case 136:
  4030. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */
  4031. if ( 1 == 1 ) {
  4032. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4033. if(errn == 0) {
  4034. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMinimumVoltageLimit );
  4035. }
  4036. grammarID = 137;
  4037. } else {
  4038. errn = EXI_ERROR_UNKOWN_EVENT;
  4039. }
  4040. break;
  4041. case 137:
  4042. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */
  4043. if ( iso1DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed == 1u ) {
  4044. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4045. if(errn == 0) {
  4046. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance );
  4047. }
  4048. grammarID = 138;
  4049. } else if ( 1 == 1 ) {
  4050. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4051. if(errn == 0) {
  4052. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEPeakCurrentRipple );
  4053. }
  4054. grammarID = 139;
  4055. } else {
  4056. errn = EXI_ERROR_UNKOWN_EVENT;
  4057. }
  4058. break;
  4059. case 138:
  4060. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */
  4061. if ( 1 == 1 ) {
  4062. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4063. if(errn == 0) {
  4064. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEPeakCurrentRipple );
  4065. }
  4066. grammarID = 139;
  4067. } else {
  4068. errn = EXI_ERROR_UNKOWN_EVENT;
  4069. }
  4070. break;
  4071. case 139:
  4072. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */
  4073. if ( iso1DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed == 1u ) {
  4074. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4075. if(errn == 0) {
  4076. errn = encode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered );
  4077. }
  4078. grammarID = 3;
  4079. } else if (1==1) {
  4080. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4081. if(errn == 0) {
  4082. done = 1;
  4083. }
  4084. grammarID = 4;
  4085. } else {
  4086. errn = EXI_ERROR_UNKOWN_EVENT;
  4087. }
  4088. break;
  4089. case 3:
  4090. /* Element[END_ELEMENT] */
  4091. if (1==1) {
  4092. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4093. if(errn == 0) {
  4094. done = 1;
  4095. }
  4096. grammarID = 4;
  4097. } else {
  4098. errn = EXI_ERROR_UNKOWN_EVENT;
  4099. }
  4100. break;
  4101. default:
  4102. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4103. break;
  4104. }
  4105. if(errn) {
  4106. done = 1;
  4107. }
  4108. }
  4109. return errn;
  4110. }
  4111. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SubCertificatesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate{1-4})', derivedBy='RESTRICTION'. */
  4112. static int encode_iso1SubCertificatesType(bitstream_t* stream, struct iso1SubCertificatesType* iso1SubCertificatesType) {
  4113. int grammarID = 140;
  4114. int done = 0;
  4115. unsigned int iso1SubCertificatesType_Certificate_currArrayIndex = 0;
  4116. while(!done) {
  4117. switch(grammarID) {
  4118. case 140:
  4119. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */
  4120. if (iso1SubCertificatesType_Certificate_currArrayIndex < iso1SubCertificatesType->Certificate.arrayLen ) {
  4121. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4122. if(errn == 0) {
  4123. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4124. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4125. if(errn == 0) {
  4126. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen));
  4127. if (errn == 0) {
  4128. errn = encodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytes, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen);
  4129. iso1SubCertificatesType_Certificate_currArrayIndex++;
  4130. }
  4131. /* valid EE */
  4132. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4133. }
  4134. }
  4135. grammarID = 141;
  4136. } else {
  4137. errn = EXI_ERROR_UNKOWN_EVENT;
  4138. }
  4139. break;
  4140. case 141:
  4141. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */
  4142. if (iso1SubCertificatesType_Certificate_currArrayIndex < iso1SubCertificatesType->Certificate.arrayLen ) {
  4143. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4144. if(errn == 0) {
  4145. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4146. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4147. if(errn == 0) {
  4148. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen));
  4149. if (errn == 0) {
  4150. errn = encodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytes, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen);
  4151. iso1SubCertificatesType_Certificate_currArrayIndex++;
  4152. }
  4153. /* valid EE */
  4154. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4155. }
  4156. }
  4157. grammarID = 142;
  4158. } else if (1==1) {
  4159. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4160. if(errn == 0) {
  4161. done = 1;
  4162. }
  4163. grammarID = 4;
  4164. } else {
  4165. errn = EXI_ERROR_UNKOWN_EVENT;
  4166. }
  4167. break;
  4168. case 142:
  4169. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */
  4170. if (iso1SubCertificatesType_Certificate_currArrayIndex < iso1SubCertificatesType->Certificate.arrayLen ) {
  4171. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4172. if(errn == 0) {
  4173. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4174. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4175. if(errn == 0) {
  4176. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen));
  4177. if (errn == 0) {
  4178. errn = encodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytes, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen);
  4179. iso1SubCertificatesType_Certificate_currArrayIndex++;
  4180. }
  4181. /* valid EE */
  4182. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4183. }
  4184. }
  4185. grammarID = 143;
  4186. } else if (1==1) {
  4187. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4188. if(errn == 0) {
  4189. done = 1;
  4190. }
  4191. grammarID = 4;
  4192. } else {
  4193. errn = EXI_ERROR_UNKOWN_EVENT;
  4194. }
  4195. break;
  4196. case 143:
  4197. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */
  4198. if (iso1SubCertificatesType_Certificate_currArrayIndex < iso1SubCertificatesType->Certificate.arrayLen ) {
  4199. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4200. if(errn == 0) {
  4201. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4202. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4203. if(errn == 0) {
  4204. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen));
  4205. if (errn == 0) {
  4206. errn = encodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytes, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType_Certificate_currArrayIndex].bytesLen);
  4207. iso1SubCertificatesType_Certificate_currArrayIndex++;
  4208. }
  4209. /* valid EE */
  4210. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4211. }
  4212. }
  4213. grammarID = 3;
  4214. } else if (1==1) {
  4215. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4216. if(errn == 0) {
  4217. done = 1;
  4218. }
  4219. grammarID = 4;
  4220. } else {
  4221. errn = EXI_ERROR_UNKOWN_EVENT;
  4222. }
  4223. break;
  4224. case 3:
  4225. /* Element[END_ELEMENT] */
  4226. if (1==1) {
  4227. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4228. if(errn == 0) {
  4229. done = 1;
  4230. }
  4231. grammarID = 4;
  4232. } else {
  4233. errn = EXI_ERROR_UNKOWN_EVENT;
  4234. }
  4235. break;
  4236. default:
  4237. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4238. break;
  4239. }
  4240. if(errn) {
  4241. done = 1;
  4242. }
  4243. }
  4244. return errn;
  4245. }
  4246. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2013:MsgBody":AC_EVSEStatus)', derivedBy='EXTENSION'. */
  4247. static int encode_iso1ChargingStatusResType(bitstream_t* stream, struct iso1ChargingStatusResType* iso1ChargingStatusResType) {
  4248. int grammarID = 144;
  4249. int done = 0;
  4250. while(!done) {
  4251. switch(grammarID) {
  4252. case 144:
  4253. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  4254. if ( 1 == 1 ) {
  4255. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4256. if(errn == 0) {
  4257. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4258. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4259. if(errn == 0) {
  4260. errn = encodeNBitUnsignedInteger(stream, 5, iso1ChargingStatusResType->ResponseCode);
  4261. /* valid EE */
  4262. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4263. }
  4264. }
  4265. grammarID = 145;
  4266. } else {
  4267. errn = EXI_ERROR_UNKOWN_EVENT;
  4268. }
  4269. break;
  4270. case 145:
  4271. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  4272. if ( 1 == 1 ) {
  4273. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4274. if(errn == 0) {
  4275. /* FirstStartTag[CHARACTERS[STRING]] */
  4276. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4277. if(errn == 0) {
  4278. /* encode string as string table miss (+2 len)*/
  4279. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ChargingStatusResType->EVSEID.charactersLen + 2));
  4280. if (errn == 0) {
  4281. errn = encodeCharacters(stream, iso1ChargingStatusResType->EVSEID.characters, iso1ChargingStatusResType->EVSEID.charactersLen);
  4282. }
  4283. /* valid EE */
  4284. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4285. }
  4286. }
  4287. grammarID = 146;
  4288. } else {
  4289. errn = EXI_ERROR_UNKOWN_EVENT;
  4290. }
  4291. break;
  4292. case 146:
  4293. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */
  4294. if ( 1 == 1 ) {
  4295. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4296. if(errn == 0) {
  4297. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4298. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4299. if(errn == 0) {
  4300. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1ChargingStatusResType->SAScheduleTupleID - 1));
  4301. /* valid EE */
  4302. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4303. }
  4304. }
  4305. grammarID = 147;
  4306. } else {
  4307. errn = EXI_ERROR_UNKOWN_EVENT;
  4308. }
  4309. break;
  4310. case 147:
  4311. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */
  4312. if ( iso1ChargingStatusResType->EVSEMaxCurrent_isUsed == 1u ) {
  4313. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  4314. if(errn == 0) {
  4315. errn = encode_iso1PhysicalValueType(stream, &iso1ChargingStatusResType->EVSEMaxCurrent );
  4316. }
  4317. grammarID = 148;
  4318. } else if ( iso1ChargingStatusResType->MeterInfo_isUsed == 1u ) {
  4319. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  4320. if(errn == 0) {
  4321. errn = encode_iso1MeterInfoType(stream, &iso1ChargingStatusResType->MeterInfo );
  4322. }
  4323. grammarID = 149;
  4324. } else if ( iso1ChargingStatusResType->ReceiptRequired_isUsed == 1u ) {
  4325. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  4326. if(errn == 0) {
  4327. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  4328. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4329. if(errn == 0) {
  4330. errn = encodeBoolean(stream, iso1ChargingStatusResType->ReceiptRequired);
  4331. /* valid EE */
  4332. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4333. }
  4334. }
  4335. grammarID = 150;
  4336. } else if ( 1 == 1 ) {
  4337. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  4338. if(errn == 0) {
  4339. errn = encode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus );
  4340. }
  4341. grammarID = 3;
  4342. } else {
  4343. errn = EXI_ERROR_UNKOWN_EVENT;
  4344. }
  4345. break;
  4346. case 148:
  4347. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */
  4348. if ( iso1ChargingStatusResType->MeterInfo_isUsed == 1u ) {
  4349. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4350. if(errn == 0) {
  4351. errn = encode_iso1MeterInfoType(stream, &iso1ChargingStatusResType->MeterInfo );
  4352. }
  4353. grammarID = 149;
  4354. } else if ( iso1ChargingStatusResType->ReceiptRequired_isUsed == 1u ) {
  4355. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4356. if(errn == 0) {
  4357. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  4358. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4359. if(errn == 0) {
  4360. errn = encodeBoolean(stream, iso1ChargingStatusResType->ReceiptRequired);
  4361. /* valid EE */
  4362. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4363. }
  4364. }
  4365. grammarID = 150;
  4366. } else if ( 1 == 1 ) {
  4367. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  4368. if(errn == 0) {
  4369. errn = encode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus );
  4370. }
  4371. grammarID = 3;
  4372. } else {
  4373. errn = EXI_ERROR_UNKOWN_EVENT;
  4374. }
  4375. break;
  4376. case 149:
  4377. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */
  4378. if ( iso1ChargingStatusResType->ReceiptRequired_isUsed == 1u ) {
  4379. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4380. if(errn == 0) {
  4381. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  4382. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4383. if(errn == 0) {
  4384. errn = encodeBoolean(stream, iso1ChargingStatusResType->ReceiptRequired);
  4385. /* valid EE */
  4386. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4387. }
  4388. }
  4389. grammarID = 150;
  4390. } else if ( 1 == 1 ) {
  4391. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4392. if(errn == 0) {
  4393. errn = encode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus );
  4394. }
  4395. grammarID = 3;
  4396. } else {
  4397. errn = EXI_ERROR_UNKOWN_EVENT;
  4398. }
  4399. break;
  4400. case 150:
  4401. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */
  4402. if ( 1 == 1 ) {
  4403. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4404. if(errn == 0) {
  4405. errn = encode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus );
  4406. }
  4407. grammarID = 3;
  4408. } else {
  4409. errn = EXI_ERROR_UNKOWN_EVENT;
  4410. }
  4411. break;
  4412. case 3:
  4413. /* Element[END_ELEMENT] */
  4414. if (1==1) {
  4415. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4416. if(errn == 0) {
  4417. done = 1;
  4418. }
  4419. grammarID = 4;
  4420. } else {
  4421. errn = EXI_ERROR_UNKOWN_EVENT;
  4422. }
  4423. break;
  4424. default:
  4425. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4426. break;
  4427. }
  4428. if(errn) {
  4429. done = 1;
  4430. }
  4431. }
  4432. return errn;
  4433. }
  4434. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})', derivedBy='RESTRICTION'. */
  4435. static int encode_iso1DSAKeyValueType(bitstream_t* stream, struct iso1DSAKeyValueType* iso1DSAKeyValueType) {
  4436. int grammarID = 151;
  4437. int done = 0;
  4438. while(!done) {
  4439. switch(grammarID) {
  4440. case 151:
  4441. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
  4442. if ( iso1DSAKeyValueType->P_isUsed == 1u ) {
  4443. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4444. if(errn == 0) {
  4445. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4446. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4447. if(errn == 0) {
  4448. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->P.bytesLen));
  4449. if (errn == 0) {
  4450. errn = encodeBytes(stream, iso1DSAKeyValueType->P.bytes, iso1DSAKeyValueType->P.bytesLen);
  4451. }
  4452. /* valid EE */
  4453. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4454. }
  4455. }
  4456. grammarID = 152;
  4457. } else if ( iso1DSAKeyValueType->G_isUsed == 1u ) {
  4458. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4459. if(errn == 0) {
  4460. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4461. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4462. if(errn == 0) {
  4463. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->G.bytesLen));
  4464. if (errn == 0) {
  4465. errn = encodeBytes(stream, iso1DSAKeyValueType->G.bytes, iso1DSAKeyValueType->G.bytesLen);
  4466. }
  4467. /* valid EE */
  4468. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4469. }
  4470. }
  4471. grammarID = 153;
  4472. } else if ( 1 == 1 ) {
  4473. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  4474. if(errn == 0) {
  4475. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4476. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4477. if(errn == 0) {
  4478. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->Y.bytesLen));
  4479. if (errn == 0) {
  4480. errn = encodeBytes(stream, iso1DSAKeyValueType->Y.bytes, iso1DSAKeyValueType->Y.bytesLen);
  4481. }
  4482. /* valid EE */
  4483. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4484. }
  4485. }
  4486. grammarID = 154;
  4487. } else {
  4488. errn = EXI_ERROR_UNKOWN_EVENT;
  4489. }
  4490. break;
  4491. case 152:
  4492. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */
  4493. if ( iso1DSAKeyValueType->Q_isUsed == 1u ) {
  4494. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4495. if(errn == 0) {
  4496. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4497. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4498. if(errn == 0) {
  4499. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->Q.bytesLen));
  4500. if (errn == 0) {
  4501. errn = encodeBytes(stream, iso1DSAKeyValueType->Q.bytes, iso1DSAKeyValueType->Q.bytesLen);
  4502. }
  4503. /* valid EE */
  4504. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4505. }
  4506. }
  4507. grammarID = 155;
  4508. } else {
  4509. errn = EXI_ERROR_UNKOWN_EVENT;
  4510. }
  4511. break;
  4512. case 155:
  4513. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
  4514. if ( iso1DSAKeyValueType->G_isUsed == 1u ) {
  4515. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4516. if(errn == 0) {
  4517. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4518. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4519. if(errn == 0) {
  4520. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->G.bytesLen));
  4521. if (errn == 0) {
  4522. errn = encodeBytes(stream, iso1DSAKeyValueType->G.bytes, iso1DSAKeyValueType->G.bytesLen);
  4523. }
  4524. /* valid EE */
  4525. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4526. }
  4527. }
  4528. grammarID = 153;
  4529. } else if ( 1 == 1 ) {
  4530. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4531. if(errn == 0) {
  4532. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4533. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4534. if(errn == 0) {
  4535. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->Y.bytesLen));
  4536. if (errn == 0) {
  4537. errn = encodeBytes(stream, iso1DSAKeyValueType->Y.bytes, iso1DSAKeyValueType->Y.bytesLen);
  4538. }
  4539. /* valid EE */
  4540. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4541. }
  4542. }
  4543. grammarID = 154;
  4544. } else {
  4545. errn = EXI_ERROR_UNKOWN_EVENT;
  4546. }
  4547. break;
  4548. case 153:
  4549. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
  4550. if ( 1 == 1 ) {
  4551. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4552. if(errn == 0) {
  4553. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4554. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4555. if(errn == 0) {
  4556. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->Y.bytesLen));
  4557. if (errn == 0) {
  4558. errn = encodeBytes(stream, iso1DSAKeyValueType->Y.bytes, iso1DSAKeyValueType->Y.bytesLen);
  4559. }
  4560. /* valid EE */
  4561. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4562. }
  4563. }
  4564. grammarID = 154;
  4565. } else {
  4566. errn = EXI_ERROR_UNKOWN_EVENT;
  4567. }
  4568. break;
  4569. case 154:
  4570. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */
  4571. if ( iso1DSAKeyValueType->J_isUsed == 1u ) {
  4572. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4573. if(errn == 0) {
  4574. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4575. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4576. if(errn == 0) {
  4577. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->J.bytesLen));
  4578. if (errn == 0) {
  4579. errn = encodeBytes(stream, iso1DSAKeyValueType->J.bytes, iso1DSAKeyValueType->J.bytesLen);
  4580. }
  4581. /* valid EE */
  4582. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4583. }
  4584. }
  4585. grammarID = 156;
  4586. } else if ( iso1DSAKeyValueType->Seed_isUsed == 1u ) {
  4587. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4588. if(errn == 0) {
  4589. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4590. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4591. if(errn == 0) {
  4592. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->Seed.bytesLen));
  4593. if (errn == 0) {
  4594. errn = encodeBytes(stream, iso1DSAKeyValueType->Seed.bytes, iso1DSAKeyValueType->Seed.bytesLen);
  4595. }
  4596. /* valid EE */
  4597. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4598. }
  4599. }
  4600. grammarID = 157;
  4601. } else if (1==1) {
  4602. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  4603. if(errn == 0) {
  4604. done = 1;
  4605. }
  4606. grammarID = 4;
  4607. } else {
  4608. errn = EXI_ERROR_UNKOWN_EVENT;
  4609. }
  4610. break;
  4611. case 156:
  4612. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */
  4613. if ( iso1DSAKeyValueType->Seed_isUsed == 1u ) {
  4614. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4615. if(errn == 0) {
  4616. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4617. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4618. if(errn == 0) {
  4619. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->Seed.bytesLen));
  4620. if (errn == 0) {
  4621. errn = encodeBytes(stream, iso1DSAKeyValueType->Seed.bytes, iso1DSAKeyValueType->Seed.bytesLen);
  4622. }
  4623. /* valid EE */
  4624. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4625. }
  4626. }
  4627. grammarID = 157;
  4628. } else if (1==1) {
  4629. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4630. if(errn == 0) {
  4631. done = 1;
  4632. }
  4633. grammarID = 4;
  4634. } else {
  4635. errn = EXI_ERROR_UNKOWN_EVENT;
  4636. }
  4637. break;
  4638. case 157:
  4639. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */
  4640. if ( iso1DSAKeyValueType->PgenCounter_isUsed == 1u ) {
  4641. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4642. if(errn == 0) {
  4643. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4644. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4645. if(errn == 0) {
  4646. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DSAKeyValueType->PgenCounter.bytesLen));
  4647. if (errn == 0) {
  4648. errn = encodeBytes(stream, iso1DSAKeyValueType->PgenCounter.bytes, iso1DSAKeyValueType->PgenCounter.bytesLen);
  4649. }
  4650. /* valid EE */
  4651. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4652. }
  4653. }
  4654. grammarID = 3;
  4655. } else {
  4656. errn = EXI_ERROR_UNKOWN_EVENT;
  4657. }
  4658. break;
  4659. case 3:
  4660. /* Element[END_ELEMENT] */
  4661. if (1==1) {
  4662. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4663. if(errn == 0) {
  4664. done = 1;
  4665. }
  4666. grammarID = 4;
  4667. } else {
  4668. errn = EXI_ERROR_UNKOWN_EVENT;
  4669. }
  4670. break;
  4671. default:
  4672. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4673. break;
  4674. }
  4675. if(errn) {
  4676. done = 1;
  4677. }
  4678. }
  4679. return errn;
  4680. }
  4681. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ListOfRootCertificateIDsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  4682. static int encode_iso1ListOfRootCertificateIDsType(bitstream_t* stream, struct iso1ListOfRootCertificateIDsType* iso1ListOfRootCertificateIDsType) {
  4683. int grammarID = 158;
  4684. int done = 0;
  4685. unsigned int iso1ListOfRootCertificateIDsType_RootCertificateID_currArrayIndex = 0;
  4686. while(!done) {
  4687. switch(grammarID) {
  4688. case 158:
  4689. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */
  4690. if (iso1ListOfRootCertificateIDsType_RootCertificateID_currArrayIndex < iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen ) {
  4691. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4692. if(errn == 0) {
  4693. errn = encode_iso1X509IssuerSerialType(stream, &iso1ListOfRootCertificateIDsType->RootCertificateID.array [iso1ListOfRootCertificateIDsType_RootCertificateID_currArrayIndex++]);
  4694. }
  4695. grammarID = 159;
  4696. } else {
  4697. errn = EXI_ERROR_UNKOWN_EVENT;
  4698. }
  4699. break;
  4700. case 159:
  4701. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */
  4702. if (iso1ListOfRootCertificateIDsType_RootCertificateID_currArrayIndex < iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen ) {
  4703. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4704. if(errn == 0) {
  4705. errn = encode_iso1X509IssuerSerialType(stream, &iso1ListOfRootCertificateIDsType->RootCertificateID.array [iso1ListOfRootCertificateIDsType_RootCertificateID_currArrayIndex++]);
  4706. }
  4707. grammarID = 159;
  4708. } else if (1==1) {
  4709. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4710. if(errn == 0) {
  4711. done = 1;
  4712. }
  4713. grammarID = 4;
  4714. } else {
  4715. errn = EXI_ERROR_UNKOWN_EVENT;
  4716. }
  4717. break;
  4718. default:
  4719. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4720. break;
  4721. }
  4722. if(errn) {
  4723. done = 1;
  4724. }
  4725. }
  4726. return errn;
  4727. }
  4728. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargeServiceType', base type name='ServiceType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService),("urn:iso:15118:2:2013:MsgDataTypes":SupportedEnergyTransferMode))', derivedBy='EXTENSION'. */
  4729. static int encode_iso1ChargeServiceType(bitstream_t* stream, struct iso1ChargeServiceType* iso1ChargeServiceType) {
  4730. int grammarID = 160;
  4731. int done = 0;
  4732. while(!done) {
  4733. switch(grammarID) {
  4734. case 160:
  4735. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */
  4736. if ( 1 == 1 ) {
  4737. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4738. if(errn == 0) {
  4739. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  4740. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4741. if(errn == 0) {
  4742. errn = encodeUnsignedInteger16(stream, iso1ChargeServiceType->ServiceID);
  4743. /* valid EE */
  4744. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4745. }
  4746. }
  4747. grammarID = 161;
  4748. } else {
  4749. errn = EXI_ERROR_UNKOWN_EVENT;
  4750. }
  4751. break;
  4752. case 161:
  4753. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  4754. if ( iso1ChargeServiceType->ServiceName_isUsed == 1u ) {
  4755. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4756. if(errn == 0) {
  4757. /* FirstStartTag[CHARACTERS[STRING]] */
  4758. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4759. if(errn == 0) {
  4760. /* encode string as string table miss (+2 len)*/
  4761. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ChargeServiceType->ServiceName.charactersLen + 2));
  4762. if (errn == 0) {
  4763. errn = encodeCharacters(stream, iso1ChargeServiceType->ServiceName.characters, iso1ChargeServiceType->ServiceName.charactersLen);
  4764. }
  4765. /* valid EE */
  4766. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4767. }
  4768. }
  4769. grammarID = 162;
  4770. } else if ( 1 == 1 ) {
  4771. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4772. if(errn == 0) {
  4773. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4774. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4775. if(errn == 0) {
  4776. errn = encodeNBitUnsignedInteger(stream, 2, iso1ChargeServiceType->ServiceCategory);
  4777. /* valid EE */
  4778. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4779. }
  4780. }
  4781. grammarID = 163;
  4782. } else {
  4783. errn = EXI_ERROR_UNKOWN_EVENT;
  4784. }
  4785. break;
  4786. case 162:
  4787. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  4788. if ( 1 == 1 ) {
  4789. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4790. if(errn == 0) {
  4791. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4792. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4793. if(errn == 0) {
  4794. errn = encodeNBitUnsignedInteger(stream, 2, iso1ChargeServiceType->ServiceCategory);
  4795. /* valid EE */
  4796. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4797. }
  4798. }
  4799. grammarID = 163;
  4800. } else {
  4801. errn = EXI_ERROR_UNKOWN_EVENT;
  4802. }
  4803. break;
  4804. case 163:
  4805. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  4806. if ( iso1ChargeServiceType->ServiceScope_isUsed == 1u ) {
  4807. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4808. if(errn == 0) {
  4809. /* FirstStartTag[CHARACTERS[STRING]] */
  4810. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4811. if(errn == 0) {
  4812. /* encode string as string table miss (+2 len)*/
  4813. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ChargeServiceType->ServiceScope.charactersLen + 2));
  4814. if (errn == 0) {
  4815. errn = encodeCharacters(stream, iso1ChargeServiceType->ServiceScope.characters, iso1ChargeServiceType->ServiceScope.charactersLen);
  4816. }
  4817. /* valid EE */
  4818. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4819. }
  4820. }
  4821. grammarID = 164;
  4822. } else if ( 1 == 1 ) {
  4823. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4824. if(errn == 0) {
  4825. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  4826. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4827. if(errn == 0) {
  4828. errn = encodeBoolean(stream, iso1ChargeServiceType->FreeService);
  4829. /* valid EE */
  4830. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4831. }
  4832. }
  4833. grammarID = 165;
  4834. } else {
  4835. errn = EXI_ERROR_UNKOWN_EVENT;
  4836. }
  4837. break;
  4838. case 164:
  4839. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  4840. if ( 1 == 1 ) {
  4841. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4842. if(errn == 0) {
  4843. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  4844. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4845. if(errn == 0) {
  4846. errn = encodeBoolean(stream, iso1ChargeServiceType->FreeService);
  4847. /* valid EE */
  4848. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4849. }
  4850. }
  4851. grammarID = 165;
  4852. } else {
  4853. errn = EXI_ERROR_UNKOWN_EVENT;
  4854. }
  4855. break;
  4856. case 165:
  4857. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */
  4858. if ( 1 == 1 ) {
  4859. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4860. if(errn == 0) {
  4861. errn = encode_iso1SupportedEnergyTransferModeType(stream, &iso1ChargeServiceType->SupportedEnergyTransferMode );
  4862. }
  4863. grammarID = 3;
  4864. } else {
  4865. errn = EXI_ERROR_UNKOWN_EVENT;
  4866. }
  4867. break;
  4868. case 3:
  4869. /* Element[END_ELEMENT] */
  4870. if (1==1) {
  4871. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4872. if(errn == 0) {
  4873. done = 1;
  4874. }
  4875. grammarID = 4;
  4876. } else {
  4877. errn = EXI_ERROR_UNKOWN_EVENT;
  4878. }
  4879. break;
  4880. default:
  4881. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4882. break;
  4883. }
  4884. if(errn) {
  4885. done = 1;
  4886. }
  4887. }
  4888. return errn;
  4889. }
  4890. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */
  4891. static int encode_iso1IntervalType(bitstream_t* stream, struct iso1IntervalType* iso1IntervalType) {
  4892. int grammarID = 34;
  4893. int done = 0;
  4894. while(!done) {
  4895. switch(grammarID) {
  4896. case 34:
  4897. /* FirstStartTag[END_ELEMENT] */
  4898. if (1==1) {
  4899. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4900. if(errn == 0) {
  4901. done = 1;
  4902. }
  4903. grammarID = 4;
  4904. } else {
  4905. errn = EXI_ERROR_UNKOWN_EVENT;
  4906. }
  4907. break;
  4908. default:
  4909. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4910. break;
  4911. }
  4912. if(errn) {
  4913. done = 1;
  4914. }
  4915. }
  4916. return errn;
  4917. }
  4918. /* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SessionID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo)', derivedBy='EXTENSION'. */
  4919. static int encode_iso1MeteringReceiptReqType(bitstream_t* stream, struct iso1MeteringReceiptReqType* iso1MeteringReceiptReqType) {
  4920. int grammarID = 166;
  4921. int done = 0;
  4922. while(!done) {
  4923. switch(grammarID) {
  4924. case 166:
  4925. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */
  4926. if ( iso1MeteringReceiptReqType->Id_isUsed == 1u ) {
  4927. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4928. if(errn == 0) {
  4929. /* encode string as string table miss (+2 len)*/
  4930. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MeteringReceiptReqType->Id.charactersLen + 2));
  4931. if (errn == 0) {
  4932. errn = encodeCharacters(stream, iso1MeteringReceiptReqType->Id.characters, iso1MeteringReceiptReqType->Id.charactersLen);
  4933. }
  4934. }
  4935. grammarID = 167;
  4936. } else if ( 1 == 1 ) {
  4937. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4938. if(errn == 0) {
  4939. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  4940. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4941. if(errn == 0) {
  4942. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MeteringReceiptReqType->SessionID.bytesLen));
  4943. if (errn == 0) {
  4944. errn = encodeBytes(stream, iso1MeteringReceiptReqType->SessionID.bytes, iso1MeteringReceiptReqType->SessionID.bytesLen);
  4945. }
  4946. /* valid EE */
  4947. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4948. }
  4949. }
  4950. grammarID = 168;
  4951. } else {
  4952. errn = EXI_ERROR_UNKOWN_EVENT;
  4953. }
  4954. break;
  4955. case 167:
  4956. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */
  4957. if ( 1 == 1 ) {
  4958. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4959. if(errn == 0) {
  4960. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  4961. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4962. if(errn == 0) {
  4963. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1MeteringReceiptReqType->SessionID.bytesLen));
  4964. if (errn == 0) {
  4965. errn = encodeBytes(stream, iso1MeteringReceiptReqType->SessionID.bytes, iso1MeteringReceiptReqType->SessionID.bytesLen);
  4966. }
  4967. /* valid EE */
  4968. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4969. }
  4970. }
  4971. grammarID = 168;
  4972. } else {
  4973. errn = EXI_ERROR_UNKOWN_EVENT;
  4974. }
  4975. break;
  4976. case 168:
  4977. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */
  4978. if ( iso1MeteringReceiptReqType->SAScheduleTupleID_isUsed == 1u ) {
  4979. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  4980. if(errn == 0) {
  4981. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4982. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4983. if(errn == 0) {
  4984. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1MeteringReceiptReqType->SAScheduleTupleID - 1));
  4985. /* valid EE */
  4986. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  4987. }
  4988. }
  4989. grammarID = 169;
  4990. } else if ( 1 == 1 ) {
  4991. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  4992. if(errn == 0) {
  4993. errn = encode_iso1MeterInfoType(stream, &iso1MeteringReceiptReqType->MeterInfo );
  4994. }
  4995. grammarID = 3;
  4996. } else {
  4997. errn = EXI_ERROR_UNKOWN_EVENT;
  4998. }
  4999. break;
  5000. case 169:
  5001. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */
  5002. if ( 1 == 1 ) {
  5003. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5004. if(errn == 0) {
  5005. errn = encode_iso1MeterInfoType(stream, &iso1MeteringReceiptReqType->MeterInfo );
  5006. }
  5007. grammarID = 3;
  5008. } else {
  5009. errn = EXI_ERROR_UNKOWN_EVENT;
  5010. }
  5011. break;
  5012. case 3:
  5013. /* Element[END_ELEMENT] */
  5014. if (1==1) {
  5015. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5016. if(errn == 0) {
  5017. done = 1;
  5018. }
  5019. grammarID = 4;
  5020. } else {
  5021. errn = EXI_ERROR_UNKOWN_EVENT;
  5022. }
  5023. break;
  5024. default:
  5025. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5026. break;
  5027. }
  5028. if(errn) {
  5029. done = 1;
  5030. }
  5031. }
  5032. return errn;
  5033. }
  5034. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":ServiceID,"urn:iso:15118:2:2013:MsgBody":ServiceParameterList{0-1})', derivedBy='EXTENSION'. */
  5035. static int encode_iso1ServiceDetailResType(bitstream_t* stream, struct iso1ServiceDetailResType* iso1ServiceDetailResType) {
  5036. int grammarID = 170;
  5037. int done = 0;
  5038. while(!done) {
  5039. switch(grammarID) {
  5040. case 170:
  5041. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  5042. if ( 1 == 1 ) {
  5043. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5044. if(errn == 0) {
  5045. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  5046. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5047. if(errn == 0) {
  5048. errn = encodeNBitUnsignedInteger(stream, 5, iso1ServiceDetailResType->ResponseCode);
  5049. /* valid EE */
  5050. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5051. }
  5052. }
  5053. grammarID = 171;
  5054. } else {
  5055. errn = EXI_ERROR_UNKOWN_EVENT;
  5056. }
  5057. break;
  5058. case 171:
  5059. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */
  5060. if ( 1 == 1 ) {
  5061. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5062. if(errn == 0) {
  5063. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  5064. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5065. if(errn == 0) {
  5066. errn = encodeUnsignedInteger16(stream, iso1ServiceDetailResType->ServiceID);
  5067. /* valid EE */
  5068. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5069. }
  5070. }
  5071. grammarID = 172;
  5072. } else {
  5073. errn = EXI_ERROR_UNKOWN_EVENT;
  5074. }
  5075. break;
  5076. case 172:
  5077. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */
  5078. if ( iso1ServiceDetailResType->ServiceParameterList_isUsed == 1u ) {
  5079. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5080. if(errn == 0) {
  5081. errn = encode_iso1ServiceParameterListType(stream, &iso1ServiceDetailResType->ServiceParameterList );
  5082. }
  5083. grammarID = 3;
  5084. } else if (1==1) {
  5085. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5086. if(errn == 0) {
  5087. done = 1;
  5088. }
  5089. grammarID = 4;
  5090. } else {
  5091. errn = EXI_ERROR_UNKOWN_EVENT;
  5092. }
  5093. break;
  5094. case 3:
  5095. /* Element[END_ELEMENT] */
  5096. if (1==1) {
  5097. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5098. if(errn == 0) {
  5099. done = 1;
  5100. }
  5101. grammarID = 4;
  5102. } else {
  5103. errn = EXI_ERROR_UNKOWN_EVENT;
  5104. }
  5105. break;
  5106. default:
  5107. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5108. break;
  5109. }
  5110. if(errn) {
  5111. done = 1;
  5112. }
  5113. }
  5114. return errn;
  5115. }
  5116. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))', derivedBy='RESTRICTION'. */
  5117. static int encode_iso1KeyValueType(bitstream_t* stream, struct iso1KeyValueType* iso1KeyValueType) {
  5118. int grammarID = 173;
  5119. int done = 0;
  5120. int wcDone = 0;
  5121. while(!done) {
  5122. switch(grammarID) {
  5123. case 173:
  5124. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  5125. if ( iso1KeyValueType->DSAKeyValue_isUsed == 1u ) {
  5126. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  5127. if(errn == 0) {
  5128. errn = encode_iso1DSAKeyValueType(stream, &iso1KeyValueType->DSAKeyValue );
  5129. }
  5130. grammarID = 174;
  5131. } else if ( iso1KeyValueType->RSAKeyValue_isUsed == 1u ) {
  5132. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  5133. if(errn == 0) {
  5134. errn = encode_iso1RSAKeyValueType(stream, &iso1KeyValueType->RSAKeyValue );
  5135. }
  5136. grammarID = 174;
  5137. } else if (1==0) {
  5138. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5139. grammarID = 174;
  5140. } else if ( iso1KeyValueType->ANY_isUsed == 1u ) {
  5141. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  5142. if(errn == 0) {
  5143. /* encode string as string table miss (+2 len)*/
  5144. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyValueType->ANY.charactersLen + 2));
  5145. if (errn == 0) {
  5146. errn = encodeCharacters(stream, iso1KeyValueType->ANY.characters, iso1KeyValueType->ANY.charactersLen);
  5147. }
  5148. }
  5149. wcDone = 1;
  5150. grammarID = 175;
  5151. } else {
  5152. errn = EXI_ERROR_UNKOWN_EVENT;
  5153. }
  5154. break;
  5155. case 174:
  5156. /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  5157. if ( iso1KeyValueType->ANY_isUsed == 0u || wcDone ) {
  5158. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5159. if(errn == 0) {
  5160. done = 1;
  5161. }
  5162. grammarID = 4;
  5163. } else if ( iso1KeyValueType->ANY_isUsed == 1u ) {
  5164. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5165. if(errn == 0) {
  5166. /* encode string as string table miss (+2 len)*/
  5167. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyValueType->ANY.charactersLen + 2));
  5168. if (errn == 0) {
  5169. errn = encodeCharacters(stream, iso1KeyValueType->ANY.characters, iso1KeyValueType->ANY.charactersLen);
  5170. }
  5171. }
  5172. wcDone = 1;
  5173. grammarID = 174;
  5174. } else {
  5175. errn = EXI_ERROR_UNKOWN_EVENT;
  5176. }
  5177. break;
  5178. case 175:
  5179. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  5180. if ( iso1KeyValueType->DSAKeyValue_isUsed == 1u ) {
  5181. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  5182. if(errn == 0) {
  5183. errn = encode_iso1DSAKeyValueType(stream, &iso1KeyValueType->DSAKeyValue );
  5184. }
  5185. grammarID = 174;
  5186. } else if ( iso1KeyValueType->RSAKeyValue_isUsed == 1u ) {
  5187. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  5188. if(errn == 0) {
  5189. errn = encode_iso1RSAKeyValueType(stream, &iso1KeyValueType->RSAKeyValue );
  5190. }
  5191. grammarID = 174;
  5192. } else if (1==0) {
  5193. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5194. grammarID = 174;
  5195. } else if ( iso1KeyValueType->ANY_isUsed == 1u ) {
  5196. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  5197. if(errn == 0) {
  5198. /* encode string as string table miss (+2 len)*/
  5199. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyValueType->ANY.charactersLen + 2));
  5200. if (errn == 0) {
  5201. errn = encodeCharacters(stream, iso1KeyValueType->ANY.characters, iso1KeyValueType->ANY.charactersLen);
  5202. }
  5203. }
  5204. wcDone = 1;
  5205. grammarID = 175;
  5206. } else {
  5207. errn = EXI_ERROR_UNKOWN_EVENT;
  5208. }
  5209. break;
  5210. default:
  5211. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5212. break;
  5213. }
  5214. if(errn) {
  5215. done = 1;
  5216. }
  5217. }
  5218. return errn;
  5219. }
  5220. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SelectedService{1-16})', derivedBy='RESTRICTION'. */
  5221. static int encode_iso1SelectedServiceListType(bitstream_t* stream, struct iso1SelectedServiceListType* iso1SelectedServiceListType) {
  5222. int grammarID = 176;
  5223. int done = 0;
  5224. unsigned int iso1SelectedServiceListType_SelectedService_currArrayIndex = 0;
  5225. while(!done) {
  5226. switch(grammarID) {
  5227. case 176:
  5228. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */
  5229. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5230. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5231. if(errn == 0) {
  5232. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5233. }
  5234. grammarID = 177;
  5235. } else {
  5236. errn = EXI_ERROR_UNKOWN_EVENT;
  5237. }
  5238. break;
  5239. case 177:
  5240. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5241. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5242. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5243. if(errn == 0) {
  5244. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5245. }
  5246. grammarID = 178;
  5247. } else if (1==1) {
  5248. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5249. if(errn == 0) {
  5250. done = 1;
  5251. }
  5252. grammarID = 4;
  5253. } else {
  5254. errn = EXI_ERROR_UNKOWN_EVENT;
  5255. }
  5256. break;
  5257. case 178:
  5258. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5259. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5260. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5261. if(errn == 0) {
  5262. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5263. }
  5264. grammarID = 179;
  5265. } else if (1==1) {
  5266. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5267. if(errn == 0) {
  5268. done = 1;
  5269. }
  5270. grammarID = 4;
  5271. } else {
  5272. errn = EXI_ERROR_UNKOWN_EVENT;
  5273. }
  5274. break;
  5275. case 179:
  5276. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5277. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5278. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5279. if(errn == 0) {
  5280. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5281. }
  5282. grammarID = 180;
  5283. } else if (1==1) {
  5284. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5285. if(errn == 0) {
  5286. done = 1;
  5287. }
  5288. grammarID = 4;
  5289. } else {
  5290. errn = EXI_ERROR_UNKOWN_EVENT;
  5291. }
  5292. break;
  5293. case 180:
  5294. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5295. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5296. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5297. if(errn == 0) {
  5298. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5299. }
  5300. grammarID = 181;
  5301. } else if (1==1) {
  5302. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5303. if(errn == 0) {
  5304. done = 1;
  5305. }
  5306. grammarID = 4;
  5307. } else {
  5308. errn = EXI_ERROR_UNKOWN_EVENT;
  5309. }
  5310. break;
  5311. case 181:
  5312. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5313. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5314. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5315. if(errn == 0) {
  5316. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5317. }
  5318. grammarID = 182;
  5319. } else if (1==1) {
  5320. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5321. if(errn == 0) {
  5322. done = 1;
  5323. }
  5324. grammarID = 4;
  5325. } else {
  5326. errn = EXI_ERROR_UNKOWN_EVENT;
  5327. }
  5328. break;
  5329. case 182:
  5330. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5331. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5332. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5333. if(errn == 0) {
  5334. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5335. }
  5336. grammarID = 183;
  5337. } else if (1==1) {
  5338. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5339. if(errn == 0) {
  5340. done = 1;
  5341. }
  5342. grammarID = 4;
  5343. } else {
  5344. errn = EXI_ERROR_UNKOWN_EVENT;
  5345. }
  5346. break;
  5347. case 183:
  5348. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5349. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5350. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5351. if(errn == 0) {
  5352. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5353. }
  5354. grammarID = 184;
  5355. } else if (1==1) {
  5356. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5357. if(errn == 0) {
  5358. done = 1;
  5359. }
  5360. grammarID = 4;
  5361. } else {
  5362. errn = EXI_ERROR_UNKOWN_EVENT;
  5363. }
  5364. break;
  5365. case 184:
  5366. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5367. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5368. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5369. if(errn == 0) {
  5370. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5371. }
  5372. grammarID = 185;
  5373. } else if (1==1) {
  5374. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5375. if(errn == 0) {
  5376. done = 1;
  5377. }
  5378. grammarID = 4;
  5379. } else {
  5380. errn = EXI_ERROR_UNKOWN_EVENT;
  5381. }
  5382. break;
  5383. case 185:
  5384. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5385. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5386. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5387. if(errn == 0) {
  5388. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5389. }
  5390. grammarID = 186;
  5391. } else if (1==1) {
  5392. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5393. if(errn == 0) {
  5394. done = 1;
  5395. }
  5396. grammarID = 4;
  5397. } else {
  5398. errn = EXI_ERROR_UNKOWN_EVENT;
  5399. }
  5400. break;
  5401. case 186:
  5402. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5403. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5404. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5405. if(errn == 0) {
  5406. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5407. }
  5408. grammarID = 187;
  5409. } else if (1==1) {
  5410. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5411. if(errn == 0) {
  5412. done = 1;
  5413. }
  5414. grammarID = 4;
  5415. } else {
  5416. errn = EXI_ERROR_UNKOWN_EVENT;
  5417. }
  5418. break;
  5419. case 187:
  5420. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5421. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5422. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5423. if(errn == 0) {
  5424. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5425. }
  5426. grammarID = 188;
  5427. } else if (1==1) {
  5428. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5429. if(errn == 0) {
  5430. done = 1;
  5431. }
  5432. grammarID = 4;
  5433. } else {
  5434. errn = EXI_ERROR_UNKOWN_EVENT;
  5435. }
  5436. break;
  5437. case 188:
  5438. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5439. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5440. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5441. if(errn == 0) {
  5442. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5443. }
  5444. grammarID = 189;
  5445. } else if (1==1) {
  5446. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5447. if(errn == 0) {
  5448. done = 1;
  5449. }
  5450. grammarID = 4;
  5451. } else {
  5452. errn = EXI_ERROR_UNKOWN_EVENT;
  5453. }
  5454. break;
  5455. case 189:
  5456. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5457. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5458. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5459. if(errn == 0) {
  5460. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5461. }
  5462. grammarID = 190;
  5463. } else if (1==1) {
  5464. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5465. if(errn == 0) {
  5466. done = 1;
  5467. }
  5468. grammarID = 4;
  5469. } else {
  5470. errn = EXI_ERROR_UNKOWN_EVENT;
  5471. }
  5472. break;
  5473. case 190:
  5474. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5475. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5476. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5477. if(errn == 0) {
  5478. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5479. }
  5480. grammarID = 191;
  5481. } else if (1==1) {
  5482. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5483. if(errn == 0) {
  5484. done = 1;
  5485. }
  5486. grammarID = 4;
  5487. } else {
  5488. errn = EXI_ERROR_UNKOWN_EVENT;
  5489. }
  5490. break;
  5491. case 191:
  5492. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  5493. if (iso1SelectedServiceListType_SelectedService_currArrayIndex < iso1SelectedServiceListType->SelectedService.arrayLen ) {
  5494. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  5495. if(errn == 0) {
  5496. errn = encode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array [iso1SelectedServiceListType_SelectedService_currArrayIndex++]);
  5497. }
  5498. grammarID = 3;
  5499. } else if (1==1) {
  5500. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  5501. if(errn == 0) {
  5502. done = 1;
  5503. }
  5504. grammarID = 4;
  5505. } else {
  5506. errn = EXI_ERROR_UNKOWN_EVENT;
  5507. }
  5508. break;
  5509. case 3:
  5510. /* Element[END_ELEMENT] */
  5511. if (1==1) {
  5512. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5513. if(errn == 0) {
  5514. done = 1;
  5515. }
  5516. grammarID = 4;
  5517. } else {
  5518. errn = EXI_ERROR_UNKOWN_EVENT;
  5519. }
  5520. break;
  5521. default:
  5522. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5523. break;
  5524. }
  5525. if(errn) {
  5526. done = 1;
  5527. }
  5528. }
  5529. return errn;
  5530. }
  5531. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */
  5532. static int encode_iso1CableCheckResType(bitstream_t* stream, struct iso1CableCheckResType* iso1CableCheckResType) {
  5533. int grammarID = 192;
  5534. int done = 0;
  5535. while(!done) {
  5536. switch(grammarID) {
  5537. case 192:
  5538. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  5539. if ( 1 == 1 ) {
  5540. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5541. if(errn == 0) {
  5542. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  5543. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5544. if(errn == 0) {
  5545. errn = encodeNBitUnsignedInteger(stream, 5, iso1CableCheckResType->ResponseCode);
  5546. /* valid EE */
  5547. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5548. }
  5549. }
  5550. grammarID = 193;
  5551. } else {
  5552. errn = EXI_ERROR_UNKOWN_EVENT;
  5553. }
  5554. break;
  5555. case 193:
  5556. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  5557. if ( 1 == 1 ) {
  5558. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5559. if(errn == 0) {
  5560. errn = encode_iso1DC_EVSEStatusType(stream, &iso1CableCheckResType->DC_EVSEStatus );
  5561. }
  5562. grammarID = 130;
  5563. } else {
  5564. errn = EXI_ERROR_UNKOWN_EVENT;
  5565. }
  5566. break;
  5567. case 130:
  5568. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */
  5569. if ( 1 == 1 ) {
  5570. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5571. if(errn == 0) {
  5572. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  5573. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5574. if(errn == 0) {
  5575. errn = encodeNBitUnsignedInteger(stream, 2, iso1CableCheckResType->EVSEProcessing);
  5576. /* valid EE */
  5577. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5578. }
  5579. }
  5580. grammarID = 3;
  5581. } else {
  5582. errn = EXI_ERROR_UNKOWN_EVENT;
  5583. }
  5584. break;
  5585. case 3:
  5586. /* Element[END_ELEMENT] */
  5587. if (1==1) {
  5588. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5589. if(errn == 0) {
  5590. done = 1;
  5591. }
  5592. grammarID = 4;
  5593. } else {
  5594. errn = EXI_ERROR_UNKOWN_EVENT;
  5595. }
  5596. break;
  5597. default:
  5598. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5599. break;
  5600. }
  5601. if(errn) {
  5602. done = 1;
  5603. }
  5604. }
  5605. return errn;
  5606. }
  5607. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)', derivedBy='RESTRICTION'. */
  5608. static int encode_iso1X509IssuerSerialType(bitstream_t* stream, struct iso1X509IssuerSerialType* iso1X509IssuerSerialType) {
  5609. int grammarID = 194;
  5610. int done = 0;
  5611. while(!done) {
  5612. switch(grammarID) {
  5613. case 194:
  5614. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */
  5615. if ( 1 == 1 ) {
  5616. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5617. if(errn == 0) {
  5618. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5619. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5620. if(errn == 0) {
  5621. /* encode string as string table miss (+2 len)*/
  5622. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509IssuerSerialType->X509IssuerName.charactersLen + 2));
  5623. if (errn == 0) {
  5624. errn = encodeCharacters(stream, iso1X509IssuerSerialType->X509IssuerName.characters, iso1X509IssuerSerialType->X509IssuerName.charactersLen);
  5625. }
  5626. /* valid EE */
  5627. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5628. }
  5629. }
  5630. grammarID = 195;
  5631. } else {
  5632. errn = EXI_ERROR_UNKOWN_EVENT;
  5633. }
  5634. break;
  5635. case 195:
  5636. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */
  5637. if ( 1 == 1 ) {
  5638. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5639. if(errn == 0) {
  5640. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  5641. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5642. if(errn == 0) {
  5643. /* errn = encodeInteger64(stream, iso1X509IssuerSerialType->X509SerialNumber); */
  5644. errn = encodeIntegerBig(stream, iso1X509IssuerSerialType->X509SerialNumber.negative, iso1X509IssuerSerialType_X509SerialNumber_BYTES_SIZE, iso1X509IssuerSerialType->X509SerialNumber.data, iso1X509IssuerSerialType->X509SerialNumber.len);
  5645. /* valid EE */
  5646. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5647. }
  5648. }
  5649. grammarID = 3;
  5650. } else {
  5651. errn = EXI_ERROR_UNKOWN_EVENT;
  5652. }
  5653. break;
  5654. case 3:
  5655. /* Element[END_ELEMENT] */
  5656. if (1==1) {
  5657. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5658. if(errn == 0) {
  5659. done = 1;
  5660. }
  5661. grammarID = 4;
  5662. } else {
  5663. errn = EXI_ERROR_UNKOWN_EVENT;
  5664. }
  5665. break;
  5666. default:
  5667. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5668. break;
  5669. }
  5670. if(errn) {
  5671. done = 1;
  5672. }
  5673. }
  5674. return errn;
  5675. }
  5676. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */
  5677. static int encode_iso1KeyInfoType(bitstream_t* stream, struct iso1KeyInfoType* iso1KeyInfoType) {
  5678. int grammarID = 196;
  5679. int done = 0;
  5680. int wcDone = 0;
  5681. unsigned int iso1KeyInfoType_KeyName_currArrayIndex = 0;
  5682. unsigned int iso1KeyInfoType_KeyValue_currArrayIndex = 0;
  5683. unsigned int iso1KeyInfoType_RetrievalMethod_currArrayIndex = 0;
  5684. unsigned int iso1KeyInfoType_X509Data_currArrayIndex = 0;
  5685. unsigned int iso1KeyInfoType_PGPData_currArrayIndex = 0;
  5686. unsigned int iso1KeyInfoType_SPKIData_currArrayIndex = 0;
  5687. unsigned int iso1KeyInfoType_MgmtData_currArrayIndex = 0;
  5688. while(!done) {
  5689. switch(grammarID) {
  5690. case 196:
  5691. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  5692. if ( iso1KeyInfoType->Id_isUsed == 1u ) {
  5693. errn = encodeNBitUnsignedInteger(stream, 4, 0);
  5694. if(errn == 0) {
  5695. /* encode string as string table miss (+2 len)*/
  5696. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->Id.charactersLen + 2));
  5697. if (errn == 0) {
  5698. errn = encodeCharacters(stream, iso1KeyInfoType->Id.characters, iso1KeyInfoType->Id.charactersLen);
  5699. }
  5700. }
  5701. grammarID = 197;
  5702. } else if (iso1KeyInfoType_KeyName_currArrayIndex < iso1KeyInfoType->KeyName.arrayLen ) {
  5703. errn = encodeNBitUnsignedInteger(stream, 4, 1);
  5704. if(errn == 0) {
  5705. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5706. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5707. if(errn == 0) {
  5708. /* encode string as string table miss (+2 len)*/
  5709. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen + 2));
  5710. if (errn == 0) {
  5711. errn = encodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].characters, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen);
  5712. iso1KeyInfoType_KeyName_currArrayIndex++;
  5713. }
  5714. /* valid EE */
  5715. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5716. }
  5717. }
  5718. grammarID = 198;
  5719. } else if (iso1KeyInfoType_KeyValue_currArrayIndex < iso1KeyInfoType->KeyValue.arrayLen ) {
  5720. errn = encodeNBitUnsignedInteger(stream, 4, 2);
  5721. if(errn == 0) {
  5722. errn = encode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array [iso1KeyInfoType_KeyValue_currArrayIndex++]);
  5723. }
  5724. grammarID = 198;
  5725. } else if (iso1KeyInfoType_RetrievalMethod_currArrayIndex < iso1KeyInfoType->RetrievalMethod.arrayLen ) {
  5726. errn = encodeNBitUnsignedInteger(stream, 4, 3);
  5727. if(errn == 0) {
  5728. errn = encode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array [iso1KeyInfoType_RetrievalMethod_currArrayIndex++]);
  5729. }
  5730. grammarID = 198;
  5731. } else if (iso1KeyInfoType_X509Data_currArrayIndex < iso1KeyInfoType->X509Data.arrayLen ) {
  5732. errn = encodeNBitUnsignedInteger(stream, 4, 4);
  5733. if(errn == 0) {
  5734. errn = encode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array [iso1KeyInfoType_X509Data_currArrayIndex++]);
  5735. }
  5736. grammarID = 198;
  5737. } else if (iso1KeyInfoType_PGPData_currArrayIndex < iso1KeyInfoType->PGPData.arrayLen ) {
  5738. errn = encodeNBitUnsignedInteger(stream, 4, 5);
  5739. if(errn == 0) {
  5740. errn = encode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array [iso1KeyInfoType_PGPData_currArrayIndex++]);
  5741. }
  5742. grammarID = 198;
  5743. } else if (iso1KeyInfoType_SPKIData_currArrayIndex < iso1KeyInfoType->SPKIData.arrayLen ) {
  5744. errn = encodeNBitUnsignedInteger(stream, 4, 6);
  5745. if(errn == 0) {
  5746. errn = encode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array [iso1KeyInfoType_SPKIData_currArrayIndex++]);
  5747. }
  5748. grammarID = 198;
  5749. } else if (iso1KeyInfoType_MgmtData_currArrayIndex < iso1KeyInfoType->MgmtData.arrayLen ) {
  5750. errn = encodeNBitUnsignedInteger(stream, 4, 7);
  5751. if(errn == 0) {
  5752. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5753. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5754. if(errn == 0) {
  5755. /* encode string as string table miss (+2 len)*/
  5756. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen + 2));
  5757. if (errn == 0) {
  5758. errn = encodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].characters, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen);
  5759. iso1KeyInfoType_MgmtData_currArrayIndex++;
  5760. }
  5761. /* valid EE */
  5762. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5763. }
  5764. }
  5765. grammarID = 198;
  5766. } else if (1==0) {
  5767. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5768. grammarID = 198;
  5769. } else if ( iso1KeyInfoType->ANY_isUsed == 1u ) {
  5770. errn = encodeNBitUnsignedInteger(stream, 4, 9);
  5771. if(errn == 0) {
  5772. /* encode string as string table miss (+2 len)*/
  5773. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->ANY.charactersLen + 2));
  5774. if (errn == 0) {
  5775. errn = encodeCharacters(stream, iso1KeyInfoType->ANY.characters, iso1KeyInfoType->ANY.charactersLen);
  5776. }
  5777. }
  5778. wcDone = 1;
  5779. grammarID = 199;
  5780. } else {
  5781. errn = EXI_ERROR_UNKOWN_EVENT;
  5782. }
  5783. break;
  5784. case 197:
  5785. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  5786. if (iso1KeyInfoType_KeyName_currArrayIndex < iso1KeyInfoType->KeyName.arrayLen ) {
  5787. errn = encodeNBitUnsignedInteger(stream, 4, 0);
  5788. if(errn == 0) {
  5789. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5790. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5791. if(errn == 0) {
  5792. /* encode string as string table miss (+2 len)*/
  5793. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen + 2));
  5794. if (errn == 0) {
  5795. errn = encodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].characters, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen);
  5796. iso1KeyInfoType_KeyName_currArrayIndex++;
  5797. }
  5798. /* valid EE */
  5799. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5800. }
  5801. }
  5802. grammarID = 198;
  5803. } else if (iso1KeyInfoType_KeyValue_currArrayIndex < iso1KeyInfoType->KeyValue.arrayLen ) {
  5804. errn = encodeNBitUnsignedInteger(stream, 4, 1);
  5805. if(errn == 0) {
  5806. errn = encode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array [iso1KeyInfoType_KeyValue_currArrayIndex++]);
  5807. }
  5808. grammarID = 198;
  5809. } else if (iso1KeyInfoType_RetrievalMethod_currArrayIndex < iso1KeyInfoType->RetrievalMethod.arrayLen ) {
  5810. errn = encodeNBitUnsignedInteger(stream, 4, 2);
  5811. if(errn == 0) {
  5812. errn = encode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array [iso1KeyInfoType_RetrievalMethod_currArrayIndex++]);
  5813. }
  5814. grammarID = 198;
  5815. } else if (iso1KeyInfoType_X509Data_currArrayIndex < iso1KeyInfoType->X509Data.arrayLen ) {
  5816. errn = encodeNBitUnsignedInteger(stream, 4, 3);
  5817. if(errn == 0) {
  5818. errn = encode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array [iso1KeyInfoType_X509Data_currArrayIndex++]);
  5819. }
  5820. grammarID = 198;
  5821. } else if (iso1KeyInfoType_PGPData_currArrayIndex < iso1KeyInfoType->PGPData.arrayLen ) {
  5822. errn = encodeNBitUnsignedInteger(stream, 4, 4);
  5823. if(errn == 0) {
  5824. errn = encode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array [iso1KeyInfoType_PGPData_currArrayIndex++]);
  5825. }
  5826. grammarID = 198;
  5827. } else if (iso1KeyInfoType_SPKIData_currArrayIndex < iso1KeyInfoType->SPKIData.arrayLen ) {
  5828. errn = encodeNBitUnsignedInteger(stream, 4, 5);
  5829. if(errn == 0) {
  5830. errn = encode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array [iso1KeyInfoType_SPKIData_currArrayIndex++]);
  5831. }
  5832. grammarID = 198;
  5833. } else if (iso1KeyInfoType_MgmtData_currArrayIndex < iso1KeyInfoType->MgmtData.arrayLen ) {
  5834. errn = encodeNBitUnsignedInteger(stream, 4, 6);
  5835. if(errn == 0) {
  5836. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5837. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5838. if(errn == 0) {
  5839. /* encode string as string table miss (+2 len)*/
  5840. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen + 2));
  5841. if (errn == 0) {
  5842. errn = encodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].characters, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen);
  5843. iso1KeyInfoType_MgmtData_currArrayIndex++;
  5844. }
  5845. /* valid EE */
  5846. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5847. }
  5848. }
  5849. grammarID = 198;
  5850. } else if (1==0) {
  5851. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5852. grammarID = 198;
  5853. } else if ( iso1KeyInfoType->ANY_isUsed == 1u ) {
  5854. errn = encodeNBitUnsignedInteger(stream, 4, 8);
  5855. if(errn == 0) {
  5856. /* encode string as string table miss (+2 len)*/
  5857. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->ANY.charactersLen + 2));
  5858. if (errn == 0) {
  5859. errn = encodeCharacters(stream, iso1KeyInfoType->ANY.characters, iso1KeyInfoType->ANY.charactersLen);
  5860. }
  5861. }
  5862. wcDone = 1;
  5863. grammarID = 199;
  5864. } else {
  5865. errn = EXI_ERROR_UNKOWN_EVENT;
  5866. }
  5867. break;
  5868. case 198:
  5869. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  5870. if (iso1KeyInfoType_KeyName_currArrayIndex < iso1KeyInfoType->KeyName.arrayLen ) {
  5871. errn = encodeNBitUnsignedInteger(stream, 4, 0);
  5872. if(errn == 0) {
  5873. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5874. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5875. if(errn == 0) {
  5876. /* encode string as string table miss (+2 len)*/
  5877. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen + 2));
  5878. if (errn == 0) {
  5879. errn = encodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].characters, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen);
  5880. iso1KeyInfoType_KeyName_currArrayIndex++;
  5881. }
  5882. /* valid EE */
  5883. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5884. }
  5885. }
  5886. grammarID = 198;
  5887. } else if (iso1KeyInfoType_KeyValue_currArrayIndex < iso1KeyInfoType->KeyValue.arrayLen ) {
  5888. errn = encodeNBitUnsignedInteger(stream, 4, 1);
  5889. if(errn == 0) {
  5890. errn = encode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array [iso1KeyInfoType_KeyValue_currArrayIndex++]);
  5891. }
  5892. grammarID = 198;
  5893. } else if (iso1KeyInfoType_RetrievalMethod_currArrayIndex < iso1KeyInfoType->RetrievalMethod.arrayLen ) {
  5894. errn = encodeNBitUnsignedInteger(stream, 4, 2);
  5895. if(errn == 0) {
  5896. errn = encode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array [iso1KeyInfoType_RetrievalMethod_currArrayIndex++]);
  5897. }
  5898. grammarID = 198;
  5899. } else if (iso1KeyInfoType_X509Data_currArrayIndex < iso1KeyInfoType->X509Data.arrayLen ) {
  5900. errn = encodeNBitUnsignedInteger(stream, 4, 3);
  5901. if(errn == 0) {
  5902. errn = encode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array [iso1KeyInfoType_X509Data_currArrayIndex++]);
  5903. }
  5904. grammarID = 198;
  5905. } else if (iso1KeyInfoType_PGPData_currArrayIndex < iso1KeyInfoType->PGPData.arrayLen ) {
  5906. errn = encodeNBitUnsignedInteger(stream, 4, 4);
  5907. if(errn == 0) {
  5908. errn = encode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array [iso1KeyInfoType_PGPData_currArrayIndex++]);
  5909. }
  5910. grammarID = 198;
  5911. } else if (iso1KeyInfoType_SPKIData_currArrayIndex < iso1KeyInfoType->SPKIData.arrayLen ) {
  5912. errn = encodeNBitUnsignedInteger(stream, 4, 5);
  5913. if(errn == 0) {
  5914. errn = encode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array [iso1KeyInfoType_SPKIData_currArrayIndex++]);
  5915. }
  5916. grammarID = 198;
  5917. } else if (iso1KeyInfoType_MgmtData_currArrayIndex < iso1KeyInfoType->MgmtData.arrayLen ) {
  5918. errn = encodeNBitUnsignedInteger(stream, 4, 6);
  5919. if(errn == 0) {
  5920. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5921. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5922. if(errn == 0) {
  5923. /* encode string as string table miss (+2 len)*/
  5924. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen + 2));
  5925. if (errn == 0) {
  5926. errn = encodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].characters, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen);
  5927. iso1KeyInfoType_MgmtData_currArrayIndex++;
  5928. }
  5929. /* valid EE */
  5930. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5931. }
  5932. }
  5933. grammarID = 198;
  5934. } else if (1==0) {
  5935. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5936. grammarID = 198;
  5937. } else if ( iso1KeyInfoType->ANY_isUsed == 0u || wcDone ) {
  5938. errn = encodeNBitUnsignedInteger(stream, 4, 8);
  5939. if(errn == 0) {
  5940. done = 1;
  5941. }
  5942. grammarID = 4;
  5943. } else if ( iso1KeyInfoType->ANY_isUsed == 1u ) {
  5944. errn = encodeNBitUnsignedInteger(stream, 4, 9);
  5945. if(errn == 0) {
  5946. /* encode string as string table miss (+2 len)*/
  5947. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->ANY.charactersLen + 2));
  5948. if (errn == 0) {
  5949. errn = encodeCharacters(stream, iso1KeyInfoType->ANY.characters, iso1KeyInfoType->ANY.charactersLen);
  5950. }
  5951. }
  5952. wcDone = 1;
  5953. grammarID = 198;
  5954. } else {
  5955. errn = EXI_ERROR_UNKOWN_EVENT;
  5956. }
  5957. break;
  5958. case 199:
  5959. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  5960. if (iso1KeyInfoType_KeyName_currArrayIndex < iso1KeyInfoType->KeyName.arrayLen ) {
  5961. errn = encodeNBitUnsignedInteger(stream, 4, 0);
  5962. if(errn == 0) {
  5963. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5964. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5965. if(errn == 0) {
  5966. /* encode string as string table miss (+2 len)*/
  5967. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen + 2));
  5968. if (errn == 0) {
  5969. errn = encodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].characters, iso1KeyInfoType->KeyName.array[iso1KeyInfoType_KeyName_currArrayIndex].charactersLen);
  5970. iso1KeyInfoType_KeyName_currArrayIndex++;
  5971. }
  5972. /* valid EE */
  5973. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  5974. }
  5975. }
  5976. grammarID = 198;
  5977. } else if (iso1KeyInfoType_KeyValue_currArrayIndex < iso1KeyInfoType->KeyValue.arrayLen ) {
  5978. errn = encodeNBitUnsignedInteger(stream, 4, 1);
  5979. if(errn == 0) {
  5980. errn = encode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array [iso1KeyInfoType_KeyValue_currArrayIndex++]);
  5981. }
  5982. grammarID = 198;
  5983. } else if (iso1KeyInfoType_RetrievalMethod_currArrayIndex < iso1KeyInfoType->RetrievalMethod.arrayLen ) {
  5984. errn = encodeNBitUnsignedInteger(stream, 4, 2);
  5985. if(errn == 0) {
  5986. errn = encode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array [iso1KeyInfoType_RetrievalMethod_currArrayIndex++]);
  5987. }
  5988. grammarID = 198;
  5989. } else if (iso1KeyInfoType_X509Data_currArrayIndex < iso1KeyInfoType->X509Data.arrayLen ) {
  5990. errn = encodeNBitUnsignedInteger(stream, 4, 3);
  5991. if(errn == 0) {
  5992. errn = encode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array [iso1KeyInfoType_X509Data_currArrayIndex++]);
  5993. }
  5994. grammarID = 198;
  5995. } else if (iso1KeyInfoType_PGPData_currArrayIndex < iso1KeyInfoType->PGPData.arrayLen ) {
  5996. errn = encodeNBitUnsignedInteger(stream, 4, 4);
  5997. if(errn == 0) {
  5998. errn = encode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array [iso1KeyInfoType_PGPData_currArrayIndex++]);
  5999. }
  6000. grammarID = 198;
  6001. } else if (iso1KeyInfoType_SPKIData_currArrayIndex < iso1KeyInfoType->SPKIData.arrayLen ) {
  6002. errn = encodeNBitUnsignedInteger(stream, 4, 5);
  6003. if(errn == 0) {
  6004. errn = encode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array [iso1KeyInfoType_SPKIData_currArrayIndex++]);
  6005. }
  6006. grammarID = 198;
  6007. } else if (iso1KeyInfoType_MgmtData_currArrayIndex < iso1KeyInfoType->MgmtData.arrayLen ) {
  6008. errn = encodeNBitUnsignedInteger(stream, 4, 6);
  6009. if(errn == 0) {
  6010. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  6011. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6012. if(errn == 0) {
  6013. /* encode string as string table miss (+2 len)*/
  6014. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen + 2));
  6015. if (errn == 0) {
  6016. errn = encodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].characters, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType_MgmtData_currArrayIndex].charactersLen);
  6017. iso1KeyInfoType_MgmtData_currArrayIndex++;
  6018. }
  6019. /* valid EE */
  6020. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6021. }
  6022. }
  6023. grammarID = 198;
  6024. } else if (1==0) {
  6025. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6026. grammarID = 198;
  6027. } else if ( iso1KeyInfoType->ANY_isUsed == 1u ) {
  6028. errn = encodeNBitUnsignedInteger(stream, 4, 8);
  6029. if(errn == 0) {
  6030. /* encode string as string table miss (+2 len)*/
  6031. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1KeyInfoType->ANY.charactersLen + 2));
  6032. if (errn == 0) {
  6033. errn = encodeCharacters(stream, iso1KeyInfoType->ANY.characters, iso1KeyInfoType->ANY.charactersLen);
  6034. }
  6035. }
  6036. wcDone = 1;
  6037. grammarID = 199;
  6038. } else {
  6039. errn = EXI_ERROR_UNKOWN_EVENT;
  6040. }
  6041. break;
  6042. default:
  6043. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6044. break;
  6045. }
  6046. if(errn) {
  6047. done = 1;
  6048. }
  6049. }
  6050. return errn;
  6051. }
  6052. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  6053. static int encode_iso1TransformsType(bitstream_t* stream, struct iso1TransformsType* iso1TransformsType) {
  6054. int grammarID = 200;
  6055. int done = 0;
  6056. unsigned int iso1TransformsType_Transform_currArrayIndex = 0;
  6057. while(!done) {
  6058. switch(grammarID) {
  6059. case 200:
  6060. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */
  6061. if (iso1TransformsType_Transform_currArrayIndex < iso1TransformsType->Transform.arrayLen ) {
  6062. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6063. if(errn == 0) {
  6064. errn = encode_iso1TransformType(stream, &iso1TransformsType->Transform.array [iso1TransformsType_Transform_currArrayIndex++]);
  6065. }
  6066. grammarID = 201;
  6067. } else {
  6068. errn = EXI_ERROR_UNKOWN_EVENT;
  6069. }
  6070. break;
  6071. case 201:
  6072. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */
  6073. if (iso1TransformsType_Transform_currArrayIndex < iso1TransformsType->Transform.arrayLen ) {
  6074. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  6075. if(errn == 0) {
  6076. errn = encode_iso1TransformType(stream, &iso1TransformsType->Transform.array [iso1TransformsType_Transform_currArrayIndex++]);
  6077. }
  6078. grammarID = 201;
  6079. } else if (1==1) {
  6080. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6081. if(errn == 0) {
  6082. done = 1;
  6083. }
  6084. grammarID = 4;
  6085. } else {
  6086. errn = EXI_ERROR_UNKOWN_EVENT;
  6087. }
  6088. break;
  6089. default:
  6090. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6091. break;
  6092. }
  6093. if(errn) {
  6094. done = 1;
  6095. }
  6096. }
  6097. return errn;
  6098. }
  6099. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":MaxEntriesSAScheduleTuple{0-1},"urn:iso:15118:2:2013:MsgBody":RequestedEnergyTransferMode,"urn:iso:15118:2:2013:MsgDataTypes":EVChargeParameter)', derivedBy='EXTENSION'. */
  6100. static int encode_iso1ChargeParameterDiscoveryReqType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryReqType* iso1ChargeParameterDiscoveryReqType) {
  6101. int grammarID = 202;
  6102. int done = 0;
  6103. while(!done) {
  6104. switch(grammarID) {
  6105. case 202:
  6106. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */
  6107. if ( iso1ChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed == 1u ) {
  6108. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  6109. if(errn == 0) {
  6110. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  6111. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6112. if(errn == 0) {
  6113. errn = encodeUnsignedInteger16(stream, iso1ChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple);
  6114. /* valid EE */
  6115. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6116. }
  6117. }
  6118. grammarID = 203;
  6119. } else if ( 1 == 1 ) {
  6120. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6121. if(errn == 0) {
  6122. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  6123. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6124. if(errn == 0) {
  6125. errn = encodeNBitUnsignedInteger(stream, 3, iso1ChargeParameterDiscoveryReqType->RequestedEnergyTransferMode);
  6126. /* valid EE */
  6127. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6128. }
  6129. }
  6130. grammarID = 204;
  6131. } else {
  6132. errn = EXI_ERROR_UNKOWN_EVENT;
  6133. }
  6134. break;
  6135. case 203:
  6136. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */
  6137. if ( 1 == 1 ) {
  6138. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6139. if(errn == 0) {
  6140. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  6141. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6142. if(errn == 0) {
  6143. errn = encodeNBitUnsignedInteger(stream, 3, iso1ChargeParameterDiscoveryReqType->RequestedEnergyTransferMode);
  6144. /* valid EE */
  6145. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6146. }
  6147. }
  6148. grammarID = 204;
  6149. } else {
  6150. errn = EXI_ERROR_UNKOWN_EVENT;
  6151. }
  6152. break;
  6153. case 204:
  6154. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] */
  6155. if ( iso1ChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed == 1u ) {
  6156. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  6157. if(errn == 0) {
  6158. errn = encode_iso1AC_EVChargeParameterType(stream, &iso1ChargeParameterDiscoveryReqType->AC_EVChargeParameter );
  6159. }
  6160. grammarID = 3;
  6161. } else if ( iso1ChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed == 1u ) {
  6162. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6163. if(errn == 0) {
  6164. errn = encode_iso1DC_EVChargeParameterType(stream, &iso1ChargeParameterDiscoveryReqType->DC_EVChargeParameter );
  6165. }
  6166. grammarID = 3;
  6167. } else if ( iso1ChargeParameterDiscoveryReqType->EVChargeParameter_isUsed == 1u ) {
  6168. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  6169. if(errn == 0) {
  6170. errn = encode_iso1EVChargeParameterType(stream, &iso1ChargeParameterDiscoveryReqType->EVChargeParameter );
  6171. }
  6172. grammarID = 3;
  6173. } else {
  6174. errn = EXI_ERROR_UNKOWN_EVENT;
  6175. }
  6176. break;
  6177. case 3:
  6178. /* Element[END_ELEMENT] */
  6179. if (1==1) {
  6180. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6181. if(errn == 0) {
  6182. done = 1;
  6183. }
  6184. grammarID = 4;
  6185. } else {
  6186. errn = EXI_ERROR_UNKOWN_EVENT;
  6187. }
  6188. break;
  6189. default:
  6190. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6191. break;
  6192. }
  6193. if(errn) {
  6194. done = 1;
  6195. }
  6196. }
  6197. return errn;
  6198. }
  6199. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent)', derivedBy='EXTENSION'. */
  6200. static int encode_iso1PreChargeReqType(bitstream_t* stream, struct iso1PreChargeReqType* iso1PreChargeReqType) {
  6201. int grammarID = 205;
  6202. int done = 0;
  6203. while(!done) {
  6204. switch(grammarID) {
  6205. case 205:
  6206. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  6207. if ( 1 == 1 ) {
  6208. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6209. if(errn == 0) {
  6210. errn = encode_iso1DC_EVStatusType(stream, &iso1PreChargeReqType->DC_EVStatus );
  6211. }
  6212. grammarID = 206;
  6213. } else {
  6214. errn = EXI_ERROR_UNKOWN_EVENT;
  6215. }
  6216. break;
  6217. case 206:
  6218. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  6219. if ( 1 == 1 ) {
  6220. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6221. if(errn == 0) {
  6222. errn = encode_iso1PhysicalValueType(stream, &iso1PreChargeReqType->EVTargetVoltage );
  6223. }
  6224. grammarID = 207;
  6225. } else {
  6226. errn = EXI_ERROR_UNKOWN_EVENT;
  6227. }
  6228. break;
  6229. case 207:
  6230. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */
  6231. if ( 1 == 1 ) {
  6232. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6233. if(errn == 0) {
  6234. errn = encode_iso1PhysicalValueType(stream, &iso1PreChargeReqType->EVTargetCurrent );
  6235. }
  6236. grammarID = 3;
  6237. } else {
  6238. errn = EXI_ERROR_UNKOWN_EVENT;
  6239. }
  6240. break;
  6241. case 3:
  6242. /* Element[END_ELEMENT] */
  6243. if (1==1) {
  6244. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6245. if(errn == 0) {
  6246. done = 1;
  6247. }
  6248. grammarID = 4;
  6249. } else {
  6250. errn = EXI_ERROR_UNKOWN_EVENT;
  6251. }
  6252. break;
  6253. default:
  6254. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6255. break;
  6256. }
  6257. if(errn) {
  6258. done = 1;
  6259. }
  6260. }
  6261. return errn;
  6262. }
  6263. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEStatusType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification)', derivedBy='RESTRICTION'. */
  6264. static int encode_iso1EVSEStatusType(bitstream_t* stream, struct iso1EVSEStatusType* iso1EVSEStatusType) {
  6265. int grammarID = 208;
  6266. int done = 0;
  6267. while(!done) {
  6268. switch(grammarID) {
  6269. case 208:
  6270. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */
  6271. if ( 1 == 1 ) {
  6272. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6273. if(errn == 0) {
  6274. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  6275. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6276. if(errn == 0) {
  6277. errn = encodeUnsignedInteger16(stream, iso1EVSEStatusType->NotificationMaxDelay);
  6278. /* valid EE */
  6279. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6280. }
  6281. }
  6282. grammarID = 209;
  6283. } else {
  6284. errn = EXI_ERROR_UNKOWN_EVENT;
  6285. }
  6286. break;
  6287. case 209:
  6288. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */
  6289. if ( 1 == 1 ) {
  6290. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6291. if(errn == 0) {
  6292. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  6293. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6294. if(errn == 0) {
  6295. errn = encodeNBitUnsignedInteger(stream, 2, iso1EVSEStatusType->EVSENotification);
  6296. /* valid EE */
  6297. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6298. }
  6299. }
  6300. grammarID = 3;
  6301. } else {
  6302. errn = EXI_ERROR_UNKOWN_EVENT;
  6303. }
  6304. break;
  6305. case 3:
  6306. /* Element[END_ELEMENT] */
  6307. if (1==1) {
  6308. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6309. if(errn == 0) {
  6310. done = 1;
  6311. }
  6312. grammarID = 4;
  6313. } else {
  6314. errn = EXI_ERROR_UNKOWN_EVENT;
  6315. }
  6316. break;
  6317. default:
  6318. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6319. break;
  6320. }
  6321. if(errn) {
  6322. done = 1;
  6323. }
  6324. }
  6325. return errn;
  6326. }
  6327. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */
  6328. static int encode_iso1SignatureMethodType(bitstream_t* stream, struct iso1SignatureMethodType* iso1SignatureMethodType) {
  6329. int grammarID = 210;
  6330. int done = 0;
  6331. int wcDone = 0;
  6332. while(!done) {
  6333. switch(grammarID) {
  6334. case 210:
  6335. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  6336. if (1==1) {
  6337. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6338. if(errn == 0) {
  6339. /* encode string as string table miss (+2 len)*/
  6340. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureMethodType->Algorithm.charactersLen + 2));
  6341. if (errn == 0) {
  6342. errn = encodeCharacters(stream, iso1SignatureMethodType->Algorithm.characters, iso1SignatureMethodType->Algorithm.charactersLen);
  6343. }
  6344. }
  6345. grammarID = 211;
  6346. } else {
  6347. errn = EXI_ERROR_UNKOWN_EVENT;
  6348. }
  6349. break;
  6350. case 211:
  6351. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  6352. if ( iso1SignatureMethodType->HMACOutputLength_isUsed == 1u ) {
  6353. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  6354. if(errn == 0) {
  6355. /* FirstStartTag[CHARACTERS[INTEGER]] */
  6356. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6357. if(errn == 0) {
  6358. errn = encodeInteger64(stream, iso1SignatureMethodType->HMACOutputLength);
  6359. /* valid EE */
  6360. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6361. }
  6362. }
  6363. grammarID = 116;
  6364. } else if (1==0) {
  6365. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6366. grammarID = 116;
  6367. } else if ( iso1SignatureMethodType->ANY_isUsed == 0u || wcDone ) {
  6368. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  6369. if(errn == 0) {
  6370. done = 1;
  6371. }
  6372. grammarID = 4;
  6373. } else if ( iso1SignatureMethodType->ANY_isUsed == 1u ) {
  6374. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  6375. if(errn == 0) {
  6376. /* encode string as string table miss (+2 len)*/
  6377. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureMethodType->ANY.charactersLen + 2));
  6378. if (errn == 0) {
  6379. errn = encodeCharacters(stream, iso1SignatureMethodType->ANY.characters, iso1SignatureMethodType->ANY.charactersLen);
  6380. }
  6381. }
  6382. wcDone = 1;
  6383. grammarID = 212;
  6384. } else {
  6385. errn = EXI_ERROR_UNKOWN_EVENT;
  6386. }
  6387. break;
  6388. case 116:
  6389. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  6390. if (1==0) {
  6391. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6392. grammarID = 116;
  6393. } else if ( iso1SignatureMethodType->ANY_isUsed == 0u || wcDone ) {
  6394. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6395. if(errn == 0) {
  6396. done = 1;
  6397. }
  6398. grammarID = 4;
  6399. } else if ( iso1SignatureMethodType->ANY_isUsed == 1u ) {
  6400. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  6401. if(errn == 0) {
  6402. /* encode string as string table miss (+2 len)*/
  6403. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureMethodType->ANY.charactersLen + 2));
  6404. if (errn == 0) {
  6405. errn = encodeCharacters(stream, iso1SignatureMethodType->ANY.characters, iso1SignatureMethodType->ANY.charactersLen);
  6406. }
  6407. }
  6408. wcDone = 1;
  6409. grammarID = 116;
  6410. } else {
  6411. errn = EXI_ERROR_UNKOWN_EVENT;
  6412. }
  6413. break;
  6414. case 212:
  6415. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  6416. if ( iso1SignatureMethodType->HMACOutputLength_isUsed == 1u ) {
  6417. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  6418. if(errn == 0) {
  6419. /* FirstStartTag[CHARACTERS[INTEGER]] */
  6420. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6421. if(errn == 0) {
  6422. errn = encodeInteger64(stream, iso1SignatureMethodType->HMACOutputLength);
  6423. /* valid EE */
  6424. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6425. }
  6426. }
  6427. grammarID = 116;
  6428. } else if (1==0) {
  6429. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6430. grammarID = 116;
  6431. } else if ( iso1SignatureMethodType->ANY_isUsed == 0u || wcDone ) {
  6432. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  6433. if(errn == 0) {
  6434. done = 1;
  6435. }
  6436. grammarID = 4;
  6437. } else if ( iso1SignatureMethodType->ANY_isUsed == 1u ) {
  6438. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  6439. if(errn == 0) {
  6440. /* encode string as string table miss (+2 len)*/
  6441. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignatureMethodType->ANY.charactersLen + 2));
  6442. if (errn == 0) {
  6443. errn = encodeCharacters(stream, iso1SignatureMethodType->ANY.characters, iso1SignatureMethodType->ANY.charactersLen);
  6444. }
  6445. }
  6446. wcDone = 1;
  6447. grammarID = 212;
  6448. } else {
  6449. errn = EXI_ERROR_UNKOWN_EVENT;
  6450. }
  6451. break;
  6452. default:
  6453. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6454. break;
  6455. }
  6456. if(errn) {
  6457. done = 1;
  6458. }
  6459. }
  6460. return errn;
  6461. }
  6462. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}', derivedBy='RESTRICTION'. */
  6463. static int encode_iso1X509DataType(bitstream_t* stream, struct iso1X509DataType* iso1X509DataType) {
  6464. int grammarID = 213;
  6465. int done = 0;
  6466. int wcDone = 0;
  6467. unsigned int iso1X509DataType_X509IssuerSerial_currArrayIndex = 0;
  6468. unsigned int iso1X509DataType_X509SKI_currArrayIndex = 0;
  6469. unsigned int iso1X509DataType_X509SubjectName_currArrayIndex = 0;
  6470. unsigned int iso1X509DataType_X509Certificate_currArrayIndex = 0;
  6471. unsigned int iso1X509DataType_X509CRL_currArrayIndex = 0;
  6472. while(!done) {
  6473. switch(grammarID) {
  6474. case 213:
  6475. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */
  6476. if (iso1X509DataType_X509IssuerSerial_currArrayIndex < iso1X509DataType->X509IssuerSerial.arrayLen ) {
  6477. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  6478. if(errn == 0) {
  6479. errn = encode_iso1X509IssuerSerialType(stream, &iso1X509DataType->X509IssuerSerial.array [iso1X509DataType_X509IssuerSerial_currArrayIndex++]);
  6480. }
  6481. grammarID = 214;
  6482. } else if (iso1X509DataType_X509SKI_currArrayIndex < iso1X509DataType->X509SKI.arrayLen ) {
  6483. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  6484. if(errn == 0) {
  6485. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  6486. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6487. if(errn == 0) {
  6488. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509SKI.array[iso1X509DataType_X509SKI_currArrayIndex].bytesLen));
  6489. if (errn == 0) {
  6490. errn = encodeBytes(stream, iso1X509DataType->X509SKI.array[iso1X509DataType_X509SKI_currArrayIndex].bytes, iso1X509DataType->X509SKI.array[iso1X509DataType_X509SKI_currArrayIndex].bytesLen);
  6491. iso1X509DataType_X509SKI_currArrayIndex++;
  6492. }
  6493. /* valid EE */
  6494. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6495. }
  6496. }
  6497. grammarID = 214;
  6498. } else if (iso1X509DataType_X509SubjectName_currArrayIndex < iso1X509DataType->X509SubjectName.arrayLen ) {
  6499. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  6500. if(errn == 0) {
  6501. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  6502. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6503. if(errn == 0) {
  6504. /* encode string as string table miss (+2 len)*/
  6505. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509SubjectName.array[iso1X509DataType_X509SubjectName_currArrayIndex].charactersLen + 2));
  6506. if (errn == 0) {
  6507. errn = encodeCharacters(stream, iso1X509DataType->X509SubjectName.array[iso1X509DataType_X509SubjectName_currArrayIndex].characters, iso1X509DataType->X509SubjectName.array[iso1X509DataType_X509SubjectName_currArrayIndex].charactersLen);
  6508. iso1X509DataType_X509SubjectName_currArrayIndex++;
  6509. }
  6510. /* valid EE */
  6511. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6512. }
  6513. }
  6514. grammarID = 214;
  6515. } else if (iso1X509DataType_X509Certificate_currArrayIndex < iso1X509DataType->X509Certificate.arrayLen ) {
  6516. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  6517. if(errn == 0) {
  6518. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  6519. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6520. if(errn == 0) {
  6521. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509Certificate.array[iso1X509DataType_X509Certificate_currArrayIndex].bytesLen));
  6522. if (errn == 0) {
  6523. errn = encodeBytes(stream, iso1X509DataType->X509Certificate.array[iso1X509DataType_X509Certificate_currArrayIndex].bytes, iso1X509DataType->X509Certificate.array[iso1X509DataType_X509Certificate_currArrayIndex].bytesLen);
  6524. iso1X509DataType_X509Certificate_currArrayIndex++;
  6525. }
  6526. /* valid EE */
  6527. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6528. }
  6529. }
  6530. grammarID = 214;
  6531. } else if (iso1X509DataType_X509CRL_currArrayIndex < iso1X509DataType->X509CRL.arrayLen ) {
  6532. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  6533. if(errn == 0) {
  6534. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  6535. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6536. if(errn == 0) {
  6537. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509CRL.array[iso1X509DataType_X509CRL_currArrayIndex].bytesLen));
  6538. if (errn == 0) {
  6539. errn = encodeBytes(stream, iso1X509DataType->X509CRL.array[iso1X509DataType_X509CRL_currArrayIndex].bytes, iso1X509DataType->X509CRL.array[iso1X509DataType_X509CRL_currArrayIndex].bytesLen);
  6540. iso1X509DataType_X509CRL_currArrayIndex++;
  6541. }
  6542. /* valid EE */
  6543. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6544. }
  6545. }
  6546. grammarID = 214;
  6547. } else if (1==0) {
  6548. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6549. grammarID = 214;
  6550. } else {
  6551. errn = EXI_ERROR_UNKOWN_EVENT;
  6552. }
  6553. break;
  6554. case 214:
  6555. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */
  6556. if (iso1X509DataType_X509IssuerSerial_currArrayIndex < iso1X509DataType->X509IssuerSerial.arrayLen ) {
  6557. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  6558. if(errn == 0) {
  6559. errn = encode_iso1X509IssuerSerialType(stream, &iso1X509DataType->X509IssuerSerial.array [iso1X509DataType_X509IssuerSerial_currArrayIndex++]);
  6560. }
  6561. grammarID = 214;
  6562. } else if (iso1X509DataType_X509SKI_currArrayIndex < iso1X509DataType->X509SKI.arrayLen ) {
  6563. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  6564. if(errn == 0) {
  6565. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  6566. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6567. if(errn == 0) {
  6568. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509SKI.array[iso1X509DataType_X509SKI_currArrayIndex].bytesLen));
  6569. if (errn == 0) {
  6570. errn = encodeBytes(stream, iso1X509DataType->X509SKI.array[iso1X509DataType_X509SKI_currArrayIndex].bytes, iso1X509DataType->X509SKI.array[iso1X509DataType_X509SKI_currArrayIndex].bytesLen);
  6571. iso1X509DataType_X509SKI_currArrayIndex++;
  6572. }
  6573. /* valid EE */
  6574. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6575. }
  6576. }
  6577. grammarID = 214;
  6578. } else if (iso1X509DataType_X509SubjectName_currArrayIndex < iso1X509DataType->X509SubjectName.arrayLen ) {
  6579. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  6580. if(errn == 0) {
  6581. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  6582. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6583. if(errn == 0) {
  6584. /* encode string as string table miss (+2 len)*/
  6585. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509SubjectName.array[iso1X509DataType_X509SubjectName_currArrayIndex].charactersLen + 2));
  6586. if (errn == 0) {
  6587. errn = encodeCharacters(stream, iso1X509DataType->X509SubjectName.array[iso1X509DataType_X509SubjectName_currArrayIndex].characters, iso1X509DataType->X509SubjectName.array[iso1X509DataType_X509SubjectName_currArrayIndex].charactersLen);
  6588. iso1X509DataType_X509SubjectName_currArrayIndex++;
  6589. }
  6590. /* valid EE */
  6591. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6592. }
  6593. }
  6594. grammarID = 214;
  6595. } else if (iso1X509DataType_X509Certificate_currArrayIndex < iso1X509DataType->X509Certificate.arrayLen ) {
  6596. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  6597. if(errn == 0) {
  6598. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  6599. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6600. if(errn == 0) {
  6601. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509Certificate.array[iso1X509DataType_X509Certificate_currArrayIndex].bytesLen));
  6602. if (errn == 0) {
  6603. errn = encodeBytes(stream, iso1X509DataType->X509Certificate.array[iso1X509DataType_X509Certificate_currArrayIndex].bytes, iso1X509DataType->X509Certificate.array[iso1X509DataType_X509Certificate_currArrayIndex].bytesLen);
  6604. iso1X509DataType_X509Certificate_currArrayIndex++;
  6605. }
  6606. /* valid EE */
  6607. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6608. }
  6609. }
  6610. grammarID = 214;
  6611. } else if (iso1X509DataType_X509CRL_currArrayIndex < iso1X509DataType->X509CRL.arrayLen ) {
  6612. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  6613. if(errn == 0) {
  6614. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  6615. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6616. if(errn == 0) {
  6617. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1X509DataType->X509CRL.array[iso1X509DataType_X509CRL_currArrayIndex].bytesLen));
  6618. if (errn == 0) {
  6619. errn = encodeBytes(stream, iso1X509DataType->X509CRL.array[iso1X509DataType_X509CRL_currArrayIndex].bytes, iso1X509DataType->X509CRL.array[iso1X509DataType_X509CRL_currArrayIndex].bytesLen);
  6620. iso1X509DataType_X509CRL_currArrayIndex++;
  6621. }
  6622. /* valid EE */
  6623. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6624. }
  6625. }
  6626. grammarID = 214;
  6627. } else if (1==0) {
  6628. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6629. grammarID = 214;
  6630. } else if ( iso1X509DataType->ANY_isUsed == 0u || wcDone ) {
  6631. errn = encodeNBitUnsignedInteger(stream, 3, 6);
  6632. if(errn == 0) {
  6633. done = 1;
  6634. }
  6635. grammarID = 4;
  6636. } else {
  6637. errn = EXI_ERROR_UNKOWN_EVENT;
  6638. }
  6639. break;
  6640. default:
  6641. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6642. break;
  6643. }
  6644. if(errn) {
  6645. done = 1;
  6646. }
  6647. }
  6648. return errn;
  6649. }
  6650. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,NotificationType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":FaultCode,"urn:iso:15118:2:2013:MsgDataTypes":FaultMsg{0-1})', derivedBy='RESTRICTION'. */
  6651. static int encode_iso1NotificationType(bitstream_t* stream, struct iso1NotificationType* iso1NotificationType) {
  6652. int grammarID = 215;
  6653. int done = 0;
  6654. while(!done) {
  6655. switch(grammarID) {
  6656. case 215:
  6657. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */
  6658. if ( 1 == 1 ) {
  6659. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6660. if(errn == 0) {
  6661. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  6662. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6663. if(errn == 0) {
  6664. errn = encodeNBitUnsignedInteger(stream, 2, iso1NotificationType->FaultCode);
  6665. /* valid EE */
  6666. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6667. }
  6668. }
  6669. grammarID = 216;
  6670. } else {
  6671. errn = EXI_ERROR_UNKOWN_EVENT;
  6672. }
  6673. break;
  6674. case 216:
  6675. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */
  6676. if ( iso1NotificationType->FaultMsg_isUsed == 1u ) {
  6677. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  6678. if(errn == 0) {
  6679. /* FirstStartTag[CHARACTERS[STRING]] */
  6680. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6681. if(errn == 0) {
  6682. /* encode string as string table miss (+2 len)*/
  6683. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1NotificationType->FaultMsg.charactersLen + 2));
  6684. if (errn == 0) {
  6685. errn = encodeCharacters(stream, iso1NotificationType->FaultMsg.characters, iso1NotificationType->FaultMsg.charactersLen);
  6686. }
  6687. /* valid EE */
  6688. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6689. }
  6690. }
  6691. grammarID = 3;
  6692. } else if (1==1) {
  6693. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6694. if(errn == 0) {
  6695. done = 1;
  6696. }
  6697. grammarID = 4;
  6698. } else {
  6699. errn = EXI_ERROR_UNKOWN_EVENT;
  6700. }
  6701. break;
  6702. case 3:
  6703. /* Element[END_ELEMENT] */
  6704. if (1==1) {
  6705. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6706. if(errn == 0) {
  6707. done = 1;
  6708. }
  6709. grammarID = 4;
  6710. } else {
  6711. errn = EXI_ERROR_UNKOWN_EVENT;
  6712. }
  6713. break;
  6714. default:
  6715. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6716. break;
  6717. }
  6718. if(errn) {
  6719. done = 1;
  6720. }
  6721. }
  6722. return errn;
  6723. }
  6724. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleListType', base type name='SASchedulesType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTuple{1-3})', derivedBy='EXTENSION'. */
  6725. static int encode_iso1SAScheduleListType(bitstream_t* stream, struct iso1SAScheduleListType* iso1SAScheduleListType) {
  6726. int grammarID = 217;
  6727. int done = 0;
  6728. unsigned int iso1SAScheduleListType_SAScheduleTuple_currArrayIndex = 0;
  6729. while(!done) {
  6730. switch(grammarID) {
  6731. case 217:
  6732. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */
  6733. if (iso1SAScheduleListType_SAScheduleTuple_currArrayIndex < iso1SAScheduleListType->SAScheduleTuple.arrayLen ) {
  6734. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6735. if(errn == 0) {
  6736. errn = encode_iso1SAScheduleTupleType(stream, &iso1SAScheduleListType->SAScheduleTuple.array [iso1SAScheduleListType_SAScheduleTuple_currArrayIndex++]);
  6737. }
  6738. grammarID = 218;
  6739. } else {
  6740. errn = EXI_ERROR_UNKOWN_EVENT;
  6741. }
  6742. break;
  6743. case 218:
  6744. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */
  6745. if (iso1SAScheduleListType_SAScheduleTuple_currArrayIndex < iso1SAScheduleListType->SAScheduleTuple.arrayLen ) {
  6746. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  6747. if(errn == 0) {
  6748. errn = encode_iso1SAScheduleTupleType(stream, &iso1SAScheduleListType->SAScheduleTuple.array [iso1SAScheduleListType_SAScheduleTuple_currArrayIndex++]);
  6749. }
  6750. grammarID = 219;
  6751. } else if (1==1) {
  6752. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6753. if(errn == 0) {
  6754. done = 1;
  6755. }
  6756. grammarID = 4;
  6757. } else {
  6758. errn = EXI_ERROR_UNKOWN_EVENT;
  6759. }
  6760. break;
  6761. case 219:
  6762. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */
  6763. if (iso1SAScheduleListType_SAScheduleTuple_currArrayIndex < iso1SAScheduleListType->SAScheduleTuple.arrayLen ) {
  6764. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  6765. if(errn == 0) {
  6766. errn = encode_iso1SAScheduleTupleType(stream, &iso1SAScheduleListType->SAScheduleTuple.array [iso1SAScheduleListType_SAScheduleTuple_currArrayIndex++]);
  6767. }
  6768. grammarID = 3;
  6769. } else if (1==1) {
  6770. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  6771. if(errn == 0) {
  6772. done = 1;
  6773. }
  6774. grammarID = 4;
  6775. } else {
  6776. errn = EXI_ERROR_UNKOWN_EVENT;
  6777. }
  6778. break;
  6779. case 3:
  6780. /* Element[END_ELEMENT] */
  6781. if (1==1) {
  6782. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  6783. if(errn == 0) {
  6784. done = 1;
  6785. }
  6786. grammarID = 4;
  6787. } else {
  6788. errn = EXI_ERROR_UNKOWN_EVENT;
  6789. }
  6790. break;
  6791. default:
  6792. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6793. break;
  6794. }
  6795. if(errn) {
  6796. done = 1;
  6797. }
  6798. }
  6799. return errn;
  6800. }
  6801. /* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":BodyElement{0-1})', derivedBy='RESTRICTION'. */
  6802. static int encode_iso1BodyType(bitstream_t* stream, struct iso1BodyType* iso1BodyType) {
  6803. int grammarID = 220;
  6804. int done = 0;
  6805. while(!done) {
  6806. switch(grammarID) {
  6807. case 220:
  6808. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */
  6809. if ( iso1BodyType->AuthorizationReq_isUsed == 1u ) {
  6810. errn = encodeNBitUnsignedInteger(stream, 6, 0);
  6811. if(errn == 0) {
  6812. errn = encode_iso1AuthorizationReqType(stream, &iso1BodyType->AuthorizationReq );
  6813. }
  6814. grammarID = 3;
  6815. } else if ( iso1BodyType->AuthorizationRes_isUsed == 1u ) {
  6816. errn = encodeNBitUnsignedInteger(stream, 6, 1);
  6817. if(errn == 0) {
  6818. errn = encode_iso1AuthorizationResType(stream, &iso1BodyType->AuthorizationRes );
  6819. }
  6820. grammarID = 3;
  6821. } else if ( iso1BodyType->BodyElement_isUsed == 1u ) {
  6822. errn = encodeNBitUnsignedInteger(stream, 6, 2);
  6823. if(errn == 0) {
  6824. errn = encode_iso1BodyBaseType(stream, &iso1BodyType->BodyElement );
  6825. }
  6826. grammarID = 3;
  6827. } else if ( iso1BodyType->CableCheckReq_isUsed == 1u ) {
  6828. errn = encodeNBitUnsignedInteger(stream, 6, 3);
  6829. if(errn == 0) {
  6830. errn = encode_iso1CableCheckReqType(stream, &iso1BodyType->CableCheckReq );
  6831. }
  6832. grammarID = 3;
  6833. } else if ( iso1BodyType->CableCheckRes_isUsed == 1u ) {
  6834. errn = encodeNBitUnsignedInteger(stream, 6, 4);
  6835. if(errn == 0) {
  6836. errn = encode_iso1CableCheckResType(stream, &iso1BodyType->CableCheckRes );
  6837. }
  6838. grammarID = 3;
  6839. } else if ( iso1BodyType->CertificateInstallationReq_isUsed == 1u ) {
  6840. errn = encodeNBitUnsignedInteger(stream, 6, 5);
  6841. if(errn == 0) {
  6842. errn = encode_iso1CertificateInstallationReqType(stream, &iso1BodyType->CertificateInstallationReq );
  6843. }
  6844. grammarID = 3;
  6845. } else if ( iso1BodyType->CertificateInstallationRes_isUsed == 1u ) {
  6846. errn = encodeNBitUnsignedInteger(stream, 6, 6);
  6847. if(errn == 0) {
  6848. errn = encode_iso1CertificateInstallationResType(stream, &iso1BodyType->CertificateInstallationRes );
  6849. }
  6850. grammarID = 3;
  6851. } else if ( iso1BodyType->CertificateUpdateReq_isUsed == 1u ) {
  6852. errn = encodeNBitUnsignedInteger(stream, 6, 7);
  6853. if(errn == 0) {
  6854. errn = encode_iso1CertificateUpdateReqType(stream, &iso1BodyType->CertificateUpdateReq );
  6855. }
  6856. grammarID = 3;
  6857. } else if ( iso1BodyType->CertificateUpdateRes_isUsed == 1u ) {
  6858. errn = encodeNBitUnsignedInteger(stream, 6, 8);
  6859. if(errn == 0) {
  6860. errn = encode_iso1CertificateUpdateResType(stream, &iso1BodyType->CertificateUpdateRes );
  6861. }
  6862. grammarID = 3;
  6863. } else if ( iso1BodyType->ChargeParameterDiscoveryReq_isUsed == 1u ) {
  6864. errn = encodeNBitUnsignedInteger(stream, 6, 9);
  6865. if(errn == 0) {
  6866. errn = encode_iso1ChargeParameterDiscoveryReqType(stream, &iso1BodyType->ChargeParameterDiscoveryReq );
  6867. }
  6868. grammarID = 3;
  6869. } else if ( iso1BodyType->ChargeParameterDiscoveryRes_isUsed == 1u ) {
  6870. errn = encodeNBitUnsignedInteger(stream, 6, 10);
  6871. if(errn == 0) {
  6872. errn = encode_iso1ChargeParameterDiscoveryResType(stream, &iso1BodyType->ChargeParameterDiscoveryRes );
  6873. }
  6874. grammarID = 3;
  6875. } else if ( iso1BodyType->ChargingStatusReq_isUsed == 1u ) {
  6876. errn = encodeNBitUnsignedInteger(stream, 6, 11);
  6877. if(errn == 0) {
  6878. errn = encode_iso1ChargingStatusReqType(stream, &iso1BodyType->ChargingStatusReq );
  6879. }
  6880. grammarID = 3;
  6881. } else if ( iso1BodyType->ChargingStatusRes_isUsed == 1u ) {
  6882. errn = encodeNBitUnsignedInteger(stream, 6, 12);
  6883. if(errn == 0) {
  6884. errn = encode_iso1ChargingStatusResType(stream, &iso1BodyType->ChargingStatusRes );
  6885. }
  6886. grammarID = 3;
  6887. } else if ( iso1BodyType->CurrentDemandReq_isUsed == 1u ) {
  6888. errn = encodeNBitUnsignedInteger(stream, 6, 13);
  6889. if(errn == 0) {
  6890. errn = encode_iso1CurrentDemandReqType(stream, &iso1BodyType->CurrentDemandReq );
  6891. }
  6892. grammarID = 3;
  6893. } else if ( iso1BodyType->CurrentDemandRes_isUsed == 1u ) {
  6894. errn = encodeNBitUnsignedInteger(stream, 6, 14);
  6895. if(errn == 0) {
  6896. errn = encode_iso1CurrentDemandResType(stream, &iso1BodyType->CurrentDemandRes );
  6897. }
  6898. grammarID = 3;
  6899. } else if ( iso1BodyType->MeteringReceiptReq_isUsed == 1u ) {
  6900. errn = encodeNBitUnsignedInteger(stream, 6, 15);
  6901. if(errn == 0) {
  6902. errn = encode_iso1MeteringReceiptReqType(stream, &iso1BodyType->MeteringReceiptReq );
  6903. }
  6904. grammarID = 3;
  6905. } else if ( iso1BodyType->MeteringReceiptRes_isUsed == 1u ) {
  6906. errn = encodeNBitUnsignedInteger(stream, 6, 16);
  6907. if(errn == 0) {
  6908. errn = encode_iso1MeteringReceiptResType(stream, &iso1BodyType->MeteringReceiptRes );
  6909. }
  6910. grammarID = 3;
  6911. } else if ( iso1BodyType->PaymentDetailsReq_isUsed == 1u ) {
  6912. errn = encodeNBitUnsignedInteger(stream, 6, 17);
  6913. if(errn == 0) {
  6914. errn = encode_iso1PaymentDetailsReqType(stream, &iso1BodyType->PaymentDetailsReq );
  6915. }
  6916. grammarID = 3;
  6917. } else if ( iso1BodyType->PaymentDetailsRes_isUsed == 1u ) {
  6918. errn = encodeNBitUnsignedInteger(stream, 6, 18);
  6919. if(errn == 0) {
  6920. errn = encode_iso1PaymentDetailsResType(stream, &iso1BodyType->PaymentDetailsRes );
  6921. }
  6922. grammarID = 3;
  6923. } else if ( iso1BodyType->PaymentServiceSelectionReq_isUsed == 1u ) {
  6924. errn = encodeNBitUnsignedInteger(stream, 6, 19);
  6925. if(errn == 0) {
  6926. errn = encode_iso1PaymentServiceSelectionReqType(stream, &iso1BodyType->PaymentServiceSelectionReq );
  6927. }
  6928. grammarID = 3;
  6929. } else if ( iso1BodyType->PaymentServiceSelectionRes_isUsed == 1u ) {
  6930. errn = encodeNBitUnsignedInteger(stream, 6, 20);
  6931. if(errn == 0) {
  6932. errn = encode_iso1PaymentServiceSelectionResType(stream, &iso1BodyType->PaymentServiceSelectionRes );
  6933. }
  6934. grammarID = 3;
  6935. } else if ( iso1BodyType->PowerDeliveryReq_isUsed == 1u ) {
  6936. errn = encodeNBitUnsignedInteger(stream, 6, 21);
  6937. if(errn == 0) {
  6938. errn = encode_iso1PowerDeliveryReqType(stream, &iso1BodyType->PowerDeliveryReq );
  6939. }
  6940. grammarID = 3;
  6941. } else if ( iso1BodyType->PowerDeliveryRes_isUsed == 1u ) {
  6942. errn = encodeNBitUnsignedInteger(stream, 6, 22);
  6943. if(errn == 0) {
  6944. errn = encode_iso1PowerDeliveryResType(stream, &iso1BodyType->PowerDeliveryRes );
  6945. }
  6946. grammarID = 3;
  6947. } else if ( iso1BodyType->PreChargeReq_isUsed == 1u ) {
  6948. errn = encodeNBitUnsignedInteger(stream, 6, 23);
  6949. if(errn == 0) {
  6950. errn = encode_iso1PreChargeReqType(stream, &iso1BodyType->PreChargeReq );
  6951. }
  6952. grammarID = 3;
  6953. } else if ( iso1BodyType->PreChargeRes_isUsed == 1u ) {
  6954. errn = encodeNBitUnsignedInteger(stream, 6, 24);
  6955. if(errn == 0) {
  6956. errn = encode_iso1PreChargeResType(stream, &iso1BodyType->PreChargeRes );
  6957. }
  6958. grammarID = 3;
  6959. } else if ( iso1BodyType->ServiceDetailReq_isUsed == 1u ) {
  6960. errn = encodeNBitUnsignedInteger(stream, 6, 25);
  6961. if(errn == 0) {
  6962. errn = encode_iso1ServiceDetailReqType(stream, &iso1BodyType->ServiceDetailReq );
  6963. }
  6964. grammarID = 3;
  6965. } else if ( iso1BodyType->ServiceDetailRes_isUsed == 1u ) {
  6966. errn = encodeNBitUnsignedInteger(stream, 6, 26);
  6967. if(errn == 0) {
  6968. errn = encode_iso1ServiceDetailResType(stream, &iso1BodyType->ServiceDetailRes );
  6969. }
  6970. grammarID = 3;
  6971. } else if ( iso1BodyType->ServiceDiscoveryReq_isUsed == 1u ) {
  6972. errn = encodeNBitUnsignedInteger(stream, 6, 27);
  6973. if(errn == 0) {
  6974. errn = encode_iso1ServiceDiscoveryReqType(stream, &iso1BodyType->ServiceDiscoveryReq );
  6975. }
  6976. grammarID = 3;
  6977. } else if ( iso1BodyType->ServiceDiscoveryRes_isUsed == 1u ) {
  6978. errn = encodeNBitUnsignedInteger(stream, 6, 28);
  6979. if(errn == 0) {
  6980. errn = encode_iso1ServiceDiscoveryResType(stream, &iso1BodyType->ServiceDiscoveryRes );
  6981. }
  6982. grammarID = 3;
  6983. } else if ( iso1BodyType->SessionSetupReq_isUsed == 1u ) {
  6984. errn = encodeNBitUnsignedInteger(stream, 6, 29);
  6985. if(errn == 0) {
  6986. errn = encode_iso1SessionSetupReqType(stream, &iso1BodyType->SessionSetupReq );
  6987. }
  6988. grammarID = 3;
  6989. } else if ( iso1BodyType->SessionSetupRes_isUsed == 1u ) {
  6990. errn = encodeNBitUnsignedInteger(stream, 6, 30);
  6991. if(errn == 0) {
  6992. errn = encode_iso1SessionSetupResType(stream, &iso1BodyType->SessionSetupRes );
  6993. }
  6994. grammarID = 3;
  6995. } else if ( iso1BodyType->SessionStopReq_isUsed == 1u ) {
  6996. errn = encodeNBitUnsignedInteger(stream, 6, 31);
  6997. if(errn == 0) {
  6998. errn = encode_iso1SessionStopReqType(stream, &iso1BodyType->SessionStopReq );
  6999. }
  7000. grammarID = 3;
  7001. } else if ( iso1BodyType->SessionStopRes_isUsed == 1u ) {
  7002. errn = encodeNBitUnsignedInteger(stream, 6, 32);
  7003. if(errn == 0) {
  7004. errn = encode_iso1SessionStopResType(stream, &iso1BodyType->SessionStopRes );
  7005. }
  7006. grammarID = 3;
  7007. } else if ( iso1BodyType->WeldingDetectionReq_isUsed == 1u ) {
  7008. errn = encodeNBitUnsignedInteger(stream, 6, 33);
  7009. if(errn == 0) {
  7010. errn = encode_iso1WeldingDetectionReqType(stream, &iso1BodyType->WeldingDetectionReq );
  7011. }
  7012. grammarID = 3;
  7013. } else if ( iso1BodyType->WeldingDetectionRes_isUsed == 1u ) {
  7014. errn = encodeNBitUnsignedInteger(stream, 6, 34);
  7015. if(errn == 0) {
  7016. errn = encode_iso1WeldingDetectionResType(stream, &iso1BodyType->WeldingDetectionRes );
  7017. }
  7018. grammarID = 3;
  7019. } else if (1==1) {
  7020. errn = encodeNBitUnsignedInteger(stream, 6, 35);
  7021. if(errn == 0) {
  7022. done = 1;
  7023. }
  7024. grammarID = 4;
  7025. } else {
  7026. errn = EXI_ERROR_UNKOWN_EVENT;
  7027. }
  7028. break;
  7029. case 3:
  7030. /* Element[END_ELEMENT] */
  7031. if (1==1) {
  7032. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7033. if(errn == 0) {
  7034. done = 1;
  7035. }
  7036. grammarID = 4;
  7037. } else {
  7038. errn = EXI_ERROR_UNKOWN_EVENT;
  7039. }
  7040. break;
  7041. default:
  7042. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7043. break;
  7044. }
  7045. if(errn) {
  7046. done = 1;
  7047. }
  7048. }
  7049. return errn;
  7050. }
  7051. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargingProfileType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ProfileEntry{1-24})', derivedBy='RESTRICTION'. */
  7052. static int encode_iso1ChargingProfileType(bitstream_t* stream, struct iso1ChargingProfileType* iso1ChargingProfileType) {
  7053. int grammarID = 221;
  7054. int done = 0;
  7055. unsigned int iso1ChargingProfileType_ProfileEntry_currArrayIndex = 0;
  7056. while(!done) {
  7057. switch(grammarID) {
  7058. case 221:
  7059. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */
  7060. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7061. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7062. if(errn == 0) {
  7063. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7064. }
  7065. grammarID = 222;
  7066. } else {
  7067. errn = EXI_ERROR_UNKOWN_EVENT;
  7068. }
  7069. break;
  7070. case 222:
  7071. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7072. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7073. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7074. if(errn == 0) {
  7075. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7076. }
  7077. grammarID = 223;
  7078. } else if (1==1) {
  7079. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7080. if(errn == 0) {
  7081. done = 1;
  7082. }
  7083. grammarID = 4;
  7084. } else {
  7085. errn = EXI_ERROR_UNKOWN_EVENT;
  7086. }
  7087. break;
  7088. case 223:
  7089. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7090. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7091. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7092. if(errn == 0) {
  7093. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7094. }
  7095. grammarID = 224;
  7096. } else if (1==1) {
  7097. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7098. if(errn == 0) {
  7099. done = 1;
  7100. }
  7101. grammarID = 4;
  7102. } else {
  7103. errn = EXI_ERROR_UNKOWN_EVENT;
  7104. }
  7105. break;
  7106. case 224:
  7107. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7108. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7109. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7110. if(errn == 0) {
  7111. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7112. }
  7113. grammarID = 225;
  7114. } else if (1==1) {
  7115. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7116. if(errn == 0) {
  7117. done = 1;
  7118. }
  7119. grammarID = 4;
  7120. } else {
  7121. errn = EXI_ERROR_UNKOWN_EVENT;
  7122. }
  7123. break;
  7124. case 225:
  7125. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7126. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7127. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7128. if(errn == 0) {
  7129. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7130. }
  7131. grammarID = 226;
  7132. } else if (1==1) {
  7133. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7134. if(errn == 0) {
  7135. done = 1;
  7136. }
  7137. grammarID = 4;
  7138. } else {
  7139. errn = EXI_ERROR_UNKOWN_EVENT;
  7140. }
  7141. break;
  7142. case 226:
  7143. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7144. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7145. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7146. if(errn == 0) {
  7147. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7148. }
  7149. grammarID = 227;
  7150. } else if (1==1) {
  7151. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7152. if(errn == 0) {
  7153. done = 1;
  7154. }
  7155. grammarID = 4;
  7156. } else {
  7157. errn = EXI_ERROR_UNKOWN_EVENT;
  7158. }
  7159. break;
  7160. case 227:
  7161. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7162. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7163. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7164. if(errn == 0) {
  7165. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7166. }
  7167. grammarID = 228;
  7168. } else if (1==1) {
  7169. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7170. if(errn == 0) {
  7171. done = 1;
  7172. }
  7173. grammarID = 4;
  7174. } else {
  7175. errn = EXI_ERROR_UNKOWN_EVENT;
  7176. }
  7177. break;
  7178. case 228:
  7179. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7180. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7181. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7182. if(errn == 0) {
  7183. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7184. }
  7185. grammarID = 229;
  7186. } else if (1==1) {
  7187. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7188. if(errn == 0) {
  7189. done = 1;
  7190. }
  7191. grammarID = 4;
  7192. } else {
  7193. errn = EXI_ERROR_UNKOWN_EVENT;
  7194. }
  7195. break;
  7196. case 229:
  7197. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7198. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7199. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7200. if(errn == 0) {
  7201. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7202. }
  7203. grammarID = 230;
  7204. } else if (1==1) {
  7205. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7206. if(errn == 0) {
  7207. done = 1;
  7208. }
  7209. grammarID = 4;
  7210. } else {
  7211. errn = EXI_ERROR_UNKOWN_EVENT;
  7212. }
  7213. break;
  7214. case 230:
  7215. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7216. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7217. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7218. if(errn == 0) {
  7219. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7220. }
  7221. grammarID = 231;
  7222. } else if (1==1) {
  7223. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7224. if(errn == 0) {
  7225. done = 1;
  7226. }
  7227. grammarID = 4;
  7228. } else {
  7229. errn = EXI_ERROR_UNKOWN_EVENT;
  7230. }
  7231. break;
  7232. case 231:
  7233. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7234. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7235. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7236. if(errn == 0) {
  7237. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7238. }
  7239. grammarID = 232;
  7240. } else if (1==1) {
  7241. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7242. if(errn == 0) {
  7243. done = 1;
  7244. }
  7245. grammarID = 4;
  7246. } else {
  7247. errn = EXI_ERROR_UNKOWN_EVENT;
  7248. }
  7249. break;
  7250. case 232:
  7251. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7252. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7253. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7254. if(errn == 0) {
  7255. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7256. }
  7257. grammarID = 233;
  7258. } else if (1==1) {
  7259. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7260. if(errn == 0) {
  7261. done = 1;
  7262. }
  7263. grammarID = 4;
  7264. } else {
  7265. errn = EXI_ERROR_UNKOWN_EVENT;
  7266. }
  7267. break;
  7268. case 233:
  7269. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7270. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7271. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7272. if(errn == 0) {
  7273. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7274. }
  7275. grammarID = 234;
  7276. } else if (1==1) {
  7277. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7278. if(errn == 0) {
  7279. done = 1;
  7280. }
  7281. grammarID = 4;
  7282. } else {
  7283. errn = EXI_ERROR_UNKOWN_EVENT;
  7284. }
  7285. break;
  7286. case 234:
  7287. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7288. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7289. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7290. if(errn == 0) {
  7291. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7292. }
  7293. grammarID = 235;
  7294. } else if (1==1) {
  7295. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7296. if(errn == 0) {
  7297. done = 1;
  7298. }
  7299. grammarID = 4;
  7300. } else {
  7301. errn = EXI_ERROR_UNKOWN_EVENT;
  7302. }
  7303. break;
  7304. case 235:
  7305. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7306. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7307. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7308. if(errn == 0) {
  7309. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7310. }
  7311. grammarID = 236;
  7312. } else if (1==1) {
  7313. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7314. if(errn == 0) {
  7315. done = 1;
  7316. }
  7317. grammarID = 4;
  7318. } else {
  7319. errn = EXI_ERROR_UNKOWN_EVENT;
  7320. }
  7321. break;
  7322. case 236:
  7323. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7324. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7325. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7326. if(errn == 0) {
  7327. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7328. }
  7329. grammarID = 237;
  7330. } else if (1==1) {
  7331. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7332. if(errn == 0) {
  7333. done = 1;
  7334. }
  7335. grammarID = 4;
  7336. } else {
  7337. errn = EXI_ERROR_UNKOWN_EVENT;
  7338. }
  7339. break;
  7340. case 237:
  7341. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7342. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7343. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7344. if(errn == 0) {
  7345. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7346. }
  7347. grammarID = 238;
  7348. } else if (1==1) {
  7349. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7350. if(errn == 0) {
  7351. done = 1;
  7352. }
  7353. grammarID = 4;
  7354. } else {
  7355. errn = EXI_ERROR_UNKOWN_EVENT;
  7356. }
  7357. break;
  7358. case 238:
  7359. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7360. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7361. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7362. if(errn == 0) {
  7363. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7364. }
  7365. grammarID = 239;
  7366. } else if (1==1) {
  7367. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7368. if(errn == 0) {
  7369. done = 1;
  7370. }
  7371. grammarID = 4;
  7372. } else {
  7373. errn = EXI_ERROR_UNKOWN_EVENT;
  7374. }
  7375. break;
  7376. case 239:
  7377. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7378. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7379. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7380. if(errn == 0) {
  7381. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7382. }
  7383. grammarID = 240;
  7384. } else if (1==1) {
  7385. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7386. if(errn == 0) {
  7387. done = 1;
  7388. }
  7389. grammarID = 4;
  7390. } else {
  7391. errn = EXI_ERROR_UNKOWN_EVENT;
  7392. }
  7393. break;
  7394. case 240:
  7395. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7396. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7397. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7398. if(errn == 0) {
  7399. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7400. }
  7401. grammarID = 241;
  7402. } else if (1==1) {
  7403. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7404. if(errn == 0) {
  7405. done = 1;
  7406. }
  7407. grammarID = 4;
  7408. } else {
  7409. errn = EXI_ERROR_UNKOWN_EVENT;
  7410. }
  7411. break;
  7412. case 241:
  7413. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7414. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7415. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7416. if(errn == 0) {
  7417. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7418. }
  7419. grammarID = 242;
  7420. } else if (1==1) {
  7421. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7422. if(errn == 0) {
  7423. done = 1;
  7424. }
  7425. grammarID = 4;
  7426. } else {
  7427. errn = EXI_ERROR_UNKOWN_EVENT;
  7428. }
  7429. break;
  7430. case 242:
  7431. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7432. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7433. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7434. if(errn == 0) {
  7435. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7436. }
  7437. grammarID = 243;
  7438. } else if (1==1) {
  7439. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7440. if(errn == 0) {
  7441. done = 1;
  7442. }
  7443. grammarID = 4;
  7444. } else {
  7445. errn = EXI_ERROR_UNKOWN_EVENT;
  7446. }
  7447. break;
  7448. case 243:
  7449. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7450. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7451. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7452. if(errn == 0) {
  7453. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7454. }
  7455. grammarID = 244;
  7456. } else if (1==1) {
  7457. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7458. if(errn == 0) {
  7459. done = 1;
  7460. }
  7461. grammarID = 4;
  7462. } else {
  7463. errn = EXI_ERROR_UNKOWN_EVENT;
  7464. }
  7465. break;
  7466. case 244:
  7467. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  7468. if (iso1ChargingProfileType_ProfileEntry_currArrayIndex < iso1ChargingProfileType->ProfileEntry.arrayLen ) {
  7469. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7470. if(errn == 0) {
  7471. errn = encode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array [iso1ChargingProfileType_ProfileEntry_currArrayIndex++]);
  7472. }
  7473. grammarID = 3;
  7474. } else if (1==1) {
  7475. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7476. if(errn == 0) {
  7477. done = 1;
  7478. }
  7479. grammarID = 4;
  7480. } else {
  7481. errn = EXI_ERROR_UNKOWN_EVENT;
  7482. }
  7483. break;
  7484. case 3:
  7485. /* Element[END_ELEMENT] */
  7486. if (1==1) {
  7487. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7488. if(errn == 0) {
  7489. done = 1;
  7490. }
  7491. grammarID = 4;
  7492. } else {
  7493. errn = EXI_ERROR_UNKOWN_EVENT;
  7494. }
  7495. break;
  7496. default:
  7497. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7498. break;
  7499. }
  7500. if(errn) {
  7501. done = 1;
  7502. }
  7503. }
  7504. return errn;
  7505. }
  7506. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}', derivedBy='RESTRICTION'. */
  7507. static int encode_iso1TransformType(bitstream_t* stream, struct iso1TransformType* iso1TransformType) {
  7508. int grammarID = 245;
  7509. int done = 0;
  7510. int wcDone = 0;
  7511. unsigned int iso1TransformType_XPath_currArrayIndex = 0;
  7512. while(!done) {
  7513. switch(grammarID) {
  7514. case 245:
  7515. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  7516. if (1==1) {
  7517. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7518. if(errn == 0) {
  7519. /* encode string as string table miss (+2 len)*/
  7520. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1TransformType->Algorithm.charactersLen + 2));
  7521. if (errn == 0) {
  7522. errn = encodeCharacters(stream, iso1TransformType->Algorithm.characters, iso1TransformType->Algorithm.charactersLen);
  7523. }
  7524. }
  7525. grammarID = 246;
  7526. } else {
  7527. errn = EXI_ERROR_UNKOWN_EVENT;
  7528. }
  7529. break;
  7530. case 246:
  7531. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  7532. if (iso1TransformType_XPath_currArrayIndex < iso1TransformType->XPath.arrayLen ) {
  7533. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  7534. if(errn == 0) {
  7535. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  7536. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7537. if(errn == 0) {
  7538. /* encode string as string table miss (+2 len)*/
  7539. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1TransformType->XPath.array[iso1TransformType_XPath_currArrayIndex].charactersLen + 2));
  7540. if (errn == 0) {
  7541. errn = encodeCharacters(stream, iso1TransformType->XPath.array[iso1TransformType_XPath_currArrayIndex].characters, iso1TransformType->XPath.array[iso1TransformType_XPath_currArrayIndex].charactersLen);
  7542. iso1TransformType_XPath_currArrayIndex++;
  7543. }
  7544. /* valid EE */
  7545. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7546. }
  7547. }
  7548. grammarID = 247;
  7549. } else if (1==0) {
  7550. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7551. grammarID = 247;
  7552. } else if ( iso1TransformType->ANY_isUsed == 0u || wcDone ) {
  7553. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  7554. if(errn == 0) {
  7555. done = 1;
  7556. }
  7557. grammarID = 4;
  7558. } else if ( iso1TransformType->ANY_isUsed == 1u ) {
  7559. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  7560. if(errn == 0) {
  7561. /* encode string as string table miss (+2 len)*/
  7562. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1TransformType->ANY.charactersLen + 2));
  7563. if (errn == 0) {
  7564. errn = encodeCharacters(stream, iso1TransformType->ANY.characters, iso1TransformType->ANY.charactersLen);
  7565. }
  7566. }
  7567. wcDone = 1;
  7568. grammarID = 247;
  7569. } else {
  7570. errn = EXI_ERROR_UNKOWN_EVENT;
  7571. }
  7572. break;
  7573. case 247:
  7574. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  7575. if (iso1TransformType_XPath_currArrayIndex < iso1TransformType->XPath.arrayLen ) {
  7576. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  7577. if(errn == 0) {
  7578. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  7579. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7580. if(errn == 0) {
  7581. /* encode string as string table miss (+2 len)*/
  7582. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1TransformType->XPath.array[iso1TransformType_XPath_currArrayIndex].charactersLen + 2));
  7583. if (errn == 0) {
  7584. errn = encodeCharacters(stream, iso1TransformType->XPath.array[iso1TransformType_XPath_currArrayIndex].characters, iso1TransformType->XPath.array[iso1TransformType_XPath_currArrayIndex].charactersLen);
  7585. iso1TransformType_XPath_currArrayIndex++;
  7586. }
  7587. /* valid EE */
  7588. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7589. }
  7590. }
  7591. grammarID = 247;
  7592. } else if (1==0) {
  7593. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7594. grammarID = 247;
  7595. } else if ( iso1TransformType->ANY_isUsed == 0u || wcDone ) {
  7596. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  7597. if(errn == 0) {
  7598. done = 1;
  7599. }
  7600. grammarID = 4;
  7601. } else if ( iso1TransformType->ANY_isUsed == 1u ) {
  7602. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  7603. if(errn == 0) {
  7604. /* encode string as string table miss (+2 len)*/
  7605. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1TransformType->ANY.charactersLen + 2));
  7606. if (errn == 0) {
  7607. errn = encodeCharacters(stream, iso1TransformType->ANY.characters, iso1TransformType->ANY.charactersLen);
  7608. }
  7609. }
  7610. wcDone = 1;
  7611. grammarID = 247;
  7612. } else {
  7613. errn = EXI_ERROR_UNKOWN_EVENT;
  7614. }
  7615. break;
  7616. default:
  7617. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7618. break;
  7619. }
  7620. if(errn) {
  7621. done = 1;
  7622. }
  7623. }
  7624. return errn;
  7625. }
  7626. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleTupleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariff{0-1})', derivedBy='RESTRICTION'. */
  7627. static int encode_iso1SAScheduleTupleType(bitstream_t* stream, struct iso1SAScheduleTupleType* iso1SAScheduleTupleType) {
  7628. int grammarID = 248;
  7629. int done = 0;
  7630. while(!done) {
  7631. switch(grammarID) {
  7632. case 248:
  7633. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */
  7634. if ( 1 == 1 ) {
  7635. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7636. if(errn == 0) {
  7637. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  7638. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7639. if(errn == 0) {
  7640. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1SAScheduleTupleType->SAScheduleTupleID - 1));
  7641. /* valid EE */
  7642. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7643. }
  7644. }
  7645. grammarID = 249;
  7646. } else {
  7647. errn = EXI_ERROR_UNKOWN_EVENT;
  7648. }
  7649. break;
  7650. case 249:
  7651. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */
  7652. if ( 1 == 1 ) {
  7653. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7654. if(errn == 0) {
  7655. errn = encode_iso1PMaxScheduleType(stream, &iso1SAScheduleTupleType->PMaxSchedule );
  7656. }
  7657. grammarID = 250;
  7658. } else {
  7659. errn = EXI_ERROR_UNKOWN_EVENT;
  7660. }
  7661. break;
  7662. case 250:
  7663. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */
  7664. if ( iso1SAScheduleTupleType->SalesTariff_isUsed == 1u ) {
  7665. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7666. if(errn == 0) {
  7667. errn = encode_iso1SalesTariffType(stream, &iso1SAScheduleTupleType->SalesTariff );
  7668. }
  7669. grammarID = 3;
  7670. } else if (1==1) {
  7671. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7672. if(errn == 0) {
  7673. done = 1;
  7674. }
  7675. grammarID = 4;
  7676. } else {
  7677. errn = EXI_ERROR_UNKOWN_EVENT;
  7678. }
  7679. break;
  7680. case 3:
  7681. /* Element[END_ELEMENT] */
  7682. if (1==1) {
  7683. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7684. if(errn == 0) {
  7685. done = 1;
  7686. }
  7687. grammarID = 4;
  7688. } else {
  7689. errn = EXI_ERROR_UNKOWN_EVENT;
  7690. }
  7691. break;
  7692. default:
  7693. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7694. break;
  7695. }
  7696. if(errn) {
  7697. done = 1;
  7698. }
  7699. }
  7700. return errn;
  7701. }
  7702. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":EAmount,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2013:MsgDataTypes":EVMinCurrent))', derivedBy='EXTENSION'. */
  7703. static int encode_iso1AC_EVChargeParameterType(bitstream_t* stream, struct iso1AC_EVChargeParameterType* iso1AC_EVChargeParameterType) {
  7704. int grammarID = 251;
  7705. int done = 0;
  7706. while(!done) {
  7707. switch(grammarID) {
  7708. case 251:
  7709. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */
  7710. if ( iso1AC_EVChargeParameterType->DepartureTime_isUsed == 1u ) {
  7711. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  7712. if(errn == 0) {
  7713. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  7714. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7715. if(errn == 0) {
  7716. errn = encodeUnsignedInteger32(stream, iso1AC_EVChargeParameterType->DepartureTime);
  7717. /* valid EE */
  7718. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7719. }
  7720. }
  7721. grammarID = 252;
  7722. } else if ( 1 == 1 ) {
  7723. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  7724. if(errn == 0) {
  7725. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EAmount );
  7726. }
  7727. grammarID = 253;
  7728. } else {
  7729. errn = EXI_ERROR_UNKOWN_EVENT;
  7730. }
  7731. break;
  7732. case 252:
  7733. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */
  7734. if ( 1 == 1 ) {
  7735. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7736. if(errn == 0) {
  7737. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EAmount );
  7738. }
  7739. grammarID = 253;
  7740. } else {
  7741. errn = EXI_ERROR_UNKOWN_EVENT;
  7742. }
  7743. break;
  7744. case 253:
  7745. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */
  7746. if ( 1 == 1 ) {
  7747. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7748. if(errn == 0) {
  7749. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EVMaxVoltage );
  7750. }
  7751. grammarID = 254;
  7752. } else {
  7753. errn = EXI_ERROR_UNKOWN_EVENT;
  7754. }
  7755. break;
  7756. case 254:
  7757. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */
  7758. if ( 1 == 1 ) {
  7759. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7760. if(errn == 0) {
  7761. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EVMaxCurrent );
  7762. }
  7763. grammarID = 255;
  7764. } else {
  7765. errn = EXI_ERROR_UNKOWN_EVENT;
  7766. }
  7767. break;
  7768. case 255:
  7769. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */
  7770. if ( 1 == 1 ) {
  7771. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7772. if(errn == 0) {
  7773. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EVMinCurrent );
  7774. }
  7775. grammarID = 3;
  7776. } else {
  7777. errn = EXI_ERROR_UNKOWN_EVENT;
  7778. }
  7779. break;
  7780. case 3:
  7781. /* Element[END_ELEMENT] */
  7782. if (1==1) {
  7783. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7784. if(errn == 0) {
  7785. done = 1;
  7786. }
  7787. grammarID = 4;
  7788. } else {
  7789. errn = EXI_ERROR_UNKOWN_EVENT;
  7790. }
  7791. break;
  7792. default:
  7793. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7794. break;
  7795. }
  7796. if(errn) {
  7797. done = 1;
  7798. }
  7799. }
  7800. return errn;
  7801. }
  7802. /* Complex type name='urn:iso:15118:2:2013:MsgDef,#AnonType_V2G_Message', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDef":Header,"urn:iso:15118:2:2013:MsgDef":Body)', derivedBy='RESTRICTION'. */
  7803. static int encode_iso1AnonType_V2G_Message(bitstream_t* stream, struct iso1AnonType_V2G_Message* iso1AnonType_V2G_Message) {
  7804. int grammarID = 256;
  7805. int done = 0;
  7806. while(!done) {
  7807. switch(grammarID) {
  7808. case 256:
  7809. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */
  7810. if ( 1 == 1 ) {
  7811. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7812. if(errn == 0) {
  7813. errn = encode_iso1MessageHeaderType(stream, &iso1AnonType_V2G_Message->Header );
  7814. }
  7815. grammarID = 257;
  7816. } else {
  7817. errn = EXI_ERROR_UNKOWN_EVENT;
  7818. }
  7819. break;
  7820. case 257:
  7821. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */
  7822. if ( 1 == 1 ) {
  7823. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7824. if(errn == 0) {
  7825. errn = encode_iso1BodyType(stream, &iso1AnonType_V2G_Message->Body );
  7826. }
  7827. grammarID = 3;
  7828. } else {
  7829. errn = EXI_ERROR_UNKOWN_EVENT;
  7830. }
  7831. break;
  7832. case 3:
  7833. /* Element[END_ELEMENT] */
  7834. if (1==1) {
  7835. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7836. if(errn == 0) {
  7837. done = 1;
  7838. }
  7839. grammarID = 4;
  7840. } else {
  7841. errn = EXI_ERROR_UNKOWN_EVENT;
  7842. }
  7843. break;
  7844. default:
  7845. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7846. break;
  7847. }
  7848. if(errn) {
  7849. done = 1;
  7850. }
  7851. }
  7852. return errn;
  7853. }
  7854. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":GenChallenge,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp)', derivedBy='EXTENSION'. */
  7855. static int encode_iso1PaymentDetailsResType(bitstream_t* stream, struct iso1PaymentDetailsResType* iso1PaymentDetailsResType) {
  7856. int grammarID = 258;
  7857. int done = 0;
  7858. while(!done) {
  7859. switch(grammarID) {
  7860. case 258:
  7861. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  7862. if ( 1 == 1 ) {
  7863. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7864. if(errn == 0) {
  7865. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  7866. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7867. if(errn == 0) {
  7868. errn = encodeNBitUnsignedInteger(stream, 5, iso1PaymentDetailsResType->ResponseCode);
  7869. /* valid EE */
  7870. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7871. }
  7872. }
  7873. grammarID = 259;
  7874. } else {
  7875. errn = EXI_ERROR_UNKOWN_EVENT;
  7876. }
  7877. break;
  7878. case 259:
  7879. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */
  7880. if ( 1 == 1 ) {
  7881. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7882. if(errn == 0) {
  7883. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  7884. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7885. if(errn == 0) {
  7886. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1PaymentDetailsResType->GenChallenge.bytesLen));
  7887. if (errn == 0) {
  7888. errn = encodeBytes(stream, iso1PaymentDetailsResType->GenChallenge.bytes, iso1PaymentDetailsResType->GenChallenge.bytesLen);
  7889. }
  7890. /* valid EE */
  7891. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7892. }
  7893. }
  7894. grammarID = 260;
  7895. } else {
  7896. errn = EXI_ERROR_UNKOWN_EVENT;
  7897. }
  7898. break;
  7899. case 260:
  7900. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */
  7901. if ( 1 == 1 ) {
  7902. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7903. if(errn == 0) {
  7904. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  7905. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7906. if(errn == 0) {
  7907. errn = encodeInteger64(stream, iso1PaymentDetailsResType->EVSETimeStamp);
  7908. /* valid EE */
  7909. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7910. }
  7911. }
  7912. grammarID = 3;
  7913. } else {
  7914. errn = EXI_ERROR_UNKOWN_EVENT;
  7915. }
  7916. break;
  7917. case 3:
  7918. /* Element[END_ELEMENT] */
  7919. if (1==1) {
  7920. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7921. if(errn == 0) {
  7922. done = 1;
  7923. }
  7924. grammarID = 4;
  7925. } else {
  7926. errn = EXI_ERROR_UNKOWN_EVENT;
  7927. }
  7928. break;
  7929. default:
  7930. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7931. break;
  7932. }
  7933. if(errn) {
  7934. done = 1;
  7935. }
  7936. }
  7937. return errn;
  7938. }
  7939. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType', base type name='privateKeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */
  7940. static int encode_iso1ContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct iso1ContractSignatureEncryptedPrivateKeyType* iso1ContractSignatureEncryptedPrivateKeyType) {
  7941. int grammarID = 23;
  7942. int done = 0;
  7943. while(!done) {
  7944. switch(grammarID) {
  7945. case 23:
  7946. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */
  7947. if (1==1) {
  7948. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7949. if(errn == 0) {
  7950. /* encode string as string table miss (+2 len)*/
  7951. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen + 2));
  7952. if (errn == 0) {
  7953. errn = encodeCharacters(stream, iso1ContractSignatureEncryptedPrivateKeyType->Id.characters, iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen);
  7954. }
  7955. }
  7956. grammarID = 24;
  7957. } else {
  7958. errn = EXI_ERROR_UNKOWN_EVENT;
  7959. }
  7960. break;
  7961. case 24:
  7962. /* StartTag[CHARACTERS[BINARY_BASE64]] */
  7963. if (1==1) {
  7964. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7965. if(errn == 0) {
  7966. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen));
  7967. if (errn == 0) {
  7968. errn = encodeBytes(stream, iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytes, iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen);
  7969. }
  7970. }
  7971. grammarID = 3;
  7972. } else {
  7973. errn = EXI_ERROR_UNKOWN_EVENT;
  7974. }
  7975. break;
  7976. case 3:
  7977. /* Element[END_ELEMENT] */
  7978. if (1==1) {
  7979. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  7980. if(errn == 0) {
  7981. done = 1;
  7982. }
  7983. grammarID = 4;
  7984. } else {
  7985. errn = EXI_ERROR_UNKOWN_EVENT;
  7986. }
  7987. break;
  7988. default:
  7989. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7990. break;
  7991. }
  7992. if(errn) {
  7993. done = 1;
  7994. }
  7995. }
  7996. return errn;
  7997. }
  7998. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":PMax))', derivedBy='EXTENSION'. */
  7999. static int encode_iso1PMaxScheduleEntryType(bitstream_t* stream, struct iso1PMaxScheduleEntryType* iso1PMaxScheduleEntryType) {
  8000. int grammarID = 261;
  8001. int done = 0;
  8002. while(!done) {
  8003. switch(grammarID) {
  8004. case 261:
  8005. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */
  8006. if ( iso1PMaxScheduleEntryType->RelativeTimeInterval_isUsed == 1u ) {
  8007. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8008. if(errn == 0) {
  8009. errn = encode_iso1RelativeTimeIntervalType(stream, &iso1PMaxScheduleEntryType->RelativeTimeInterval );
  8010. }
  8011. grammarID = 262;
  8012. } else if ( iso1PMaxScheduleEntryType->TimeInterval_isUsed == 1u ) {
  8013. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8014. if(errn == 0) {
  8015. errn = encode_iso1IntervalType(stream, &iso1PMaxScheduleEntryType->TimeInterval );
  8016. }
  8017. grammarID = 262;
  8018. } else {
  8019. errn = EXI_ERROR_UNKOWN_EVENT;
  8020. }
  8021. break;
  8022. case 262:
  8023. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */
  8024. if ( 1 == 1 ) {
  8025. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8026. if(errn == 0) {
  8027. errn = encode_iso1PhysicalValueType(stream, &iso1PMaxScheduleEntryType->PMax );
  8028. }
  8029. grammarID = 3;
  8030. } else {
  8031. errn = EXI_ERROR_UNKOWN_EVENT;
  8032. }
  8033. break;
  8034. case 3:
  8035. /* Element[END_ELEMENT] */
  8036. if (1==1) {
  8037. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8038. if(errn == 0) {
  8039. done = 1;
  8040. }
  8041. grammarID = 4;
  8042. } else {
  8043. errn = EXI_ERROR_UNKOWN_EVENT;
  8044. }
  8045. break;
  8046. default:
  8047. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8048. break;
  8049. }
  8050. if(errn) {
  8051. done = 1;
  8052. }
  8053. }
  8054. return errn;
  8055. }
  8056. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}', derivedBy='RESTRICTION'. */
  8057. static int encode_iso1SPKIDataType(bitstream_t* stream, struct iso1SPKIDataType* iso1SPKIDataType) {
  8058. int grammarID = 263;
  8059. int done = 0;
  8060. int wcDone = 0;
  8061. unsigned int iso1SPKIDataType_SPKISexp_currArrayIndex = 0;
  8062. while(!done) {
  8063. switch(grammarID) {
  8064. case 263:
  8065. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */
  8066. if (iso1SPKIDataType_SPKISexp_currArrayIndex < iso1SPKIDataType->SPKISexp.arrayLen ) {
  8067. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8068. if(errn == 0) {
  8069. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  8070. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8071. if(errn == 0) {
  8072. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytesLen));
  8073. if (errn == 0) {
  8074. errn = encodeBytes(stream, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytes, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytesLen);
  8075. iso1SPKIDataType_SPKISexp_currArrayIndex++;
  8076. }
  8077. /* valid EE */
  8078. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8079. }
  8080. }
  8081. grammarID = 264;
  8082. } else {
  8083. errn = EXI_ERROR_UNKOWN_EVENT;
  8084. }
  8085. break;
  8086. case 264:
  8087. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */
  8088. if (iso1SPKIDataType_SPKISexp_currArrayIndex < iso1SPKIDataType->SPKISexp.arrayLen ) {
  8089. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8090. if(errn == 0) {
  8091. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  8092. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8093. if(errn == 0) {
  8094. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytesLen));
  8095. if (errn == 0) {
  8096. errn = encodeBytes(stream, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytes, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytesLen);
  8097. iso1SPKIDataType_SPKISexp_currArrayIndex++;
  8098. }
  8099. /* valid EE */
  8100. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8101. }
  8102. }
  8103. grammarID = 264;
  8104. } else if (1==0) {
  8105. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8106. grammarID = 265;
  8107. } else if ( iso1SPKIDataType->ANY_isUsed == 0u || wcDone ) {
  8108. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  8109. if(errn == 0) {
  8110. done = 1;
  8111. }
  8112. grammarID = 4;
  8113. } else {
  8114. errn = EXI_ERROR_UNKOWN_EVENT;
  8115. }
  8116. break;
  8117. case 265:
  8118. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */
  8119. if (iso1SPKIDataType_SPKISexp_currArrayIndex < iso1SPKIDataType->SPKISexp.arrayLen ) {
  8120. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8121. if(errn == 0) {
  8122. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  8123. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8124. if(errn == 0) {
  8125. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytesLen));
  8126. if (errn == 0) {
  8127. errn = encodeBytes(stream, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytes, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType_SPKISexp_currArrayIndex].bytesLen);
  8128. iso1SPKIDataType_SPKISexp_currArrayIndex++;
  8129. }
  8130. /* valid EE */
  8131. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8132. }
  8133. }
  8134. grammarID = 264;
  8135. } else if ( iso1SPKIDataType->ANY_isUsed == 0u || wcDone ) {
  8136. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8137. if(errn == 0) {
  8138. done = 1;
  8139. }
  8140. grammarID = 4;
  8141. } else {
  8142. errn = EXI_ERROR_UNKOWN_EVENT;
  8143. }
  8144. break;
  8145. default:
  8146. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8147. break;
  8148. }
  8149. if(errn) {
  8150. done = 1;
  8151. }
  8152. }
  8153. return errn;
  8154. }
  8155. /* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */
  8156. static int encode_iso1MeteringReceiptResType(bitstream_t* stream, struct iso1MeteringReceiptResType* iso1MeteringReceiptResType) {
  8157. int grammarID = 93;
  8158. int done = 0;
  8159. while(!done) {
  8160. switch(grammarID) {
  8161. case 93:
  8162. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  8163. if ( 1 == 1 ) {
  8164. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8165. if(errn == 0) {
  8166. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  8167. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8168. if(errn == 0) {
  8169. errn = encodeNBitUnsignedInteger(stream, 5, iso1MeteringReceiptResType->ResponseCode);
  8170. /* valid EE */
  8171. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8172. }
  8173. }
  8174. grammarID = 94;
  8175. } else {
  8176. errn = EXI_ERROR_UNKOWN_EVENT;
  8177. }
  8178. break;
  8179. case 94:
  8180. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */
  8181. if ( iso1MeteringReceiptResType->AC_EVSEStatus_isUsed == 1u ) {
  8182. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8183. if(errn == 0) {
  8184. errn = encode_iso1AC_EVSEStatusType(stream, &iso1MeteringReceiptResType->AC_EVSEStatus );
  8185. }
  8186. grammarID = 3;
  8187. } else if ( iso1MeteringReceiptResType->DC_EVSEStatus_isUsed == 1u ) {
  8188. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8189. if(errn == 0) {
  8190. errn = encode_iso1DC_EVSEStatusType(stream, &iso1MeteringReceiptResType->DC_EVSEStatus );
  8191. }
  8192. grammarID = 3;
  8193. } else if ( iso1MeteringReceiptResType->EVSEStatus_isUsed == 1u ) {
  8194. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  8195. if(errn == 0) {
  8196. errn = encode_iso1EVSEStatusType(stream, &iso1MeteringReceiptResType->EVSEStatus );
  8197. }
  8198. grammarID = 3;
  8199. } else {
  8200. errn = EXI_ERROR_UNKOWN_EVENT;
  8201. }
  8202. break;
  8203. case 3:
  8204. /* Element[END_ELEMENT] */
  8205. if (1==1) {
  8206. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8207. if(errn == 0) {
  8208. done = 1;
  8209. }
  8210. grammarID = 4;
  8211. } else {
  8212. errn = EXI_ERROR_UNKOWN_EVENT;
  8213. }
  8214. break;
  8215. default:
  8216. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8217. break;
  8218. }
  8219. if(errn) {
  8220. done = 1;
  8221. }
  8222. }
  8223. return errn;
  8224. }
  8225. /* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargingSession)', derivedBy='EXTENSION'. */
  8226. static int encode_iso1SessionStopReqType(bitstream_t* stream, struct iso1SessionStopReqType* iso1SessionStopReqType) {
  8227. int grammarID = 266;
  8228. int done = 0;
  8229. while(!done) {
  8230. switch(grammarID) {
  8231. case 266:
  8232. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */
  8233. if ( 1 == 1 ) {
  8234. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8235. if(errn == 0) {
  8236. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  8237. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8238. if(errn == 0) {
  8239. errn = encodeNBitUnsignedInteger(stream, 1, iso1SessionStopReqType->ChargingSession);
  8240. /* valid EE */
  8241. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8242. }
  8243. }
  8244. grammarID = 3;
  8245. } else {
  8246. errn = EXI_ERROR_UNKOWN_EVENT;
  8247. }
  8248. break;
  8249. case 3:
  8250. /* Element[END_ELEMENT] */
  8251. if (1==1) {
  8252. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8253. if(errn == 0) {
  8254. done = 1;
  8255. }
  8256. grammarID = 4;
  8257. } else {
  8258. errn = EXI_ERROR_UNKOWN_EVENT;
  8259. }
  8260. break;
  8261. default:
  8262. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8263. break;
  8264. }
  8265. if(errn) {
  8266. done = 1;
  8267. }
  8268. }
  8269. return errn;
  8270. }
  8271. /* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */
  8272. static int encode_iso1WeldingDetectionResType(bitstream_t* stream, struct iso1WeldingDetectionResType* iso1WeldingDetectionResType) {
  8273. int grammarID = 39;
  8274. int done = 0;
  8275. while(!done) {
  8276. switch(grammarID) {
  8277. case 39:
  8278. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  8279. if ( 1 == 1 ) {
  8280. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8281. if(errn == 0) {
  8282. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  8283. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8284. if(errn == 0) {
  8285. errn = encodeNBitUnsignedInteger(stream, 5, iso1WeldingDetectionResType->ResponseCode);
  8286. /* valid EE */
  8287. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8288. }
  8289. }
  8290. grammarID = 40;
  8291. } else {
  8292. errn = EXI_ERROR_UNKOWN_EVENT;
  8293. }
  8294. break;
  8295. case 40:
  8296. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  8297. if ( 1 == 1 ) {
  8298. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8299. if(errn == 0) {
  8300. errn = encode_iso1DC_EVSEStatusType(stream, &iso1WeldingDetectionResType->DC_EVSEStatus );
  8301. }
  8302. grammarID = 41;
  8303. } else {
  8304. errn = EXI_ERROR_UNKOWN_EVENT;
  8305. }
  8306. break;
  8307. case 41:
  8308. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */
  8309. if ( 1 == 1 ) {
  8310. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8311. if(errn == 0) {
  8312. errn = encode_iso1PhysicalValueType(stream, &iso1WeldingDetectionResType->EVSEPresentVoltage );
  8313. }
  8314. grammarID = 3;
  8315. } else {
  8316. errn = EXI_ERROR_UNKOWN_EVENT;
  8317. }
  8318. break;
  8319. case 3:
  8320. /* Element[END_ELEMENT] */
  8321. if (1==1) {
  8322. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8323. if(errn == 0) {
  8324. done = 1;
  8325. }
  8326. grammarID = 4;
  8327. } else {
  8328. errn = EXI_ERROR_UNKOWN_EVENT;
  8329. }
  8330. break;
  8331. default:
  8332. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8333. break;
  8334. }
  8335. if(errn) {
  8336. done = 1;
  8337. }
  8338. }
  8339. return errn;
  8340. }
  8341. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)', derivedBy='RESTRICTION'. */
  8342. static int encode_iso1ReferenceType(bitstream_t* stream, struct iso1ReferenceType* iso1ReferenceType) {
  8343. int grammarID = 267;
  8344. int done = 0;
  8345. while(!done) {
  8346. switch(grammarID) {
  8347. case 267:
  8348. /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  8349. if ( iso1ReferenceType->Id_isUsed == 1u ) {
  8350. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  8351. if(errn == 0) {
  8352. /* encode string as string table miss (+2 len)*/
  8353. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->Id.charactersLen + 2));
  8354. if (errn == 0) {
  8355. errn = encodeCharacters(stream, iso1ReferenceType->Id.characters, iso1ReferenceType->Id.charactersLen);
  8356. }
  8357. }
  8358. grammarID = 268;
  8359. } else if ( iso1ReferenceType->Type_isUsed == 1u ) {
  8360. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  8361. if(errn == 0) {
  8362. /* encode string as string table miss (+2 len)*/
  8363. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->Type.charactersLen + 2));
  8364. if (errn == 0) {
  8365. errn = encodeCharacters(stream, iso1ReferenceType->Type.characters, iso1ReferenceType->Type.charactersLen);
  8366. }
  8367. }
  8368. grammarID = 269;
  8369. } else if ( iso1ReferenceType->URI_isUsed == 1u ) {
  8370. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  8371. if(errn == 0) {
  8372. /* encode string as string table miss (+2 len)*/
  8373. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->URI.charactersLen + 2));
  8374. if (errn == 0) {
  8375. errn = encodeCharacters(stream, iso1ReferenceType->URI.characters, iso1ReferenceType->URI.charactersLen);
  8376. }
  8377. }
  8378. grammarID = 270;
  8379. } else if ( iso1ReferenceType->Transforms_isUsed == 1u ) {
  8380. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  8381. if(errn == 0) {
  8382. errn = encode_iso1TransformsType(stream, &iso1ReferenceType->Transforms );
  8383. }
  8384. grammarID = 271;
  8385. } else if ( 1 == 1 ) {
  8386. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  8387. if(errn == 0) {
  8388. errn = encode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod );
  8389. }
  8390. grammarID = 272;
  8391. } else {
  8392. errn = EXI_ERROR_UNKOWN_EVENT;
  8393. }
  8394. break;
  8395. case 268:
  8396. /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  8397. if ( iso1ReferenceType->Type_isUsed == 1u ) {
  8398. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  8399. if(errn == 0) {
  8400. /* encode string as string table miss (+2 len)*/
  8401. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->Type.charactersLen + 2));
  8402. if (errn == 0) {
  8403. errn = encodeCharacters(stream, iso1ReferenceType->Type.characters, iso1ReferenceType->Type.charactersLen);
  8404. }
  8405. }
  8406. grammarID = 269;
  8407. } else if ( iso1ReferenceType->URI_isUsed == 1u ) {
  8408. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  8409. if(errn == 0) {
  8410. /* encode string as string table miss (+2 len)*/
  8411. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->URI.charactersLen + 2));
  8412. if (errn == 0) {
  8413. errn = encodeCharacters(stream, iso1ReferenceType->URI.characters, iso1ReferenceType->URI.charactersLen);
  8414. }
  8415. }
  8416. grammarID = 270;
  8417. } else if ( iso1ReferenceType->Transforms_isUsed == 1u ) {
  8418. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  8419. if(errn == 0) {
  8420. errn = encode_iso1TransformsType(stream, &iso1ReferenceType->Transforms );
  8421. }
  8422. grammarID = 271;
  8423. } else if ( 1 == 1 ) {
  8424. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  8425. if(errn == 0) {
  8426. errn = encode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod );
  8427. }
  8428. grammarID = 272;
  8429. } else {
  8430. errn = EXI_ERROR_UNKOWN_EVENT;
  8431. }
  8432. break;
  8433. case 269:
  8434. /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  8435. if ( iso1ReferenceType->URI_isUsed == 1u ) {
  8436. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8437. if(errn == 0) {
  8438. /* encode string as string table miss (+2 len)*/
  8439. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->URI.charactersLen + 2));
  8440. if (errn == 0) {
  8441. errn = encodeCharacters(stream, iso1ReferenceType->URI.characters, iso1ReferenceType->URI.charactersLen);
  8442. }
  8443. }
  8444. grammarID = 270;
  8445. } else if ( iso1ReferenceType->Transforms_isUsed == 1u ) {
  8446. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8447. if(errn == 0) {
  8448. errn = encode_iso1TransformsType(stream, &iso1ReferenceType->Transforms );
  8449. }
  8450. grammarID = 271;
  8451. } else if ( 1 == 1 ) {
  8452. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  8453. if(errn == 0) {
  8454. errn = encode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod );
  8455. }
  8456. grammarID = 272;
  8457. } else {
  8458. errn = EXI_ERROR_UNKOWN_EVENT;
  8459. }
  8460. break;
  8461. case 270:
  8462. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  8463. if ( iso1ReferenceType->Transforms_isUsed == 1u ) {
  8464. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8465. if(errn == 0) {
  8466. errn = encode_iso1TransformsType(stream, &iso1ReferenceType->Transforms );
  8467. }
  8468. grammarID = 271;
  8469. } else if ( 1 == 1 ) {
  8470. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8471. if(errn == 0) {
  8472. errn = encode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod );
  8473. }
  8474. grammarID = 272;
  8475. } else {
  8476. errn = EXI_ERROR_UNKOWN_EVENT;
  8477. }
  8478. break;
  8479. case 271:
  8480. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  8481. if ( 1 == 1 ) {
  8482. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8483. if(errn == 0) {
  8484. errn = encode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod );
  8485. }
  8486. grammarID = 272;
  8487. } else {
  8488. errn = EXI_ERROR_UNKOWN_EVENT;
  8489. }
  8490. break;
  8491. case 272:
  8492. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */
  8493. if ( 1 == 1 ) {
  8494. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8495. if(errn == 0) {
  8496. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  8497. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8498. if(errn == 0) {
  8499. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ReferenceType->DigestValue.bytesLen));
  8500. if (errn == 0) {
  8501. errn = encodeBytes(stream, iso1ReferenceType->DigestValue.bytes, iso1ReferenceType->DigestValue.bytesLen);
  8502. }
  8503. /* valid EE */
  8504. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8505. }
  8506. }
  8507. grammarID = 3;
  8508. } else {
  8509. errn = EXI_ERROR_UNKOWN_EVENT;
  8510. }
  8511. break;
  8512. case 3:
  8513. /* Element[END_ELEMENT] */
  8514. if (1==1) {
  8515. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8516. if(errn == 0) {
  8517. done = 1;
  8518. }
  8519. grammarID = 4;
  8520. } else {
  8521. errn = EXI_ERROR_UNKOWN_EVENT;
  8522. }
  8523. break;
  8524. default:
  8525. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8526. break;
  8527. }
  8528. if(errn) {
  8529. done = 1;
  8530. }
  8531. }
  8532. return errn;
  8533. }
  8534. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2013:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgBody":ChargingComplete,"urn:iso:15118:2:2013:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2013:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage)', derivedBy='EXTENSION'. */
  8535. static int encode_iso1CurrentDemandReqType(bitstream_t* stream, struct iso1CurrentDemandReqType* iso1CurrentDemandReqType) {
  8536. int grammarID = 273;
  8537. int done = 0;
  8538. while(!done) {
  8539. switch(grammarID) {
  8540. case 273:
  8541. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  8542. if ( 1 == 1 ) {
  8543. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8544. if(errn == 0) {
  8545. errn = encode_iso1DC_EVStatusType(stream, &iso1CurrentDemandReqType->DC_EVStatus );
  8546. }
  8547. grammarID = 274;
  8548. } else {
  8549. errn = EXI_ERROR_UNKOWN_EVENT;
  8550. }
  8551. break;
  8552. case 274:
  8553. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */
  8554. if ( 1 == 1 ) {
  8555. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8556. if(errn == 0) {
  8557. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetCurrent );
  8558. }
  8559. grammarID = 275;
  8560. } else {
  8561. errn = EXI_ERROR_UNKOWN_EVENT;
  8562. }
  8563. break;
  8564. case 275:
  8565. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  8566. if ( iso1CurrentDemandReqType->EVMaximumVoltageLimit_isUsed == 1u ) {
  8567. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  8568. if(errn == 0) {
  8569. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumVoltageLimit );
  8570. }
  8571. grammarID = 276;
  8572. } else if ( iso1CurrentDemandReqType->EVMaximumCurrentLimit_isUsed == 1u ) {
  8573. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  8574. if(errn == 0) {
  8575. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumCurrentLimit );
  8576. }
  8577. grammarID = 277;
  8578. } else if ( iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed == 1u ) {
  8579. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  8580. if(errn == 0) {
  8581. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumPowerLimit );
  8582. }
  8583. grammarID = 278;
  8584. } else if ( iso1CurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) {
  8585. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  8586. if(errn == 0) {
  8587. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8588. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8589. if(errn == 0) {
  8590. errn = encodeBoolean(stream, iso1CurrentDemandReqType->BulkChargingComplete);
  8591. /* valid EE */
  8592. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8593. }
  8594. }
  8595. grammarID = 279;
  8596. } else if ( 1 == 1 ) {
  8597. errn = encodeNBitUnsignedInteger(stream, 3, 4);
  8598. if(errn == 0) {
  8599. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8600. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8601. if(errn == 0) {
  8602. errn = encodeBoolean(stream, iso1CurrentDemandReqType->ChargingComplete);
  8603. /* valid EE */
  8604. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8605. }
  8606. }
  8607. grammarID = 280;
  8608. } else {
  8609. errn = EXI_ERROR_UNKOWN_EVENT;
  8610. }
  8611. break;
  8612. case 276:
  8613. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  8614. if ( iso1CurrentDemandReqType->EVMaximumCurrentLimit_isUsed == 1u ) {
  8615. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  8616. if(errn == 0) {
  8617. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumCurrentLimit );
  8618. }
  8619. grammarID = 277;
  8620. } else if ( iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed == 1u ) {
  8621. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  8622. if(errn == 0) {
  8623. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumPowerLimit );
  8624. }
  8625. grammarID = 278;
  8626. } else if ( iso1CurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) {
  8627. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  8628. if(errn == 0) {
  8629. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8630. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8631. if(errn == 0) {
  8632. errn = encodeBoolean(stream, iso1CurrentDemandReqType->BulkChargingComplete);
  8633. /* valid EE */
  8634. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8635. }
  8636. }
  8637. grammarID = 279;
  8638. } else if ( 1 == 1 ) {
  8639. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  8640. if(errn == 0) {
  8641. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8642. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8643. if(errn == 0) {
  8644. errn = encodeBoolean(stream, iso1CurrentDemandReqType->ChargingComplete);
  8645. /* valid EE */
  8646. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8647. }
  8648. }
  8649. grammarID = 280;
  8650. } else {
  8651. errn = EXI_ERROR_UNKOWN_EVENT;
  8652. }
  8653. break;
  8654. case 277:
  8655. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  8656. if ( iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed == 1u ) {
  8657. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8658. if(errn == 0) {
  8659. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumPowerLimit );
  8660. }
  8661. grammarID = 278;
  8662. } else if ( iso1CurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) {
  8663. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8664. if(errn == 0) {
  8665. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8666. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8667. if(errn == 0) {
  8668. errn = encodeBoolean(stream, iso1CurrentDemandReqType->BulkChargingComplete);
  8669. /* valid EE */
  8670. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8671. }
  8672. }
  8673. grammarID = 279;
  8674. } else if ( 1 == 1 ) {
  8675. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  8676. if(errn == 0) {
  8677. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8678. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8679. if(errn == 0) {
  8680. errn = encodeBoolean(stream, iso1CurrentDemandReqType->ChargingComplete);
  8681. /* valid EE */
  8682. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8683. }
  8684. }
  8685. grammarID = 280;
  8686. } else {
  8687. errn = EXI_ERROR_UNKOWN_EVENT;
  8688. }
  8689. break;
  8690. case 278:
  8691. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  8692. if ( iso1CurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) {
  8693. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8694. if(errn == 0) {
  8695. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8696. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8697. if(errn == 0) {
  8698. errn = encodeBoolean(stream, iso1CurrentDemandReqType->BulkChargingComplete);
  8699. /* valid EE */
  8700. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8701. }
  8702. }
  8703. grammarID = 279;
  8704. } else if ( 1 == 1 ) {
  8705. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8706. if(errn == 0) {
  8707. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8708. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8709. if(errn == 0) {
  8710. errn = encodeBoolean(stream, iso1CurrentDemandReqType->ChargingComplete);
  8711. /* valid EE */
  8712. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8713. }
  8714. }
  8715. grammarID = 280;
  8716. } else {
  8717. errn = EXI_ERROR_UNKOWN_EVENT;
  8718. }
  8719. break;
  8720. case 279:
  8721. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  8722. if ( 1 == 1 ) {
  8723. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8724. if(errn == 0) {
  8725. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  8726. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8727. if(errn == 0) {
  8728. errn = encodeBoolean(stream, iso1CurrentDemandReqType->ChargingComplete);
  8729. /* valid EE */
  8730. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8731. }
  8732. }
  8733. grammarID = 280;
  8734. } else {
  8735. errn = EXI_ERROR_UNKOWN_EVENT;
  8736. }
  8737. break;
  8738. case 280:
  8739. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  8740. if ( iso1CurrentDemandReqType->RemainingTimeToFullSoC_isUsed == 1u ) {
  8741. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8742. if(errn == 0) {
  8743. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->RemainingTimeToFullSoC );
  8744. }
  8745. grammarID = 281;
  8746. } else if ( iso1CurrentDemandReqType->RemainingTimeToBulkSoC_isUsed == 1u ) {
  8747. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8748. if(errn == 0) {
  8749. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->RemainingTimeToBulkSoC );
  8750. }
  8751. grammarID = 282;
  8752. } else if ( 1 == 1 ) {
  8753. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  8754. if(errn == 0) {
  8755. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetVoltage );
  8756. }
  8757. grammarID = 3;
  8758. } else {
  8759. errn = EXI_ERROR_UNKOWN_EVENT;
  8760. }
  8761. break;
  8762. case 281:
  8763. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  8764. if ( iso1CurrentDemandReqType->RemainingTimeToBulkSoC_isUsed == 1u ) {
  8765. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8766. if(errn == 0) {
  8767. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->RemainingTimeToBulkSoC );
  8768. }
  8769. grammarID = 282;
  8770. } else if ( 1 == 1 ) {
  8771. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8772. if(errn == 0) {
  8773. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetVoltage );
  8774. }
  8775. grammarID = 3;
  8776. } else {
  8777. errn = EXI_ERROR_UNKOWN_EVENT;
  8778. }
  8779. break;
  8780. case 282:
  8781. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  8782. if ( 1 == 1 ) {
  8783. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8784. if(errn == 0) {
  8785. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetVoltage );
  8786. }
  8787. grammarID = 3;
  8788. } else {
  8789. errn = EXI_ERROR_UNKOWN_EVENT;
  8790. }
  8791. break;
  8792. case 3:
  8793. /* Element[END_ELEMENT] */
  8794. if (1==1) {
  8795. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8796. if(errn == 0) {
  8797. done = 1;
  8798. }
  8799. grammarID = 4;
  8800. } else {
  8801. errn = EXI_ERROR_UNKOWN_EVENT;
  8802. }
  8803. break;
  8804. default:
  8805. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8806. break;
  8807. }
  8808. if(errn) {
  8809. done = 1;
  8810. }
  8811. }
  8812. return errn;
  8813. }
  8814. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":EPriceLevel{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ConsumptionCost{0-3}))', derivedBy='EXTENSION'. */
  8815. static int encode_iso1SalesTariffEntryType(bitstream_t* stream, struct iso1SalesTariffEntryType* iso1SalesTariffEntryType) {
  8816. int grammarID = 283;
  8817. int done = 0;
  8818. unsigned int iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex = 0;
  8819. while(!done) {
  8820. switch(grammarID) {
  8821. case 283:
  8822. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */
  8823. if ( iso1SalesTariffEntryType->RelativeTimeInterval_isUsed == 1u ) {
  8824. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8825. if(errn == 0) {
  8826. errn = encode_iso1RelativeTimeIntervalType(stream, &iso1SalesTariffEntryType->RelativeTimeInterval );
  8827. }
  8828. grammarID = 284;
  8829. } else if ( iso1SalesTariffEntryType->TimeInterval_isUsed == 1u ) {
  8830. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8831. if(errn == 0) {
  8832. errn = encode_iso1IntervalType(stream, &iso1SalesTariffEntryType->TimeInterval );
  8833. }
  8834. grammarID = 284;
  8835. } else {
  8836. errn = EXI_ERROR_UNKOWN_EVENT;
  8837. }
  8838. break;
  8839. case 284:
  8840. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  8841. if ( iso1SalesTariffEntryType->EPriceLevel_isUsed == 1u ) {
  8842. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8843. if(errn == 0) {
  8844. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  8845. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8846. if(errn == 0) {
  8847. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1SalesTariffEntryType->EPriceLevel - 0));
  8848. /* valid EE */
  8849. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8850. }
  8851. }
  8852. grammarID = 285;
  8853. } else if (iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex < iso1SalesTariffEntryType->ConsumptionCost.arrayLen ) {
  8854. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8855. if(errn == 0) {
  8856. errn = encode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array [iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex++]);
  8857. }
  8858. grammarID = 286;
  8859. } else if (1==1) {
  8860. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  8861. if(errn == 0) {
  8862. done = 1;
  8863. }
  8864. grammarID = 4;
  8865. } else {
  8866. errn = EXI_ERROR_UNKOWN_EVENT;
  8867. }
  8868. break;
  8869. case 285:
  8870. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  8871. if (iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex < iso1SalesTariffEntryType->ConsumptionCost.arrayLen ) {
  8872. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8873. if(errn == 0) {
  8874. errn = encode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array [iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex++]);
  8875. }
  8876. grammarID = 286;
  8877. } else if (1==1) {
  8878. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8879. if(errn == 0) {
  8880. done = 1;
  8881. }
  8882. grammarID = 4;
  8883. } else {
  8884. errn = EXI_ERROR_UNKOWN_EVENT;
  8885. }
  8886. break;
  8887. case 286:
  8888. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  8889. if (iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex < iso1SalesTariffEntryType->ConsumptionCost.arrayLen ) {
  8890. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8891. if(errn == 0) {
  8892. errn = encode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array [iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex++]);
  8893. }
  8894. grammarID = 287;
  8895. } else if (1==1) {
  8896. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8897. if(errn == 0) {
  8898. done = 1;
  8899. }
  8900. grammarID = 4;
  8901. } else {
  8902. errn = EXI_ERROR_UNKOWN_EVENT;
  8903. }
  8904. break;
  8905. case 287:
  8906. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  8907. if (iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex < iso1SalesTariffEntryType->ConsumptionCost.arrayLen ) {
  8908. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8909. if(errn == 0) {
  8910. errn = encode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array [iso1SalesTariffEntryType_ConsumptionCost_currArrayIndex++]);
  8911. }
  8912. grammarID = 3;
  8913. } else if (1==1) {
  8914. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8915. if(errn == 0) {
  8916. done = 1;
  8917. }
  8918. grammarID = 4;
  8919. } else {
  8920. errn = EXI_ERROR_UNKOWN_EVENT;
  8921. }
  8922. break;
  8923. case 3:
  8924. /* Element[END_ELEMENT] */
  8925. if (1==1) {
  8926. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8927. if(errn == 0) {
  8928. done = 1;
  8929. }
  8930. grammarID = 4;
  8931. } else {
  8932. errn = EXI_ERROR_UNKOWN_EVENT;
  8933. }
  8934. break;
  8935. default:
  8936. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8937. break;
  8938. }
  8939. if(errn) {
  8940. done = 1;
  8941. }
  8942. }
  8943. return errn;
  8944. }
  8945. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EntryType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval)', derivedBy='RESTRICTION'. */
  8946. static int encode_iso1EntryType(bitstream_t* stream, struct iso1EntryType* iso1EntryType) {
  8947. int grammarID = 288;
  8948. int done = 0;
  8949. while(!done) {
  8950. switch(grammarID) {
  8951. case 288:
  8952. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */
  8953. if ( iso1EntryType->RelativeTimeInterval_isUsed == 1u ) {
  8954. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  8955. if(errn == 0) {
  8956. errn = encode_iso1RelativeTimeIntervalType(stream, &iso1EntryType->RelativeTimeInterval );
  8957. }
  8958. grammarID = 3;
  8959. } else if ( iso1EntryType->TimeInterval_isUsed == 1u ) {
  8960. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  8961. if(errn == 0) {
  8962. errn = encode_iso1IntervalType(stream, &iso1EntryType->TimeInterval );
  8963. }
  8964. grammarID = 3;
  8965. } else {
  8966. errn = EXI_ERROR_UNKOWN_EVENT;
  8967. }
  8968. break;
  8969. case 3:
  8970. /* Element[END_ELEMENT] */
  8971. if (1==1) {
  8972. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  8973. if(errn == 0) {
  8974. done = 1;
  8975. }
  8976. grammarID = 4;
  8977. } else {
  8978. errn = EXI_ERROR_UNKOWN_EVENT;
  8979. }
  8980. break;
  8981. default:
  8982. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8983. break;
  8984. }
  8985. if(errn) {
  8986. done = 1;
  8987. }
  8988. }
  8989. return errn;
  8990. }
  8991. /* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":EVCCID)', derivedBy='EXTENSION'. */
  8992. static int encode_iso1SessionSetupReqType(bitstream_t* stream, struct iso1SessionSetupReqType* iso1SessionSetupReqType) {
  8993. int grammarID = 289;
  8994. int done = 0;
  8995. while(!done) {
  8996. switch(grammarID) {
  8997. case 289:
  8998. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */
  8999. if ( 1 == 1 ) {
  9000. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9001. if(errn == 0) {
  9002. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  9003. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9004. if(errn == 0) {
  9005. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SessionSetupReqType->EVCCID.bytesLen));
  9006. if (errn == 0) {
  9007. errn = encodeBytes(stream, iso1SessionSetupReqType->EVCCID.bytes, iso1SessionSetupReqType->EVCCID.bytesLen);
  9008. }
  9009. /* valid EE */
  9010. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9011. }
  9012. }
  9013. grammarID = 3;
  9014. } else {
  9015. errn = EXI_ERROR_UNKOWN_EVENT;
  9016. }
  9017. break;
  9018. case 3:
  9019. /* Element[END_ELEMENT] */
  9020. if (1==1) {
  9021. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9022. if(errn == 0) {
  9023. done = 1;
  9024. }
  9025. grammarID = 4;
  9026. } else {
  9027. errn = EXI_ERROR_UNKOWN_EVENT;
  9028. }
  9029. break;
  9030. default:
  9031. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9032. break;
  9033. }
  9034. if(errn) {
  9035. done = 1;
  9036. }
  9037. }
  9038. return errn;
  9039. }
  9040. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":costKind,"urn:iso:15118:2:2013:MsgDataTypes":amount,"urn:iso:15118:2:2013:MsgDataTypes":amountMultiplier{0-1})', derivedBy='RESTRICTION'. */
  9041. static int encode_iso1CostType(bitstream_t* stream, struct iso1CostType* iso1CostType) {
  9042. int grammarID = 290;
  9043. int done = 0;
  9044. while(!done) {
  9045. switch(grammarID) {
  9046. case 290:
  9047. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */
  9048. if ( 1 == 1 ) {
  9049. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9050. if(errn == 0) {
  9051. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  9052. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9053. if(errn == 0) {
  9054. errn = encodeNBitUnsignedInteger(stream, 2, iso1CostType->costKind);
  9055. /* valid EE */
  9056. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9057. }
  9058. }
  9059. grammarID = 291;
  9060. } else {
  9061. errn = EXI_ERROR_UNKOWN_EVENT;
  9062. }
  9063. break;
  9064. case 291:
  9065. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */
  9066. if ( 1 == 1 ) {
  9067. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9068. if(errn == 0) {
  9069. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  9070. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9071. if(errn == 0) {
  9072. errn = encodeUnsignedInteger32(stream, iso1CostType->amount);
  9073. /* valid EE */
  9074. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9075. }
  9076. }
  9077. grammarID = 292;
  9078. } else {
  9079. errn = EXI_ERROR_UNKOWN_EVENT;
  9080. }
  9081. break;
  9082. case 292:
  9083. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */
  9084. if ( iso1CostType->amountMultiplier_isUsed == 1u ) {
  9085. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9086. if(errn == 0) {
  9087. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  9088. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9089. if(errn == 0) {
  9090. errn = encodeNBitUnsignedInteger(stream, 3, (uint32_t)(iso1CostType->amountMultiplier + 3));
  9091. /* valid EE */
  9092. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9093. }
  9094. }
  9095. grammarID = 3;
  9096. } else if (1==1) {
  9097. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9098. if(errn == 0) {
  9099. done = 1;
  9100. }
  9101. grammarID = 4;
  9102. } else {
  9103. errn = EXI_ERROR_UNKOWN_EVENT;
  9104. }
  9105. break;
  9106. case 3:
  9107. /* Element[END_ELEMENT] */
  9108. if (1==1) {
  9109. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9110. if(errn == 0) {
  9111. done = 1;
  9112. }
  9113. grammarID = 4;
  9114. } else {
  9115. errn = EXI_ERROR_UNKOWN_EVENT;
  9116. }
  9117. break;
  9118. default:
  9119. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9120. break;
  9121. }
  9122. if(errn) {
  9123. done = 1;
  9124. }
  9125. }
  9126. return errn;
  9127. }
  9128. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVPowerDeliveryParameterType', base type name='EVPowerDeliveryParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ChargingComplete)', derivedBy='EXTENSION'. */
  9129. static int encode_iso1DC_EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1DC_EVPowerDeliveryParameterType* iso1DC_EVPowerDeliveryParameterType) {
  9130. int grammarID = 293;
  9131. int done = 0;
  9132. while(!done) {
  9133. switch(grammarID) {
  9134. case 293:
  9135. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */
  9136. if ( 1 == 1 ) {
  9137. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9138. if(errn == 0) {
  9139. errn = encode_iso1DC_EVStatusType(stream, &iso1DC_EVPowerDeliveryParameterType->DC_EVStatus );
  9140. }
  9141. grammarID = 294;
  9142. } else {
  9143. errn = EXI_ERROR_UNKOWN_EVENT;
  9144. }
  9145. break;
  9146. case 294:
  9147. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */
  9148. if ( iso1DC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed == 1u ) {
  9149. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9150. if(errn == 0) {
  9151. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9152. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9153. if(errn == 0) {
  9154. errn = encodeBoolean(stream, iso1DC_EVPowerDeliveryParameterType->BulkChargingComplete);
  9155. /* valid EE */
  9156. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9157. }
  9158. }
  9159. grammarID = 295;
  9160. } else if ( 1 == 1 ) {
  9161. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9162. if(errn == 0) {
  9163. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9164. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9165. if(errn == 0) {
  9166. errn = encodeBoolean(stream, iso1DC_EVPowerDeliveryParameterType->ChargingComplete);
  9167. /* valid EE */
  9168. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9169. }
  9170. }
  9171. grammarID = 3;
  9172. } else {
  9173. errn = EXI_ERROR_UNKOWN_EVENT;
  9174. }
  9175. break;
  9176. case 295:
  9177. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */
  9178. if ( 1 == 1 ) {
  9179. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9180. if(errn == 0) {
  9181. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9182. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9183. if(errn == 0) {
  9184. errn = encodeBoolean(stream, iso1DC_EVPowerDeliveryParameterType->ChargingComplete);
  9185. /* valid EE */
  9186. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9187. }
  9188. }
  9189. grammarID = 3;
  9190. } else {
  9191. errn = EXI_ERROR_UNKOWN_EVENT;
  9192. }
  9193. break;
  9194. case 3:
  9195. /* Element[END_ELEMENT] */
  9196. if (1==1) {
  9197. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9198. if(errn == 0) {
  9199. done = 1;
  9200. }
  9201. grammarID = 4;
  9202. } else {
  9203. errn = EXI_ERROR_UNKOWN_EVENT;
  9204. }
  9205. break;
  9206. default:
  9207. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9208. break;
  9209. }
  9210. if(errn) {
  9211. done = 1;
  9212. }
  9213. }
  9214. return errn;
  9215. }
  9216. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})', derivedBy='RESTRICTION'. */
  9217. static int encode_iso1RetrievalMethodType(bitstream_t* stream, struct iso1RetrievalMethodType* iso1RetrievalMethodType) {
  9218. int grammarID = 296;
  9219. int done = 0;
  9220. while(!done) {
  9221. switch(grammarID) {
  9222. case 296:
  9223. /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
  9224. if ( iso1RetrievalMethodType->Type_isUsed == 1u ) {
  9225. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  9226. if(errn == 0) {
  9227. /* encode string as string table miss (+2 len)*/
  9228. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1RetrievalMethodType->Type.charactersLen + 2));
  9229. if (errn == 0) {
  9230. errn = encodeCharacters(stream, iso1RetrievalMethodType->Type.characters, iso1RetrievalMethodType->Type.charactersLen);
  9231. }
  9232. }
  9233. grammarID = 297;
  9234. } else if ( iso1RetrievalMethodType->URI_isUsed == 1u ) {
  9235. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  9236. if(errn == 0) {
  9237. /* encode string as string table miss (+2 len)*/
  9238. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1RetrievalMethodType->URI.charactersLen + 2));
  9239. if (errn == 0) {
  9240. errn = encodeCharacters(stream, iso1RetrievalMethodType->URI.characters, iso1RetrievalMethodType->URI.charactersLen);
  9241. }
  9242. }
  9243. grammarID = 298;
  9244. } else if ( iso1RetrievalMethodType->Transforms_isUsed == 1u ) {
  9245. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  9246. if(errn == 0) {
  9247. errn = encode_iso1TransformsType(stream, &iso1RetrievalMethodType->Transforms );
  9248. }
  9249. grammarID = 3;
  9250. } else if (1==1) {
  9251. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  9252. if(errn == 0) {
  9253. done = 1;
  9254. }
  9255. grammarID = 4;
  9256. } else {
  9257. errn = EXI_ERROR_UNKOWN_EVENT;
  9258. }
  9259. break;
  9260. case 297:
  9261. /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
  9262. if ( iso1RetrievalMethodType->URI_isUsed == 1u ) {
  9263. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9264. if(errn == 0) {
  9265. /* encode string as string table miss (+2 len)*/
  9266. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1RetrievalMethodType->URI.charactersLen + 2));
  9267. if (errn == 0) {
  9268. errn = encodeCharacters(stream, iso1RetrievalMethodType->URI.characters, iso1RetrievalMethodType->URI.charactersLen);
  9269. }
  9270. }
  9271. grammarID = 298;
  9272. } else if ( iso1RetrievalMethodType->Transforms_isUsed == 1u ) {
  9273. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9274. if(errn == 0) {
  9275. errn = encode_iso1TransformsType(stream, &iso1RetrievalMethodType->Transforms );
  9276. }
  9277. grammarID = 3;
  9278. } else if (1==1) {
  9279. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  9280. if(errn == 0) {
  9281. done = 1;
  9282. }
  9283. grammarID = 4;
  9284. } else {
  9285. errn = EXI_ERROR_UNKOWN_EVENT;
  9286. }
  9287. break;
  9288. case 298:
  9289. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
  9290. if ( iso1RetrievalMethodType->Transforms_isUsed == 1u ) {
  9291. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9292. if(errn == 0) {
  9293. errn = encode_iso1TransformsType(stream, &iso1RetrievalMethodType->Transforms );
  9294. }
  9295. grammarID = 3;
  9296. } else if (1==1) {
  9297. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9298. if(errn == 0) {
  9299. done = 1;
  9300. }
  9301. grammarID = 4;
  9302. } else {
  9303. errn = EXI_ERROR_UNKOWN_EVENT;
  9304. }
  9305. break;
  9306. case 3:
  9307. /* Element[END_ELEMENT] */
  9308. if (1==1) {
  9309. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9310. if(errn == 0) {
  9311. done = 1;
  9312. }
  9313. grammarID = 4;
  9314. } else {
  9315. errn = EXI_ERROR_UNKOWN_EVENT;
  9316. }
  9317. break;
  9318. default:
  9319. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9320. break;
  9321. }
  9322. if(errn) {
  9323. done = 1;
  9324. }
  9325. }
  9326. return errn;
  9327. }
  9328. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":RetryCounter{0-1})', derivedBy='EXTENSION'. */
  9329. static int encode_iso1CertificateUpdateResType(bitstream_t* stream, struct iso1CertificateUpdateResType* iso1CertificateUpdateResType) {
  9330. int grammarID = 299;
  9331. int done = 0;
  9332. while(!done) {
  9333. switch(grammarID) {
  9334. case 299:
  9335. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  9336. if ( 1 == 1 ) {
  9337. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9338. if(errn == 0) {
  9339. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  9340. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9341. if(errn == 0) {
  9342. errn = encodeNBitUnsignedInteger(stream, 5, iso1CertificateUpdateResType->ResponseCode);
  9343. /* valid EE */
  9344. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9345. }
  9346. }
  9347. grammarID = 300;
  9348. } else {
  9349. errn = EXI_ERROR_UNKOWN_EVENT;
  9350. }
  9351. break;
  9352. case 300:
  9353. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */
  9354. if ( 1 == 1 ) {
  9355. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9356. if(errn == 0) {
  9357. errn = encode_iso1CertificateChainType(stream, &iso1CertificateUpdateResType->SAProvisioningCertificateChain );
  9358. }
  9359. grammarID = 301;
  9360. } else {
  9361. errn = EXI_ERROR_UNKOWN_EVENT;
  9362. }
  9363. break;
  9364. case 301:
  9365. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  9366. if ( 1 == 1 ) {
  9367. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9368. if(errn == 0) {
  9369. errn = encode_iso1CertificateChainType(stream, &iso1CertificateUpdateResType->ContractSignatureCertChain );
  9370. }
  9371. grammarID = 302;
  9372. } else {
  9373. errn = EXI_ERROR_UNKOWN_EVENT;
  9374. }
  9375. break;
  9376. case 302:
  9377. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */
  9378. if ( 1 == 1 ) {
  9379. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9380. if(errn == 0) {
  9381. errn = encode_iso1ContractSignatureEncryptedPrivateKeyType(stream, &iso1CertificateUpdateResType->ContractSignatureEncryptedPrivateKey );
  9382. }
  9383. grammarID = 303;
  9384. } else {
  9385. errn = EXI_ERROR_UNKOWN_EVENT;
  9386. }
  9387. break;
  9388. case 303:
  9389. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */
  9390. if ( 1 == 1 ) {
  9391. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9392. if(errn == 0) {
  9393. errn = encode_iso1DiffieHellmanPublickeyType(stream, &iso1CertificateUpdateResType->DHpublickey );
  9394. }
  9395. grammarID = 304;
  9396. } else {
  9397. errn = EXI_ERROR_UNKOWN_EVENT;
  9398. }
  9399. break;
  9400. case 304:
  9401. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  9402. if ( 1 == 1 ) {
  9403. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9404. if(errn == 0) {
  9405. errn = encode_iso1EMAIDType(stream, &iso1CertificateUpdateResType->eMAID );
  9406. }
  9407. grammarID = 305;
  9408. } else {
  9409. errn = EXI_ERROR_UNKOWN_EVENT;
  9410. }
  9411. break;
  9412. case 305:
  9413. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */
  9414. if ( iso1CertificateUpdateResType->RetryCounter_isUsed == 1u ) {
  9415. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9416. if(errn == 0) {
  9417. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  9418. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9419. if(errn == 0) {
  9420. errn = encodeInteger16(stream, iso1CertificateUpdateResType->RetryCounter);
  9421. /* valid EE */
  9422. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9423. }
  9424. }
  9425. grammarID = 3;
  9426. } else if (1==1) {
  9427. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9428. if(errn == 0) {
  9429. done = 1;
  9430. }
  9431. grammarID = 4;
  9432. } else {
  9433. errn = EXI_ERROR_UNKOWN_EVENT;
  9434. }
  9435. break;
  9436. case 3:
  9437. /* Element[END_ELEMENT] */
  9438. if (1==1) {
  9439. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9440. if(errn == 0) {
  9441. done = 1;
  9442. }
  9443. grammarID = 4;
  9444. } else {
  9445. errn = EXI_ERROR_UNKOWN_EVENT;
  9446. }
  9447. break;
  9448. default:
  9449. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9450. break;
  9451. }
  9452. if(errn) {
  9453. done = 1;
  9454. }
  9455. }
  9456. return errn;
  9457. }
  9458. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID)', derivedBy='EXTENSION'. */
  9459. static int encode_iso1CertificateInstallationResType(bitstream_t* stream, struct iso1CertificateInstallationResType* iso1CertificateInstallationResType) {
  9460. int grammarID = 306;
  9461. int done = 0;
  9462. while(!done) {
  9463. switch(grammarID) {
  9464. case 306:
  9465. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  9466. if ( 1 == 1 ) {
  9467. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9468. if(errn == 0) {
  9469. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  9470. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9471. if(errn == 0) {
  9472. errn = encodeNBitUnsignedInteger(stream, 5, iso1CertificateInstallationResType->ResponseCode);
  9473. /* valid EE */
  9474. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9475. }
  9476. }
  9477. grammarID = 307;
  9478. } else {
  9479. errn = EXI_ERROR_UNKOWN_EVENT;
  9480. }
  9481. break;
  9482. case 307:
  9483. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */
  9484. if ( 1 == 1 ) {
  9485. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9486. if(errn == 0) {
  9487. errn = encode_iso1CertificateChainType(stream, &iso1CertificateInstallationResType->SAProvisioningCertificateChain );
  9488. }
  9489. grammarID = 308;
  9490. } else {
  9491. errn = EXI_ERROR_UNKOWN_EVENT;
  9492. }
  9493. break;
  9494. case 308:
  9495. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  9496. if ( 1 == 1 ) {
  9497. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9498. if(errn == 0) {
  9499. errn = encode_iso1CertificateChainType(stream, &iso1CertificateInstallationResType->ContractSignatureCertChain );
  9500. }
  9501. grammarID = 309;
  9502. } else {
  9503. errn = EXI_ERROR_UNKOWN_EVENT;
  9504. }
  9505. break;
  9506. case 309:
  9507. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */
  9508. if ( 1 == 1 ) {
  9509. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9510. if(errn == 0) {
  9511. errn = encode_iso1ContractSignatureEncryptedPrivateKeyType(stream, &iso1CertificateInstallationResType->ContractSignatureEncryptedPrivateKey );
  9512. }
  9513. grammarID = 310;
  9514. } else {
  9515. errn = EXI_ERROR_UNKOWN_EVENT;
  9516. }
  9517. break;
  9518. case 310:
  9519. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */
  9520. if ( 1 == 1 ) {
  9521. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9522. if(errn == 0) {
  9523. errn = encode_iso1DiffieHellmanPublickeyType(stream, &iso1CertificateInstallationResType->DHpublickey );
  9524. }
  9525. grammarID = 311;
  9526. } else {
  9527. errn = EXI_ERROR_UNKOWN_EVENT;
  9528. }
  9529. break;
  9530. case 311:
  9531. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  9532. if ( 1 == 1 ) {
  9533. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9534. if(errn == 0) {
  9535. errn = encode_iso1EMAIDType(stream, &iso1CertificateInstallationResType->eMAID );
  9536. }
  9537. grammarID = 3;
  9538. } else {
  9539. errn = EXI_ERROR_UNKOWN_EVENT;
  9540. }
  9541. break;
  9542. case 3:
  9543. /* Element[END_ELEMENT] */
  9544. if (1==1) {
  9545. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9546. if(errn == 0) {
  9547. done = 1;
  9548. }
  9549. grammarID = 4;
  9550. } else {
  9551. errn = EXI_ERROR_UNKOWN_EVENT;
  9552. }
  9553. break;
  9554. default:
  9555. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9556. break;
  9557. }
  9558. if(errn) {
  9559. done = 1;
  9560. }
  9561. }
  9562. return errn;
  9563. }
  9564. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */
  9565. static int encode_iso1CanonicalizationMethodType(bitstream_t* stream, struct iso1CanonicalizationMethodType* iso1CanonicalizationMethodType) {
  9566. int grammarID = 312;
  9567. int done = 0;
  9568. int wcDone = 0;
  9569. while(!done) {
  9570. switch(grammarID) {
  9571. case 312:
  9572. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  9573. if (1==1) {
  9574. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9575. if(errn == 0) {
  9576. /* encode string as string table miss (+2 len)*/
  9577. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CanonicalizationMethodType->Algorithm.charactersLen + 2));
  9578. if (errn == 0) {
  9579. errn = encodeCharacters(stream, iso1CanonicalizationMethodType->Algorithm.characters, iso1CanonicalizationMethodType->Algorithm.charactersLen);
  9580. }
  9581. }
  9582. grammarID = 115;
  9583. } else {
  9584. errn = EXI_ERROR_UNKOWN_EVENT;
  9585. }
  9586. break;
  9587. case 115:
  9588. /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  9589. if (1==0) {
  9590. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9591. grammarID = 116;
  9592. } else if ( iso1CanonicalizationMethodType->ANY_isUsed == 0u || wcDone ) {
  9593. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9594. if(errn == 0) {
  9595. done = 1;
  9596. }
  9597. grammarID = 4;
  9598. } else if ( iso1CanonicalizationMethodType->ANY_isUsed == 1u ) {
  9599. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  9600. if(errn == 0) {
  9601. /* encode string as string table miss (+2 len)*/
  9602. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CanonicalizationMethodType->ANY.charactersLen + 2));
  9603. if (errn == 0) {
  9604. errn = encodeCharacters(stream, iso1CanonicalizationMethodType->ANY.characters, iso1CanonicalizationMethodType->ANY.charactersLen);
  9605. }
  9606. }
  9607. wcDone = 1;
  9608. grammarID = 116;
  9609. } else {
  9610. errn = EXI_ERROR_UNKOWN_EVENT;
  9611. }
  9612. break;
  9613. case 116:
  9614. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  9615. if (1==0) {
  9616. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9617. grammarID = 116;
  9618. } else if ( iso1CanonicalizationMethodType->ANY_isUsed == 0u || wcDone ) {
  9619. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9620. if(errn == 0) {
  9621. done = 1;
  9622. }
  9623. grammarID = 4;
  9624. } else if ( iso1CanonicalizationMethodType->ANY_isUsed == 1u ) {
  9625. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  9626. if(errn == 0) {
  9627. /* encode string as string table miss (+2 len)*/
  9628. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CanonicalizationMethodType->ANY.charactersLen + 2));
  9629. if (errn == 0) {
  9630. errn = encodeCharacters(stream, iso1CanonicalizationMethodType->ANY.characters, iso1CanonicalizationMethodType->ANY.charactersLen);
  9631. }
  9632. }
  9633. wcDone = 1;
  9634. grammarID = 116;
  9635. } else {
  9636. errn = EXI_ERROR_UNKOWN_EVENT;
  9637. }
  9638. break;
  9639. default:
  9640. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9641. break;
  9642. }
  9643. if(errn) {
  9644. done = 1;
  9645. }
  9646. }
  9647. return errn;
  9648. }
  9649. /* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */
  9650. static int encode_iso1WeldingDetectionReqType(bitstream_t* stream, struct iso1WeldingDetectionReqType* iso1WeldingDetectionReqType) {
  9651. int grammarID = 313;
  9652. int done = 0;
  9653. while(!done) {
  9654. switch(grammarID) {
  9655. case 313:
  9656. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  9657. if ( 1 == 1 ) {
  9658. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9659. if(errn == 0) {
  9660. errn = encode_iso1DC_EVStatusType(stream, &iso1WeldingDetectionReqType->DC_EVStatus );
  9661. }
  9662. grammarID = 3;
  9663. } else {
  9664. errn = EXI_ERROR_UNKOWN_EVENT;
  9665. }
  9666. break;
  9667. case 3:
  9668. /* Element[END_ELEMENT] */
  9669. if (1==1) {
  9670. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9671. if(errn == 0) {
  9672. done = 1;
  9673. }
  9674. grammarID = 4;
  9675. } else {
  9676. errn = EXI_ERROR_UNKOWN_EVENT;
  9677. }
  9678. break;
  9679. default:
  9680. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9681. break;
  9682. }
  9683. if(errn) {
  9684. done = 1;
  9685. }
  9686. }
  9687. return errn;
  9688. }
  9689. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */
  9690. static int encode_iso1DC_EVStatusType(bitstream_t* stream, struct iso1DC_EVStatusType* iso1DC_EVStatusType) {
  9691. int grammarID = 314;
  9692. int done = 0;
  9693. while(!done) {
  9694. switch(grammarID) {
  9695. case 314:
  9696. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */
  9697. if ( 1 == 1 ) {
  9698. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9699. if(errn == 0) {
  9700. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9701. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9702. if(errn == 0) {
  9703. errn = encodeBoolean(stream, iso1DC_EVStatusType->EVReady);
  9704. /* valid EE */
  9705. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9706. }
  9707. }
  9708. grammarID = 315;
  9709. } else {
  9710. errn = EXI_ERROR_UNKOWN_EVENT;
  9711. }
  9712. break;
  9713. case 315:
  9714. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */
  9715. if ( 1 == 1 ) {
  9716. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9717. if(errn == 0) {
  9718. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  9719. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9720. if(errn == 0) {
  9721. errn = encodeNBitUnsignedInteger(stream, 4, iso1DC_EVStatusType->EVErrorCode);
  9722. /* valid EE */
  9723. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9724. }
  9725. }
  9726. grammarID = 316;
  9727. } else {
  9728. errn = EXI_ERROR_UNKOWN_EVENT;
  9729. }
  9730. break;
  9731. case 316:
  9732. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */
  9733. if ( 1 == 1 ) {
  9734. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9735. if(errn == 0) {
  9736. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  9737. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9738. if(errn == 0) {
  9739. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(iso1DC_EVStatusType->EVRESSSOC - 0));
  9740. /* valid EE */
  9741. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9742. }
  9743. }
  9744. grammarID = 3;
  9745. } else {
  9746. errn = EXI_ERROR_UNKOWN_EVENT;
  9747. }
  9748. break;
  9749. case 3:
  9750. /* Element[END_ELEMENT] */
  9751. if (1==1) {
  9752. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9753. if(errn == 0) {
  9754. done = 1;
  9755. }
  9756. grammarID = 4;
  9757. } else {
  9758. errn = EXI_ERROR_UNKOWN_EVENT;
  9759. }
  9760. break;
  9761. default:
  9762. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9763. break;
  9764. }
  9765. if(errn) {
  9766. done = 1;
  9767. }
  9768. }
  9769. return errn;
  9770. }
  9771. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2013:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2013:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1})', derivedBy='EXTENSION'. */
  9772. static int encode_iso1CurrentDemandResType(bitstream_t* stream, struct iso1CurrentDemandResType* iso1CurrentDemandResType) {
  9773. int grammarID = 317;
  9774. int done = 0;
  9775. while(!done) {
  9776. switch(grammarID) {
  9777. case 317:
  9778. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  9779. if ( 1 == 1 ) {
  9780. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9781. if(errn == 0) {
  9782. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  9783. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9784. if(errn == 0) {
  9785. errn = encodeNBitUnsignedInteger(stream, 5, iso1CurrentDemandResType->ResponseCode);
  9786. /* valid EE */
  9787. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9788. }
  9789. }
  9790. grammarID = 318;
  9791. } else {
  9792. errn = EXI_ERROR_UNKOWN_EVENT;
  9793. }
  9794. break;
  9795. case 318:
  9796. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  9797. if ( 1 == 1 ) {
  9798. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9799. if(errn == 0) {
  9800. errn = encode_iso1DC_EVSEStatusType(stream, &iso1CurrentDemandResType->DC_EVSEStatus );
  9801. }
  9802. grammarID = 319;
  9803. } else {
  9804. errn = EXI_ERROR_UNKOWN_EVENT;
  9805. }
  9806. break;
  9807. case 319:
  9808. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */
  9809. if ( 1 == 1 ) {
  9810. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9811. if(errn == 0) {
  9812. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEPresentVoltage );
  9813. }
  9814. grammarID = 320;
  9815. } else {
  9816. errn = EXI_ERROR_UNKOWN_EVENT;
  9817. }
  9818. break;
  9819. case 320:
  9820. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */
  9821. if ( 1 == 1 ) {
  9822. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9823. if(errn == 0) {
  9824. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEPresentCurrent );
  9825. }
  9826. grammarID = 321;
  9827. } else {
  9828. errn = EXI_ERROR_UNKOWN_EVENT;
  9829. }
  9830. break;
  9831. case 321:
  9832. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */
  9833. if ( 1 == 1 ) {
  9834. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9835. if(errn == 0) {
  9836. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9837. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9838. if(errn == 0) {
  9839. errn = encodeBoolean(stream, iso1CurrentDemandResType->EVSECurrentLimitAchieved);
  9840. /* valid EE */
  9841. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9842. }
  9843. }
  9844. grammarID = 322;
  9845. } else {
  9846. errn = EXI_ERROR_UNKOWN_EVENT;
  9847. }
  9848. break;
  9849. case 322:
  9850. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */
  9851. if ( 1 == 1 ) {
  9852. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9853. if(errn == 0) {
  9854. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9855. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9856. if(errn == 0) {
  9857. errn = encodeBoolean(stream, iso1CurrentDemandResType->EVSEVoltageLimitAchieved);
  9858. /* valid EE */
  9859. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9860. }
  9861. }
  9862. grammarID = 323;
  9863. } else {
  9864. errn = EXI_ERROR_UNKOWN_EVENT;
  9865. }
  9866. break;
  9867. case 323:
  9868. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */
  9869. if ( 1 == 1 ) {
  9870. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9871. if(errn == 0) {
  9872. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  9873. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9874. if(errn == 0) {
  9875. errn = encodeBoolean(stream, iso1CurrentDemandResType->EVSEPowerLimitAchieved);
  9876. /* valid EE */
  9877. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9878. }
  9879. }
  9880. grammarID = 324;
  9881. } else {
  9882. errn = EXI_ERROR_UNKOWN_EVENT;
  9883. }
  9884. break;
  9885. case 324:
  9886. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  9887. if ( iso1CurrentDemandResType->EVSEMaximumVoltageLimit_isUsed == 1u ) {
  9888. errn = encodeNBitUnsignedInteger(stream, 3, 0);
  9889. if(errn == 0) {
  9890. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumVoltageLimit );
  9891. }
  9892. grammarID = 325;
  9893. } else if ( iso1CurrentDemandResType->EVSEMaximumCurrentLimit_isUsed == 1u ) {
  9894. errn = encodeNBitUnsignedInteger(stream, 3, 1);
  9895. if(errn == 0) {
  9896. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumCurrentLimit );
  9897. }
  9898. grammarID = 326;
  9899. } else if ( iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed == 1u ) {
  9900. errn = encodeNBitUnsignedInteger(stream, 3, 2);
  9901. if(errn == 0) {
  9902. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumPowerLimit );
  9903. }
  9904. grammarID = 327;
  9905. } else if ( 1 == 1 ) {
  9906. errn = encodeNBitUnsignedInteger(stream, 3, 3);
  9907. if(errn == 0) {
  9908. /* FirstStartTag[CHARACTERS[STRING]] */
  9909. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9910. if(errn == 0) {
  9911. /* encode string as string table miss (+2 len)*/
  9912. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen + 2));
  9913. if (errn == 0) {
  9914. errn = encodeCharacters(stream, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType->EVSEID.charactersLen);
  9915. }
  9916. /* valid EE */
  9917. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9918. }
  9919. }
  9920. grammarID = 328;
  9921. } else {
  9922. errn = EXI_ERROR_UNKOWN_EVENT;
  9923. }
  9924. break;
  9925. case 325:
  9926. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  9927. if ( iso1CurrentDemandResType->EVSEMaximumCurrentLimit_isUsed == 1u ) {
  9928. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9929. if(errn == 0) {
  9930. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumCurrentLimit );
  9931. }
  9932. grammarID = 326;
  9933. } else if ( iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed == 1u ) {
  9934. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9935. if(errn == 0) {
  9936. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumPowerLimit );
  9937. }
  9938. grammarID = 327;
  9939. } else if ( 1 == 1 ) {
  9940. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  9941. if(errn == 0) {
  9942. /* FirstStartTag[CHARACTERS[STRING]] */
  9943. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9944. if(errn == 0) {
  9945. /* encode string as string table miss (+2 len)*/
  9946. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen + 2));
  9947. if (errn == 0) {
  9948. errn = encodeCharacters(stream, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType->EVSEID.charactersLen);
  9949. }
  9950. /* valid EE */
  9951. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9952. }
  9953. }
  9954. grammarID = 328;
  9955. } else {
  9956. errn = EXI_ERROR_UNKOWN_EVENT;
  9957. }
  9958. break;
  9959. case 326:
  9960. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  9961. if ( iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed == 1u ) {
  9962. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  9963. if(errn == 0) {
  9964. errn = encode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumPowerLimit );
  9965. }
  9966. grammarID = 327;
  9967. } else if ( 1 == 1 ) {
  9968. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  9969. if(errn == 0) {
  9970. /* FirstStartTag[CHARACTERS[STRING]] */
  9971. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9972. if(errn == 0) {
  9973. /* encode string as string table miss (+2 len)*/
  9974. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen + 2));
  9975. if (errn == 0) {
  9976. errn = encodeCharacters(stream, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType->EVSEID.charactersLen);
  9977. }
  9978. /* valid EE */
  9979. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9980. }
  9981. }
  9982. grammarID = 328;
  9983. } else {
  9984. errn = EXI_ERROR_UNKOWN_EVENT;
  9985. }
  9986. break;
  9987. case 327:
  9988. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  9989. if ( 1 == 1 ) {
  9990. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9991. if(errn == 0) {
  9992. /* FirstStartTag[CHARACTERS[STRING]] */
  9993. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  9994. if(errn == 0) {
  9995. /* encode string as string table miss (+2 len)*/
  9996. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen + 2));
  9997. if (errn == 0) {
  9998. errn = encodeCharacters(stream, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType->EVSEID.charactersLen);
  9999. }
  10000. /* valid EE */
  10001. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10002. }
  10003. }
  10004. grammarID = 328;
  10005. } else {
  10006. errn = EXI_ERROR_UNKOWN_EVENT;
  10007. }
  10008. break;
  10009. case 328:
  10010. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */
  10011. if ( 1 == 1 ) {
  10012. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10013. if(errn == 0) {
  10014. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  10015. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10016. if(errn == 0) {
  10017. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1CurrentDemandResType->SAScheduleTupleID - 1));
  10018. /* valid EE */
  10019. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10020. }
  10021. }
  10022. grammarID = 329;
  10023. } else {
  10024. errn = EXI_ERROR_UNKOWN_EVENT;
  10025. }
  10026. break;
  10027. case 329:
  10028. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */
  10029. if ( iso1CurrentDemandResType->MeterInfo_isUsed == 1u ) {
  10030. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10031. if(errn == 0) {
  10032. errn = encode_iso1MeterInfoType(stream, &iso1CurrentDemandResType->MeterInfo );
  10033. }
  10034. grammarID = 330;
  10035. } else if ( iso1CurrentDemandResType->ReceiptRequired_isUsed == 1u ) {
  10036. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10037. if(errn == 0) {
  10038. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  10039. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10040. if(errn == 0) {
  10041. errn = encodeBoolean(stream, iso1CurrentDemandResType->ReceiptRequired);
  10042. /* valid EE */
  10043. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10044. }
  10045. }
  10046. grammarID = 3;
  10047. } else if (1==1) {
  10048. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  10049. if(errn == 0) {
  10050. done = 1;
  10051. }
  10052. grammarID = 4;
  10053. } else {
  10054. errn = EXI_ERROR_UNKOWN_EVENT;
  10055. }
  10056. break;
  10057. case 330:
  10058. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */
  10059. if ( iso1CurrentDemandResType->ReceiptRequired_isUsed == 1u ) {
  10060. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10061. if(errn == 0) {
  10062. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  10063. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10064. if(errn == 0) {
  10065. errn = encodeBoolean(stream, iso1CurrentDemandResType->ReceiptRequired);
  10066. /* valid EE */
  10067. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10068. }
  10069. }
  10070. grammarID = 3;
  10071. } else if (1==1) {
  10072. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10073. if(errn == 0) {
  10074. done = 1;
  10075. }
  10076. grammarID = 4;
  10077. } else {
  10078. errn = EXI_ERROR_UNKOWN_EVENT;
  10079. }
  10080. break;
  10081. case 3:
  10082. /* Element[END_ELEMENT] */
  10083. if (1==1) {
  10084. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10085. if(errn == 0) {
  10086. done = 1;
  10087. }
  10088. grammarID = 4;
  10089. } else {
  10090. errn = EXI_ERROR_UNKOWN_EVENT;
  10091. }
  10092. break;
  10093. default:
  10094. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10095. break;
  10096. }
  10097. if(errn) {
  10098. done = 1;
  10099. }
  10100. }
  10101. return errn;
  10102. }
  10103. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService)', derivedBy='RESTRICTION'. */
  10104. static int encode_iso1ServiceType(bitstream_t* stream, struct iso1ServiceType* iso1ServiceType) {
  10105. int grammarID = 331;
  10106. int done = 0;
  10107. while(!done) {
  10108. switch(grammarID) {
  10109. case 331:
  10110. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */
  10111. if ( 1 == 1 ) {
  10112. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10113. if(errn == 0) {
  10114. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  10115. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10116. if(errn == 0) {
  10117. errn = encodeUnsignedInteger16(stream, iso1ServiceType->ServiceID);
  10118. /* valid EE */
  10119. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10120. }
  10121. }
  10122. grammarID = 332;
  10123. } else {
  10124. errn = EXI_ERROR_UNKOWN_EVENT;
  10125. }
  10126. break;
  10127. case 332:
  10128. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  10129. if ( iso1ServiceType->ServiceName_isUsed == 1u ) {
  10130. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10131. if(errn == 0) {
  10132. /* FirstStartTag[CHARACTERS[STRING]] */
  10133. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10134. if(errn == 0) {
  10135. /* encode string as string table miss (+2 len)*/
  10136. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ServiceType->ServiceName.charactersLen + 2));
  10137. if (errn == 0) {
  10138. errn = encodeCharacters(stream, iso1ServiceType->ServiceName.characters, iso1ServiceType->ServiceName.charactersLen);
  10139. }
  10140. /* valid EE */
  10141. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10142. }
  10143. }
  10144. grammarID = 333;
  10145. } else if ( 1 == 1 ) {
  10146. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10147. if(errn == 0) {
  10148. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10149. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10150. if(errn == 0) {
  10151. errn = encodeNBitUnsignedInteger(stream, 2, iso1ServiceType->ServiceCategory);
  10152. /* valid EE */
  10153. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10154. }
  10155. }
  10156. grammarID = 334;
  10157. } else {
  10158. errn = EXI_ERROR_UNKOWN_EVENT;
  10159. }
  10160. break;
  10161. case 333:
  10162. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  10163. if ( 1 == 1 ) {
  10164. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10165. if(errn == 0) {
  10166. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10167. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10168. if(errn == 0) {
  10169. errn = encodeNBitUnsignedInteger(stream, 2, iso1ServiceType->ServiceCategory);
  10170. /* valid EE */
  10171. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10172. }
  10173. }
  10174. grammarID = 334;
  10175. } else {
  10176. errn = EXI_ERROR_UNKOWN_EVENT;
  10177. }
  10178. break;
  10179. case 334:
  10180. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  10181. if ( iso1ServiceType->ServiceScope_isUsed == 1u ) {
  10182. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10183. if(errn == 0) {
  10184. /* FirstStartTag[CHARACTERS[STRING]] */
  10185. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10186. if(errn == 0) {
  10187. /* encode string as string table miss (+2 len)*/
  10188. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ServiceType->ServiceScope.charactersLen + 2));
  10189. if (errn == 0) {
  10190. errn = encodeCharacters(stream, iso1ServiceType->ServiceScope.characters, iso1ServiceType->ServiceScope.charactersLen);
  10191. }
  10192. /* valid EE */
  10193. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10194. }
  10195. }
  10196. grammarID = 335;
  10197. } else if ( 1 == 1 ) {
  10198. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10199. if(errn == 0) {
  10200. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  10201. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10202. if(errn == 0) {
  10203. errn = encodeBoolean(stream, iso1ServiceType->FreeService);
  10204. /* valid EE */
  10205. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10206. }
  10207. }
  10208. grammarID = 3;
  10209. } else {
  10210. errn = EXI_ERROR_UNKOWN_EVENT;
  10211. }
  10212. break;
  10213. case 335:
  10214. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  10215. if ( 1 == 1 ) {
  10216. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10217. if(errn == 0) {
  10218. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  10219. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10220. if(errn == 0) {
  10221. errn = encodeBoolean(stream, iso1ServiceType->FreeService);
  10222. /* valid EE */
  10223. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10224. }
  10225. }
  10226. grammarID = 3;
  10227. } else {
  10228. errn = EXI_ERROR_UNKOWN_EVENT;
  10229. }
  10230. break;
  10231. case 3:
  10232. /* Element[END_ELEMENT] */
  10233. if (1==1) {
  10234. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10235. if(errn == 0) {
  10236. done = 1;
  10237. }
  10238. grammarID = 4;
  10239. } else {
  10240. errn = EXI_ERROR_UNKOWN_EVENT;
  10241. }
  10242. break;
  10243. default:
  10244. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10245. break;
  10246. }
  10247. if(errn) {
  10248. done = 1;
  10249. }
  10250. }
  10251. return errn;
  10252. }
  10253. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgBody":ServiceCategory{0-1})', derivedBy='EXTENSION'. */
  10254. static int encode_iso1ServiceDiscoveryReqType(bitstream_t* stream, struct iso1ServiceDiscoveryReqType* iso1ServiceDiscoveryReqType) {
  10255. int grammarID = 336;
  10256. int done = 0;
  10257. while(!done) {
  10258. switch(grammarID) {
  10259. case 336:
  10260. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */
  10261. if ( iso1ServiceDiscoveryReqType->ServiceScope_isUsed == 1u ) {
  10262. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10263. if(errn == 0) {
  10264. /* FirstStartTag[CHARACTERS[STRING]] */
  10265. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10266. if(errn == 0) {
  10267. /* encode string as string table miss (+2 len)*/
  10268. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1ServiceDiscoveryReqType->ServiceScope.charactersLen + 2));
  10269. if (errn == 0) {
  10270. errn = encodeCharacters(stream, iso1ServiceDiscoveryReqType->ServiceScope.characters, iso1ServiceDiscoveryReqType->ServiceScope.charactersLen);
  10271. }
  10272. /* valid EE */
  10273. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10274. }
  10275. }
  10276. grammarID = 337;
  10277. } else if ( iso1ServiceDiscoveryReqType->ServiceCategory_isUsed == 1u ) {
  10278. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10279. if(errn == 0) {
  10280. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10281. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10282. if(errn == 0) {
  10283. errn = encodeNBitUnsignedInteger(stream, 2, iso1ServiceDiscoveryReqType->ServiceCategory);
  10284. /* valid EE */
  10285. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10286. }
  10287. }
  10288. grammarID = 3;
  10289. } else if (1==1) {
  10290. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  10291. if(errn == 0) {
  10292. done = 1;
  10293. }
  10294. grammarID = 4;
  10295. } else {
  10296. errn = EXI_ERROR_UNKOWN_EVENT;
  10297. }
  10298. break;
  10299. case 337:
  10300. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */
  10301. if ( iso1ServiceDiscoveryReqType->ServiceCategory_isUsed == 1u ) {
  10302. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10303. if(errn == 0) {
  10304. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10305. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10306. if(errn == 0) {
  10307. errn = encodeNBitUnsignedInteger(stream, 2, iso1ServiceDiscoveryReqType->ServiceCategory);
  10308. /* valid EE */
  10309. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10310. }
  10311. }
  10312. grammarID = 3;
  10313. } else if (1==1) {
  10314. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10315. if(errn == 0) {
  10316. done = 1;
  10317. }
  10318. grammarID = 4;
  10319. } else {
  10320. errn = EXI_ERROR_UNKOWN_EVENT;
  10321. }
  10322. break;
  10323. case 3:
  10324. /* Element[END_ELEMENT] */
  10325. if (1==1) {
  10326. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10327. if(errn == 0) {
  10328. done = 1;
  10329. }
  10330. grammarID = 4;
  10331. } else {
  10332. errn = EXI_ERROR_UNKOWN_EVENT;
  10333. }
  10334. break;
  10335. default:
  10336. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10337. break;
  10338. }
  10339. if(errn) {
  10340. done = 1;
  10341. }
  10342. }
  10343. return errn;
  10344. }
  10345. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaxCurrent)', derivedBy='EXTENSION'. */
  10346. static int encode_iso1AC_EVSEChargeParameterType(bitstream_t* stream, struct iso1AC_EVSEChargeParameterType* iso1AC_EVSEChargeParameterType) {
  10347. int grammarID = 338;
  10348. int done = 0;
  10349. while(!done) {
  10350. switch(grammarID) {
  10351. case 338:
  10352. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */
  10353. if ( 1 == 1 ) {
  10354. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10355. if(errn == 0) {
  10356. errn = encode_iso1AC_EVSEStatusType(stream, &iso1AC_EVSEChargeParameterType->AC_EVSEStatus );
  10357. }
  10358. grammarID = 339;
  10359. } else {
  10360. errn = EXI_ERROR_UNKOWN_EVENT;
  10361. }
  10362. break;
  10363. case 339:
  10364. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */
  10365. if ( 1 == 1 ) {
  10366. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10367. if(errn == 0) {
  10368. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVSEChargeParameterType->EVSENominalVoltage );
  10369. }
  10370. grammarID = 340;
  10371. } else {
  10372. errn = EXI_ERROR_UNKOWN_EVENT;
  10373. }
  10374. break;
  10375. case 340:
  10376. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */
  10377. if ( 1 == 1 ) {
  10378. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10379. if(errn == 0) {
  10380. errn = encode_iso1PhysicalValueType(stream, &iso1AC_EVSEChargeParameterType->EVSEMaxCurrent );
  10381. }
  10382. grammarID = 3;
  10383. } else {
  10384. errn = EXI_ERROR_UNKOWN_EVENT;
  10385. }
  10386. break;
  10387. case 3:
  10388. /* Element[END_ELEMENT] */
  10389. if (1==1) {
  10390. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10391. if(errn == 0) {
  10392. done = 1;
  10393. }
  10394. grammarID = 4;
  10395. } else {
  10396. errn = EXI_ERROR_UNKOWN_EVENT;
  10397. }
  10398. break;
  10399. default:
  10400. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10401. break;
  10402. }
  10403. if(errn) {
  10404. done = 1;
  10405. }
  10406. }
  10407. return errn;
  10408. }
  10409. /* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */
  10410. static int encode_iso1CableCheckReqType(bitstream_t* stream, struct iso1CableCheckReqType* iso1CableCheckReqType) {
  10411. int grammarID = 313;
  10412. int done = 0;
  10413. while(!done) {
  10414. switch(grammarID) {
  10415. case 313:
  10416. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  10417. if ( 1 == 1 ) {
  10418. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10419. if(errn == 0) {
  10420. errn = encode_iso1DC_EVStatusType(stream, &iso1CableCheckReqType->DC_EVStatus );
  10421. }
  10422. grammarID = 3;
  10423. } else {
  10424. errn = EXI_ERROR_UNKOWN_EVENT;
  10425. }
  10426. break;
  10427. case 3:
  10428. /* Element[END_ELEMENT] */
  10429. if (1==1) {
  10430. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10431. if(errn == 0) {
  10432. done = 1;
  10433. }
  10434. grammarID = 4;
  10435. } else {
  10436. errn = EXI_ERROR_UNKOWN_EVENT;
  10437. }
  10438. break;
  10439. default:
  10440. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10441. break;
  10442. }
  10443. if(errn) {
  10444. done = 1;
  10445. }
  10446. }
  10447. return errn;
  10448. }
  10449. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID{0-1})', derivedBy='RESTRICTION'. */
  10450. static int encode_iso1SelectedServiceType(bitstream_t* stream, struct iso1SelectedServiceType* iso1SelectedServiceType) {
  10451. int grammarID = 341;
  10452. int done = 0;
  10453. while(!done) {
  10454. switch(grammarID) {
  10455. case 341:
  10456. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */
  10457. if ( 1 == 1 ) {
  10458. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10459. if(errn == 0) {
  10460. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  10461. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10462. if(errn == 0) {
  10463. errn = encodeUnsignedInteger16(stream, iso1SelectedServiceType->ServiceID);
  10464. /* valid EE */
  10465. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10466. }
  10467. }
  10468. grammarID = 342;
  10469. } else {
  10470. errn = EXI_ERROR_UNKOWN_EVENT;
  10471. }
  10472. break;
  10473. case 342:
  10474. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */
  10475. if ( iso1SelectedServiceType->ParameterSetID_isUsed == 1u ) {
  10476. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10477. if(errn == 0) {
  10478. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  10479. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10480. if(errn == 0) {
  10481. errn = encodeInteger16(stream, iso1SelectedServiceType->ParameterSetID);
  10482. /* valid EE */
  10483. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10484. }
  10485. }
  10486. grammarID = 3;
  10487. } else if (1==1) {
  10488. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10489. if(errn == 0) {
  10490. done = 1;
  10491. }
  10492. grammarID = 4;
  10493. } else {
  10494. errn = EXI_ERROR_UNKOWN_EVENT;
  10495. }
  10496. break;
  10497. case 3:
  10498. /* Element[END_ELEMENT] */
  10499. if (1==1) {
  10500. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10501. if(errn == 0) {
  10502. done = 1;
  10503. }
  10504. grammarID = 4;
  10505. } else {
  10506. errn = EXI_ERROR_UNKOWN_EVENT;
  10507. }
  10508. break;
  10509. default:
  10510. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10511. break;
  10512. }
  10513. if(errn) {
  10514. done = 1;
  10515. }
  10516. }
  10517. return errn;
  10518. }
  10519. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */
  10520. static int encode_iso1AC_EVSEStatusType(bitstream_t* stream, struct iso1AC_EVSEStatusType* iso1AC_EVSEStatusType) {
  10521. int grammarID = 343;
  10522. int done = 0;
  10523. while(!done) {
  10524. switch(grammarID) {
  10525. case 343:
  10526. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */
  10527. if ( 1 == 1 ) {
  10528. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10529. if(errn == 0) {
  10530. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  10531. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10532. if(errn == 0) {
  10533. errn = encodeUnsignedInteger16(stream, iso1AC_EVSEStatusType->NotificationMaxDelay);
  10534. /* valid EE */
  10535. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10536. }
  10537. }
  10538. grammarID = 344;
  10539. } else {
  10540. errn = EXI_ERROR_UNKOWN_EVENT;
  10541. }
  10542. break;
  10543. case 344:
  10544. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */
  10545. if ( 1 == 1 ) {
  10546. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10547. if(errn == 0) {
  10548. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10549. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10550. if(errn == 0) {
  10551. errn = encodeNBitUnsignedInteger(stream, 2, iso1AC_EVSEStatusType->EVSENotification);
  10552. /* valid EE */
  10553. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10554. }
  10555. }
  10556. grammarID = 345;
  10557. } else {
  10558. errn = EXI_ERROR_UNKOWN_EVENT;
  10559. }
  10560. break;
  10561. case 345:
  10562. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */
  10563. if ( 1 == 1 ) {
  10564. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10565. if(errn == 0) {
  10566. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  10567. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10568. if(errn == 0) {
  10569. errn = encodeBoolean(stream, iso1AC_EVSEStatusType->RCD);
  10570. /* valid EE */
  10571. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10572. }
  10573. }
  10574. grammarID = 3;
  10575. } else {
  10576. errn = EXI_ERROR_UNKOWN_EVENT;
  10577. }
  10578. break;
  10579. case 3:
  10580. /* Element[END_ELEMENT] */
  10581. if (1==1) {
  10582. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10583. if(errn == 0) {
  10584. done = 1;
  10585. }
  10586. grammarID = 4;
  10587. } else {
  10588. errn = EXI_ERROR_UNKOWN_EVENT;
  10589. }
  10590. break;
  10591. default:
  10592. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10593. break;
  10594. }
  10595. if(errn) {
  10596. done = 1;
  10597. }
  10598. }
  10599. return errn;
  10600. }
  10601. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2013:MsgDataTypes":NumEPriceLevels{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  10602. static int encode_iso1SalesTariffType(bitstream_t* stream, struct iso1SalesTariffType* iso1SalesTariffType) {
  10603. int grammarID = 346;
  10604. int done = 0;
  10605. unsigned int iso1SalesTariffType_SalesTariffEntry_currArrayIndex = 0;
  10606. while(!done) {
  10607. switch(grammarID) {
  10608. case 346:
  10609. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */
  10610. if ( iso1SalesTariffType->Id_isUsed == 1u ) {
  10611. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10612. if(errn == 0) {
  10613. /* encode string as string table miss (+2 len)*/
  10614. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SalesTariffType->Id.charactersLen + 2));
  10615. if (errn == 0) {
  10616. errn = encodeCharacters(stream, iso1SalesTariffType->Id.characters, iso1SalesTariffType->Id.charactersLen);
  10617. }
  10618. }
  10619. grammarID = 347;
  10620. } else if ( 1 == 1 ) {
  10621. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10622. if(errn == 0) {
  10623. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  10624. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10625. if(errn == 0) {
  10626. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1SalesTariffType->SalesTariffID - 1));
  10627. /* valid EE */
  10628. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10629. }
  10630. }
  10631. grammarID = 348;
  10632. } else {
  10633. errn = EXI_ERROR_UNKOWN_EVENT;
  10634. }
  10635. break;
  10636. case 347:
  10637. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */
  10638. if ( 1 == 1 ) {
  10639. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10640. if(errn == 0) {
  10641. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  10642. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10643. if(errn == 0) {
  10644. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1SalesTariffType->SalesTariffID - 1));
  10645. /* valid EE */
  10646. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10647. }
  10648. }
  10649. grammarID = 348;
  10650. } else {
  10651. errn = EXI_ERROR_UNKOWN_EVENT;
  10652. }
  10653. break;
  10654. case 348:
  10655. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */
  10656. if ( iso1SalesTariffType->SalesTariffDescription_isUsed == 1u ) {
  10657. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10658. if(errn == 0) {
  10659. /* FirstStartTag[CHARACTERS[STRING]] */
  10660. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10661. if(errn == 0) {
  10662. /* encode string as string table miss (+2 len)*/
  10663. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SalesTariffType->SalesTariffDescription.charactersLen + 2));
  10664. if (errn == 0) {
  10665. errn = encodeCharacters(stream, iso1SalesTariffType->SalesTariffDescription.characters, iso1SalesTariffType->SalesTariffDescription.charactersLen);
  10666. }
  10667. /* valid EE */
  10668. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10669. }
  10670. }
  10671. grammarID = 349;
  10672. } else if ( iso1SalesTariffType->NumEPriceLevels_isUsed == 1u ) {
  10673. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10674. if(errn == 0) {
  10675. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  10676. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10677. if(errn == 0) {
  10678. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1SalesTariffType->NumEPriceLevels - 0));
  10679. /* valid EE */
  10680. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10681. }
  10682. }
  10683. grammarID = 350;
  10684. } else if (iso1SalesTariffType_SalesTariffEntry_currArrayIndex < iso1SalesTariffType->SalesTariffEntry.arrayLen ) {
  10685. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  10686. if(errn == 0) {
  10687. errn = encode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array [iso1SalesTariffType_SalesTariffEntry_currArrayIndex++]);
  10688. }
  10689. grammarID = 351;
  10690. } else {
  10691. errn = EXI_ERROR_UNKOWN_EVENT;
  10692. }
  10693. break;
  10694. case 349:
  10695. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */
  10696. if ( iso1SalesTariffType->NumEPriceLevels_isUsed == 1u ) {
  10697. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10698. if(errn == 0) {
  10699. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  10700. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10701. if(errn == 0) {
  10702. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(iso1SalesTariffType->NumEPriceLevels - 0));
  10703. /* valid EE */
  10704. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10705. }
  10706. }
  10707. grammarID = 350;
  10708. } else if (iso1SalesTariffType_SalesTariffEntry_currArrayIndex < iso1SalesTariffType->SalesTariffEntry.arrayLen ) {
  10709. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10710. if(errn == 0) {
  10711. errn = encode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array [iso1SalesTariffType_SalesTariffEntry_currArrayIndex++]);
  10712. }
  10713. grammarID = 351;
  10714. } else {
  10715. errn = EXI_ERROR_UNKOWN_EVENT;
  10716. }
  10717. break;
  10718. case 350:
  10719. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */
  10720. if (iso1SalesTariffType_SalesTariffEntry_currArrayIndex < iso1SalesTariffType->SalesTariffEntry.arrayLen ) {
  10721. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10722. if(errn == 0) {
  10723. errn = encode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array [iso1SalesTariffType_SalesTariffEntry_currArrayIndex++]);
  10724. }
  10725. grammarID = 351;
  10726. } else {
  10727. errn = EXI_ERROR_UNKOWN_EVENT;
  10728. }
  10729. break;
  10730. case 351:
  10731. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */
  10732. if (iso1SalesTariffType_SalesTariffEntry_currArrayIndex < iso1SalesTariffType->SalesTariffEntry.arrayLen ) {
  10733. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10734. if(errn == 0) {
  10735. errn = encode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array [iso1SalesTariffType_SalesTariffEntry_currArrayIndex++]);
  10736. }
  10737. grammarID = 351;
  10738. } else if (1==1) {
  10739. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10740. if(errn == 0) {
  10741. done = 1;
  10742. }
  10743. grammarID = 4;
  10744. } else {
  10745. errn = EXI_ERROR_UNKOWN_EVENT;
  10746. }
  10747. break;
  10748. default:
  10749. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10750. break;
  10751. }
  10752. if(errn) {
  10753. done = 1;
  10754. }
  10755. }
  10756. return errn;
  10757. }
  10758. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2013:MsgBody":SelectedServiceList)', derivedBy='EXTENSION'. */
  10759. static int encode_iso1PaymentServiceSelectionReqType(bitstream_t* stream, struct iso1PaymentServiceSelectionReqType* iso1PaymentServiceSelectionReqType) {
  10760. int grammarID = 352;
  10761. int done = 0;
  10762. while(!done) {
  10763. switch(grammarID) {
  10764. case 352:
  10765. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */
  10766. if ( 1 == 1 ) {
  10767. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10768. if(errn == 0) {
  10769. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10770. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10771. if(errn == 0) {
  10772. errn = encodeNBitUnsignedInteger(stream, 1, iso1PaymentServiceSelectionReqType->SelectedPaymentOption);
  10773. /* valid EE */
  10774. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10775. }
  10776. }
  10777. grammarID = 353;
  10778. } else {
  10779. errn = EXI_ERROR_UNKOWN_EVENT;
  10780. }
  10781. break;
  10782. case 353:
  10783. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */
  10784. if ( 1 == 1 ) {
  10785. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10786. if(errn == 0) {
  10787. errn = encode_iso1SelectedServiceListType(stream, &iso1PaymentServiceSelectionReqType->SelectedServiceList );
  10788. }
  10789. grammarID = 3;
  10790. } else {
  10791. errn = EXI_ERROR_UNKOWN_EVENT;
  10792. }
  10793. break;
  10794. case 3:
  10795. /* Element[END_ELEMENT] */
  10796. if (1==1) {
  10797. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10798. if(errn == 0) {
  10799. done = 1;
  10800. }
  10801. grammarID = 4;
  10802. } else {
  10803. errn = EXI_ERROR_UNKOWN_EVENT;
  10804. }
  10805. break;
  10806. default:
  10807. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10808. break;
  10809. }
  10810. if(errn) {
  10811. done = 1;
  10812. }
  10813. }
  10814. return errn;
  10815. }
  10816. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertiesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignatureProperty{1-UNBOUNDED})', derivedBy='RESTRICTION'. */
  10817. static int encode_iso1SignaturePropertiesType(bitstream_t* stream, struct iso1SignaturePropertiesType* iso1SignaturePropertiesType) {
  10818. int grammarID = 354;
  10819. int done = 0;
  10820. unsigned int iso1SignaturePropertiesType_SignatureProperty_currArrayIndex = 0;
  10821. while(!done) {
  10822. switch(grammarID) {
  10823. case 354:
  10824. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */
  10825. if ( iso1SignaturePropertiesType->Id_isUsed == 1u ) {
  10826. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10827. if(errn == 0) {
  10828. /* encode string as string table miss (+2 len)*/
  10829. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertiesType->Id.charactersLen + 2));
  10830. if (errn == 0) {
  10831. errn = encodeCharacters(stream, iso1SignaturePropertiesType->Id.characters, iso1SignaturePropertiesType->Id.charactersLen);
  10832. }
  10833. }
  10834. grammarID = 355;
  10835. } else if (iso1SignaturePropertiesType_SignatureProperty_currArrayIndex < iso1SignaturePropertiesType->SignatureProperty.arrayLen ) {
  10836. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10837. if(errn == 0) {
  10838. errn = encode_iso1SignaturePropertyType(stream, &iso1SignaturePropertiesType->SignatureProperty.array [iso1SignaturePropertiesType_SignatureProperty_currArrayIndex++]);
  10839. }
  10840. grammarID = 356;
  10841. } else {
  10842. errn = EXI_ERROR_UNKOWN_EVENT;
  10843. }
  10844. break;
  10845. case 355:
  10846. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */
  10847. if (iso1SignaturePropertiesType_SignatureProperty_currArrayIndex < iso1SignaturePropertiesType->SignatureProperty.arrayLen ) {
  10848. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10849. if(errn == 0) {
  10850. errn = encode_iso1SignaturePropertyType(stream, &iso1SignaturePropertiesType->SignatureProperty.array [iso1SignaturePropertiesType_SignatureProperty_currArrayIndex++]);
  10851. }
  10852. grammarID = 356;
  10853. } else {
  10854. errn = EXI_ERROR_UNKOWN_EVENT;
  10855. }
  10856. break;
  10857. case 356:
  10858. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */
  10859. if (iso1SignaturePropertiesType_SignatureProperty_currArrayIndex < iso1SignaturePropertiesType->SignatureProperty.arrayLen ) {
  10860. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10861. if(errn == 0) {
  10862. errn = encode_iso1SignaturePropertyType(stream, &iso1SignaturePropertiesType->SignatureProperty.array [iso1SignaturePropertiesType_SignatureProperty_currArrayIndex++]);
  10863. }
  10864. grammarID = 356;
  10865. } else if (1==1) {
  10866. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10867. if(errn == 0) {
  10868. done = 1;
  10869. }
  10870. grammarID = 4;
  10871. } else {
  10872. errn = EXI_ERROR_UNKOWN_EVENT;
  10873. }
  10874. break;
  10875. default:
  10876. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10877. break;
  10878. }
  10879. if(errn) {
  10880. done = 1;
  10881. }
  10882. }
  10883. return errn;
  10884. }
  10885. /* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyBaseType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */
  10886. static int encode_iso1BodyBaseType(bitstream_t* stream, struct iso1BodyBaseType* iso1BodyBaseType) {
  10887. int grammarID = 34;
  10888. int done = 0;
  10889. while(!done) {
  10890. switch(grammarID) {
  10891. case 34:
  10892. /* FirstStartTag[END_ELEMENT] */
  10893. if (1==1) {
  10894. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10895. if(errn == 0) {
  10896. done = 1;
  10897. }
  10898. grammarID = 4;
  10899. } else {
  10900. errn = EXI_ERROR_UNKOWN_EVENT;
  10901. }
  10902. break;
  10903. default:
  10904. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10905. break;
  10906. }
  10907. if(errn) {
  10908. done = 1;
  10909. }
  10910. }
  10911. return errn;
  10912. }
  10913. /* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SupportedEnergyTransferModeType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EnergyTransferMode{1-6})', derivedBy='RESTRICTION'. */
  10914. static int encode_iso1SupportedEnergyTransferModeType(bitstream_t* stream, struct iso1SupportedEnergyTransferModeType* iso1SupportedEnergyTransferModeType) {
  10915. int grammarID = 357;
  10916. int done = 0;
  10917. unsigned int iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex = 0;
  10918. while(!done) {
  10919. switch(grammarID) {
  10920. case 357:
  10921. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */
  10922. if (iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) {
  10923. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10924. if(errn == 0) {
  10925. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10926. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10927. if(errn == 0) {
  10928. errn = encodeNBitUnsignedInteger(stream, 3, iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]);
  10929. /* valid EE */
  10930. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10931. }
  10932. }
  10933. grammarID = 358;
  10934. } else {
  10935. errn = EXI_ERROR_UNKOWN_EVENT;
  10936. }
  10937. break;
  10938. case 358:
  10939. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  10940. if (iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) {
  10941. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10942. if(errn == 0) {
  10943. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10944. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10945. if(errn == 0) {
  10946. errn = encodeNBitUnsignedInteger(stream, 3, iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]);
  10947. /* valid EE */
  10948. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10949. }
  10950. }
  10951. grammarID = 359;
  10952. } else if (1==1) {
  10953. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10954. if(errn == 0) {
  10955. done = 1;
  10956. }
  10957. grammarID = 4;
  10958. } else {
  10959. errn = EXI_ERROR_UNKOWN_EVENT;
  10960. }
  10961. break;
  10962. case 359:
  10963. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  10964. if (iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) {
  10965. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10966. if(errn == 0) {
  10967. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10968. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10969. if(errn == 0) {
  10970. errn = encodeNBitUnsignedInteger(stream, 3, iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]);
  10971. /* valid EE */
  10972. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10973. }
  10974. }
  10975. grammarID = 360;
  10976. } else if (1==1) {
  10977. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  10978. if(errn == 0) {
  10979. done = 1;
  10980. }
  10981. grammarID = 4;
  10982. } else {
  10983. errn = EXI_ERROR_UNKOWN_EVENT;
  10984. }
  10985. break;
  10986. case 360:
  10987. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  10988. if (iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) {
  10989. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  10990. if(errn == 0) {
  10991. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10992. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10993. if(errn == 0) {
  10994. errn = encodeNBitUnsignedInteger(stream, 3, iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]);
  10995. /* valid EE */
  10996. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  10997. }
  10998. }
  10999. grammarID = 361;
  11000. } else if (1==1) {
  11001. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11002. if(errn == 0) {
  11003. done = 1;
  11004. }
  11005. grammarID = 4;
  11006. } else {
  11007. errn = EXI_ERROR_UNKOWN_EVENT;
  11008. }
  11009. break;
  11010. case 361:
  11011. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  11012. if (iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) {
  11013. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  11014. if(errn == 0) {
  11015. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  11016. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11017. if(errn == 0) {
  11018. errn = encodeNBitUnsignedInteger(stream, 3, iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]);
  11019. /* valid EE */
  11020. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11021. }
  11022. }
  11023. grammarID = 362;
  11024. } else if (1==1) {
  11025. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11026. if(errn == 0) {
  11027. done = 1;
  11028. }
  11029. grammarID = 4;
  11030. } else {
  11031. errn = EXI_ERROR_UNKOWN_EVENT;
  11032. }
  11033. break;
  11034. case 362:
  11035. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  11036. if (iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) {
  11037. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  11038. if(errn == 0) {
  11039. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  11040. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11041. if(errn == 0) {
  11042. errn = encodeNBitUnsignedInteger(stream, 3, iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]);
  11043. /* valid EE */
  11044. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11045. }
  11046. }
  11047. grammarID = 3;
  11048. } else if (1==1) {
  11049. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11050. if(errn == 0) {
  11051. done = 1;
  11052. }
  11053. grammarID = 4;
  11054. } else {
  11055. errn = EXI_ERROR_UNKOWN_EVENT;
  11056. }
  11057. break;
  11058. case 3:
  11059. /* Element[END_ELEMENT] */
  11060. if (1==1) {
  11061. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11062. if(errn == 0) {
  11063. done = 1;
  11064. }
  11065. grammarID = 4;
  11066. } else {
  11067. errn = EXI_ERROR_UNKOWN_EVENT;
  11068. }
  11069. break;
  11070. default:
  11071. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11072. break;
  11073. }
  11074. if(errn) {
  11075. done = 1;
  11076. }
  11077. }
  11078. return errn;
  11079. }
  11080. /* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusReqType', base type name='BodyBaseType', content type='EMPTY', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */
  11081. static int encode_iso1ChargingStatusReqType(bitstream_t* stream, struct iso1ChargingStatusReqType* iso1ChargingStatusReqType) {
  11082. int grammarID = 34;
  11083. int done = 0;
  11084. while(!done) {
  11085. switch(grammarID) {
  11086. case 34:
  11087. /* FirstStartTag[END_ELEMENT] */
  11088. if (1==1) {
  11089. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11090. if(errn == 0) {
  11091. done = 1;
  11092. }
  11093. grammarID = 4;
  11094. } else {
  11095. errn = EXI_ERROR_UNKOWN_EVENT;
  11096. }
  11097. break;
  11098. default:
  11099. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11100. break;
  11101. }
  11102. if(errn) {
  11103. done = 1;
  11104. }
  11105. }
  11106. return errn;
  11107. }
  11108. /* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */
  11109. static int encode_iso1PaymentServiceSelectionResType(bitstream_t* stream, struct iso1PaymentServiceSelectionResType* iso1PaymentServiceSelectionResType) {
  11110. int grammarID = 122;
  11111. int done = 0;
  11112. while(!done) {
  11113. switch(grammarID) {
  11114. case 122:
  11115. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  11116. if ( 1 == 1 ) {
  11117. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11118. if(errn == 0) {
  11119. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  11120. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11121. if(errn == 0) {
  11122. errn = encodeNBitUnsignedInteger(stream, 5, iso1PaymentServiceSelectionResType->ResponseCode);
  11123. /* valid EE */
  11124. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11125. }
  11126. }
  11127. grammarID = 3;
  11128. } else {
  11129. errn = EXI_ERROR_UNKOWN_EVENT;
  11130. }
  11131. break;
  11132. case 3:
  11133. /* Element[END_ELEMENT] */
  11134. if (1==1) {
  11135. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11136. if(errn == 0) {
  11137. done = 1;
  11138. }
  11139. grammarID = 4;
  11140. } else {
  11141. errn = EXI_ERROR_UNKOWN_EVENT;
  11142. }
  11143. break;
  11144. default:
  11145. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11146. break;
  11147. }
  11148. if(errn) {
  11149. done = 1;
  11150. }
  11151. }
  11152. return errn;
  11153. }
  11154. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */
  11155. static int encode_iso1DigestMethodType(bitstream_t* stream, struct iso1DigestMethodType* iso1DigestMethodType) {
  11156. int grammarID = 312;
  11157. int done = 0;
  11158. int wcDone = 0;
  11159. while(!done) {
  11160. switch(grammarID) {
  11161. case 312:
  11162. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  11163. if (1==1) {
  11164. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11165. if(errn == 0) {
  11166. /* encode string as string table miss (+2 len)*/
  11167. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DigestMethodType->Algorithm.charactersLen + 2));
  11168. if (errn == 0) {
  11169. errn = encodeCharacters(stream, iso1DigestMethodType->Algorithm.characters, iso1DigestMethodType->Algorithm.charactersLen);
  11170. }
  11171. }
  11172. grammarID = 115;
  11173. } else {
  11174. errn = EXI_ERROR_UNKOWN_EVENT;
  11175. }
  11176. break;
  11177. case 115:
  11178. /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  11179. if (1==0) {
  11180. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11181. grammarID = 116;
  11182. } else if ( iso1DigestMethodType->ANY_isUsed == 0u || wcDone ) {
  11183. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11184. if(errn == 0) {
  11185. done = 1;
  11186. }
  11187. grammarID = 4;
  11188. } else if ( iso1DigestMethodType->ANY_isUsed == 1u ) {
  11189. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  11190. if(errn == 0) {
  11191. /* encode string as string table miss (+2 len)*/
  11192. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DigestMethodType->ANY.charactersLen + 2));
  11193. if (errn == 0) {
  11194. errn = encodeCharacters(stream, iso1DigestMethodType->ANY.characters, iso1DigestMethodType->ANY.charactersLen);
  11195. }
  11196. }
  11197. wcDone = 1;
  11198. grammarID = 116;
  11199. } else {
  11200. errn = EXI_ERROR_UNKOWN_EVENT;
  11201. }
  11202. break;
  11203. case 116:
  11204. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  11205. if (1==0) {
  11206. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11207. grammarID = 116;
  11208. } else if ( iso1DigestMethodType->ANY_isUsed == 0u || wcDone ) {
  11209. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11210. if(errn == 0) {
  11211. done = 1;
  11212. }
  11213. grammarID = 4;
  11214. } else if ( iso1DigestMethodType->ANY_isUsed == 1u ) {
  11215. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  11216. if(errn == 0) {
  11217. /* encode string as string table miss (+2 len)*/
  11218. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1DigestMethodType->ANY.charactersLen + 2));
  11219. if (errn == 0) {
  11220. errn = encodeCharacters(stream, iso1DigestMethodType->ANY.characters, iso1DigestMethodType->ANY.charactersLen);
  11221. }
  11222. }
  11223. wcDone = 1;
  11224. grammarID = 116;
  11225. } else {
  11226. errn = EXI_ERROR_UNKOWN_EVENT;
  11227. }
  11228. break;
  11229. default:
  11230. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11231. break;
  11232. }
  11233. if(errn) {
  11234. done = 1;
  11235. }
  11236. }
  11237. return errn;
  11238. }
  11239. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */
  11240. static int encode_iso1SignaturePropertyType(bitstream_t* stream, struct iso1SignaturePropertyType* iso1SignaturePropertyType) {
  11241. int grammarID = 363;
  11242. int done = 0;
  11243. int wcDone = 0;
  11244. while(!done) {
  11245. switch(grammarID) {
  11246. case 363:
  11247. /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */
  11248. if ( iso1SignaturePropertyType->Id_isUsed == 1u ) {
  11249. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  11250. if(errn == 0) {
  11251. /* encode string as string table miss (+2 len)*/
  11252. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertyType->Id.charactersLen + 2));
  11253. if (errn == 0) {
  11254. errn = encodeCharacters(stream, iso1SignaturePropertyType->Id.characters, iso1SignaturePropertyType->Id.charactersLen);
  11255. }
  11256. }
  11257. grammarID = 364;
  11258. } else if (1==1) {
  11259. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11260. if(errn == 0) {
  11261. /* encode string as string table miss (+2 len)*/
  11262. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertyType->Target.charactersLen + 2));
  11263. if (errn == 0) {
  11264. errn = encodeCharacters(stream, iso1SignaturePropertyType->Target.characters, iso1SignaturePropertyType->Target.charactersLen);
  11265. }
  11266. }
  11267. grammarID = 365;
  11268. } else {
  11269. errn = EXI_ERROR_UNKOWN_EVENT;
  11270. }
  11271. break;
  11272. case 364:
  11273. /* StartTag[ATTRIBUTE[STRING](Target)] */
  11274. if (1==1) {
  11275. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11276. if(errn == 0) {
  11277. /* encode string as string table miss (+2 len)*/
  11278. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertyType->Target.charactersLen + 2));
  11279. if (errn == 0) {
  11280. errn = encodeCharacters(stream, iso1SignaturePropertyType->Target.characters, iso1SignaturePropertyType->Target.charactersLen);
  11281. }
  11282. }
  11283. grammarID = 365;
  11284. } else {
  11285. errn = EXI_ERROR_UNKOWN_EVENT;
  11286. }
  11287. break;
  11288. case 365:
  11289. /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  11290. if (1==0) {
  11291. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11292. grammarID = 116;
  11293. } else if ( iso1SignaturePropertyType->ANY_isUsed == 1u ) {
  11294. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11295. if(errn == 0) {
  11296. /* encode string as string table miss (+2 len)*/
  11297. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertyType->ANY.charactersLen + 2));
  11298. if (errn == 0) {
  11299. errn = encodeCharacters(stream, iso1SignaturePropertyType->ANY.characters, iso1SignaturePropertyType->ANY.charactersLen);
  11300. }
  11301. }
  11302. wcDone = 1;
  11303. grammarID = 366;
  11304. } else {
  11305. errn = EXI_ERROR_UNKOWN_EVENT;
  11306. }
  11307. break;
  11308. case 116:
  11309. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  11310. if (1==0) {
  11311. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11312. grammarID = 116;
  11313. } else if ( iso1SignaturePropertyType->ANY_isUsed == 0u || wcDone ) {
  11314. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11315. if(errn == 0) {
  11316. done = 1;
  11317. }
  11318. grammarID = 4;
  11319. } else if ( iso1SignaturePropertyType->ANY_isUsed == 1u ) {
  11320. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  11321. if(errn == 0) {
  11322. /* encode string as string table miss (+2 len)*/
  11323. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertyType->ANY.charactersLen + 2));
  11324. if (errn == 0) {
  11325. errn = encodeCharacters(stream, iso1SignaturePropertyType->ANY.characters, iso1SignaturePropertyType->ANY.charactersLen);
  11326. }
  11327. }
  11328. wcDone = 1;
  11329. grammarID = 116;
  11330. } else {
  11331. errn = EXI_ERROR_UNKOWN_EVENT;
  11332. }
  11333. break;
  11334. case 366:
  11335. /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  11336. if (1==0) {
  11337. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11338. grammarID = 116;
  11339. } else if ( iso1SignaturePropertyType->ANY_isUsed == 1u ) {
  11340. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11341. if(errn == 0) {
  11342. /* encode string as string table miss (+2 len)*/
  11343. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1SignaturePropertyType->ANY.charactersLen + 2));
  11344. if (errn == 0) {
  11345. errn = encodeCharacters(stream, iso1SignaturePropertyType->ANY.characters, iso1SignaturePropertyType->ANY.charactersLen);
  11346. }
  11347. }
  11348. wcDone = 1;
  11349. grammarID = 366;
  11350. } else {
  11351. errn = EXI_ERROR_UNKOWN_EVENT;
  11352. }
  11353. break;
  11354. default:
  11355. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11356. break;
  11357. }
  11358. if(errn) {
  11359. done = 1;
  11360. }
  11361. }
  11362. return errn;
  11363. }
  11364. /* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))', derivedBy='RESTRICTION'. */
  11365. static int encode_iso1PGPDataType(bitstream_t* stream, struct iso1PGPDataType* iso1PGPDataType) {
  11366. int grammarID = 367;
  11367. int done = 0;
  11368. int wcDone = 0;
  11369. while(!done) {
  11370. switch(grammarID) {
  11371. case 367:
  11372. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */
  11373. if ( iso1PGPDataType->PGPKeyID_isUsed == 1u ) {
  11374. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  11375. if(errn == 0) {
  11376. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  11377. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11378. if(errn == 0) {
  11379. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1PGPDataType->PGPKeyID.bytesLen));
  11380. if (errn == 0) {
  11381. errn = encodeBytes(stream, iso1PGPDataType->PGPKeyID.bytes, iso1PGPDataType->PGPKeyID.bytesLen);
  11382. }
  11383. /* valid EE */
  11384. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11385. }
  11386. }
  11387. grammarID = 368;
  11388. } else if ( iso1PGPDataType->PGPKeyPacket_isUsed == 1u ) {
  11389. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11390. if(errn == 0) {
  11391. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  11392. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11393. if(errn == 0) {
  11394. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1PGPDataType->PGPKeyPacket.bytesLen));
  11395. if (errn == 0) {
  11396. errn = encodeBytes(stream, iso1PGPDataType->PGPKeyPacket.bytes, iso1PGPDataType->PGPKeyPacket.bytesLen);
  11397. }
  11398. /* valid EE */
  11399. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11400. }
  11401. }
  11402. grammarID = 369;
  11403. } else {
  11404. errn = EXI_ERROR_UNKOWN_EVENT;
  11405. }
  11406. break;
  11407. case 368:
  11408. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */
  11409. if ( iso1PGPDataType->PGPKeyPacket_isUsed == 1u ) {
  11410. errn = encodeNBitUnsignedInteger(stream, 2, 0);
  11411. if(errn == 0) {
  11412. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  11413. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11414. if(errn == 0) {
  11415. errn = encodeUnsignedInteger16(stream, (uint16_t)(iso1PGPDataType->PGPKeyPacket.bytesLen));
  11416. if (errn == 0) {
  11417. errn = encodeBytes(stream, iso1PGPDataType->PGPKeyPacket.bytes, iso1PGPDataType->PGPKeyPacket.bytesLen);
  11418. }
  11419. /* valid EE */
  11420. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11421. }
  11422. }
  11423. grammarID = 369;
  11424. } else if (1==0) {
  11425. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11426. grammarID = 369;
  11427. } else if ( iso1PGPDataType->ANY_isUsed == 0u || wcDone ) {
  11428. errn = encodeNBitUnsignedInteger(stream, 2, 2);
  11429. if(errn == 0) {
  11430. done = 1;
  11431. }
  11432. grammarID = 4;
  11433. } else {
  11434. errn = EXI_ERROR_UNKOWN_EVENT;
  11435. }
  11436. break;
  11437. case 369:
  11438. /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */
  11439. if (1==0) {
  11440. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11441. grammarID = 369;
  11442. } else if ( iso1PGPDataType->ANY_isUsed == 0u || wcDone ) {
  11443. errn = encodeNBitUnsignedInteger(stream, 2, 1);
  11444. if(errn == 0) {
  11445. done = 1;
  11446. }
  11447. grammarID = 4;
  11448. } else {
  11449. errn = EXI_ERROR_UNKOWN_EVENT;
  11450. }
  11451. break;
  11452. default:
  11453. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11454. break;
  11455. }
  11456. if(errn) {
  11457. done = 1;
  11458. }
  11459. }
  11460. return errn;
  11461. }
  11462. int encode_iso1EXISchemaInformedElementFragmentGrammar(bitstream_t* stream, struct iso1EXISchemaInformedElementFragmentGrammar* exiElementFrag) {
  11463. int grammarID = 370;
  11464. int done = 0;
  11465. while(!done) {
  11466. switch(grammarID) {
  11467. case 370:
  11468. /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  11469. if ( exiElementFrag->Id_isUsed == 1u ) {
  11470. exiElementFrag->Id_isUsed = 0u; /* hack to indicate for next loop that this has been handled already */
  11471. errn = encodeNBitUnsignedInteger(stream, 9, 4);
  11472. if(errn == 0) {
  11473. /* encode string as string table miss (+2 len)*/
  11474. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiElementFrag->Id.charactersLen + 2));
  11475. if (errn == 0) {
  11476. errn = encodeCharacters(stream, exiElementFrag->Id.characters, exiElementFrag->Id.charactersLen);
  11477. }
  11478. }
  11479. grammarID = 370;
  11480. } else if (1==0) {
  11481. errn = encodeNBitUnsignedInteger(stream, 9, 255);
  11482. if(errn == 0) {
  11483. done = 1;
  11484. }
  11485. grammarID = 4;
  11486. } else if ( exiElementFrag->CHARACTERS_GENERIC_isUsed == 1u ) {
  11487. exiElementFrag->CHARACTERS_GENERIC_isUsed = 0u; /* hack to indicate for next loop that this has been handled already */
  11488. errn = encodeNBitUnsignedInteger(stream, 9, 256);
  11489. if(errn == 0) {
  11490. /* encode string as string table miss (+2 len)*/
  11491. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiElementFrag->CHARACTERS_GENERIC.charactersLen + 2));
  11492. if (errn == 0) {
  11493. errn = encodeCharacters(stream, exiElementFrag->CHARACTERS_GENERIC.characters, exiElementFrag->CHARACTERS_GENERIC.charactersLen);
  11494. }
  11495. }
  11496. grammarID = 371;
  11497. } else {
  11498. errn = encodeNBitUnsignedInteger(stream, 9, 255); /* EE */
  11499. done = 1;
  11500. }
  11501. break;
  11502. case 371:
  11503. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  11504. if (1==0) {
  11505. errn = encodeNBitUnsignedInteger(stream, 8, 244);
  11506. if(errn == 0) {
  11507. done = 1;
  11508. }
  11509. grammarID = 4;
  11510. } else if ( exiElementFrag->CHARACTERS_GENERIC_isUsed == 1u ) {
  11511. exiElementFrag->CHARACTERS_GENERIC_isUsed = 0u; /* hack to indicate for next loop that this has been handled already */
  11512. errn = encodeNBitUnsignedInteger(stream, 8, 245);
  11513. if(errn == 0) {
  11514. /* encode string as string table miss (+2 len)*/
  11515. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiElementFrag->CHARACTERS_GENERIC.charactersLen + 2));
  11516. if (errn == 0) {
  11517. errn = encodeCharacters(stream, exiElementFrag->CHARACTERS_GENERIC.characters, exiElementFrag->CHARACTERS_GENERIC.charactersLen);
  11518. }
  11519. }
  11520. grammarID = 371;
  11521. } else {
  11522. errn = encodeNBitUnsignedInteger(stream, 8, 244); /* EE */
  11523. done = 1;
  11524. }
  11525. break;
  11526. default:
  11527. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11528. break;
  11529. }
  11530. if(errn) {
  11531. done = 1;
  11532. }
  11533. }
  11534. return errn;
  11535. }
  11536. int encode_iso1ExiDocument(bitstream_t* stream, struct iso1EXIDocument* exiDoc) {
  11537. errn = writeEXIHeader(stream);
  11538. if(errn == 0) {
  11539. /* DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] */
  11540. if ( exiDoc->AC_EVChargeParameter_isUsed == 1u ) {
  11541. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter) */
  11542. errn = encodeNBitUnsignedInteger(stream, 7, 0);
  11543. if(errn == 0) {
  11544. errn = encode_iso1AC_EVChargeParameterType(stream, &exiDoc->AC_EVChargeParameter );
  11545. }
  11546. } else if ( exiDoc->AC_EVSEChargeParameter_isUsed == 1u ) {
  11547. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter) */
  11548. errn = encodeNBitUnsignedInteger(stream, 7, 1);
  11549. if(errn == 0) {
  11550. errn = encode_iso1AC_EVSEChargeParameterType(stream, &exiDoc->AC_EVSEChargeParameter );
  11551. }
  11552. } else if ( exiDoc->AC_EVSEStatus_isUsed == 1u ) {
  11553. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus) */
  11554. errn = encodeNBitUnsignedInteger(stream, 7, 2);
  11555. if(errn == 0) {
  11556. errn = encode_iso1AC_EVSEStatusType(stream, &exiDoc->AC_EVSEStatus );
  11557. }
  11558. } else if ( exiDoc->AuthorizationReq_isUsed == 1u ) {
  11559. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq) */
  11560. errn = encodeNBitUnsignedInteger(stream, 7, 3);
  11561. if(errn == 0) {
  11562. errn = encode_iso1AuthorizationReqType(stream, &exiDoc->AuthorizationReq );
  11563. }
  11564. } else if ( exiDoc->AuthorizationRes_isUsed == 1u ) {
  11565. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes) */
  11566. errn = encodeNBitUnsignedInteger(stream, 7, 4);
  11567. if(errn == 0) {
  11568. errn = encode_iso1AuthorizationResType(stream, &exiDoc->AuthorizationRes );
  11569. }
  11570. } else if ( exiDoc->BodyElement_isUsed == 1u ) {
  11571. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement) */
  11572. errn = encodeNBitUnsignedInteger(stream, 7, 5);
  11573. if(errn == 0) {
  11574. errn = encode_iso1BodyBaseType(stream, &exiDoc->BodyElement );
  11575. }
  11576. } else if ( exiDoc->CableCheckReq_isUsed == 1u ) {
  11577. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq) */
  11578. errn = encodeNBitUnsignedInteger(stream, 7, 6);
  11579. if(errn == 0) {
  11580. errn = encode_iso1CableCheckReqType(stream, &exiDoc->CableCheckReq );
  11581. }
  11582. } else if ( exiDoc->CableCheckRes_isUsed == 1u ) {
  11583. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes) */
  11584. errn = encodeNBitUnsignedInteger(stream, 7, 7);
  11585. if(errn == 0) {
  11586. errn = encode_iso1CableCheckResType(stream, &exiDoc->CableCheckRes );
  11587. }
  11588. } else if ( exiDoc->CanonicalizationMethod_isUsed == 1u ) {
  11589. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */
  11590. errn = encodeNBitUnsignedInteger(stream, 7, 8);
  11591. if(errn == 0) {
  11592. errn = encode_iso1CanonicalizationMethodType(stream, &exiDoc->CanonicalizationMethod );
  11593. }
  11594. } else if ( exiDoc->CertificateInstallationReq_isUsed == 1u ) {
  11595. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq) */
  11596. errn = encodeNBitUnsignedInteger(stream, 7, 9);
  11597. if(errn == 0) {
  11598. errn = encode_iso1CertificateInstallationReqType(stream, &exiDoc->CertificateInstallationReq );
  11599. }
  11600. } else if ( exiDoc->CertificateInstallationRes_isUsed == 1u ) {
  11601. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes) */
  11602. errn = encodeNBitUnsignedInteger(stream, 7, 10);
  11603. if(errn == 0) {
  11604. errn = encode_iso1CertificateInstallationResType(stream, &exiDoc->CertificateInstallationRes );
  11605. }
  11606. } else if ( exiDoc->CertificateUpdateReq_isUsed == 1u ) {
  11607. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq) */
  11608. errn = encodeNBitUnsignedInteger(stream, 7, 11);
  11609. if(errn == 0) {
  11610. errn = encode_iso1CertificateUpdateReqType(stream, &exiDoc->CertificateUpdateReq );
  11611. }
  11612. } else if ( exiDoc->CertificateUpdateRes_isUsed == 1u ) {
  11613. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes) */
  11614. errn = encodeNBitUnsignedInteger(stream, 7, 12);
  11615. if(errn == 0) {
  11616. errn = encode_iso1CertificateUpdateResType(stream, &exiDoc->CertificateUpdateRes );
  11617. }
  11618. } else if ( exiDoc->ChargeParameterDiscoveryReq_isUsed == 1u ) {
  11619. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq) */
  11620. errn = encodeNBitUnsignedInteger(stream, 7, 13);
  11621. if(errn == 0) {
  11622. errn = encode_iso1ChargeParameterDiscoveryReqType(stream, &exiDoc->ChargeParameterDiscoveryReq );
  11623. }
  11624. } else if ( exiDoc->ChargeParameterDiscoveryRes_isUsed == 1u ) {
  11625. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes) */
  11626. errn = encodeNBitUnsignedInteger(stream, 7, 14);
  11627. if(errn == 0) {
  11628. errn = encode_iso1ChargeParameterDiscoveryResType(stream, &exiDoc->ChargeParameterDiscoveryRes );
  11629. }
  11630. } else if ( exiDoc->ChargingStatusReq_isUsed == 1u ) {
  11631. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq) */
  11632. errn = encodeNBitUnsignedInteger(stream, 7, 15);
  11633. if(errn == 0) {
  11634. errn = encode_iso1ChargingStatusReqType(stream, &exiDoc->ChargingStatusReq );
  11635. }
  11636. } else if ( exiDoc->ChargingStatusRes_isUsed == 1u ) {
  11637. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes) */
  11638. errn = encodeNBitUnsignedInteger(stream, 7, 16);
  11639. if(errn == 0) {
  11640. errn = encode_iso1ChargingStatusResType(stream, &exiDoc->ChargingStatusRes );
  11641. }
  11642. } else if ( exiDoc->CurrentDemandReq_isUsed == 1u ) {
  11643. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq) */
  11644. errn = encodeNBitUnsignedInteger(stream, 7, 17);
  11645. if(errn == 0) {
  11646. errn = encode_iso1CurrentDemandReqType(stream, &exiDoc->CurrentDemandReq );
  11647. }
  11648. } else if ( exiDoc->CurrentDemandRes_isUsed == 1u ) {
  11649. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes) */
  11650. errn = encodeNBitUnsignedInteger(stream, 7, 18);
  11651. if(errn == 0) {
  11652. errn = encode_iso1CurrentDemandResType(stream, &exiDoc->CurrentDemandRes );
  11653. }
  11654. } else if ( exiDoc->DC_EVChargeParameter_isUsed == 1u ) {
  11655. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter) */
  11656. errn = encodeNBitUnsignedInteger(stream, 7, 19);
  11657. if(errn == 0) {
  11658. errn = encode_iso1DC_EVChargeParameterType(stream, &exiDoc->DC_EVChargeParameter );
  11659. }
  11660. } else if ( exiDoc->DC_EVPowerDeliveryParameter_isUsed == 1u ) {
  11661. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter) */
  11662. errn = encodeNBitUnsignedInteger(stream, 7, 20);
  11663. if(errn == 0) {
  11664. errn = encode_iso1DC_EVPowerDeliveryParameterType(stream, &exiDoc->DC_EVPowerDeliveryParameter );
  11665. }
  11666. } else if ( exiDoc->DC_EVSEChargeParameter_isUsed == 1u ) {
  11667. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter) */
  11668. errn = encodeNBitUnsignedInteger(stream, 7, 21);
  11669. if(errn == 0) {
  11670. errn = encode_iso1DC_EVSEChargeParameterType(stream, &exiDoc->DC_EVSEChargeParameter );
  11671. }
  11672. } else if ( exiDoc->DC_EVSEStatus_isUsed == 1u ) {
  11673. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus) */
  11674. errn = encodeNBitUnsignedInteger(stream, 7, 22);
  11675. if(errn == 0) {
  11676. errn = encode_iso1DC_EVSEStatusType(stream, &exiDoc->DC_EVSEStatus );
  11677. }
  11678. } else if ( exiDoc->DC_EVStatus_isUsed == 1u ) {
  11679. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus) */
  11680. errn = encodeNBitUnsignedInteger(stream, 7, 23);
  11681. if(errn == 0) {
  11682. errn = encode_iso1DC_EVStatusType(stream, &exiDoc->DC_EVStatus );
  11683. }
  11684. } else if ( exiDoc->DSAKeyValue_isUsed == 1u ) {
  11685. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */
  11686. errn = encodeNBitUnsignedInteger(stream, 7, 24);
  11687. if(errn == 0) {
  11688. errn = encode_iso1DSAKeyValueType(stream, &exiDoc->DSAKeyValue );
  11689. }
  11690. } else if ( exiDoc->DigestMethod_isUsed == 1u ) {
  11691. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */
  11692. errn = encodeNBitUnsignedInteger(stream, 7, 25);
  11693. if(errn == 0) {
  11694. errn = encode_iso1DigestMethodType(stream, &exiDoc->DigestMethod );
  11695. }
  11696. } else if ( exiDoc->DigestValue_isUsed == 1u ) {
  11697. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */
  11698. errn = encodeNBitUnsignedInteger(stream, 7, 26);
  11699. if(errn == 0) {
  11700. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  11701. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11702. if(errn == 0) {
  11703. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiDoc->DigestValue.bytesLen));
  11704. if (errn == 0) {
  11705. errn = encodeBytes(stream, exiDoc->DigestValue.bytes, exiDoc->DigestValue.bytesLen);
  11706. }
  11707. /* valid EE */
  11708. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11709. }
  11710. }
  11711. } else if ( exiDoc->EVChargeParameter_isUsed == 1u ) {
  11712. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter) */
  11713. errn = encodeNBitUnsignedInteger(stream, 7, 27);
  11714. if(errn == 0) {
  11715. errn = encode_iso1EVChargeParameterType(stream, &exiDoc->EVChargeParameter );
  11716. }
  11717. } else if ( exiDoc->EVPowerDeliveryParameter_isUsed == 1u ) {
  11718. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter) */
  11719. errn = encodeNBitUnsignedInteger(stream, 7, 28);
  11720. if(errn == 0) {
  11721. errn = encode_iso1EVPowerDeliveryParameterType(stream, &exiDoc->EVPowerDeliveryParameter );
  11722. }
  11723. } else if ( exiDoc->EVSEChargeParameter_isUsed == 1u ) {
  11724. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter) */
  11725. errn = encodeNBitUnsignedInteger(stream, 7, 29);
  11726. if(errn == 0) {
  11727. errn = encode_iso1EVSEChargeParameterType(stream, &exiDoc->EVSEChargeParameter );
  11728. }
  11729. } else if ( exiDoc->EVSEStatus_isUsed == 1u ) {
  11730. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus) */
  11731. errn = encodeNBitUnsignedInteger(stream, 7, 30);
  11732. if(errn == 0) {
  11733. errn = encode_iso1EVSEStatusType(stream, &exiDoc->EVSEStatus );
  11734. }
  11735. } else if ( exiDoc->EVStatus_isUsed == 1u ) {
  11736. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus) */
  11737. errn = encodeNBitUnsignedInteger(stream, 7, 31);
  11738. if(errn == 0) {
  11739. errn = encode_iso1EVStatusType(stream, &exiDoc->EVStatus );
  11740. }
  11741. } else if ( exiDoc->Entry_isUsed == 1u ) {
  11742. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry) */
  11743. errn = encodeNBitUnsignedInteger(stream, 7, 32);
  11744. if(errn == 0) {
  11745. errn = encode_iso1EntryType(stream, &exiDoc->Entry );
  11746. }
  11747. } else if ( exiDoc->KeyInfo_isUsed == 1u ) {
  11748. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */
  11749. errn = encodeNBitUnsignedInteger(stream, 7, 33);
  11750. if(errn == 0) {
  11751. errn = encode_iso1KeyInfoType(stream, &exiDoc->KeyInfo );
  11752. }
  11753. } else if ( exiDoc->KeyName_isUsed == 1u ) {
  11754. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */
  11755. errn = encodeNBitUnsignedInteger(stream, 7, 34);
  11756. if(errn == 0) {
  11757. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  11758. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11759. if(errn == 0) {
  11760. /* encode string as string table miss (+2 len)*/
  11761. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiDoc->KeyName.charactersLen + 2));
  11762. if (errn == 0) {
  11763. errn = encodeCharacters(stream, exiDoc->KeyName.characters, exiDoc->KeyName.charactersLen);
  11764. }
  11765. /* valid EE */
  11766. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11767. }
  11768. }
  11769. } else if ( exiDoc->KeyValue_isUsed == 1u ) {
  11770. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */
  11771. errn = encodeNBitUnsignedInteger(stream, 7, 35);
  11772. if(errn == 0) {
  11773. errn = encode_iso1KeyValueType(stream, &exiDoc->KeyValue );
  11774. }
  11775. } else if ( exiDoc->Manifest_isUsed == 1u ) {
  11776. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */
  11777. errn = encodeNBitUnsignedInteger(stream, 7, 36);
  11778. if(errn == 0) {
  11779. errn = encode_iso1ManifestType(stream, &exiDoc->Manifest );
  11780. }
  11781. } else if ( exiDoc->MeteringReceiptReq_isUsed == 1u ) {
  11782. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq) */
  11783. errn = encodeNBitUnsignedInteger(stream, 7, 37);
  11784. if(errn == 0) {
  11785. errn = encode_iso1MeteringReceiptReqType(stream, &exiDoc->MeteringReceiptReq );
  11786. }
  11787. } else if ( exiDoc->MeteringReceiptRes_isUsed == 1u ) {
  11788. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes) */
  11789. errn = encodeNBitUnsignedInteger(stream, 7, 38);
  11790. if(errn == 0) {
  11791. errn = encode_iso1MeteringReceiptResType(stream, &exiDoc->MeteringReceiptRes );
  11792. }
  11793. } else if ( exiDoc->MgmtData_isUsed == 1u ) {
  11794. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */
  11795. errn = encodeNBitUnsignedInteger(stream, 7, 39);
  11796. if(errn == 0) {
  11797. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  11798. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11799. if(errn == 0) {
  11800. /* encode string as string table miss (+2 len)*/
  11801. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiDoc->MgmtData.charactersLen + 2));
  11802. if (errn == 0) {
  11803. errn = encodeCharacters(stream, exiDoc->MgmtData.characters, exiDoc->MgmtData.charactersLen);
  11804. }
  11805. /* valid EE */
  11806. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  11807. }
  11808. }
  11809. } else if ( exiDoc->Object_isUsed == 1u ) {
  11810. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */
  11811. errn = encodeNBitUnsignedInteger(stream, 7, 40);
  11812. if(errn == 0) {
  11813. errn = encode_iso1ObjectType(stream, &exiDoc->Object );
  11814. }
  11815. } else if ( exiDoc->PGPData_isUsed == 1u ) {
  11816. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */
  11817. errn = encodeNBitUnsignedInteger(stream, 7, 41);
  11818. if(errn == 0) {
  11819. errn = encode_iso1PGPDataType(stream, &exiDoc->PGPData );
  11820. }
  11821. } else if ( exiDoc->PMaxScheduleEntry_isUsed == 1u ) {
  11822. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry) */
  11823. errn = encodeNBitUnsignedInteger(stream, 7, 42);
  11824. if(errn == 0) {
  11825. errn = encode_iso1PMaxScheduleEntryType(stream, &exiDoc->PMaxScheduleEntry );
  11826. }
  11827. } else if ( exiDoc->PaymentDetailsReq_isUsed == 1u ) {
  11828. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq) */
  11829. errn = encodeNBitUnsignedInteger(stream, 7, 43);
  11830. if(errn == 0) {
  11831. errn = encode_iso1PaymentDetailsReqType(stream, &exiDoc->PaymentDetailsReq );
  11832. }
  11833. } else if ( exiDoc->PaymentDetailsRes_isUsed == 1u ) {
  11834. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes) */
  11835. errn = encodeNBitUnsignedInteger(stream, 7, 44);
  11836. if(errn == 0) {
  11837. errn = encode_iso1PaymentDetailsResType(stream, &exiDoc->PaymentDetailsRes );
  11838. }
  11839. } else if ( exiDoc->PaymentServiceSelectionReq_isUsed == 1u ) {
  11840. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq) */
  11841. errn = encodeNBitUnsignedInteger(stream, 7, 45);
  11842. if(errn == 0) {
  11843. errn = encode_iso1PaymentServiceSelectionReqType(stream, &exiDoc->PaymentServiceSelectionReq );
  11844. }
  11845. } else if ( exiDoc->PaymentServiceSelectionRes_isUsed == 1u ) {
  11846. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes) */
  11847. errn = encodeNBitUnsignedInteger(stream, 7, 46);
  11848. if(errn == 0) {
  11849. errn = encode_iso1PaymentServiceSelectionResType(stream, &exiDoc->PaymentServiceSelectionRes );
  11850. }
  11851. } else if ( exiDoc->PowerDeliveryReq_isUsed == 1u ) {
  11852. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq) */
  11853. errn = encodeNBitUnsignedInteger(stream, 7, 47);
  11854. if(errn == 0) {
  11855. errn = encode_iso1PowerDeliveryReqType(stream, &exiDoc->PowerDeliveryReq );
  11856. }
  11857. } else if ( exiDoc->PowerDeliveryRes_isUsed == 1u ) {
  11858. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes) */
  11859. errn = encodeNBitUnsignedInteger(stream, 7, 48);
  11860. if(errn == 0) {
  11861. errn = encode_iso1PowerDeliveryResType(stream, &exiDoc->PowerDeliveryRes );
  11862. }
  11863. } else if ( exiDoc->PreChargeReq_isUsed == 1u ) {
  11864. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq) */
  11865. errn = encodeNBitUnsignedInteger(stream, 7, 49);
  11866. if(errn == 0) {
  11867. errn = encode_iso1PreChargeReqType(stream, &exiDoc->PreChargeReq );
  11868. }
  11869. } else if ( exiDoc->PreChargeRes_isUsed == 1u ) {
  11870. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes) */
  11871. errn = encodeNBitUnsignedInteger(stream, 7, 50);
  11872. if(errn == 0) {
  11873. errn = encode_iso1PreChargeResType(stream, &exiDoc->PreChargeRes );
  11874. }
  11875. } else if ( exiDoc->RSAKeyValue_isUsed == 1u ) {
  11876. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */
  11877. errn = encodeNBitUnsignedInteger(stream, 7, 51);
  11878. if(errn == 0) {
  11879. errn = encode_iso1RSAKeyValueType(stream, &exiDoc->RSAKeyValue );
  11880. }
  11881. } else if ( exiDoc->Reference_isUsed == 1u ) {
  11882. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */
  11883. errn = encodeNBitUnsignedInteger(stream, 7, 52);
  11884. if(errn == 0) {
  11885. errn = encode_iso1ReferenceType(stream, &exiDoc->Reference );
  11886. }
  11887. } else if ( exiDoc->RelativeTimeInterval_isUsed == 1u ) {
  11888. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval) */
  11889. errn = encodeNBitUnsignedInteger(stream, 7, 53);
  11890. if(errn == 0) {
  11891. errn = encode_iso1RelativeTimeIntervalType(stream, &exiDoc->RelativeTimeInterval );
  11892. }
  11893. } else if ( exiDoc->RetrievalMethod_isUsed == 1u ) {
  11894. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */
  11895. errn = encodeNBitUnsignedInteger(stream, 7, 54);
  11896. if(errn == 0) {
  11897. errn = encode_iso1RetrievalMethodType(stream, &exiDoc->RetrievalMethod );
  11898. }
  11899. } else if ( exiDoc->SAScheduleList_isUsed == 1u ) {
  11900. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList) */
  11901. errn = encodeNBitUnsignedInteger(stream, 7, 55);
  11902. if(errn == 0) {
  11903. errn = encode_iso1SAScheduleListType(stream, &exiDoc->SAScheduleList );
  11904. }
  11905. } else if ( exiDoc->SASchedules_isUsed == 1u ) {
  11906. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules) */
  11907. errn = encodeNBitUnsignedInteger(stream, 7, 56);
  11908. if(errn == 0) {
  11909. errn = encode_iso1SASchedulesType(stream, &exiDoc->SASchedules );
  11910. }
  11911. } else if ( exiDoc->SPKIData_isUsed == 1u ) {
  11912. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */
  11913. errn = encodeNBitUnsignedInteger(stream, 7, 57);
  11914. if(errn == 0) {
  11915. errn = encode_iso1SPKIDataType(stream, &exiDoc->SPKIData );
  11916. }
  11917. } else if ( exiDoc->SalesTariffEntry_isUsed == 1u ) {
  11918. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry) */
  11919. errn = encodeNBitUnsignedInteger(stream, 7, 58);
  11920. if(errn == 0) {
  11921. errn = encode_iso1SalesTariffEntryType(stream, &exiDoc->SalesTariffEntry );
  11922. }
  11923. } else if ( exiDoc->ServiceDetailReq_isUsed == 1u ) {
  11924. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq) */
  11925. errn = encodeNBitUnsignedInteger(stream, 7, 59);
  11926. if(errn == 0) {
  11927. errn = encode_iso1ServiceDetailReqType(stream, &exiDoc->ServiceDetailReq );
  11928. }
  11929. } else if ( exiDoc->ServiceDetailRes_isUsed == 1u ) {
  11930. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes) */
  11931. errn = encodeNBitUnsignedInteger(stream, 7, 60);
  11932. if(errn == 0) {
  11933. errn = encode_iso1ServiceDetailResType(stream, &exiDoc->ServiceDetailRes );
  11934. }
  11935. } else if ( exiDoc->ServiceDiscoveryReq_isUsed == 1u ) {
  11936. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq) */
  11937. errn = encodeNBitUnsignedInteger(stream, 7, 61);
  11938. if(errn == 0) {
  11939. errn = encode_iso1ServiceDiscoveryReqType(stream, &exiDoc->ServiceDiscoveryReq );
  11940. }
  11941. } else if ( exiDoc->ServiceDiscoveryRes_isUsed == 1u ) {
  11942. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes) */
  11943. errn = encodeNBitUnsignedInteger(stream, 7, 62);
  11944. if(errn == 0) {
  11945. errn = encode_iso1ServiceDiscoveryResType(stream, &exiDoc->ServiceDiscoveryRes );
  11946. }
  11947. } else if ( exiDoc->SessionSetupReq_isUsed == 1u ) {
  11948. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq) */
  11949. errn = encodeNBitUnsignedInteger(stream, 7, 63);
  11950. if(errn == 0) {
  11951. errn = encode_iso1SessionSetupReqType(stream, &exiDoc->SessionSetupReq );
  11952. }
  11953. } else if ( exiDoc->SessionSetupRes_isUsed == 1u ) {
  11954. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes) */
  11955. errn = encodeNBitUnsignedInteger(stream, 7, 64);
  11956. if(errn == 0) {
  11957. errn = encode_iso1SessionSetupResType(stream, &exiDoc->SessionSetupRes );
  11958. }
  11959. } else if ( exiDoc->SessionStopReq_isUsed == 1u ) {
  11960. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq) */
  11961. errn = encodeNBitUnsignedInteger(stream, 7, 65);
  11962. if(errn == 0) {
  11963. errn = encode_iso1SessionStopReqType(stream, &exiDoc->SessionStopReq );
  11964. }
  11965. } else if ( exiDoc->SessionStopRes_isUsed == 1u ) {
  11966. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes) */
  11967. errn = encodeNBitUnsignedInteger(stream, 7, 66);
  11968. if(errn == 0) {
  11969. errn = encode_iso1SessionStopResType(stream, &exiDoc->SessionStopRes );
  11970. }
  11971. } else if ( exiDoc->Signature_isUsed == 1u ) {
  11972. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */
  11973. errn = encodeNBitUnsignedInteger(stream, 7, 67);
  11974. if(errn == 0) {
  11975. errn = encode_iso1SignatureType(stream, &exiDoc->Signature );
  11976. }
  11977. } else if ( exiDoc->SignatureMethod_isUsed == 1u ) {
  11978. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */
  11979. errn = encodeNBitUnsignedInteger(stream, 7, 68);
  11980. if(errn == 0) {
  11981. errn = encode_iso1SignatureMethodType(stream, &exiDoc->SignatureMethod );
  11982. }
  11983. } else if ( exiDoc->SignatureProperties_isUsed == 1u ) {
  11984. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */
  11985. errn = encodeNBitUnsignedInteger(stream, 7, 69);
  11986. if(errn == 0) {
  11987. errn = encode_iso1SignaturePropertiesType(stream, &exiDoc->SignatureProperties );
  11988. }
  11989. } else if ( exiDoc->SignatureProperty_isUsed == 1u ) {
  11990. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */
  11991. errn = encodeNBitUnsignedInteger(stream, 7, 70);
  11992. if(errn == 0) {
  11993. errn = encode_iso1SignaturePropertyType(stream, &exiDoc->SignatureProperty );
  11994. }
  11995. } else if ( exiDoc->SignatureValue_isUsed == 1u ) {
  11996. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */
  11997. errn = encodeNBitUnsignedInteger(stream, 7, 71);
  11998. if(errn == 0) {
  11999. errn = encode_iso1SignatureValueType(stream, &exiDoc->SignatureValue );
  12000. }
  12001. } else if ( exiDoc->SignedInfo_isUsed == 1u ) {
  12002. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */
  12003. errn = encodeNBitUnsignedInteger(stream, 7, 72);
  12004. if(errn == 0) {
  12005. errn = encode_iso1SignedInfoType(stream, &exiDoc->SignedInfo );
  12006. }
  12007. } else if ( exiDoc->TimeInterval_isUsed == 1u ) {
  12008. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval) */
  12009. errn = encodeNBitUnsignedInteger(stream, 7, 73);
  12010. if(errn == 0) {
  12011. errn = encode_iso1IntervalType(stream, &exiDoc->TimeInterval );
  12012. }
  12013. } else if ( exiDoc->Transform_isUsed == 1u ) {
  12014. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */
  12015. errn = encodeNBitUnsignedInteger(stream, 7, 74);
  12016. if(errn == 0) {
  12017. errn = encode_iso1TransformType(stream, &exiDoc->Transform );
  12018. }
  12019. } else if ( exiDoc->Transforms_isUsed == 1u ) {
  12020. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */
  12021. errn = encodeNBitUnsignedInteger(stream, 7, 75);
  12022. if(errn == 0) {
  12023. errn = encode_iso1TransformsType(stream, &exiDoc->Transforms );
  12024. }
  12025. } else if ( exiDoc->V2G_Message_isUsed == 1u ) {
  12026. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message) */
  12027. errn = encodeNBitUnsignedInteger(stream, 7, 76);
  12028. if(errn == 0) {
  12029. errn = encode_iso1AnonType_V2G_Message(stream, &exiDoc->V2G_Message );
  12030. }
  12031. } else if ( exiDoc->WeldingDetectionReq_isUsed == 1u ) {
  12032. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq) */
  12033. errn = encodeNBitUnsignedInteger(stream, 7, 77);
  12034. if(errn == 0) {
  12035. errn = encode_iso1WeldingDetectionReqType(stream, &exiDoc->WeldingDetectionReq );
  12036. }
  12037. } else if ( exiDoc->WeldingDetectionRes_isUsed == 1u ) {
  12038. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes) */
  12039. errn = encodeNBitUnsignedInteger(stream, 7, 78);
  12040. if(errn == 0) {
  12041. errn = encode_iso1WeldingDetectionResType(stream, &exiDoc->WeldingDetectionRes );
  12042. }
  12043. } else if ( exiDoc->X509Data_isUsed == 1u ) {
  12044. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */
  12045. errn = encodeNBitUnsignedInteger(stream, 7, 79);
  12046. if(errn == 0) {
  12047. errn = encode_iso1X509DataType(stream, &exiDoc->X509Data );
  12048. }
  12049. } else {
  12050. errn = EXI_ERROR_UNKOWN_EVENT;
  12051. }
  12052. }
  12053. if(errn == 0) {
  12054. /* flush any pending bits */
  12055. errn = encodeFinish(stream);
  12056. }
  12057. return errn;
  12058. }
  12059. #if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES
  12060. int encode_iso1ExiFragment(bitstream_t* stream, struct iso1EXIFragment* exiFrag) {
  12061. errn = writeEXIHeader(stream);
  12062. if(errn == 0) {
  12063. /* FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */
  12064. if ( exiFrag->AC_EVChargeParameter_isUsed == 1u ) {
  12065. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter) */
  12066. errn = encodeNBitUnsignedInteger(stream, 8, 0);
  12067. if(errn == 0) {
  12068. errn = encode_iso1AC_EVChargeParameterType(stream, &exiFrag->AC_EVChargeParameter );
  12069. }
  12070. } else if ( exiFrag->AC_EVSEChargeParameter_isUsed == 1u ) {
  12071. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter) */
  12072. errn = encodeNBitUnsignedInteger(stream, 8, 1);
  12073. if(errn == 0) {
  12074. errn = encode_iso1AC_EVSEChargeParameterType(stream, &exiFrag->AC_EVSEChargeParameter );
  12075. }
  12076. } else if ( exiFrag->AC_EVSEStatus_isUsed == 1u ) {
  12077. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus) */
  12078. errn = encodeNBitUnsignedInteger(stream, 8, 2);
  12079. if(errn == 0) {
  12080. errn = encode_iso1AC_EVSEStatusType(stream, &exiFrag->AC_EVSEStatus );
  12081. }
  12082. } else if ( exiFrag->AC_EVSEStatus_isUsed == 1u ) {
  12083. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus) */
  12084. errn = encodeNBitUnsignedInteger(stream, 8, 3);
  12085. if(errn == 0) {
  12086. errn = encode_iso1AC_EVSEStatusType(stream, &exiFrag->AC_EVSEStatus );
  12087. }
  12088. } else if ( exiFrag->AuthorizationReq_isUsed == 1u ) {
  12089. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq) */
  12090. errn = encodeNBitUnsignedInteger(stream, 8, 4);
  12091. if(errn == 0) {
  12092. errn = encode_iso1AuthorizationReqType(stream, &exiFrag->AuthorizationReq );
  12093. }
  12094. } else if ( exiFrag->AuthorizationRes_isUsed == 1u ) {
  12095. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes) */
  12096. errn = encodeNBitUnsignedInteger(stream, 8, 5);
  12097. if(errn == 0) {
  12098. errn = encode_iso1AuthorizationResType(stream, &exiFrag->AuthorizationRes );
  12099. }
  12100. } else if ( exiFrag->Body_isUsed == 1u ) {
  12101. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body) */
  12102. errn = encodeNBitUnsignedInteger(stream, 8, 6);
  12103. if(errn == 0) {
  12104. errn = encode_iso1BodyType(stream, &exiFrag->Body );
  12105. }
  12106. } else if ( exiFrag->BodyElement_isUsed == 1u ) {
  12107. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement) */
  12108. errn = encodeNBitUnsignedInteger(stream, 8, 7);
  12109. if(errn == 0) {
  12110. errn = encode_iso1BodyBaseType(stream, &exiFrag->BodyElement );
  12111. }
  12112. } else if ( exiFrag->BulkChargingComplete_isUsed == 1u ) {
  12113. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) */
  12114. errn = encodeNBitUnsignedInteger(stream, 8, 8);
  12115. if(errn == 0) {
  12116. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12117. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12118. if(errn == 0) {
  12119. errn = encodeBoolean(stream, exiFrag->BulkChargingComplete);
  12120. /* valid EE */
  12121. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12122. }
  12123. }
  12124. } else if ( exiFrag->BulkChargingComplete_isUsed == 1u ) {
  12125. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete) */
  12126. errn = encodeNBitUnsignedInteger(stream, 8, 9);
  12127. if(errn == 0) {
  12128. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12129. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12130. if(errn == 0) {
  12131. errn = encodeBoolean(stream, exiFrag->BulkChargingComplete);
  12132. /* valid EE */
  12133. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12134. }
  12135. }
  12136. } else if ( exiFrag->BulkSOC_isUsed == 1u ) {
  12137. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) */
  12138. errn = encodeNBitUnsignedInteger(stream, 8, 10);
  12139. if(errn == 0) {
  12140. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12141. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12142. if(errn == 0) {
  12143. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(exiFrag->BulkSOC - 0));
  12144. /* valid EE */
  12145. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12146. }
  12147. }
  12148. } else if ( exiFrag->CableCheckReq_isUsed == 1u ) {
  12149. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq) */
  12150. errn = encodeNBitUnsignedInteger(stream, 8, 11);
  12151. if(errn == 0) {
  12152. errn = encode_iso1CableCheckReqType(stream, &exiFrag->CableCheckReq );
  12153. }
  12154. } else if ( exiFrag->CableCheckRes_isUsed == 1u ) {
  12155. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes) */
  12156. errn = encodeNBitUnsignedInteger(stream, 8, 12);
  12157. if(errn == 0) {
  12158. errn = encode_iso1CableCheckResType(stream, &exiFrag->CableCheckRes );
  12159. }
  12160. } else if ( exiFrag->CanonicalizationMethod_isUsed == 1u ) {
  12161. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */
  12162. errn = encodeNBitUnsignedInteger(stream, 8, 13);
  12163. if(errn == 0) {
  12164. errn = encode_iso1CanonicalizationMethodType(stream, &exiFrag->CanonicalizationMethod );
  12165. }
  12166. } else if ( exiFrag->Certificate_isUsed == 1u ) {
  12167. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) */
  12168. errn = encodeNBitUnsignedInteger(stream, 8, 14);
  12169. if(errn == 0) {
  12170. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  12171. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12172. if(errn == 0) {
  12173. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->Certificate.bytesLen));
  12174. if (errn == 0) {
  12175. errn = encodeBytes(stream, exiFrag->Certificate.bytes, exiFrag->Certificate.bytesLen);
  12176. }
  12177. /* valid EE */
  12178. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12179. }
  12180. }
  12181. } else if ( exiFrag->CertificateInstallationReq_isUsed == 1u ) {
  12182. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq) */
  12183. errn = encodeNBitUnsignedInteger(stream, 8, 15);
  12184. if(errn == 0) {
  12185. errn = encode_iso1CertificateInstallationReqType(stream, &exiFrag->CertificateInstallationReq );
  12186. }
  12187. } else if ( exiFrag->CertificateInstallationRes_isUsed == 1u ) {
  12188. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes) */
  12189. errn = encodeNBitUnsignedInteger(stream, 8, 16);
  12190. if(errn == 0) {
  12191. errn = encode_iso1CertificateInstallationResType(stream, &exiFrag->CertificateInstallationRes );
  12192. }
  12193. } else if ( exiFrag->CertificateUpdateReq_isUsed == 1u ) {
  12194. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq) */
  12195. errn = encodeNBitUnsignedInteger(stream, 8, 17);
  12196. if(errn == 0) {
  12197. errn = encode_iso1CertificateUpdateReqType(stream, &exiFrag->CertificateUpdateReq );
  12198. }
  12199. } else if ( exiFrag->CertificateUpdateRes_isUsed == 1u ) {
  12200. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes) */
  12201. errn = encodeNBitUnsignedInteger(stream, 8, 18);
  12202. if(errn == 0) {
  12203. errn = encode_iso1CertificateUpdateResType(stream, &exiFrag->CertificateUpdateRes );
  12204. }
  12205. } else if ( exiFrag->ChargeParameterDiscoveryReq_isUsed == 1u ) {
  12206. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq) */
  12207. errn = encodeNBitUnsignedInteger(stream, 8, 19);
  12208. if(errn == 0) {
  12209. errn = encode_iso1ChargeParameterDiscoveryReqType(stream, &exiFrag->ChargeParameterDiscoveryReq );
  12210. }
  12211. } else if ( exiFrag->ChargeParameterDiscoveryRes_isUsed == 1u ) {
  12212. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes) */
  12213. errn = encodeNBitUnsignedInteger(stream, 8, 20);
  12214. if(errn == 0) {
  12215. errn = encode_iso1ChargeParameterDiscoveryResType(stream, &exiFrag->ChargeParameterDiscoveryRes );
  12216. }
  12217. } else if ( exiFrag->ChargeProgress_isUsed == 1u ) {
  12218. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress) */
  12219. errn = encodeNBitUnsignedInteger(stream, 8, 21);
  12220. if(errn == 0) {
  12221. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12222. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12223. if(errn == 0) {
  12224. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->ChargeProgress);
  12225. /* valid EE */
  12226. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12227. }
  12228. }
  12229. } else if ( exiFrag->ChargeService_isUsed == 1u ) {
  12230. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService) */
  12231. errn = encodeNBitUnsignedInteger(stream, 8, 22);
  12232. if(errn == 0) {
  12233. errn = encode_iso1ChargeServiceType(stream, &exiFrag->ChargeService );
  12234. }
  12235. } else if ( exiFrag->ChargingComplete_isUsed == 1u ) {
  12236. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) */
  12237. errn = encodeNBitUnsignedInteger(stream, 8, 23);
  12238. if(errn == 0) {
  12239. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12240. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12241. if(errn == 0) {
  12242. errn = encodeBoolean(stream, exiFrag->ChargingComplete);
  12243. /* valid EE */
  12244. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12245. }
  12246. }
  12247. } else if ( exiFrag->ChargingComplete_isUsed == 1u ) {
  12248. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete) */
  12249. errn = encodeNBitUnsignedInteger(stream, 8, 24);
  12250. if(errn == 0) {
  12251. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12252. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12253. if(errn == 0) {
  12254. errn = encodeBoolean(stream, exiFrag->ChargingComplete);
  12255. /* valid EE */
  12256. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12257. }
  12258. }
  12259. } else if ( exiFrag->ChargingProfile_isUsed == 1u ) {
  12260. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile) */
  12261. errn = encodeNBitUnsignedInteger(stream, 8, 25);
  12262. if(errn == 0) {
  12263. errn = encode_iso1ChargingProfileType(stream, &exiFrag->ChargingProfile );
  12264. }
  12265. } else if ( exiFrag->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed == 1u ) {
  12266. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse) */
  12267. errn = encodeNBitUnsignedInteger(stream, 8, 26);
  12268. if(errn == 0) {
  12269. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12270. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12271. if(errn == 0) {
  12272. errn = encodeNBitUnsignedInteger(stream, 2, (uint32_t)(exiFrag->ChargingProfileEntryMaxNumberOfPhasesInUse - 1));
  12273. /* valid EE */
  12274. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12275. }
  12276. }
  12277. } else if ( exiFrag->ChargingProfileEntryMaxPower_isUsed == 1u ) {
  12278. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower) */
  12279. errn = encodeNBitUnsignedInteger(stream, 8, 27);
  12280. if(errn == 0) {
  12281. errn = encode_iso1PhysicalValueType(stream, &exiFrag->ChargingProfileEntryMaxPower );
  12282. }
  12283. } else if ( exiFrag->ChargingProfileEntryStart_isUsed == 1u ) {
  12284. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart) */
  12285. errn = encodeNBitUnsignedInteger(stream, 8, 28);
  12286. if(errn == 0) {
  12287. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  12288. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12289. if(errn == 0) {
  12290. errn = encodeUnsignedInteger32(stream, exiFrag->ChargingProfileEntryStart);
  12291. /* valid EE */
  12292. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12293. }
  12294. }
  12295. } else if ( exiFrag->ChargingSession_isUsed == 1u ) {
  12296. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession) */
  12297. errn = encodeNBitUnsignedInteger(stream, 8, 29);
  12298. if(errn == 0) {
  12299. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12300. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12301. if(errn == 0) {
  12302. errn = encodeNBitUnsignedInteger(stream, 1, exiFrag->ChargingSession);
  12303. /* valid EE */
  12304. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12305. }
  12306. }
  12307. } else if ( exiFrag->ChargingStatusReq_isUsed == 1u ) {
  12308. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq) */
  12309. errn = encodeNBitUnsignedInteger(stream, 8, 30);
  12310. if(errn == 0) {
  12311. errn = encode_iso1ChargingStatusReqType(stream, &exiFrag->ChargingStatusReq );
  12312. }
  12313. } else if ( exiFrag->ChargingStatusRes_isUsed == 1u ) {
  12314. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes) */
  12315. errn = encodeNBitUnsignedInteger(stream, 8, 31);
  12316. if(errn == 0) {
  12317. errn = encode_iso1ChargingStatusResType(stream, &exiFrag->ChargingStatusRes );
  12318. }
  12319. } else if ( exiFrag->ConsumptionCost_isUsed == 1u ) {
  12320. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost) */
  12321. errn = encodeNBitUnsignedInteger(stream, 8, 32);
  12322. if(errn == 0) {
  12323. errn = encode_iso1ConsumptionCostType(stream, &exiFrag->ConsumptionCost );
  12324. }
  12325. } else if ( exiFrag->ContractSignatureCertChain_isUsed == 1u ) {
  12326. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain) */
  12327. errn = encodeNBitUnsignedInteger(stream, 8, 33);
  12328. if(errn == 0) {
  12329. errn = encode_iso1CertificateChainType(stream, &exiFrag->ContractSignatureCertChain );
  12330. }
  12331. } else if ( exiFrag->ContractSignatureEncryptedPrivateKey_isUsed == 1u ) {
  12332. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey) */
  12333. errn = encodeNBitUnsignedInteger(stream, 8, 34);
  12334. if(errn == 0) {
  12335. errn = encode_iso1ContractSignatureEncryptedPrivateKeyType(stream, &exiFrag->ContractSignatureEncryptedPrivateKey );
  12336. }
  12337. } else if ( exiFrag->Cost_isUsed == 1u ) {
  12338. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost) */
  12339. errn = encodeNBitUnsignedInteger(stream, 8, 35);
  12340. if(errn == 0) {
  12341. errn = encode_iso1CostType(stream, &exiFrag->Cost );
  12342. }
  12343. } else if ( exiFrag->CurrentDemandReq_isUsed == 1u ) {
  12344. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq) */
  12345. errn = encodeNBitUnsignedInteger(stream, 8, 36);
  12346. if(errn == 0) {
  12347. errn = encode_iso1CurrentDemandReqType(stream, &exiFrag->CurrentDemandReq );
  12348. }
  12349. } else if ( exiFrag->CurrentDemandRes_isUsed == 1u ) {
  12350. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes) */
  12351. errn = encodeNBitUnsignedInteger(stream, 8, 37);
  12352. if(errn == 0) {
  12353. errn = encode_iso1CurrentDemandResType(stream, &exiFrag->CurrentDemandRes );
  12354. }
  12355. } else if ( exiFrag->DC_EVChargeParameter_isUsed == 1u ) {
  12356. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter) */
  12357. errn = encodeNBitUnsignedInteger(stream, 8, 38);
  12358. if(errn == 0) {
  12359. errn = encode_iso1DC_EVChargeParameterType(stream, &exiFrag->DC_EVChargeParameter );
  12360. }
  12361. } else if ( exiFrag->DC_EVPowerDeliveryParameter_isUsed == 1u ) {
  12362. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter) */
  12363. errn = encodeNBitUnsignedInteger(stream, 8, 39);
  12364. if(errn == 0) {
  12365. errn = encode_iso1DC_EVPowerDeliveryParameterType(stream, &exiFrag->DC_EVPowerDeliveryParameter );
  12366. }
  12367. } else if ( exiFrag->DC_EVSEChargeParameter_isUsed == 1u ) {
  12368. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter) */
  12369. errn = encodeNBitUnsignedInteger(stream, 8, 40);
  12370. if(errn == 0) {
  12371. errn = encode_iso1DC_EVSEChargeParameterType(stream, &exiFrag->DC_EVSEChargeParameter );
  12372. }
  12373. } else if ( exiFrag->DC_EVSEStatus_isUsed == 1u ) {
  12374. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus) */
  12375. errn = encodeNBitUnsignedInteger(stream, 8, 41);
  12376. if(errn == 0) {
  12377. errn = encode_iso1DC_EVSEStatusType(stream, &exiFrag->DC_EVSEStatus );
  12378. }
  12379. } else if ( exiFrag->DC_EVSEStatus_isUsed == 1u ) {
  12380. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus) */
  12381. errn = encodeNBitUnsignedInteger(stream, 8, 42);
  12382. if(errn == 0) {
  12383. errn = encode_iso1DC_EVSEStatusType(stream, &exiFrag->DC_EVSEStatus );
  12384. }
  12385. } else if ( exiFrag->DC_EVStatus_isUsed == 1u ) {
  12386. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus) */
  12387. errn = encodeNBitUnsignedInteger(stream, 8, 43);
  12388. if(errn == 0) {
  12389. errn = encode_iso1DC_EVStatusType(stream, &exiFrag->DC_EVStatus );
  12390. }
  12391. } else if ( exiFrag->DC_EVStatus_isUsed == 1u ) {
  12392. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus) */
  12393. errn = encodeNBitUnsignedInteger(stream, 8, 44);
  12394. if(errn == 0) {
  12395. errn = encode_iso1DC_EVStatusType(stream, &exiFrag->DC_EVStatus );
  12396. }
  12397. } else if ( exiFrag->DHpublickey_isUsed == 1u ) {
  12398. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey) */
  12399. errn = encodeNBitUnsignedInteger(stream, 8, 45);
  12400. if(errn == 0) {
  12401. errn = encode_iso1DiffieHellmanPublickeyType(stream, &exiFrag->DHpublickey );
  12402. }
  12403. } else if ( exiFrag->DSAKeyValue_isUsed == 1u ) {
  12404. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */
  12405. errn = encodeNBitUnsignedInteger(stream, 8, 46);
  12406. if(errn == 0) {
  12407. errn = encode_iso1DSAKeyValueType(stream, &exiFrag->DSAKeyValue );
  12408. }
  12409. } else if ( exiFrag->DepartureTime_isUsed == 1u ) {
  12410. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) */
  12411. errn = encodeNBitUnsignedInteger(stream, 8, 47);
  12412. if(errn == 0) {
  12413. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  12414. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12415. if(errn == 0) {
  12416. errn = encodeUnsignedInteger32(stream, exiFrag->DepartureTime);
  12417. /* valid EE */
  12418. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12419. }
  12420. }
  12421. } else if ( exiFrag->DigestMethod_isUsed == 1u ) {
  12422. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */
  12423. errn = encodeNBitUnsignedInteger(stream, 8, 48);
  12424. if(errn == 0) {
  12425. errn = encode_iso1DigestMethodType(stream, &exiFrag->DigestMethod );
  12426. }
  12427. } else if ( exiFrag->DigestValue_isUsed == 1u ) {
  12428. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */
  12429. errn = encodeNBitUnsignedInteger(stream, 8, 49);
  12430. if(errn == 0) {
  12431. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  12432. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12433. if(errn == 0) {
  12434. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->DigestValue.bytesLen));
  12435. if (errn == 0) {
  12436. errn = encodeBytes(stream, exiFrag->DigestValue.bytes, exiFrag->DigestValue.bytesLen);
  12437. }
  12438. /* valid EE */
  12439. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12440. }
  12441. }
  12442. } else if ( exiFrag->EAmount_isUsed == 1u ) {
  12443. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount) */
  12444. errn = encodeNBitUnsignedInteger(stream, 8, 50);
  12445. if(errn == 0) {
  12446. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EAmount );
  12447. }
  12448. } else if ( exiFrag->EPriceLevel_isUsed == 1u ) {
  12449. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel) */
  12450. errn = encodeNBitUnsignedInteger(stream, 8, 51);
  12451. if(errn == 0) {
  12452. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12453. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12454. if(errn == 0) {
  12455. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(exiFrag->EPriceLevel - 0));
  12456. /* valid EE */
  12457. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12458. }
  12459. }
  12460. } else if ( exiFrag->EVCCID_isUsed == 1u ) {
  12461. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID) */
  12462. errn = encodeNBitUnsignedInteger(stream, 8, 52);
  12463. if(errn == 0) {
  12464. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  12465. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12466. if(errn == 0) {
  12467. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->EVCCID.bytesLen));
  12468. if (errn == 0) {
  12469. errn = encodeBytes(stream, exiFrag->EVCCID.bytes, exiFrag->EVCCID.bytesLen);
  12470. }
  12471. /* valid EE */
  12472. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12473. }
  12474. }
  12475. } else if ( exiFrag->EVChargeParameter_isUsed == 1u ) {
  12476. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter) */
  12477. errn = encodeNBitUnsignedInteger(stream, 8, 53);
  12478. if(errn == 0) {
  12479. errn = encode_iso1EVChargeParameterType(stream, &exiFrag->EVChargeParameter );
  12480. }
  12481. } else if ( exiFrag->EVEnergyCapacity_isUsed == 1u ) {
  12482. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity) */
  12483. errn = encodeNBitUnsignedInteger(stream, 8, 54);
  12484. if(errn == 0) {
  12485. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVEnergyCapacity );
  12486. }
  12487. } else if ( exiFrag->EVEnergyRequest_isUsed == 1u ) {
  12488. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest) */
  12489. errn = encodeNBitUnsignedInteger(stream, 8, 55);
  12490. if(errn == 0) {
  12491. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVEnergyRequest );
  12492. }
  12493. } else if ( exiFrag->EVErrorCode_isUsed == 1u ) {
  12494. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode) */
  12495. errn = encodeNBitUnsignedInteger(stream, 8, 56);
  12496. if(errn == 0) {
  12497. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12498. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12499. if(errn == 0) {
  12500. errn = encodeNBitUnsignedInteger(stream, 4, exiFrag->EVErrorCode);
  12501. /* valid EE */
  12502. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12503. }
  12504. }
  12505. } else if ( exiFrag->EVMaxCurrent_isUsed == 1u ) {
  12506. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent) */
  12507. errn = encodeNBitUnsignedInteger(stream, 8, 57);
  12508. if(errn == 0) {
  12509. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaxCurrent );
  12510. }
  12511. } else if ( exiFrag->EVMaxVoltage_isUsed == 1u ) {
  12512. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage) */
  12513. errn = encodeNBitUnsignedInteger(stream, 8, 58);
  12514. if(errn == 0) {
  12515. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaxVoltage );
  12516. }
  12517. } else if ( exiFrag->EVMaximumCurrentLimit_isUsed == 1u ) {
  12518. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit) */
  12519. errn = encodeNBitUnsignedInteger(stream, 8, 59);
  12520. if(errn == 0) {
  12521. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumCurrentLimit );
  12522. }
  12523. } else if ( exiFrag->EVMaximumCurrentLimit_isUsed == 1u ) {
  12524. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit) */
  12525. errn = encodeNBitUnsignedInteger(stream, 8, 60);
  12526. if(errn == 0) {
  12527. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumCurrentLimit );
  12528. }
  12529. } else if ( exiFrag->EVMaximumPowerLimit_isUsed == 1u ) {
  12530. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit) */
  12531. errn = encodeNBitUnsignedInteger(stream, 8, 61);
  12532. if(errn == 0) {
  12533. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumPowerLimit );
  12534. }
  12535. } else if ( exiFrag->EVMaximumPowerLimit_isUsed == 1u ) {
  12536. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit) */
  12537. errn = encodeNBitUnsignedInteger(stream, 8, 62);
  12538. if(errn == 0) {
  12539. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumPowerLimit );
  12540. }
  12541. } else if ( exiFrag->EVMaximumVoltageLimit_isUsed == 1u ) {
  12542. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit) */
  12543. errn = encodeNBitUnsignedInteger(stream, 8, 63);
  12544. if(errn == 0) {
  12545. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumVoltageLimit );
  12546. }
  12547. } else if ( exiFrag->EVMaximumVoltageLimit_isUsed == 1u ) {
  12548. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit) */
  12549. errn = encodeNBitUnsignedInteger(stream, 8, 64);
  12550. if(errn == 0) {
  12551. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumVoltageLimit );
  12552. }
  12553. } else if ( exiFrag->EVMinCurrent_isUsed == 1u ) {
  12554. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent) */
  12555. errn = encodeNBitUnsignedInteger(stream, 8, 65);
  12556. if(errn == 0) {
  12557. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVMinCurrent );
  12558. }
  12559. } else if ( exiFrag->EVPowerDeliveryParameter_isUsed == 1u ) {
  12560. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter) */
  12561. errn = encodeNBitUnsignedInteger(stream, 8, 66);
  12562. if(errn == 0) {
  12563. errn = encode_iso1EVPowerDeliveryParameterType(stream, &exiFrag->EVPowerDeliveryParameter );
  12564. }
  12565. } else if ( exiFrag->EVRESSSOC_isUsed == 1u ) {
  12566. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC) */
  12567. errn = encodeNBitUnsignedInteger(stream, 8, 67);
  12568. if(errn == 0) {
  12569. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12570. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12571. if(errn == 0) {
  12572. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(exiFrag->EVRESSSOC - 0));
  12573. /* valid EE */
  12574. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12575. }
  12576. }
  12577. } else if ( exiFrag->EVReady_isUsed == 1u ) {
  12578. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady) */
  12579. errn = encodeNBitUnsignedInteger(stream, 8, 68);
  12580. if(errn == 0) {
  12581. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12582. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12583. if(errn == 0) {
  12584. errn = encodeBoolean(stream, exiFrag->EVReady);
  12585. /* valid EE */
  12586. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12587. }
  12588. }
  12589. } else if ( exiFrag->EVSEChargeParameter_isUsed == 1u ) {
  12590. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter) */
  12591. errn = encodeNBitUnsignedInteger(stream, 8, 69);
  12592. if(errn == 0) {
  12593. errn = encode_iso1EVSEChargeParameterType(stream, &exiFrag->EVSEChargeParameter );
  12594. }
  12595. } else if ( exiFrag->EVSECurrentLimitAchieved_isUsed == 1u ) {
  12596. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved) */
  12597. errn = encodeNBitUnsignedInteger(stream, 8, 70);
  12598. if(errn == 0) {
  12599. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12600. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12601. if(errn == 0) {
  12602. errn = encodeBoolean(stream, exiFrag->EVSECurrentLimitAchieved);
  12603. /* valid EE */
  12604. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12605. }
  12606. }
  12607. } else if ( exiFrag->EVSECurrentRegulationTolerance_isUsed == 1u ) {
  12608. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance) */
  12609. errn = encodeNBitUnsignedInteger(stream, 8, 71);
  12610. if(errn == 0) {
  12611. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSECurrentRegulationTolerance );
  12612. }
  12613. } else if ( exiFrag->EVSEEnergyToBeDelivered_isUsed == 1u ) {
  12614. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered) */
  12615. errn = encodeNBitUnsignedInteger(stream, 8, 72);
  12616. if(errn == 0) {
  12617. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEEnergyToBeDelivered );
  12618. }
  12619. } else if ( exiFrag->EVSEID_isUsed == 1u ) {
  12620. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) */
  12621. errn = encodeNBitUnsignedInteger(stream, 8, 73);
  12622. if(errn == 0) {
  12623. /* FirstStartTag[CHARACTERS[STRING]] */
  12624. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12625. if(errn == 0) {
  12626. /* encode string as string table miss (+2 len)*/
  12627. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->EVSEID.charactersLen + 2));
  12628. if (errn == 0) {
  12629. errn = encodeCharacters(stream, exiFrag->EVSEID.characters, exiFrag->EVSEID.charactersLen);
  12630. }
  12631. /* valid EE */
  12632. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12633. }
  12634. }
  12635. } else if ( exiFrag->EVSEIsolationStatus_isUsed == 1u ) {
  12636. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus) */
  12637. errn = encodeNBitUnsignedInteger(stream, 8, 74);
  12638. if(errn == 0) {
  12639. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12640. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12641. if(errn == 0) {
  12642. errn = encodeNBitUnsignedInteger(stream, 3, exiFrag->EVSEIsolationStatus);
  12643. /* valid EE */
  12644. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12645. }
  12646. }
  12647. } else if ( exiFrag->EVSEMaxCurrent_isUsed == 1u ) {
  12648. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent) */
  12649. errn = encodeNBitUnsignedInteger(stream, 8, 75);
  12650. if(errn == 0) {
  12651. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaxCurrent );
  12652. }
  12653. } else if ( exiFrag->EVSEMaxCurrent_isUsed == 1u ) {
  12654. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent) */
  12655. errn = encodeNBitUnsignedInteger(stream, 8, 76);
  12656. if(errn == 0) {
  12657. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaxCurrent );
  12658. }
  12659. } else if ( exiFrag->EVSEMaximumCurrentLimit_isUsed == 1u ) {
  12660. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit) */
  12661. errn = encodeNBitUnsignedInteger(stream, 8, 77);
  12662. if(errn == 0) {
  12663. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumCurrentLimit );
  12664. }
  12665. } else if ( exiFrag->EVSEMaximumCurrentLimit_isUsed == 1u ) {
  12666. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit) */
  12667. errn = encodeNBitUnsignedInteger(stream, 8, 78);
  12668. if(errn == 0) {
  12669. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumCurrentLimit );
  12670. }
  12671. } else if ( exiFrag->EVSEMaximumPowerLimit_isUsed == 1u ) {
  12672. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit) */
  12673. errn = encodeNBitUnsignedInteger(stream, 8, 79);
  12674. if(errn == 0) {
  12675. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumPowerLimit );
  12676. }
  12677. } else if ( exiFrag->EVSEMaximumPowerLimit_isUsed == 1u ) {
  12678. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit) */
  12679. errn = encodeNBitUnsignedInteger(stream, 8, 80);
  12680. if(errn == 0) {
  12681. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumPowerLimit );
  12682. }
  12683. } else if ( exiFrag->EVSEMaximumVoltageLimit_isUsed == 1u ) {
  12684. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit) */
  12685. errn = encodeNBitUnsignedInteger(stream, 8, 81);
  12686. if(errn == 0) {
  12687. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumVoltageLimit );
  12688. }
  12689. } else if ( exiFrag->EVSEMaximumVoltageLimit_isUsed == 1u ) {
  12690. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit) */
  12691. errn = encodeNBitUnsignedInteger(stream, 8, 82);
  12692. if(errn == 0) {
  12693. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumVoltageLimit );
  12694. }
  12695. } else if ( exiFrag->EVSEMinimumCurrentLimit_isUsed == 1u ) {
  12696. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit) */
  12697. errn = encodeNBitUnsignedInteger(stream, 8, 83);
  12698. if(errn == 0) {
  12699. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMinimumCurrentLimit );
  12700. }
  12701. } else if ( exiFrag->EVSEMinimumVoltageLimit_isUsed == 1u ) {
  12702. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit) */
  12703. errn = encodeNBitUnsignedInteger(stream, 8, 84);
  12704. if(errn == 0) {
  12705. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEMinimumVoltageLimit );
  12706. }
  12707. } else if ( exiFrag->EVSENominalVoltage_isUsed == 1u ) {
  12708. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage) */
  12709. errn = encodeNBitUnsignedInteger(stream, 8, 85);
  12710. if(errn == 0) {
  12711. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSENominalVoltage );
  12712. }
  12713. } else if ( exiFrag->EVSENotification_isUsed == 1u ) {
  12714. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) */
  12715. errn = encodeNBitUnsignedInteger(stream, 8, 86);
  12716. if(errn == 0) {
  12717. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12718. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12719. if(errn == 0) {
  12720. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->EVSENotification);
  12721. /* valid EE */
  12722. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12723. }
  12724. }
  12725. } else if ( exiFrag->EVSEPeakCurrentRipple_isUsed == 1u ) {
  12726. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple) */
  12727. errn = encodeNBitUnsignedInteger(stream, 8, 87);
  12728. if(errn == 0) {
  12729. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEPeakCurrentRipple );
  12730. }
  12731. } else if ( exiFrag->EVSEPowerLimitAchieved_isUsed == 1u ) {
  12732. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved) */
  12733. errn = encodeNBitUnsignedInteger(stream, 8, 88);
  12734. if(errn == 0) {
  12735. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12736. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12737. if(errn == 0) {
  12738. errn = encodeBoolean(stream, exiFrag->EVSEPowerLimitAchieved);
  12739. /* valid EE */
  12740. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12741. }
  12742. }
  12743. } else if ( exiFrag->EVSEPresentCurrent_isUsed == 1u ) {
  12744. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent) */
  12745. errn = encodeNBitUnsignedInteger(stream, 8, 89);
  12746. if(errn == 0) {
  12747. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEPresentCurrent );
  12748. }
  12749. } else if ( exiFrag->EVSEPresentVoltage_isUsed == 1u ) {
  12750. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage) */
  12751. errn = encodeNBitUnsignedInteger(stream, 8, 90);
  12752. if(errn == 0) {
  12753. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVSEPresentVoltage );
  12754. }
  12755. } else if ( exiFrag->EVSEProcessing_isUsed == 1u ) {
  12756. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) */
  12757. errn = encodeNBitUnsignedInteger(stream, 8, 91);
  12758. if(errn == 0) {
  12759. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12760. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12761. if(errn == 0) {
  12762. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->EVSEProcessing);
  12763. /* valid EE */
  12764. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12765. }
  12766. }
  12767. } else if ( exiFrag->EVSEStatus_isUsed == 1u ) {
  12768. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus) */
  12769. errn = encodeNBitUnsignedInteger(stream, 8, 92);
  12770. if(errn == 0) {
  12771. errn = encode_iso1EVSEStatusType(stream, &exiFrag->EVSEStatus );
  12772. }
  12773. } else if ( exiFrag->EVSEStatusCode_isUsed == 1u ) {
  12774. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode) */
  12775. errn = encodeNBitUnsignedInteger(stream, 8, 93);
  12776. if(errn == 0) {
  12777. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12778. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12779. if(errn == 0) {
  12780. errn = encodeNBitUnsignedInteger(stream, 4, exiFrag->EVSEStatusCode);
  12781. /* valid EE */
  12782. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12783. }
  12784. }
  12785. } else if ( exiFrag->EVSETimeStamp_isUsed == 1u ) {
  12786. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp) */
  12787. errn = encodeNBitUnsignedInteger(stream, 8, 94);
  12788. if(errn == 0) {
  12789. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  12790. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12791. if(errn == 0) {
  12792. errn = encodeInteger64(stream, exiFrag->EVSETimeStamp);
  12793. /* valid EE */
  12794. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12795. }
  12796. }
  12797. } else if ( exiFrag->EVSEVoltageLimitAchieved_isUsed == 1u ) {
  12798. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved) */
  12799. errn = encodeNBitUnsignedInteger(stream, 8, 95);
  12800. if(errn == 0) {
  12801. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12802. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12803. if(errn == 0) {
  12804. errn = encodeBoolean(stream, exiFrag->EVSEVoltageLimitAchieved);
  12805. /* valid EE */
  12806. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12807. }
  12808. }
  12809. } else if ( exiFrag->EVStatus_isUsed == 1u ) {
  12810. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus) */
  12811. errn = encodeNBitUnsignedInteger(stream, 8, 96);
  12812. if(errn == 0) {
  12813. errn = encode_iso1EVStatusType(stream, &exiFrag->EVStatus );
  12814. }
  12815. } else if ( exiFrag->EVTargetCurrent_isUsed == 1u ) {
  12816. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent) */
  12817. errn = encodeNBitUnsignedInteger(stream, 8, 97);
  12818. if(errn == 0) {
  12819. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVTargetCurrent );
  12820. }
  12821. } else if ( exiFrag->EVTargetVoltage_isUsed == 1u ) {
  12822. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage) */
  12823. errn = encodeNBitUnsignedInteger(stream, 8, 98);
  12824. if(errn == 0) {
  12825. errn = encode_iso1PhysicalValueType(stream, &exiFrag->EVTargetVoltage );
  12826. }
  12827. } else if ( exiFrag->EnergyTransferMode_isUsed == 1u ) {
  12828. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) */
  12829. errn = encodeNBitUnsignedInteger(stream, 8, 99);
  12830. if(errn == 0) {
  12831. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12832. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12833. if(errn == 0) {
  12834. errn = encodeNBitUnsignedInteger(stream, 3, exiFrag->EnergyTransferMode);
  12835. /* valid EE */
  12836. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12837. }
  12838. }
  12839. } else if ( exiFrag->Entry_isUsed == 1u ) {
  12840. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry) */
  12841. errn = encodeNBitUnsignedInteger(stream, 8, 100);
  12842. if(errn == 0) {
  12843. errn = encode_iso1EntryType(stream, &exiFrag->Entry );
  12844. }
  12845. } else if ( exiFrag->Exponent_isUsed == 1u ) {
  12846. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent) */
  12847. errn = encodeNBitUnsignedInteger(stream, 8, 101);
  12848. if(errn == 0) {
  12849. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  12850. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12851. if(errn == 0) {
  12852. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->Exponent.bytesLen));
  12853. if (errn == 0) {
  12854. errn = encodeBytes(stream, exiFrag->Exponent.bytes, exiFrag->Exponent.bytesLen);
  12855. }
  12856. /* valid EE */
  12857. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12858. }
  12859. }
  12860. } else if ( exiFrag->FaultCode_isUsed == 1u ) {
  12861. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode) */
  12862. errn = encodeNBitUnsignedInteger(stream, 8, 102);
  12863. if(errn == 0) {
  12864. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12865. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12866. if(errn == 0) {
  12867. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->FaultCode);
  12868. /* valid EE */
  12869. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12870. }
  12871. }
  12872. } else if ( exiFrag->FaultMsg_isUsed == 1u ) {
  12873. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg) */
  12874. errn = encodeNBitUnsignedInteger(stream, 8, 103);
  12875. if(errn == 0) {
  12876. /* FirstStartTag[CHARACTERS[STRING]] */
  12877. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12878. if(errn == 0) {
  12879. /* encode string as string table miss (+2 len)*/
  12880. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->FaultMsg.charactersLen + 2));
  12881. if (errn == 0) {
  12882. errn = encodeCharacters(stream, exiFrag->FaultMsg.characters, exiFrag->FaultMsg.charactersLen);
  12883. }
  12884. /* valid EE */
  12885. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12886. }
  12887. }
  12888. } else if ( exiFrag->FreeService_isUsed == 1u ) {
  12889. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) */
  12890. errn = encodeNBitUnsignedInteger(stream, 8, 104);
  12891. if(errn == 0) {
  12892. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12893. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12894. if(errn == 0) {
  12895. errn = encodeBoolean(stream, exiFrag->FreeService);
  12896. /* valid EE */
  12897. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12898. }
  12899. }
  12900. } else if ( exiFrag->FullSOC_isUsed == 1u ) {
  12901. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) */
  12902. errn = encodeNBitUnsignedInteger(stream, 8, 105);
  12903. if(errn == 0) {
  12904. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12905. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12906. if(errn == 0) {
  12907. errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(exiFrag->FullSOC - 0));
  12908. /* valid EE */
  12909. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12910. }
  12911. }
  12912. } else if ( exiFrag->G_isUsed == 1u ) {
  12913. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) */
  12914. errn = encodeNBitUnsignedInteger(stream, 8, 106);
  12915. if(errn == 0) {
  12916. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  12917. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12918. if(errn == 0) {
  12919. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->G.bytesLen));
  12920. if (errn == 0) {
  12921. errn = encodeBytes(stream, exiFrag->G.bytes, exiFrag->G.bytesLen);
  12922. }
  12923. /* valid EE */
  12924. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12925. }
  12926. }
  12927. } else if ( exiFrag->GenChallenge_isUsed == 1u ) {
  12928. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) */
  12929. errn = encodeNBitUnsignedInteger(stream, 8, 107);
  12930. if(errn == 0) {
  12931. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  12932. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12933. if(errn == 0) {
  12934. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->GenChallenge.bytesLen));
  12935. if (errn == 0) {
  12936. errn = encodeBytes(stream, exiFrag->GenChallenge.bytes, exiFrag->GenChallenge.bytesLen);
  12937. }
  12938. /* valid EE */
  12939. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12940. }
  12941. }
  12942. } else if ( exiFrag->HMACOutputLength_isUsed == 1u ) {
  12943. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) */
  12944. errn = encodeNBitUnsignedInteger(stream, 8, 108);
  12945. if(errn == 0) {
  12946. /* FirstStartTag[CHARACTERS[INTEGER]] */
  12947. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12948. if(errn == 0) {
  12949. errn = encodeInteger64(stream, exiFrag->HMACOutputLength);
  12950. /* valid EE */
  12951. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12952. }
  12953. }
  12954. } else if ( exiFrag->Header_isUsed == 1u ) {
  12955. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header) */
  12956. errn = encodeNBitUnsignedInteger(stream, 8, 109);
  12957. if(errn == 0) {
  12958. errn = encode_iso1MessageHeaderType(stream, &exiFrag->Header );
  12959. }
  12960. } else if ( exiFrag->J_isUsed == 1u ) {
  12961. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J) */
  12962. errn = encodeNBitUnsignedInteger(stream, 8, 110);
  12963. if(errn == 0) {
  12964. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  12965. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12966. if(errn == 0) {
  12967. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->J.bytesLen));
  12968. if (errn == 0) {
  12969. errn = encodeBytes(stream, exiFrag->J.bytes, exiFrag->J.bytesLen);
  12970. }
  12971. /* valid EE */
  12972. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12973. }
  12974. }
  12975. } else if ( exiFrag->KeyInfo_isUsed == 1u ) {
  12976. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */
  12977. errn = encodeNBitUnsignedInteger(stream, 8, 111);
  12978. if(errn == 0) {
  12979. errn = encode_iso1KeyInfoType(stream, &exiFrag->KeyInfo );
  12980. }
  12981. } else if ( exiFrag->KeyName_isUsed == 1u ) {
  12982. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */
  12983. errn = encodeNBitUnsignedInteger(stream, 8, 112);
  12984. if(errn == 0) {
  12985. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  12986. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12987. if(errn == 0) {
  12988. /* encode string as string table miss (+2 len)*/
  12989. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->KeyName.charactersLen + 2));
  12990. if (errn == 0) {
  12991. errn = encodeCharacters(stream, exiFrag->KeyName.characters, exiFrag->KeyName.charactersLen);
  12992. }
  12993. /* valid EE */
  12994. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  12995. }
  12996. }
  12997. } else if ( exiFrag->KeyValue_isUsed == 1u ) {
  12998. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */
  12999. errn = encodeNBitUnsignedInteger(stream, 8, 113);
  13000. if(errn == 0) {
  13001. errn = encode_iso1KeyValueType(stream, &exiFrag->KeyValue );
  13002. }
  13003. } else if ( exiFrag->ListOfRootCertificateIDs_isUsed == 1u ) {
  13004. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs) */
  13005. errn = encodeNBitUnsignedInteger(stream, 8, 114);
  13006. if(errn == 0) {
  13007. errn = encode_iso1ListOfRootCertificateIDsType(stream, &exiFrag->ListOfRootCertificateIDs );
  13008. }
  13009. } else if ( exiFrag->Manifest_isUsed == 1u ) {
  13010. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */
  13011. errn = encodeNBitUnsignedInteger(stream, 8, 115);
  13012. if(errn == 0) {
  13013. errn = encode_iso1ManifestType(stream, &exiFrag->Manifest );
  13014. }
  13015. } else if ( exiFrag->MaxEntriesSAScheduleTuple_isUsed == 1u ) {
  13016. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple) */
  13017. errn = encodeNBitUnsignedInteger(stream, 8, 116);
  13018. if(errn == 0) {
  13019. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  13020. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13021. if(errn == 0) {
  13022. errn = encodeUnsignedInteger16(stream, exiFrag->MaxEntriesSAScheduleTuple);
  13023. /* valid EE */
  13024. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13025. }
  13026. }
  13027. } else if ( exiFrag->MeterID_isUsed == 1u ) {
  13028. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID) */
  13029. errn = encodeNBitUnsignedInteger(stream, 8, 117);
  13030. if(errn == 0) {
  13031. /* FirstStartTag[CHARACTERS[STRING]] */
  13032. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13033. if(errn == 0) {
  13034. /* encode string as string table miss (+2 len)*/
  13035. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->MeterID.charactersLen + 2));
  13036. if (errn == 0) {
  13037. errn = encodeCharacters(stream, exiFrag->MeterID.characters, exiFrag->MeterID.charactersLen);
  13038. }
  13039. /* valid EE */
  13040. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13041. }
  13042. }
  13043. } else if ( exiFrag->MeterInfo_isUsed == 1u ) {
  13044. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo) */
  13045. errn = encodeNBitUnsignedInteger(stream, 8, 118);
  13046. if(errn == 0) {
  13047. errn = encode_iso1MeterInfoType(stream, &exiFrag->MeterInfo );
  13048. }
  13049. } else if ( exiFrag->MeterReading_isUsed == 1u ) {
  13050. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading) */
  13051. errn = encodeNBitUnsignedInteger(stream, 8, 119);
  13052. if(errn == 0) {
  13053. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  13054. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13055. if(errn == 0) {
  13056. errn = encodeUnsignedInteger64(stream, exiFrag->MeterReading);
  13057. /* valid EE */
  13058. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13059. }
  13060. }
  13061. } else if ( exiFrag->MeterStatus_isUsed == 1u ) {
  13062. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) */
  13063. errn = encodeNBitUnsignedInteger(stream, 8, 120);
  13064. if(errn == 0) {
  13065. /* FirstStartTag[CHARACTERS[INTEGER]] */
  13066. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13067. if(errn == 0) {
  13068. errn = encodeInteger16(stream, exiFrag->MeterStatus);
  13069. /* valid EE */
  13070. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13071. }
  13072. }
  13073. } else if ( exiFrag->MeteringReceiptReq_isUsed == 1u ) {
  13074. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq) */
  13075. errn = encodeNBitUnsignedInteger(stream, 8, 121);
  13076. if(errn == 0) {
  13077. errn = encode_iso1MeteringReceiptReqType(stream, &exiFrag->MeteringReceiptReq );
  13078. }
  13079. } else if ( exiFrag->MeteringReceiptRes_isUsed == 1u ) {
  13080. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes) */
  13081. errn = encodeNBitUnsignedInteger(stream, 8, 122);
  13082. if(errn == 0) {
  13083. errn = encode_iso1MeteringReceiptResType(stream, &exiFrag->MeteringReceiptRes );
  13084. }
  13085. } else if ( exiFrag->MgmtData_isUsed == 1u ) {
  13086. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */
  13087. errn = encodeNBitUnsignedInteger(stream, 8, 123);
  13088. if(errn == 0) {
  13089. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  13090. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13091. if(errn == 0) {
  13092. /* encode string as string table miss (+2 len)*/
  13093. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->MgmtData.charactersLen + 2));
  13094. if (errn == 0) {
  13095. errn = encodeCharacters(stream, exiFrag->MgmtData.characters, exiFrag->MgmtData.charactersLen);
  13096. }
  13097. /* valid EE */
  13098. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13099. }
  13100. }
  13101. } else if ( exiFrag->Modulus_isUsed == 1u ) {
  13102. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus) */
  13103. errn = encodeNBitUnsignedInteger(stream, 8, 124);
  13104. if(errn == 0) {
  13105. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13106. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13107. if(errn == 0) {
  13108. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->Modulus.bytesLen));
  13109. if (errn == 0) {
  13110. errn = encodeBytes(stream, exiFrag->Modulus.bytes, exiFrag->Modulus.bytesLen);
  13111. }
  13112. /* valid EE */
  13113. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13114. }
  13115. }
  13116. } else if ( exiFrag->Multiplier_isUsed == 1u ) {
  13117. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier) */
  13118. errn = encodeNBitUnsignedInteger(stream, 8, 125);
  13119. if(errn == 0) {
  13120. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13121. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13122. if(errn == 0) {
  13123. errn = encodeNBitUnsignedInteger(stream, 3, (uint32_t)(exiFrag->Multiplier + 3));
  13124. /* valid EE */
  13125. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13126. }
  13127. }
  13128. } else if ( exiFrag->Notification_isUsed == 1u ) {
  13129. /* START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification) */
  13130. errn = encodeNBitUnsignedInteger(stream, 8, 126);
  13131. if(errn == 0) {
  13132. errn = encode_iso1NotificationType(stream, &exiFrag->Notification );
  13133. }
  13134. } else if ( exiFrag->NotificationMaxDelay_isUsed == 1u ) {
  13135. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) */
  13136. errn = encodeNBitUnsignedInteger(stream, 8, 127);
  13137. if(errn == 0) {
  13138. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  13139. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13140. if(errn == 0) {
  13141. errn = encodeUnsignedInteger16(stream, exiFrag->NotificationMaxDelay);
  13142. /* valid EE */
  13143. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13144. }
  13145. }
  13146. } else if ( exiFrag->NumEPriceLevels_isUsed == 1u ) {
  13147. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels) */
  13148. errn = encodeNBitUnsignedInteger(stream, 8, 128);
  13149. if(errn == 0) {
  13150. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13151. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13152. if(errn == 0) {
  13153. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(exiFrag->NumEPriceLevels - 0));
  13154. /* valid EE */
  13155. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13156. }
  13157. }
  13158. } else if ( exiFrag->OEMProvisioningCert_isUsed == 1u ) {
  13159. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert) */
  13160. errn = encodeNBitUnsignedInteger(stream, 8, 129);
  13161. if(errn == 0) {
  13162. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13163. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13164. if(errn == 0) {
  13165. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->OEMProvisioningCert.bytesLen));
  13166. if (errn == 0) {
  13167. errn = encodeBytes(stream, exiFrag->OEMProvisioningCert.bytes, exiFrag->OEMProvisioningCert.bytesLen);
  13168. }
  13169. /* valid EE */
  13170. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13171. }
  13172. }
  13173. } else if ( exiFrag->Object_isUsed == 1u ) {
  13174. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */
  13175. errn = encodeNBitUnsignedInteger(stream, 8, 130);
  13176. if(errn == 0) {
  13177. errn = encode_iso1ObjectType(stream, &exiFrag->Object );
  13178. }
  13179. } else if ( exiFrag->P_isUsed == 1u ) {
  13180. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P) */
  13181. errn = encodeNBitUnsignedInteger(stream, 8, 131);
  13182. if(errn == 0) {
  13183. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13184. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13185. if(errn == 0) {
  13186. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->P.bytesLen));
  13187. if (errn == 0) {
  13188. errn = encodeBytes(stream, exiFrag->P.bytes, exiFrag->P.bytesLen);
  13189. }
  13190. /* valid EE */
  13191. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13192. }
  13193. }
  13194. } else if ( exiFrag->PGPData_isUsed == 1u ) {
  13195. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */
  13196. errn = encodeNBitUnsignedInteger(stream, 8, 132);
  13197. if(errn == 0) {
  13198. errn = encode_iso1PGPDataType(stream, &exiFrag->PGPData );
  13199. }
  13200. } else if ( exiFrag->PGPKeyID_isUsed == 1u ) {
  13201. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID) */
  13202. errn = encodeNBitUnsignedInteger(stream, 8, 133);
  13203. if(errn == 0) {
  13204. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  13205. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13206. if(errn == 0) {
  13207. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->PGPKeyID.bytesLen));
  13208. if (errn == 0) {
  13209. errn = encodeBytes(stream, exiFrag->PGPKeyID.bytes, exiFrag->PGPKeyID.bytesLen);
  13210. }
  13211. /* valid EE */
  13212. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13213. }
  13214. }
  13215. } else if ( exiFrag->PGPKeyPacket_isUsed == 1u ) {
  13216. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) */
  13217. errn = encodeNBitUnsignedInteger(stream, 8, 134);
  13218. if(errn == 0) {
  13219. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  13220. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13221. if(errn == 0) {
  13222. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->PGPKeyPacket.bytesLen));
  13223. if (errn == 0) {
  13224. errn = encodeBytes(stream, exiFrag->PGPKeyPacket.bytes, exiFrag->PGPKeyPacket.bytesLen);
  13225. }
  13226. /* valid EE */
  13227. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13228. }
  13229. }
  13230. } else if ( exiFrag->PMax_isUsed == 1u ) {
  13231. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax) */
  13232. errn = encodeNBitUnsignedInteger(stream, 8, 135);
  13233. if(errn == 0) {
  13234. errn = encode_iso1PhysicalValueType(stream, &exiFrag->PMax );
  13235. }
  13236. } else if ( exiFrag->PMaxSchedule_isUsed == 1u ) {
  13237. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule) */
  13238. errn = encodeNBitUnsignedInteger(stream, 8, 136);
  13239. if(errn == 0) {
  13240. errn = encode_iso1PMaxScheduleType(stream, &exiFrag->PMaxSchedule );
  13241. }
  13242. } else if ( exiFrag->PMaxScheduleEntry_isUsed == 1u ) {
  13243. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry) */
  13244. errn = encodeNBitUnsignedInteger(stream, 8, 137);
  13245. if(errn == 0) {
  13246. errn = encode_iso1PMaxScheduleEntryType(stream, &exiFrag->PMaxScheduleEntry );
  13247. }
  13248. } else if ( exiFrag->Parameter_isUsed == 1u ) {
  13249. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter) */
  13250. errn = encodeNBitUnsignedInteger(stream, 8, 138);
  13251. if(errn == 0) {
  13252. errn = encode_iso1ParameterType(stream, &exiFrag->Parameter );
  13253. }
  13254. } else if ( exiFrag->ParameterSet_isUsed == 1u ) {
  13255. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet) */
  13256. errn = encodeNBitUnsignedInteger(stream, 8, 139);
  13257. if(errn == 0) {
  13258. errn = encode_iso1ParameterSetType(stream, &exiFrag->ParameterSet );
  13259. }
  13260. } else if ( exiFrag->ParameterSetID_isUsed == 1u ) {
  13261. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID) */
  13262. errn = encodeNBitUnsignedInteger(stream, 8, 140);
  13263. if(errn == 0) {
  13264. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  13265. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13266. if(errn == 0) {
  13267. errn = encodeInteger16(stream, exiFrag->ParameterSetID);
  13268. /* valid EE */
  13269. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13270. }
  13271. }
  13272. } else if ( exiFrag->PaymentDetailsReq_isUsed == 1u ) {
  13273. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq) */
  13274. errn = encodeNBitUnsignedInteger(stream, 8, 141);
  13275. if(errn == 0) {
  13276. errn = encode_iso1PaymentDetailsReqType(stream, &exiFrag->PaymentDetailsReq );
  13277. }
  13278. } else if ( exiFrag->PaymentDetailsRes_isUsed == 1u ) {
  13279. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes) */
  13280. errn = encodeNBitUnsignedInteger(stream, 8, 142);
  13281. if(errn == 0) {
  13282. errn = encode_iso1PaymentDetailsResType(stream, &exiFrag->PaymentDetailsRes );
  13283. }
  13284. } else if ( exiFrag->PaymentOption_isUsed == 1u ) {
  13285. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption) */
  13286. errn = encodeNBitUnsignedInteger(stream, 8, 143);
  13287. if(errn == 0) {
  13288. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13289. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13290. if(errn == 0) {
  13291. errn = encodeNBitUnsignedInteger(stream, 1, exiFrag->PaymentOption);
  13292. /* valid EE */
  13293. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13294. }
  13295. }
  13296. } else if ( exiFrag->PaymentOptionList_isUsed == 1u ) {
  13297. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList) */
  13298. errn = encodeNBitUnsignedInteger(stream, 8, 144);
  13299. if(errn == 0) {
  13300. errn = encode_iso1PaymentOptionListType(stream, &exiFrag->PaymentOptionList );
  13301. }
  13302. } else if ( exiFrag->PaymentServiceSelectionReq_isUsed == 1u ) {
  13303. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq) */
  13304. errn = encodeNBitUnsignedInteger(stream, 8, 145);
  13305. if(errn == 0) {
  13306. errn = encode_iso1PaymentServiceSelectionReqType(stream, &exiFrag->PaymentServiceSelectionReq );
  13307. }
  13308. } else if ( exiFrag->PaymentServiceSelectionRes_isUsed == 1u ) {
  13309. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes) */
  13310. errn = encodeNBitUnsignedInteger(stream, 8, 146);
  13311. if(errn == 0) {
  13312. errn = encode_iso1PaymentServiceSelectionResType(stream, &exiFrag->PaymentServiceSelectionRes );
  13313. }
  13314. } else if ( exiFrag->PgenCounter_isUsed == 1u ) {
  13315. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter) */
  13316. errn = encodeNBitUnsignedInteger(stream, 8, 147);
  13317. if(errn == 0) {
  13318. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13319. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13320. if(errn == 0) {
  13321. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->PgenCounter.bytesLen));
  13322. if (errn == 0) {
  13323. errn = encodeBytes(stream, exiFrag->PgenCounter.bytes, exiFrag->PgenCounter.bytesLen);
  13324. }
  13325. /* valid EE */
  13326. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13327. }
  13328. }
  13329. } else if ( exiFrag->PowerDeliveryReq_isUsed == 1u ) {
  13330. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq) */
  13331. errn = encodeNBitUnsignedInteger(stream, 8, 148);
  13332. if(errn == 0) {
  13333. errn = encode_iso1PowerDeliveryReqType(stream, &exiFrag->PowerDeliveryReq );
  13334. }
  13335. } else if ( exiFrag->PowerDeliveryRes_isUsed == 1u ) {
  13336. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes) */
  13337. errn = encodeNBitUnsignedInteger(stream, 8, 149);
  13338. if(errn == 0) {
  13339. errn = encode_iso1PowerDeliveryResType(stream, &exiFrag->PowerDeliveryRes );
  13340. }
  13341. } else if ( exiFrag->PreChargeReq_isUsed == 1u ) {
  13342. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq) */
  13343. errn = encodeNBitUnsignedInteger(stream, 8, 150);
  13344. if(errn == 0) {
  13345. errn = encode_iso1PreChargeReqType(stream, &exiFrag->PreChargeReq );
  13346. }
  13347. } else if ( exiFrag->PreChargeRes_isUsed == 1u ) {
  13348. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes) */
  13349. errn = encodeNBitUnsignedInteger(stream, 8, 151);
  13350. if(errn == 0) {
  13351. errn = encode_iso1PreChargeResType(stream, &exiFrag->PreChargeRes );
  13352. }
  13353. } else if ( exiFrag->ProfileEntry_isUsed == 1u ) {
  13354. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry) */
  13355. errn = encodeNBitUnsignedInteger(stream, 8, 152);
  13356. if(errn == 0) {
  13357. errn = encode_iso1ProfileEntryType(stream, &exiFrag->ProfileEntry );
  13358. }
  13359. } else if ( exiFrag->Q_isUsed == 1u ) {
  13360. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q) */
  13361. errn = encodeNBitUnsignedInteger(stream, 8, 153);
  13362. if(errn == 0) {
  13363. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13364. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13365. if(errn == 0) {
  13366. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->Q.bytesLen));
  13367. if (errn == 0) {
  13368. errn = encodeBytes(stream, exiFrag->Q.bytes, exiFrag->Q.bytesLen);
  13369. }
  13370. /* valid EE */
  13371. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13372. }
  13373. }
  13374. } else if ( exiFrag->RCD_isUsed == 1u ) {
  13375. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD) */
  13376. errn = encodeNBitUnsignedInteger(stream, 8, 154);
  13377. if(errn == 0) {
  13378. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13379. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13380. if(errn == 0) {
  13381. errn = encodeBoolean(stream, exiFrag->RCD);
  13382. /* valid EE */
  13383. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13384. }
  13385. }
  13386. } else if ( exiFrag->RSAKeyValue_isUsed == 1u ) {
  13387. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */
  13388. errn = encodeNBitUnsignedInteger(stream, 8, 155);
  13389. if(errn == 0) {
  13390. errn = encode_iso1RSAKeyValueType(stream, &exiFrag->RSAKeyValue );
  13391. }
  13392. } else if ( exiFrag->ReceiptRequired_isUsed == 1u ) {
  13393. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) */
  13394. errn = encodeNBitUnsignedInteger(stream, 8, 156);
  13395. if(errn == 0) {
  13396. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13397. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13398. if(errn == 0) {
  13399. errn = encodeBoolean(stream, exiFrag->ReceiptRequired);
  13400. /* valid EE */
  13401. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13402. }
  13403. }
  13404. } else if ( exiFrag->Reference_isUsed == 1u ) {
  13405. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */
  13406. errn = encodeNBitUnsignedInteger(stream, 8, 157);
  13407. if(errn == 0) {
  13408. errn = encode_iso1ReferenceType(stream, &exiFrag->Reference );
  13409. }
  13410. } else if ( exiFrag->RelativeTimeInterval_isUsed == 1u ) {
  13411. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval) */
  13412. errn = encodeNBitUnsignedInteger(stream, 8, 158);
  13413. if(errn == 0) {
  13414. errn = encode_iso1RelativeTimeIntervalType(stream, &exiFrag->RelativeTimeInterval );
  13415. }
  13416. } else if ( exiFrag->RemainingTimeToBulkSoC_isUsed == 1u ) {
  13417. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC) */
  13418. errn = encodeNBitUnsignedInteger(stream, 8, 159);
  13419. if(errn == 0) {
  13420. errn = encode_iso1PhysicalValueType(stream, &exiFrag->RemainingTimeToBulkSoC );
  13421. }
  13422. } else if ( exiFrag->RemainingTimeToFullSoC_isUsed == 1u ) {
  13423. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC) */
  13424. errn = encodeNBitUnsignedInteger(stream, 8, 160);
  13425. if(errn == 0) {
  13426. errn = encode_iso1PhysicalValueType(stream, &exiFrag->RemainingTimeToFullSoC );
  13427. }
  13428. } else if ( exiFrag->RequestedEnergyTransferMode_isUsed == 1u ) {
  13429. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode) */
  13430. errn = encodeNBitUnsignedInteger(stream, 8, 161);
  13431. if(errn == 0) {
  13432. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13433. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13434. if(errn == 0) {
  13435. errn = encodeNBitUnsignedInteger(stream, 3, exiFrag->RequestedEnergyTransferMode);
  13436. /* valid EE */
  13437. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13438. }
  13439. }
  13440. } else if ( exiFrag->ResponseCode_isUsed == 1u ) {
  13441. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) */
  13442. errn = encodeNBitUnsignedInteger(stream, 8, 162);
  13443. if(errn == 0) {
  13444. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13445. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13446. if(errn == 0) {
  13447. errn = encodeNBitUnsignedInteger(stream, 5, exiFrag->ResponseCode);
  13448. /* valid EE */
  13449. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13450. }
  13451. }
  13452. } else if ( exiFrag->RetrievalMethod_isUsed == 1u ) {
  13453. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */
  13454. errn = encodeNBitUnsignedInteger(stream, 8, 163);
  13455. if(errn == 0) {
  13456. errn = encode_iso1RetrievalMethodType(stream, &exiFrag->RetrievalMethod );
  13457. }
  13458. } else if ( exiFrag->RetryCounter_isUsed == 1u ) {
  13459. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter) */
  13460. errn = encodeNBitUnsignedInteger(stream, 8, 164);
  13461. if(errn == 0) {
  13462. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  13463. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13464. if(errn == 0) {
  13465. errn = encodeInteger16(stream, exiFrag->RetryCounter);
  13466. /* valid EE */
  13467. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13468. }
  13469. }
  13470. } else if ( exiFrag->RootCertificateID_isUsed == 1u ) {
  13471. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID) */
  13472. errn = encodeNBitUnsignedInteger(stream, 8, 165);
  13473. if(errn == 0) {
  13474. errn = encode_iso1X509IssuerSerialType(stream, &exiFrag->RootCertificateID );
  13475. }
  13476. } else if ( exiFrag->SAProvisioningCertificateChain_isUsed == 1u ) {
  13477. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain) */
  13478. errn = encodeNBitUnsignedInteger(stream, 8, 166);
  13479. if(errn == 0) {
  13480. errn = encode_iso1CertificateChainType(stream, &exiFrag->SAProvisioningCertificateChain );
  13481. }
  13482. } else if ( exiFrag->SAScheduleList_isUsed == 1u ) {
  13483. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList) */
  13484. errn = encodeNBitUnsignedInteger(stream, 8, 167);
  13485. if(errn == 0) {
  13486. errn = encode_iso1SAScheduleListType(stream, &exiFrag->SAScheduleList );
  13487. }
  13488. } else if ( exiFrag->SAScheduleTuple_isUsed == 1u ) {
  13489. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple) */
  13490. errn = encodeNBitUnsignedInteger(stream, 8, 168);
  13491. if(errn == 0) {
  13492. errn = encode_iso1SAScheduleTupleType(stream, &exiFrag->SAScheduleTuple );
  13493. }
  13494. } else if ( exiFrag->SAScheduleTupleID_isUsed == 1u ) {
  13495. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) */
  13496. errn = encodeNBitUnsignedInteger(stream, 8, 169);
  13497. if(errn == 0) {
  13498. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13499. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13500. if(errn == 0) {
  13501. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(exiFrag->SAScheduleTupleID - 1));
  13502. /* valid EE */
  13503. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13504. }
  13505. }
  13506. } else if ( exiFrag->SAScheduleTupleID_isUsed == 1u ) {
  13507. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID) */
  13508. errn = encodeNBitUnsignedInteger(stream, 8, 170);
  13509. if(errn == 0) {
  13510. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13511. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13512. if(errn == 0) {
  13513. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(exiFrag->SAScheduleTupleID - 1));
  13514. /* valid EE */
  13515. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13516. }
  13517. }
  13518. } else if ( exiFrag->SASchedules_isUsed == 1u ) {
  13519. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules) */
  13520. errn = encodeNBitUnsignedInteger(stream, 8, 171);
  13521. if(errn == 0) {
  13522. errn = encode_iso1SASchedulesType(stream, &exiFrag->SASchedules );
  13523. }
  13524. } else if ( exiFrag->SPKIData_isUsed == 1u ) {
  13525. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */
  13526. errn = encodeNBitUnsignedInteger(stream, 8, 172);
  13527. if(errn == 0) {
  13528. errn = encode_iso1SPKIDataType(stream, &exiFrag->SPKIData );
  13529. }
  13530. } else if ( exiFrag->SPKISexp_isUsed == 1u ) {
  13531. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) */
  13532. errn = encodeNBitUnsignedInteger(stream, 8, 173);
  13533. if(errn == 0) {
  13534. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  13535. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13536. if(errn == 0) {
  13537. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->SPKISexp.bytesLen));
  13538. if (errn == 0) {
  13539. errn = encodeBytes(stream, exiFrag->SPKISexp.bytes, exiFrag->SPKISexp.bytesLen);
  13540. }
  13541. /* valid EE */
  13542. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13543. }
  13544. }
  13545. } else if ( exiFrag->SalesTariff_isUsed == 1u ) {
  13546. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff) */
  13547. errn = encodeNBitUnsignedInteger(stream, 8, 174);
  13548. if(errn == 0) {
  13549. errn = encode_iso1SalesTariffType(stream, &exiFrag->SalesTariff );
  13550. }
  13551. } else if ( exiFrag->SalesTariffDescription_isUsed == 1u ) {
  13552. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription) */
  13553. errn = encodeNBitUnsignedInteger(stream, 8, 175);
  13554. if(errn == 0) {
  13555. /* FirstStartTag[CHARACTERS[STRING]] */
  13556. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13557. if(errn == 0) {
  13558. /* encode string as string table miss (+2 len)*/
  13559. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->SalesTariffDescription.charactersLen + 2));
  13560. if (errn == 0) {
  13561. errn = encodeCharacters(stream, exiFrag->SalesTariffDescription.characters, exiFrag->SalesTariffDescription.charactersLen);
  13562. }
  13563. /* valid EE */
  13564. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13565. }
  13566. }
  13567. } else if ( exiFrag->SalesTariffEntry_isUsed == 1u ) {
  13568. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry) */
  13569. errn = encodeNBitUnsignedInteger(stream, 8, 176);
  13570. if(errn == 0) {
  13571. errn = encode_iso1SalesTariffEntryType(stream, &exiFrag->SalesTariffEntry );
  13572. }
  13573. } else if ( exiFrag->SalesTariffID_isUsed == 1u ) {
  13574. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID) */
  13575. errn = encodeNBitUnsignedInteger(stream, 8, 177);
  13576. if(errn == 0) {
  13577. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13578. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13579. if(errn == 0) {
  13580. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(exiFrag->SalesTariffID - 1));
  13581. /* valid EE */
  13582. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13583. }
  13584. }
  13585. } else if ( exiFrag->Seed_isUsed == 1u ) {
  13586. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) */
  13587. errn = encodeNBitUnsignedInteger(stream, 8, 178);
  13588. if(errn == 0) {
  13589. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13590. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13591. if(errn == 0) {
  13592. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->Seed.bytesLen));
  13593. if (errn == 0) {
  13594. errn = encodeBytes(stream, exiFrag->Seed.bytes, exiFrag->Seed.bytesLen);
  13595. }
  13596. /* valid EE */
  13597. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13598. }
  13599. }
  13600. } else if ( exiFrag->SelectedPaymentOption_isUsed == 1u ) {
  13601. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption) */
  13602. errn = encodeNBitUnsignedInteger(stream, 8, 179);
  13603. if(errn == 0) {
  13604. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13605. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13606. if(errn == 0) {
  13607. errn = encodeNBitUnsignedInteger(stream, 1, exiFrag->SelectedPaymentOption);
  13608. /* valid EE */
  13609. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13610. }
  13611. }
  13612. } else if ( exiFrag->SelectedService_isUsed == 1u ) {
  13613. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService) */
  13614. errn = encodeNBitUnsignedInteger(stream, 8, 180);
  13615. if(errn == 0) {
  13616. errn = encode_iso1SelectedServiceType(stream, &exiFrag->SelectedService );
  13617. }
  13618. } else if ( exiFrag->SelectedServiceList_isUsed == 1u ) {
  13619. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList) */
  13620. errn = encodeNBitUnsignedInteger(stream, 8, 181);
  13621. if(errn == 0) {
  13622. errn = encode_iso1SelectedServiceListType(stream, &exiFrag->SelectedServiceList );
  13623. }
  13624. } else if ( exiFrag->Service_isUsed == 1u ) {
  13625. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service) */
  13626. errn = encodeNBitUnsignedInteger(stream, 8, 182);
  13627. if(errn == 0) {
  13628. errn = encode_iso1ServiceType(stream, &exiFrag->Service );
  13629. }
  13630. } else if ( exiFrag->ServiceCategory_isUsed == 1u ) {
  13631. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory) */
  13632. errn = encodeNBitUnsignedInteger(stream, 8, 183);
  13633. if(errn == 0) {
  13634. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13635. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13636. if(errn == 0) {
  13637. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->ServiceCategory);
  13638. /* valid EE */
  13639. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13640. }
  13641. }
  13642. } else if ( exiFrag->ServiceCategory_isUsed == 1u ) {
  13643. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) */
  13644. errn = encodeNBitUnsignedInteger(stream, 8, 184);
  13645. if(errn == 0) {
  13646. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13647. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13648. if(errn == 0) {
  13649. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->ServiceCategory);
  13650. /* valid EE */
  13651. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13652. }
  13653. }
  13654. } else if ( exiFrag->ServiceDetailReq_isUsed == 1u ) {
  13655. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq) */
  13656. errn = encodeNBitUnsignedInteger(stream, 8, 185);
  13657. if(errn == 0) {
  13658. errn = encode_iso1ServiceDetailReqType(stream, &exiFrag->ServiceDetailReq );
  13659. }
  13660. } else if ( exiFrag->ServiceDetailRes_isUsed == 1u ) {
  13661. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes) */
  13662. errn = encodeNBitUnsignedInteger(stream, 8, 186);
  13663. if(errn == 0) {
  13664. errn = encode_iso1ServiceDetailResType(stream, &exiFrag->ServiceDetailRes );
  13665. }
  13666. } else if ( exiFrag->ServiceDiscoveryReq_isUsed == 1u ) {
  13667. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq) */
  13668. errn = encodeNBitUnsignedInteger(stream, 8, 187);
  13669. if(errn == 0) {
  13670. errn = encode_iso1ServiceDiscoveryReqType(stream, &exiFrag->ServiceDiscoveryReq );
  13671. }
  13672. } else if ( exiFrag->ServiceDiscoveryRes_isUsed == 1u ) {
  13673. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes) */
  13674. errn = encodeNBitUnsignedInteger(stream, 8, 188);
  13675. if(errn == 0) {
  13676. errn = encode_iso1ServiceDiscoveryResType(stream, &exiFrag->ServiceDiscoveryRes );
  13677. }
  13678. } else if ( exiFrag->ServiceID_isUsed == 1u ) {
  13679. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID) */
  13680. errn = encodeNBitUnsignedInteger(stream, 8, 189);
  13681. if(errn == 0) {
  13682. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  13683. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13684. if(errn == 0) {
  13685. errn = encodeUnsignedInteger16(stream, exiFrag->ServiceID);
  13686. /* valid EE */
  13687. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13688. }
  13689. }
  13690. } else if ( exiFrag->ServiceID_isUsed == 1u ) {
  13691. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) */
  13692. errn = encodeNBitUnsignedInteger(stream, 8, 190);
  13693. if(errn == 0) {
  13694. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  13695. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13696. if(errn == 0) {
  13697. errn = encodeUnsignedInteger16(stream, exiFrag->ServiceID);
  13698. /* valid EE */
  13699. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13700. }
  13701. }
  13702. } else if ( exiFrag->ServiceList_isUsed == 1u ) {
  13703. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList) */
  13704. errn = encodeNBitUnsignedInteger(stream, 8, 191);
  13705. if(errn == 0) {
  13706. errn = encode_iso1ServiceListType(stream, &exiFrag->ServiceList );
  13707. }
  13708. } else if ( exiFrag->ServiceName_isUsed == 1u ) {
  13709. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName) */
  13710. errn = encodeNBitUnsignedInteger(stream, 8, 192);
  13711. if(errn == 0) {
  13712. /* FirstStartTag[CHARACTERS[STRING]] */
  13713. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13714. if(errn == 0) {
  13715. /* encode string as string table miss (+2 len)*/
  13716. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->ServiceName.charactersLen + 2));
  13717. if (errn == 0) {
  13718. errn = encodeCharacters(stream, exiFrag->ServiceName.characters, exiFrag->ServiceName.charactersLen);
  13719. }
  13720. /* valid EE */
  13721. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13722. }
  13723. }
  13724. } else if ( exiFrag->ServiceParameterList_isUsed == 1u ) {
  13725. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList) */
  13726. errn = encodeNBitUnsignedInteger(stream, 8, 193);
  13727. if(errn == 0) {
  13728. errn = encode_iso1ServiceParameterListType(stream, &exiFrag->ServiceParameterList );
  13729. }
  13730. } else if ( exiFrag->ServiceScope_isUsed == 1u ) {
  13731. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope) */
  13732. errn = encodeNBitUnsignedInteger(stream, 8, 194);
  13733. if(errn == 0) {
  13734. /* FirstStartTag[CHARACTERS[STRING]] */
  13735. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13736. if(errn == 0) {
  13737. /* encode string as string table miss (+2 len)*/
  13738. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->ServiceScope.charactersLen + 2));
  13739. if (errn == 0) {
  13740. errn = encodeCharacters(stream, exiFrag->ServiceScope.characters, exiFrag->ServiceScope.charactersLen);
  13741. }
  13742. /* valid EE */
  13743. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13744. }
  13745. }
  13746. } else if ( exiFrag->ServiceScope_isUsed == 1u ) {
  13747. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope) */
  13748. errn = encodeNBitUnsignedInteger(stream, 8, 195);
  13749. if(errn == 0) {
  13750. /* FirstStartTag[CHARACTERS[STRING]] */
  13751. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13752. if(errn == 0) {
  13753. /* encode string as string table miss (+2 len)*/
  13754. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->ServiceScope.charactersLen + 2));
  13755. if (errn == 0) {
  13756. errn = encodeCharacters(stream, exiFrag->ServiceScope.characters, exiFrag->ServiceScope.charactersLen);
  13757. }
  13758. /* valid EE */
  13759. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13760. }
  13761. }
  13762. } else if ( exiFrag->SessionID_isUsed == 1u ) {
  13763. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID) */
  13764. errn = encodeNBitUnsignedInteger(stream, 8, 196);
  13765. if(errn == 0) {
  13766. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  13767. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13768. if(errn == 0) {
  13769. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->SessionID.bytesLen));
  13770. if (errn == 0) {
  13771. errn = encodeBytes(stream, exiFrag->SessionID.bytes, exiFrag->SessionID.bytesLen);
  13772. }
  13773. /* valid EE */
  13774. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13775. }
  13776. }
  13777. } else if ( exiFrag->SessionID_isUsed == 1u ) {
  13778. /* START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID) */
  13779. errn = encodeNBitUnsignedInteger(stream, 8, 197);
  13780. if(errn == 0) {
  13781. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  13782. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13783. if(errn == 0) {
  13784. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->SessionID.bytesLen));
  13785. if (errn == 0) {
  13786. errn = encodeBytes(stream, exiFrag->SessionID.bytes, exiFrag->SessionID.bytesLen);
  13787. }
  13788. /* valid EE */
  13789. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13790. }
  13791. }
  13792. } else if ( exiFrag->SessionSetupReq_isUsed == 1u ) {
  13793. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq) */
  13794. errn = encodeNBitUnsignedInteger(stream, 8, 198);
  13795. if(errn == 0) {
  13796. errn = encode_iso1SessionSetupReqType(stream, &exiFrag->SessionSetupReq );
  13797. }
  13798. } else if ( exiFrag->SessionSetupRes_isUsed == 1u ) {
  13799. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes) */
  13800. errn = encodeNBitUnsignedInteger(stream, 8, 199);
  13801. if(errn == 0) {
  13802. errn = encode_iso1SessionSetupResType(stream, &exiFrag->SessionSetupRes );
  13803. }
  13804. } else if ( exiFrag->SessionStopReq_isUsed == 1u ) {
  13805. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq) */
  13806. errn = encodeNBitUnsignedInteger(stream, 8, 200);
  13807. if(errn == 0) {
  13808. errn = encode_iso1SessionStopReqType(stream, &exiFrag->SessionStopReq );
  13809. }
  13810. } else if ( exiFrag->SessionStopRes_isUsed == 1u ) {
  13811. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes) */
  13812. errn = encodeNBitUnsignedInteger(stream, 8, 201);
  13813. if(errn == 0) {
  13814. errn = encode_iso1SessionStopResType(stream, &exiFrag->SessionStopRes );
  13815. }
  13816. } else if ( exiFrag->SigMeterReading_isUsed == 1u ) {
  13817. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading) */
  13818. errn = encodeNBitUnsignedInteger(stream, 8, 202);
  13819. if(errn == 0) {
  13820. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  13821. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13822. if(errn == 0) {
  13823. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->SigMeterReading.bytesLen));
  13824. if (errn == 0) {
  13825. errn = encodeBytes(stream, exiFrag->SigMeterReading.bytes, exiFrag->SigMeterReading.bytesLen);
  13826. }
  13827. /* valid EE */
  13828. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13829. }
  13830. }
  13831. } else if ( exiFrag->Signature_isUsed == 1u ) {
  13832. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */
  13833. errn = encodeNBitUnsignedInteger(stream, 8, 203);
  13834. if(errn == 0) {
  13835. errn = encode_iso1SignatureType(stream, &exiFrag->Signature );
  13836. }
  13837. } else if ( exiFrag->SignatureMethod_isUsed == 1u ) {
  13838. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */
  13839. errn = encodeNBitUnsignedInteger(stream, 8, 204);
  13840. if(errn == 0) {
  13841. errn = encode_iso1SignatureMethodType(stream, &exiFrag->SignatureMethod );
  13842. }
  13843. } else if ( exiFrag->SignatureProperties_isUsed == 1u ) {
  13844. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */
  13845. errn = encodeNBitUnsignedInteger(stream, 8, 205);
  13846. if(errn == 0) {
  13847. errn = encode_iso1SignaturePropertiesType(stream, &exiFrag->SignatureProperties );
  13848. }
  13849. } else if ( exiFrag->SignatureProperty_isUsed == 1u ) {
  13850. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */
  13851. errn = encodeNBitUnsignedInteger(stream, 8, 206);
  13852. if(errn == 0) {
  13853. errn = encode_iso1SignaturePropertyType(stream, &exiFrag->SignatureProperty );
  13854. }
  13855. } else if ( exiFrag->SignatureValue_isUsed == 1u ) {
  13856. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */
  13857. errn = encodeNBitUnsignedInteger(stream, 8, 207);
  13858. if(errn == 0) {
  13859. errn = encode_iso1SignatureValueType(stream, &exiFrag->SignatureValue );
  13860. }
  13861. } else if ( exiFrag->SignedInfo_isUsed == 1u ) {
  13862. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */
  13863. errn = encodeNBitUnsignedInteger(stream, 8, 208);
  13864. if(errn == 0) {
  13865. errn = encode_iso1SignedInfoType(stream, &exiFrag->SignedInfo );
  13866. }
  13867. } else if ( exiFrag->SubCertificates_isUsed == 1u ) {
  13868. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates) */
  13869. errn = encodeNBitUnsignedInteger(stream, 8, 209);
  13870. if(errn == 0) {
  13871. errn = encode_iso1SubCertificatesType(stream, &exiFrag->SubCertificates );
  13872. }
  13873. } else if ( exiFrag->SupportedEnergyTransferMode_isUsed == 1u ) {
  13874. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode) */
  13875. errn = encodeNBitUnsignedInteger(stream, 8, 210);
  13876. if(errn == 0) {
  13877. errn = encode_iso1SupportedEnergyTransferModeType(stream, &exiFrag->SupportedEnergyTransferMode );
  13878. }
  13879. } else if ( exiFrag->TMeter_isUsed == 1u ) {
  13880. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) */
  13881. errn = encodeNBitUnsignedInteger(stream, 8, 211);
  13882. if(errn == 0) {
  13883. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  13884. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13885. if(errn == 0) {
  13886. errn = encodeInteger64(stream, exiFrag->TMeter);
  13887. /* valid EE */
  13888. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13889. }
  13890. }
  13891. } else if ( exiFrag->TimeInterval_isUsed == 1u ) {
  13892. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval) */
  13893. errn = encodeNBitUnsignedInteger(stream, 8, 212);
  13894. if(errn == 0) {
  13895. errn = encode_iso1IntervalType(stream, &exiFrag->TimeInterval );
  13896. }
  13897. } else if ( exiFrag->Transform_isUsed == 1u ) {
  13898. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */
  13899. errn = encodeNBitUnsignedInteger(stream, 8, 213);
  13900. if(errn == 0) {
  13901. errn = encode_iso1TransformType(stream, &exiFrag->Transform );
  13902. }
  13903. } else if ( exiFrag->Transforms_isUsed == 1u ) {
  13904. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */
  13905. errn = encodeNBitUnsignedInteger(stream, 8, 214);
  13906. if(errn == 0) {
  13907. errn = encode_iso1TransformsType(stream, &exiFrag->Transforms );
  13908. }
  13909. } else if ( exiFrag->Unit_isUsed == 1u ) {
  13910. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit) */
  13911. errn = encodeNBitUnsignedInteger(stream, 8, 215);
  13912. if(errn == 0) {
  13913. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13914. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13915. if(errn == 0) {
  13916. errn = encodeNBitUnsignedInteger(stream, 3, exiFrag->Unit);
  13917. /* valid EE */
  13918. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13919. }
  13920. }
  13921. } else if ( exiFrag->V2G_Message_isUsed == 1u ) {
  13922. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message) */
  13923. errn = encodeNBitUnsignedInteger(stream, 8, 216);
  13924. if(errn == 0) {
  13925. errn = encode_iso1AnonType_V2G_Message(stream, &exiFrag->V2G_Message );
  13926. }
  13927. } else if ( exiFrag->Value_isUsed == 1u ) {
  13928. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value) */
  13929. errn = encodeNBitUnsignedInteger(stream, 8, 217);
  13930. if(errn == 0) {
  13931. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  13932. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13933. if(errn == 0) {
  13934. errn = encodeInteger16(stream, exiFrag->Value);
  13935. /* valid EE */
  13936. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13937. }
  13938. }
  13939. } else if ( exiFrag->WeldingDetectionReq_isUsed == 1u ) {
  13940. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq) */
  13941. errn = encodeNBitUnsignedInteger(stream, 8, 218);
  13942. if(errn == 0) {
  13943. errn = encode_iso1WeldingDetectionReqType(stream, &exiFrag->WeldingDetectionReq );
  13944. }
  13945. } else if ( exiFrag->WeldingDetectionRes_isUsed == 1u ) {
  13946. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes) */
  13947. errn = encodeNBitUnsignedInteger(stream, 8, 219);
  13948. if(errn == 0) {
  13949. errn = encode_iso1WeldingDetectionResType(stream, &exiFrag->WeldingDetectionRes );
  13950. }
  13951. } else if ( exiFrag->X509CRL_isUsed == 1u ) {
  13952. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) */
  13953. errn = encodeNBitUnsignedInteger(stream, 8, 220);
  13954. if(errn == 0) {
  13955. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  13956. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13957. if(errn == 0) {
  13958. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->X509CRL.bytesLen));
  13959. if (errn == 0) {
  13960. errn = encodeBytes(stream, exiFrag->X509CRL.bytes, exiFrag->X509CRL.bytesLen);
  13961. }
  13962. /* valid EE */
  13963. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13964. }
  13965. }
  13966. } else if ( exiFrag->X509Certificate_isUsed == 1u ) {
  13967. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) */
  13968. errn = encodeNBitUnsignedInteger(stream, 8, 221);
  13969. if(errn == 0) {
  13970. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  13971. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13972. if(errn == 0) {
  13973. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->X509Certificate.bytesLen));
  13974. if (errn == 0) {
  13975. errn = encodeBytes(stream, exiFrag->X509Certificate.bytes, exiFrag->X509Certificate.bytesLen);
  13976. }
  13977. /* valid EE */
  13978. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13979. }
  13980. }
  13981. } else if ( exiFrag->X509Data_isUsed == 1u ) {
  13982. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */
  13983. errn = encodeNBitUnsignedInteger(stream, 8, 222);
  13984. if(errn == 0) {
  13985. errn = encode_iso1X509DataType(stream, &exiFrag->X509Data );
  13986. }
  13987. } else if ( exiFrag->X509IssuerName_isUsed == 1u ) {
  13988. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName) */
  13989. errn = encodeNBitUnsignedInteger(stream, 8, 223);
  13990. if(errn == 0) {
  13991. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  13992. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  13993. if(errn == 0) {
  13994. /* encode string as string table miss (+2 len)*/
  13995. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->X509IssuerName.charactersLen + 2));
  13996. if (errn == 0) {
  13997. errn = encodeCharacters(stream, exiFrag->X509IssuerName.characters, exiFrag->X509IssuerName.charactersLen);
  13998. }
  13999. /* valid EE */
  14000. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14001. }
  14002. }
  14003. } else if ( exiFrag->X509IssuerSerial_isUsed == 1u ) {
  14004. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial) */
  14005. errn = encodeNBitUnsignedInteger(stream, 8, 224);
  14006. if(errn == 0) {
  14007. errn = encode_iso1X509IssuerSerialType(stream, &exiFrag->X509IssuerSerial );
  14008. }
  14009. } else if ( exiFrag->X509SKI_isUsed == 1u ) {
  14010. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) */
  14011. errn = encodeNBitUnsignedInteger(stream, 8, 225);
  14012. if(errn == 0) {
  14013. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  14014. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14015. if(errn == 0) {
  14016. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->X509SKI.bytesLen));
  14017. if (errn == 0) {
  14018. errn = encodeBytes(stream, exiFrag->X509SKI.bytes, exiFrag->X509SKI.bytesLen);
  14019. }
  14020. /* valid EE */
  14021. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14022. }
  14023. }
  14024. } else if ( exiFrag->X509SerialNumber_isUsed == 1u ) {
  14025. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber) */
  14026. errn = encodeNBitUnsignedInteger(stream, 8, 226);
  14027. if(errn == 0) {
  14028. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  14029. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14030. if(errn == 0) {
  14031. errn = encodeInteger64(stream, exiFrag->X509SerialNumber);
  14032. /* valid EE */
  14033. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14034. }
  14035. }
  14036. } else if ( exiFrag->X509SubjectName_isUsed == 1u ) {
  14037. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) */
  14038. errn = encodeNBitUnsignedInteger(stream, 8, 227);
  14039. if(errn == 0) {
  14040. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  14041. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14042. if(errn == 0) {
  14043. /* encode string as string table miss (+2 len)*/
  14044. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->X509SubjectName.charactersLen + 2));
  14045. if (errn == 0) {
  14046. errn = encodeCharacters(stream, exiFrag->X509SubjectName.characters, exiFrag->X509SubjectName.charactersLen);
  14047. }
  14048. /* valid EE */
  14049. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14050. }
  14051. }
  14052. } else if ( exiFrag->XPath_isUsed == 1u ) {
  14053. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) */
  14054. errn = encodeNBitUnsignedInteger(stream, 8, 228);
  14055. if(errn == 0) {
  14056. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  14057. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14058. if(errn == 0) {
  14059. /* encode string as string table miss (+2 len)*/
  14060. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->XPath.charactersLen + 2));
  14061. if (errn == 0) {
  14062. errn = encodeCharacters(stream, exiFrag->XPath.characters, exiFrag->XPath.charactersLen);
  14063. }
  14064. /* valid EE */
  14065. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14066. }
  14067. }
  14068. } else if ( exiFrag->Y_isUsed == 1u ) {
  14069. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) */
  14070. errn = encodeNBitUnsignedInteger(stream, 8, 229);
  14071. if(errn == 0) {
  14072. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  14073. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14074. if(errn == 0) {
  14075. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->Y.bytesLen));
  14076. if (errn == 0) {
  14077. errn = encodeBytes(stream, exiFrag->Y.bytes, exiFrag->Y.bytesLen);
  14078. }
  14079. /* valid EE */
  14080. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14081. }
  14082. }
  14083. } else if ( exiFrag->amount_isUsed == 1u ) {
  14084. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount) */
  14085. errn = encodeNBitUnsignedInteger(stream, 8, 230);
  14086. if(errn == 0) {
  14087. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  14088. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14089. if(errn == 0) {
  14090. errn = encodeUnsignedInteger32(stream, exiFrag->amount);
  14091. /* valid EE */
  14092. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14093. }
  14094. }
  14095. } else if ( exiFrag->amountMultiplier_isUsed == 1u ) {
  14096. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier) */
  14097. errn = encodeNBitUnsignedInteger(stream, 8, 231);
  14098. if(errn == 0) {
  14099. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  14100. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14101. if(errn == 0) {
  14102. errn = encodeNBitUnsignedInteger(stream, 3, (uint32_t)(exiFrag->amountMultiplier + 3));
  14103. /* valid EE */
  14104. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14105. }
  14106. }
  14107. } else if ( exiFrag->boolValue_isUsed == 1u ) {
  14108. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue) */
  14109. errn = encodeNBitUnsignedInteger(stream, 8, 232);
  14110. if(errn == 0) {
  14111. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  14112. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14113. if(errn == 0) {
  14114. errn = encodeBoolean(stream, exiFrag->boolValue);
  14115. /* valid EE */
  14116. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14117. }
  14118. }
  14119. } else if ( exiFrag->byteValue_isUsed == 1u ) {
  14120. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue) */
  14121. errn = encodeNBitUnsignedInteger(stream, 8, 233);
  14122. if(errn == 0) {
  14123. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  14124. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14125. if(errn == 0) {
  14126. errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(exiFrag->byteValue + 128));
  14127. /* valid EE */
  14128. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14129. }
  14130. }
  14131. } else if ( exiFrag->costKind_isUsed == 1u ) {
  14132. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind) */
  14133. errn = encodeNBitUnsignedInteger(stream, 8, 234);
  14134. if(errn == 0) {
  14135. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  14136. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14137. if(errn == 0) {
  14138. errn = encodeNBitUnsignedInteger(stream, 2, exiFrag->costKind);
  14139. /* valid EE */
  14140. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14141. }
  14142. }
  14143. } else if ( exiFrag->duration_isUsed == 1u ) {
  14144. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration) */
  14145. errn = encodeNBitUnsignedInteger(stream, 8, 235);
  14146. if(errn == 0) {
  14147. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  14148. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14149. if(errn == 0) {
  14150. errn = encodeUnsignedInteger32(stream, exiFrag->duration);
  14151. /* valid EE */
  14152. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14153. }
  14154. }
  14155. } else if ( exiFrag->eMAID_isUsed == 1u ) {
  14156. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID) */
  14157. errn = encodeNBitUnsignedInteger(stream, 8, 236);
  14158. if(errn == 0) {
  14159. errn = encode_iso1EXISchemaInformedElementFragmentGrammar(stream, &exiFrag->eMAID);
  14160. }
  14161. } else if ( exiFrag->intValue_isUsed == 1u ) {
  14162. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue) */
  14163. errn = encodeNBitUnsignedInteger(stream, 8, 237);
  14164. if(errn == 0) {
  14165. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  14166. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14167. if(errn == 0) {
  14168. errn = encodeInteger32(stream, exiFrag->intValue);
  14169. /* valid EE */
  14170. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14171. }
  14172. }
  14173. } else if ( exiFrag->physicalValue_isUsed == 1u ) {
  14174. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue) */
  14175. errn = encodeNBitUnsignedInteger(stream, 8, 238);
  14176. if(errn == 0) {
  14177. errn = encode_iso1PhysicalValueType(stream, &exiFrag->physicalValue );
  14178. }
  14179. } else if ( exiFrag->shortValue_isUsed == 1u ) {
  14180. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue) */
  14181. errn = encodeNBitUnsignedInteger(stream, 8, 239);
  14182. if(errn == 0) {
  14183. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  14184. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14185. if(errn == 0) {
  14186. errn = encodeInteger16(stream, exiFrag->shortValue);
  14187. /* valid EE */
  14188. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14189. }
  14190. }
  14191. } else if ( exiFrag->start_isUsed == 1u ) {
  14192. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start) */
  14193. errn = encodeNBitUnsignedInteger(stream, 8, 240);
  14194. if(errn == 0) {
  14195. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  14196. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14197. if(errn == 0) {
  14198. errn = encodeUnsignedInteger32(stream, exiFrag->start);
  14199. /* valid EE */
  14200. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14201. }
  14202. }
  14203. } else if ( exiFrag->startValue_isUsed == 1u ) {
  14204. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue) */
  14205. errn = encodeNBitUnsignedInteger(stream, 8, 241);
  14206. if(errn == 0) {
  14207. errn = encode_iso1PhysicalValueType(stream, &exiFrag->startValue );
  14208. }
  14209. } else if ( exiFrag->stringValue_isUsed == 1u ) {
  14210. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue) */
  14211. errn = encodeNBitUnsignedInteger(stream, 8, 242);
  14212. if(errn == 0) {
  14213. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  14214. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14215. if(errn == 0) {
  14216. /* encode string as string table miss (+2 len)*/
  14217. errn = encodeUnsignedInteger16(stream, (uint16_t)(exiFrag->stringValue.charactersLen + 2));
  14218. if (errn == 0) {
  14219. errn = encodeCharacters(stream, exiFrag->stringValue.characters, exiFrag->stringValue.charactersLen);
  14220. }
  14221. /* valid EE */
  14222. errn = encodeNBitUnsignedInteger(stream, 1, 0);
  14223. }
  14224. }
  14225. } else {
  14226. errn = EXI_ERROR_UNKOWN_EVENT;
  14227. }
  14228. }
  14229. if(errn == 0) {
  14230. /* EndDocument */
  14231. errn = encodeNBitUnsignedInteger(stream, 8, 244);
  14232. }
  14233. if(errn == 0) {
  14234. /* flush any pending bits */
  14235. errn = encodeFinish(stream);
  14236. }
  14237. return errn;
  14238. }
  14239. #endif /* DEPLOY_ISO1_CODEC_FRAGMENT */
  14240. #endif /* DEPLOY_ISO1_CODEC */
  14241. #endif