iso1EXIDatatypesDecoder.c 736 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379
  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 "iso1EXIDatatypesDecoder.h"
  29. #include "DecoderChannel.h"
  30. #include "EXIHeaderDecoder.h"
  31. #include "iso1EXIDatatypes.h"
  32. #include "ErrorCodes.h"
  33. #ifndef EXI_iso1_DATATYPES_DECODER_C
  34. #define EXI_iso1_DATATYPES_DECODER_C
  35. #if DEPLOY_ISO1_CODEC == SUPPORT_YES
  36. /** event-code */
  37. static uint32_t eventCode;
  38. static int errn;
  39. static uint32_t uint32;
  40. /* Forward Declarations */
  41. static int decode_iso1MessageHeaderType(bitstream_t* stream, struct iso1MessageHeaderType* iso1MessageHeaderType);
  42. static int decode_iso1SignatureType(bitstream_t* stream, struct iso1SignatureType* iso1SignatureType);
  43. static int decode_iso1PowerDeliveryReqType(bitstream_t* stream, struct iso1PowerDeliveryReqType* iso1PowerDeliveryReqType);
  44. static int decode_iso1ParameterType(bitstream_t* stream, struct iso1ParameterType* iso1ParameterType);
  45. static int decode_iso1CertificateInstallationReqType(bitstream_t* stream, struct iso1CertificateInstallationReqType* iso1CertificateInstallationReqType);
  46. static int decode_iso1SessionSetupResType(bitstream_t* stream, struct iso1SessionSetupResType* iso1SessionSetupResType);
  47. static int decode_iso1EVChargeParameterType(bitstream_t* stream, struct iso1EVChargeParameterType* iso1EVChargeParameterType);
  48. static int decode_iso1DiffieHellmanPublickeyType(bitstream_t* stream, struct iso1DiffieHellmanPublickeyType* iso1DiffieHellmanPublickeyType);
  49. static int decode_iso1ServiceDiscoveryResType(bitstream_t* stream, struct iso1ServiceDiscoveryResType* iso1ServiceDiscoveryResType);
  50. static int decode_iso1ServiceParameterListType(bitstream_t* stream, struct iso1ServiceParameterListType* iso1ServiceParameterListType);
  51. static int decode_iso1CertificateChainType(bitstream_t* stream, struct iso1CertificateChainType* iso1CertificateChainType);
  52. static int decode_iso1SASchedulesType(bitstream_t* stream, struct iso1SASchedulesType* iso1SASchedulesType);
  53. static int decode_iso1DC_EVSEStatusType(bitstream_t* stream, struct iso1DC_EVSEStatusType* iso1DC_EVSEStatusType);
  54. static int decode_iso1PreChargeResType(bitstream_t* stream, struct iso1PreChargeResType* iso1PreChargeResType);
  55. static int decode_iso1ParameterSetType(bitstream_t* stream, struct iso1ParameterSetType* iso1ParameterSetType);
  56. static int decode_iso1ServiceDetailReqType(bitstream_t* stream, struct iso1ServiceDetailReqType* iso1ServiceDetailReqType);
  57. static int decode_iso1RelativeTimeIntervalType(bitstream_t* stream, struct iso1RelativeTimeIntervalType* iso1RelativeTimeIntervalType);
  58. static int decode_iso1SignedInfoType(bitstream_t* stream, struct iso1SignedInfoType* iso1SignedInfoType);
  59. static int decode_iso1EMAIDType(bitstream_t* stream, struct iso1EMAIDType* iso1EMAIDType);
  60. static int decode_iso1EVStatusType(bitstream_t* stream, struct iso1EVStatusType* iso1EVStatusType);
  61. static int decode_iso1ServiceListType(bitstream_t* stream, struct iso1ServiceListType* iso1ServiceListType);
  62. static int decode_iso1EVSEChargeParameterType(bitstream_t* stream, struct iso1EVSEChargeParameterType* iso1EVSEChargeParameterType);
  63. static int decode_iso1EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1EVPowerDeliveryParameterType* iso1EVPowerDeliveryParameterType);
  64. static int decode_iso1ProfileEntryType(bitstream_t* stream, struct iso1ProfileEntryType* iso1ProfileEntryType);
  65. static int decode_iso1AuthorizationReqType(bitstream_t* stream, struct iso1AuthorizationReqType* iso1AuthorizationReqType);
  66. static int decode_iso1MeterInfoType(bitstream_t* stream, struct iso1MeterInfoType* iso1MeterInfoType);
  67. static int decode_iso1ManifestType(bitstream_t* stream, struct iso1ManifestType* iso1ManifestType);
  68. static int decode_iso1ChargeParameterDiscoveryResType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryResType* iso1ChargeParameterDiscoveryResType);
  69. static int decode_iso1PowerDeliveryResType(bitstream_t* stream, struct iso1PowerDeliveryResType* iso1PowerDeliveryResType);
  70. static int decode_iso1DC_EVChargeParameterType(bitstream_t* stream, struct iso1DC_EVChargeParameterType* iso1DC_EVChargeParameterType);
  71. static int decode_iso1ConsumptionCostType(bitstream_t* stream, struct iso1ConsumptionCostType* iso1ConsumptionCostType);
  72. static int decode_iso1PMaxScheduleType(bitstream_t* stream, struct iso1PMaxScheduleType* iso1PMaxScheduleType);
  73. static int decode_iso1PaymentOptionListType(bitstream_t* stream, struct iso1PaymentOptionListType* iso1PaymentOptionListType);
  74. static int decode_iso1ObjectType(bitstream_t* stream, struct iso1ObjectType* iso1ObjectType);
  75. static int decode_iso1PhysicalValueType(bitstream_t* stream, struct iso1PhysicalValueType* iso1PhysicalValueType);
  76. static int decode_iso1RSAKeyValueType(bitstream_t* stream, struct iso1RSAKeyValueType* iso1RSAKeyValueType);
  77. static int decode_iso1SessionStopResType(bitstream_t* stream, struct iso1SessionStopResType* iso1SessionStopResType);
  78. static int decode_iso1CertificateUpdateReqType(bitstream_t* stream, struct iso1CertificateUpdateReqType* iso1CertificateUpdateReqType);
  79. static int decode_iso1SignatureValueType(bitstream_t* stream, struct iso1SignatureValueType* iso1SignatureValueType);
  80. static int decode_iso1PaymentDetailsReqType(bitstream_t* stream, struct iso1PaymentDetailsReqType* iso1PaymentDetailsReqType);
  81. static int decode_iso1AuthorizationResType(bitstream_t* stream, struct iso1AuthorizationResType* iso1AuthorizationResType);
  82. static int decode_iso1DC_EVSEChargeParameterType(bitstream_t* stream, struct iso1DC_EVSEChargeParameterType* iso1DC_EVSEChargeParameterType);
  83. static int decode_iso1SubCertificatesType(bitstream_t* stream, struct iso1SubCertificatesType* iso1SubCertificatesType);
  84. static int decode_iso1ChargingStatusResType(bitstream_t* stream, struct iso1ChargingStatusResType* iso1ChargingStatusResType);
  85. static int decode_iso1DSAKeyValueType(bitstream_t* stream, struct iso1DSAKeyValueType* iso1DSAKeyValueType);
  86. static int decode_iso1ListOfRootCertificateIDsType(bitstream_t* stream, struct iso1ListOfRootCertificateIDsType* iso1ListOfRootCertificateIDsType);
  87. static int decode_iso1ChargeServiceType(bitstream_t* stream, struct iso1ChargeServiceType* iso1ChargeServiceType);
  88. static int decode_iso1IntervalType(bitstream_t* stream, struct iso1IntervalType* iso1IntervalType);
  89. static int decode_iso1MeteringReceiptReqType(bitstream_t* stream, struct iso1MeteringReceiptReqType* iso1MeteringReceiptReqType);
  90. static int decode_iso1ServiceDetailResType(bitstream_t* stream, struct iso1ServiceDetailResType* iso1ServiceDetailResType);
  91. static int decode_iso1KeyValueType(bitstream_t* stream, struct iso1KeyValueType* iso1KeyValueType);
  92. static int decode_iso1SelectedServiceListType(bitstream_t* stream, struct iso1SelectedServiceListType* iso1SelectedServiceListType);
  93. static int decode_iso1CableCheckResType(bitstream_t* stream, struct iso1CableCheckResType* iso1CableCheckResType);
  94. static int decode_iso1X509IssuerSerialType(bitstream_t* stream, struct iso1X509IssuerSerialType* iso1X509IssuerSerialType);
  95. static int decode_iso1KeyInfoType(bitstream_t* stream, struct iso1KeyInfoType* iso1KeyInfoType);
  96. static int decode_iso1TransformsType(bitstream_t* stream, struct iso1TransformsType* iso1TransformsType);
  97. static int decode_iso1ChargeParameterDiscoveryReqType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryReqType* iso1ChargeParameterDiscoveryReqType);
  98. static int decode_iso1PreChargeReqType(bitstream_t* stream, struct iso1PreChargeReqType* iso1PreChargeReqType);
  99. static int decode_iso1EVSEStatusType(bitstream_t* stream, struct iso1EVSEStatusType* iso1EVSEStatusType);
  100. static int decode_iso1SignatureMethodType(bitstream_t* stream, struct iso1SignatureMethodType* iso1SignatureMethodType);
  101. static int decode_iso1X509DataType(bitstream_t* stream, struct iso1X509DataType* iso1X509DataType);
  102. static int decode_iso1NotificationType(bitstream_t* stream, struct iso1NotificationType* iso1NotificationType);
  103. static int decode_iso1SAScheduleListType(bitstream_t* stream, struct iso1SAScheduleListType* iso1SAScheduleListType);
  104. static int decode_iso1BodyType(bitstream_t* stream, struct iso1BodyType* iso1BodyType);
  105. static int decode_iso1ChargingProfileType(bitstream_t* stream, struct iso1ChargingProfileType* iso1ChargingProfileType);
  106. static int decode_iso1TransformType(bitstream_t* stream, struct iso1TransformType* iso1TransformType);
  107. static int decode_iso1SAScheduleTupleType(bitstream_t* stream, struct iso1SAScheduleTupleType* iso1SAScheduleTupleType);
  108. static int decode_iso1AC_EVChargeParameterType(bitstream_t* stream, struct iso1AC_EVChargeParameterType* iso1AC_EVChargeParameterType);
  109. static int decode_iso1AnonType_V2G_Message(bitstream_t* stream, struct iso1AnonType_V2G_Message* iso1AnonType_V2G_Message);
  110. static int decode_iso1PaymentDetailsResType(bitstream_t* stream, struct iso1PaymentDetailsResType* iso1PaymentDetailsResType);
  111. static int decode_iso1ContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct iso1ContractSignatureEncryptedPrivateKeyType* iso1ContractSignatureEncryptedPrivateKeyType);
  112. static int decode_iso1PMaxScheduleEntryType(bitstream_t* stream, struct iso1PMaxScheduleEntryType* iso1PMaxScheduleEntryType);
  113. static int decode_iso1SPKIDataType(bitstream_t* stream, struct iso1SPKIDataType* iso1SPKIDataType);
  114. static int decode_iso1MeteringReceiptResType(bitstream_t* stream, struct iso1MeteringReceiptResType* iso1MeteringReceiptResType);
  115. static int decode_iso1SessionStopReqType(bitstream_t* stream, struct iso1SessionStopReqType* iso1SessionStopReqType);
  116. static int decode_iso1WeldingDetectionResType(bitstream_t* stream, struct iso1WeldingDetectionResType* iso1WeldingDetectionResType);
  117. static int decode_iso1ReferenceType(bitstream_t* stream, struct iso1ReferenceType* iso1ReferenceType);
  118. static int decode_iso1CurrentDemandReqType(bitstream_t* stream, struct iso1CurrentDemandReqType* iso1CurrentDemandReqType);
  119. static int decode_iso1SalesTariffEntryType(bitstream_t* stream, struct iso1SalesTariffEntryType* iso1SalesTariffEntryType);
  120. static int decode_iso1EntryType(bitstream_t* stream, struct iso1EntryType* iso1EntryType);
  121. static int decode_iso1SessionSetupReqType(bitstream_t* stream, struct iso1SessionSetupReqType* iso1SessionSetupReqType);
  122. static int decode_iso1CostType(bitstream_t* stream, struct iso1CostType* iso1CostType);
  123. static int decode_iso1DC_EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1DC_EVPowerDeliveryParameterType* iso1DC_EVPowerDeliveryParameterType);
  124. static int decode_iso1RetrievalMethodType(bitstream_t* stream, struct iso1RetrievalMethodType* iso1RetrievalMethodType);
  125. static int decode_iso1CertificateUpdateResType(bitstream_t* stream, struct iso1CertificateUpdateResType* iso1CertificateUpdateResType);
  126. static int decode_iso1CertificateInstallationResType(bitstream_t* stream, struct iso1CertificateInstallationResType* iso1CertificateInstallationResType);
  127. static int decode_iso1CanonicalizationMethodType(bitstream_t* stream, struct iso1CanonicalizationMethodType* iso1CanonicalizationMethodType);
  128. static int decode_iso1WeldingDetectionReqType(bitstream_t* stream, struct iso1WeldingDetectionReqType* iso1WeldingDetectionReqType);
  129. static int decode_iso1DC_EVStatusType(bitstream_t* stream, struct iso1DC_EVStatusType* iso1DC_EVStatusType);
  130. static int decode_iso1CurrentDemandResType(bitstream_t* stream, struct iso1CurrentDemandResType* iso1CurrentDemandResType);
  131. static int decode_iso1ServiceType(bitstream_t* stream, struct iso1ServiceType* iso1ServiceType);
  132. static int decode_iso1ServiceDiscoveryReqType(bitstream_t* stream, struct iso1ServiceDiscoveryReqType* iso1ServiceDiscoveryReqType);
  133. static int decode_iso1AC_EVSEChargeParameterType(bitstream_t* stream, struct iso1AC_EVSEChargeParameterType* iso1AC_EVSEChargeParameterType);
  134. static int decode_iso1CableCheckReqType(bitstream_t* stream, struct iso1CableCheckReqType* iso1CableCheckReqType);
  135. static int decode_iso1SelectedServiceType(bitstream_t* stream, struct iso1SelectedServiceType* iso1SelectedServiceType);
  136. static int decode_iso1AC_EVSEStatusType(bitstream_t* stream, struct iso1AC_EVSEStatusType* iso1AC_EVSEStatusType);
  137. static int decode_iso1SalesTariffType(bitstream_t* stream, struct iso1SalesTariffType* iso1SalesTariffType);
  138. static int decode_iso1PaymentServiceSelectionReqType(bitstream_t* stream, struct iso1PaymentServiceSelectionReqType* iso1PaymentServiceSelectionReqType);
  139. static int decode_iso1SignaturePropertiesType(bitstream_t* stream, struct iso1SignaturePropertiesType* iso1SignaturePropertiesType);
  140. static int decode_iso1BodyBaseType(bitstream_t* stream, struct iso1BodyBaseType* iso1BodyBaseType);
  141. static int decode_iso1SupportedEnergyTransferModeType(bitstream_t* stream, struct iso1SupportedEnergyTransferModeType* iso1SupportedEnergyTransferModeType);
  142. static int decode_iso1ChargingStatusReqType(bitstream_t* stream, struct iso1ChargingStatusReqType* iso1ChargingStatusReqType);
  143. static int decode_iso1PaymentServiceSelectionResType(bitstream_t* stream, struct iso1PaymentServiceSelectionResType* iso1PaymentServiceSelectionResType);
  144. static int decode_iso1DigestMethodType(bitstream_t* stream, struct iso1DigestMethodType* iso1DigestMethodType);
  145. static int decode_iso1SignaturePropertyType(bitstream_t* stream, struct iso1SignaturePropertyType* iso1SignaturePropertyType);
  146. static int decode_iso1PGPDataType(bitstream_t* stream, struct iso1PGPDataType* iso1PGPDataType);
  147. /* Deviant data decoding (skip functions) */
  148. /* 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'. */
  149. static int decode_iso1MessageHeaderType(bitstream_t* stream, struct iso1MessageHeaderType* iso1MessageHeaderType) {
  150. int grammarID = 0;
  151. int done = 0;
  152. init_iso1MessageHeaderType(iso1MessageHeaderType);
  153. while(!done) {
  154. switch(grammarID) {
  155. case 0:
  156. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */
  157. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  158. if (errn == 0) {
  159. switch(eventCode) {
  160. case 0:
  161. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  162. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  163. if(errn == 0) {
  164. if(eventCode == 0) {
  165. errn = decodeUnsignedInteger16(stream, &iso1MessageHeaderType->SessionID.bytesLen);
  166. if (errn == 0) {
  167. errn = (iso1MessageHeaderType->SessionID.bytesLen) <= iso1MessageHeaderType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  168. }
  169. if (errn == 0) {
  170. errn = decodeBytes(stream, iso1MessageHeaderType->SessionID.bytesLen, iso1MessageHeaderType->SessionID.bytes);
  171. }
  172. } else {
  173. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  174. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  175. }
  176. }
  177. if(errn == 0) {
  178. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID) ? */
  179. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  180. if(eventCode == 0) {
  181. grammarID = 1;
  182. } else {
  183. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  184. }
  185. }
  186. break;
  187. default:
  188. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  189. break;
  190. }
  191. }
  192. break;
  193. case 1:
  194. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */
  195. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  196. if (errn == 0) {
  197. switch(eventCode) {
  198. case 0:
  199. errn = decode_iso1NotificationType(stream, &iso1MessageHeaderType->Notification);
  200. iso1MessageHeaderType->Notification_isUsed = 1u;
  201. grammarID = 2;
  202. break;
  203. case 1:
  204. errn = decode_iso1SignatureType(stream, &iso1MessageHeaderType->Signature);
  205. iso1MessageHeaderType->Signature_isUsed = 1u;
  206. grammarID = 3;
  207. break;
  208. case 2:
  209. done = 1;
  210. grammarID = 4;
  211. break;
  212. default:
  213. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  214. break;
  215. }
  216. }
  217. break;
  218. case 2:
  219. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */
  220. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  221. if (errn == 0) {
  222. switch(eventCode) {
  223. case 0:
  224. errn = decode_iso1SignatureType(stream, &iso1MessageHeaderType->Signature);
  225. iso1MessageHeaderType->Signature_isUsed = 1u;
  226. grammarID = 3;
  227. break;
  228. case 1:
  229. done = 1;
  230. grammarID = 4;
  231. break;
  232. default:
  233. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  234. break;
  235. }
  236. }
  237. break;
  238. case 3:
  239. /* Element[END_ELEMENT] */
  240. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  241. if (errn == 0) {
  242. switch(eventCode) {
  243. case 0:
  244. done = 1;
  245. grammarID = 4;
  246. break;
  247. default:
  248. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  249. break;
  250. }
  251. }
  252. break;
  253. default:
  254. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  255. break;
  256. }
  257. if(errn) {
  258. done = 1;
  259. }
  260. }
  261. return errn;
  262. }
  263. /* 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'. */
  264. static int decode_iso1SignatureType(bitstream_t* stream, struct iso1SignatureType* iso1SignatureType) {
  265. int grammarID = 5;
  266. int done = 0;
  267. init_iso1SignatureType(iso1SignatureType);
  268. while(!done) {
  269. switch(grammarID) {
  270. case 5:
  271. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */
  272. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  273. if (errn == 0) {
  274. switch(eventCode) {
  275. case 0:
  276. errn = decodeUnsignedInteger16(stream, &iso1SignatureType->Id.charactersLen);
  277. if (errn == 0) {
  278. if (iso1SignatureType->Id.charactersLen >= 2) {
  279. iso1SignatureType->Id.charactersLen = (uint16_t)(iso1SignatureType->Id.charactersLen - 2); /* string table miss */
  280. errn = decodeCharacters(stream, iso1SignatureType->Id.charactersLen, iso1SignatureType->Id.characters, iso1SignatureType_Id_CHARACTERS_SIZE);
  281. } else {
  282. /* string table hit */
  283. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  284. }
  285. }
  286. iso1SignatureType->Id_isUsed = 1u;
  287. grammarID = 6;
  288. break;
  289. case 1:
  290. errn = decode_iso1SignedInfoType(stream, &iso1SignatureType->SignedInfo);
  291. grammarID = 7;
  292. break;
  293. default:
  294. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  295. break;
  296. }
  297. }
  298. break;
  299. case 6:
  300. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */
  301. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  302. if (errn == 0) {
  303. switch(eventCode) {
  304. case 0:
  305. errn = decode_iso1SignedInfoType(stream, &iso1SignatureType->SignedInfo);
  306. grammarID = 7;
  307. break;
  308. default:
  309. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  310. break;
  311. }
  312. }
  313. break;
  314. case 7:
  315. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */
  316. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  317. if (errn == 0) {
  318. switch(eventCode) {
  319. case 0:
  320. errn = decode_iso1SignatureValueType(stream, &iso1SignatureType->SignatureValue);
  321. grammarID = 8;
  322. break;
  323. default:
  324. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  325. break;
  326. }
  327. }
  328. break;
  329. case 8:
  330. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */
  331. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  332. if (errn == 0) {
  333. switch(eventCode) {
  334. case 0:
  335. errn = decode_iso1KeyInfoType(stream, &iso1SignatureType->KeyInfo);
  336. iso1SignatureType->KeyInfo_isUsed = 1u;
  337. grammarID = 9;
  338. break;
  339. case 1:
  340. if (iso1SignatureType->Object.arrayLen < iso1SignatureType_Object_ARRAY_SIZE) {
  341. errn = decode_iso1ObjectType(stream, &iso1SignatureType->Object.array[iso1SignatureType->Object.arrayLen++]);
  342. } else {
  343. errn = EXI_ERROR_OUT_OF_BOUNDS;
  344. }
  345. grammarID = 9;
  346. break;
  347. case 2:
  348. done = 1;
  349. grammarID = 4;
  350. break;
  351. default:
  352. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  353. break;
  354. }
  355. }
  356. break;
  357. case 9:
  358. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */
  359. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  360. if (errn == 0) {
  361. switch(eventCode) {
  362. case 0:
  363. if (iso1SignatureType->Object.arrayLen < iso1SignatureType_Object_ARRAY_SIZE) {
  364. errn = decode_iso1ObjectType(stream, &iso1SignatureType->Object.array[iso1SignatureType->Object.arrayLen++]);
  365. } else {
  366. errn = EXI_ERROR_OUT_OF_BOUNDS;
  367. }
  368. grammarID = 9;
  369. break;
  370. case 1:
  371. done = 1;
  372. grammarID = 4;
  373. break;
  374. default:
  375. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  376. break;
  377. }
  378. }
  379. break;
  380. default:
  381. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  382. break;
  383. }
  384. if(errn) {
  385. done = 1;
  386. }
  387. }
  388. return errn;
  389. }
  390. /* 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'. */
  391. static int decode_iso1PowerDeliveryReqType(bitstream_t* stream, struct iso1PowerDeliveryReqType* iso1PowerDeliveryReqType) {
  392. int grammarID = 10;
  393. int done = 0;
  394. init_iso1PowerDeliveryReqType(iso1PowerDeliveryReqType);
  395. while(!done) {
  396. switch(grammarID) {
  397. case 10:
  398. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */
  399. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  400. if (errn == 0) {
  401. switch(eventCode) {
  402. case 0:
  403. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  404. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  405. if(errn == 0) {
  406. if(eventCode == 0) {
  407. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  408. iso1PowerDeliveryReqType->ChargeProgress = (iso1chargeProgressType) uint32;
  409. } else {
  410. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  411. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  412. }
  413. }
  414. if(errn == 0) {
  415. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress) ? */
  416. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  417. if(eventCode == 0) {
  418. grammarID = 11;
  419. } else {
  420. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  421. }
  422. }
  423. break;
  424. default:
  425. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  426. break;
  427. }
  428. }
  429. break;
  430. case 11:
  431. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */
  432. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  433. if (errn == 0) {
  434. switch(eventCode) {
  435. case 0:
  436. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  437. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  438. if(errn == 0) {
  439. if(eventCode == 0) {
  440. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  441. iso1PowerDeliveryReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  442. } else {
  443. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  444. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  445. }
  446. }
  447. if(errn == 0) {
  448. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */
  449. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  450. if(eventCode == 0) {
  451. grammarID = 12;
  452. } else {
  453. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  454. }
  455. }
  456. break;
  457. default:
  458. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  459. break;
  460. }
  461. }
  462. break;
  463. case 12:
  464. /* 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] */
  465. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  466. if (errn == 0) {
  467. switch(eventCode) {
  468. case 0:
  469. errn = decode_iso1ChargingProfileType(stream, &iso1PowerDeliveryReqType->ChargingProfile);
  470. iso1PowerDeliveryReqType->ChargingProfile_isUsed = 1u;
  471. grammarID = 13;
  472. break;
  473. case 1:
  474. errn = decode_iso1DC_EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter);
  475. iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 1u;
  476. grammarID = 3;
  477. break;
  478. case 2:
  479. errn = decode_iso1EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->EVPowerDeliveryParameter);
  480. iso1PowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 1u;
  481. grammarID = 3;
  482. break;
  483. case 3:
  484. done = 1;
  485. grammarID = 4;
  486. break;
  487. default:
  488. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  489. break;
  490. }
  491. }
  492. break;
  493. case 13:
  494. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */
  495. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  496. if (errn == 0) {
  497. switch(eventCode) {
  498. case 0:
  499. errn = decode_iso1DC_EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter);
  500. iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 1u;
  501. grammarID = 3;
  502. break;
  503. case 1:
  504. errn = decode_iso1EVPowerDeliveryParameterType(stream, &iso1PowerDeliveryReqType->EVPowerDeliveryParameter);
  505. iso1PowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 1u;
  506. grammarID = 3;
  507. break;
  508. case 2:
  509. done = 1;
  510. grammarID = 4;
  511. break;
  512. default:
  513. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  514. break;
  515. }
  516. }
  517. break;
  518. case 3:
  519. /* Element[END_ELEMENT] */
  520. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  521. if (errn == 0) {
  522. switch(eventCode) {
  523. case 0:
  524. done = 1;
  525. grammarID = 4;
  526. break;
  527. default:
  528. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  529. break;
  530. }
  531. }
  532. break;
  533. default:
  534. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  535. break;
  536. }
  537. if(errn) {
  538. done = 1;
  539. }
  540. }
  541. return errn;
  542. }
  543. /* 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'. */
  544. static int decode_iso1ParameterType(bitstream_t* stream, struct iso1ParameterType* iso1ParameterType) {
  545. int grammarID = 14;
  546. int done = 0;
  547. init_iso1ParameterType(iso1ParameterType);
  548. while(!done) {
  549. switch(grammarID) {
  550. case 14:
  551. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */
  552. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  553. if (errn == 0) {
  554. switch(eventCode) {
  555. case 0:
  556. errn = decodeUnsignedInteger16(stream, &iso1ParameterType->Name.charactersLen);
  557. if (errn == 0) {
  558. if (iso1ParameterType->Name.charactersLen >= 2) {
  559. iso1ParameterType->Name.charactersLen = (uint16_t)(iso1ParameterType->Name.charactersLen - 2); /* string table miss */
  560. errn = decodeCharacters(stream, iso1ParameterType->Name.charactersLen, iso1ParameterType->Name.characters, iso1ParameterType_Name_CHARACTERS_SIZE);
  561. } else {
  562. /* string table hit */
  563. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  564. }
  565. }
  566. grammarID = 15;
  567. break;
  568. default:
  569. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  570. break;
  571. }
  572. }
  573. break;
  574. case 15:
  575. /* 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)] */
  576. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  577. if (errn == 0) {
  578. switch(eventCode) {
  579. case 0:
  580. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  581. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  582. if(errn == 0) {
  583. if(eventCode == 0) {
  584. errn = decodeBoolean(stream, &iso1ParameterType->boolValue);
  585. iso1ParameterType->boolValue_isUsed = 1u;
  586. } else {
  587. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  588. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  589. }
  590. }
  591. if(errn == 0) {
  592. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue) ? */
  593. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  594. if(eventCode == 0) {
  595. grammarID = 3;
  596. } else {
  597. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  598. }
  599. }
  600. break;
  601. case 1:
  602. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  603. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  604. if(errn == 0) {
  605. if(eventCode == 0) {
  606. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  607. iso1ParameterType->byteValue = (int8_t)(uint32 -128);
  608. iso1ParameterType->byteValue_isUsed = 1u;
  609. } else {
  610. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  611. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  612. }
  613. }
  614. if(errn == 0) {
  615. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue) ? */
  616. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  617. if(eventCode == 0) {
  618. grammarID = 3;
  619. } else {
  620. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  621. }
  622. }
  623. break;
  624. case 2:
  625. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  626. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  627. if(errn == 0) {
  628. if(eventCode == 0) {
  629. errn = decodeInteger16(stream, &iso1ParameterType->shortValue);
  630. iso1ParameterType->shortValue_isUsed = 1u;
  631. } else {
  632. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  633. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  634. }
  635. }
  636. if(errn == 0) {
  637. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue) ? */
  638. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  639. if(eventCode == 0) {
  640. grammarID = 3;
  641. } else {
  642. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  643. }
  644. }
  645. break;
  646. case 3:
  647. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  648. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  649. if(errn == 0) {
  650. if(eventCode == 0) {
  651. errn = decodeInteger32(stream, &iso1ParameterType->intValue);
  652. iso1ParameterType->intValue_isUsed = 1u;
  653. } else {
  654. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  655. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  656. }
  657. }
  658. if(errn == 0) {
  659. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue) ? */
  660. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  661. if(eventCode == 0) {
  662. grammarID = 3;
  663. } else {
  664. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  665. }
  666. }
  667. break;
  668. case 4:
  669. errn = decode_iso1PhysicalValueType(stream, &iso1ParameterType->physicalValue);
  670. iso1ParameterType->physicalValue_isUsed = 1u;
  671. grammarID = 3;
  672. break;
  673. case 5:
  674. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  675. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  676. if(errn == 0) {
  677. if(eventCode == 0) {
  678. errn = decodeUnsignedInteger16(stream, &iso1ParameterType->stringValue.charactersLen);
  679. if (errn == 0) {
  680. if (iso1ParameterType->stringValue.charactersLen >= 2) {
  681. iso1ParameterType->stringValue.charactersLen = (uint16_t)(iso1ParameterType->stringValue.charactersLen - 2); /* string table miss */
  682. errn = decodeCharacters(stream, iso1ParameterType->stringValue.charactersLen, iso1ParameterType->stringValue.characters, iso1ParameterType_stringValue_CHARACTERS_SIZE);
  683. } else {
  684. /* string table hit */
  685. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  686. }
  687. }
  688. iso1ParameterType->stringValue_isUsed = 1u;
  689. } else {
  690. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  691. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  692. }
  693. }
  694. if(errn == 0) {
  695. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue) ? */
  696. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  697. if(eventCode == 0) {
  698. grammarID = 3;
  699. } else {
  700. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  701. }
  702. }
  703. break;
  704. default:
  705. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  706. break;
  707. }
  708. }
  709. break;
  710. case 3:
  711. /* Element[END_ELEMENT] */
  712. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  713. if (errn == 0) {
  714. switch(eventCode) {
  715. case 0:
  716. done = 1;
  717. grammarID = 4;
  718. break;
  719. default:
  720. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  721. break;
  722. }
  723. }
  724. break;
  725. default:
  726. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  727. break;
  728. }
  729. if(errn) {
  730. done = 1;
  731. }
  732. }
  733. return errn;
  734. }
  735. /* 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'. */
  736. static int decode_iso1CertificateInstallationReqType(bitstream_t* stream, struct iso1CertificateInstallationReqType* iso1CertificateInstallationReqType) {
  737. int grammarID = 16;
  738. int done = 0;
  739. init_iso1CertificateInstallationReqType(iso1CertificateInstallationReqType);
  740. while(!done) {
  741. switch(grammarID) {
  742. case 16:
  743. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */
  744. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  745. if (errn == 0) {
  746. switch(eventCode) {
  747. case 0:
  748. errn = decodeUnsignedInteger16(stream, &iso1CertificateInstallationReqType->Id.charactersLen);
  749. if (errn == 0) {
  750. if (iso1CertificateInstallationReqType->Id.charactersLen >= 2) {
  751. iso1CertificateInstallationReqType->Id.charactersLen = (uint16_t)(iso1CertificateInstallationReqType->Id.charactersLen - 2); /* string table miss */
  752. errn = decodeCharacters(stream, iso1CertificateInstallationReqType->Id.charactersLen, iso1CertificateInstallationReqType->Id.characters, iso1CertificateInstallationReqType_Id_CHARACTERS_SIZE);
  753. } else {
  754. /* string table hit */
  755. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  756. }
  757. }
  758. grammarID = 17;
  759. break;
  760. default:
  761. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  762. break;
  763. }
  764. }
  765. break;
  766. case 17:
  767. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */
  768. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  769. if (errn == 0) {
  770. switch(eventCode) {
  771. case 0:
  772. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  773. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  774. if(errn == 0) {
  775. if(eventCode == 0) {
  776. errn = decodeUnsignedInteger16(stream, &iso1CertificateInstallationReqType->OEMProvisioningCert.bytesLen);
  777. if (errn == 0) {
  778. errn = (iso1CertificateInstallationReqType->OEMProvisioningCert.bytesLen) <= iso1CertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  779. }
  780. if (errn == 0) {
  781. errn = decodeBytes(stream, iso1CertificateInstallationReqType->OEMProvisioningCert.bytesLen, iso1CertificateInstallationReqType->OEMProvisioningCert.bytes);
  782. }
  783. } else {
  784. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  785. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  786. }
  787. }
  788. if(errn == 0) {
  789. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert) ? */
  790. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  791. if(eventCode == 0) {
  792. grammarID = 18;
  793. } else {
  794. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  795. }
  796. }
  797. break;
  798. default:
  799. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  800. break;
  801. }
  802. }
  803. break;
  804. case 18:
  805. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */
  806. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  807. if (errn == 0) {
  808. switch(eventCode) {
  809. case 0:
  810. errn = decode_iso1ListOfRootCertificateIDsType(stream, &iso1CertificateInstallationReqType->ListOfRootCertificateIDs);
  811. grammarID = 3;
  812. break;
  813. default:
  814. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  815. break;
  816. }
  817. }
  818. break;
  819. case 3:
  820. /* Element[END_ELEMENT] */
  821. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  822. if (errn == 0) {
  823. switch(eventCode) {
  824. case 0:
  825. done = 1;
  826. grammarID = 4;
  827. break;
  828. default:
  829. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  830. break;
  831. }
  832. }
  833. break;
  834. default:
  835. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  836. break;
  837. }
  838. if(errn) {
  839. done = 1;
  840. }
  841. }
  842. return errn;
  843. }
  844. /* 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'. */
  845. static int decode_iso1SessionSetupResType(bitstream_t* stream, struct iso1SessionSetupResType* iso1SessionSetupResType) {
  846. int grammarID = 19;
  847. int done = 0;
  848. init_iso1SessionSetupResType(iso1SessionSetupResType);
  849. while(!done) {
  850. switch(grammarID) {
  851. case 19:
  852. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  853. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  854. if (errn == 0) {
  855. switch(eventCode) {
  856. case 0:
  857. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  858. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  859. if(errn == 0) {
  860. if(eventCode == 0) {
  861. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  862. iso1SessionSetupResType->ResponseCode = (iso1responseCodeType) uint32;
  863. } else {
  864. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  865. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  866. }
  867. }
  868. if(errn == 0) {
  869. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  870. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  871. if(eventCode == 0) {
  872. grammarID = 20;
  873. } else {
  874. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  875. }
  876. }
  877. break;
  878. default:
  879. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  880. break;
  881. }
  882. }
  883. break;
  884. case 20:
  885. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  886. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  887. if (errn == 0) {
  888. switch(eventCode) {
  889. case 0:
  890. /* FirstStartTag[CHARACTERS[STRING]] */
  891. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  892. if(errn == 0) {
  893. if(eventCode == 0) {
  894. errn = decodeUnsignedInteger16(stream, &iso1SessionSetupResType->EVSEID.charactersLen);
  895. if (errn == 0) {
  896. if (iso1SessionSetupResType->EVSEID.charactersLen >= 2) {
  897. iso1SessionSetupResType->EVSEID.charactersLen = (uint16_t)(iso1SessionSetupResType->EVSEID.charactersLen - 2); /* string table miss */
  898. errn = decodeCharacters(stream, iso1SessionSetupResType->EVSEID.charactersLen, iso1SessionSetupResType->EVSEID.characters, iso1SessionSetupResType_EVSEID_CHARACTERS_SIZE);
  899. } else {
  900. /* string table hit */
  901. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  902. }
  903. }
  904. } else {
  905. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  906. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  907. }
  908. }
  909. if(errn == 0) {
  910. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */
  911. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  912. if(eventCode == 0) {
  913. grammarID = 21;
  914. } else {
  915. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  916. }
  917. }
  918. break;
  919. default:
  920. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  921. break;
  922. }
  923. }
  924. break;
  925. case 21:
  926. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */
  927. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  928. if (errn == 0) {
  929. switch(eventCode) {
  930. case 0:
  931. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  932. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  933. if(errn == 0) {
  934. if(eventCode == 0) {
  935. errn = decodeInteger64(stream, &iso1SessionSetupResType->EVSETimeStamp);
  936. iso1SessionSetupResType->EVSETimeStamp_isUsed = 1u;
  937. } else {
  938. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  939. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  940. }
  941. }
  942. if(errn == 0) {
  943. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp) ? */
  944. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  945. if(eventCode == 0) {
  946. grammarID = 3;
  947. } else {
  948. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  949. }
  950. }
  951. break;
  952. case 1:
  953. done = 1;
  954. grammarID = 4;
  955. break;
  956. default:
  957. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  958. break;
  959. }
  960. }
  961. break;
  962. case 3:
  963. /* Element[END_ELEMENT] */
  964. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  965. if (errn == 0) {
  966. switch(eventCode) {
  967. case 0:
  968. done = 1;
  969. grammarID = 4;
  970. break;
  971. default:
  972. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  973. break;
  974. }
  975. }
  976. break;
  977. default:
  978. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  979. break;
  980. }
  981. if(errn) {
  982. done = 1;
  983. }
  984. }
  985. return errn;
  986. }
  987. /* 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'. */
  988. static int decode_iso1EVChargeParameterType(bitstream_t* stream, struct iso1EVChargeParameterType* iso1EVChargeParameterType) {
  989. int grammarID = 22;
  990. int done = 0;
  991. init_iso1EVChargeParameterType(iso1EVChargeParameterType);
  992. while(!done) {
  993. switch(grammarID) {
  994. case 22:
  995. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */
  996. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  997. if (errn == 0) {
  998. switch(eventCode) {
  999. case 0:
  1000. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  1001. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1002. if(errn == 0) {
  1003. if(eventCode == 0) {
  1004. errn = decodeUnsignedInteger32(stream, &iso1EVChargeParameterType->DepartureTime);
  1005. iso1EVChargeParameterType->DepartureTime_isUsed = 1u;
  1006. } else {
  1007. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1008. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1009. }
  1010. }
  1011. if(errn == 0) {
  1012. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) ? */
  1013. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1014. if(eventCode == 0) {
  1015. grammarID = 3;
  1016. } else {
  1017. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1018. }
  1019. }
  1020. break;
  1021. case 1:
  1022. done = 1;
  1023. grammarID = 4;
  1024. break;
  1025. default:
  1026. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1027. break;
  1028. }
  1029. }
  1030. break;
  1031. case 3:
  1032. /* Element[END_ELEMENT] */
  1033. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1034. if (errn == 0) {
  1035. switch(eventCode) {
  1036. case 0:
  1037. done = 1;
  1038. grammarID = 4;
  1039. break;
  1040. default:
  1041. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1042. break;
  1043. }
  1044. }
  1045. break;
  1046. default:
  1047. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1048. break;
  1049. }
  1050. if(errn) {
  1051. done = 1;
  1052. }
  1053. }
  1054. return errn;
  1055. }
  1056. /* 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'. */
  1057. static int decode_iso1DiffieHellmanPublickeyType(bitstream_t* stream, struct iso1DiffieHellmanPublickeyType* iso1DiffieHellmanPublickeyType) {
  1058. int grammarID = 23;
  1059. int done = 0;
  1060. init_iso1DiffieHellmanPublickeyType(iso1DiffieHellmanPublickeyType);
  1061. while(!done) {
  1062. switch(grammarID) {
  1063. case 23:
  1064. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */
  1065. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1066. if (errn == 0) {
  1067. switch(eventCode) {
  1068. case 0:
  1069. errn = decodeUnsignedInteger16(stream, &iso1DiffieHellmanPublickeyType->Id.charactersLen);
  1070. if (errn == 0) {
  1071. if (iso1DiffieHellmanPublickeyType->Id.charactersLen >= 2) {
  1072. iso1DiffieHellmanPublickeyType->Id.charactersLen = (uint16_t)(iso1DiffieHellmanPublickeyType->Id.charactersLen - 2); /* string table miss */
  1073. errn = decodeCharacters(stream, iso1DiffieHellmanPublickeyType->Id.charactersLen, iso1DiffieHellmanPublickeyType->Id.characters, iso1DiffieHellmanPublickeyType_Id_CHARACTERS_SIZE);
  1074. } else {
  1075. /* string table hit */
  1076. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  1077. }
  1078. }
  1079. grammarID = 24;
  1080. break;
  1081. default:
  1082. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1083. break;
  1084. }
  1085. }
  1086. break;
  1087. case 24:
  1088. /* StartTag[CHARACTERS[BINARY_BASE64]] */
  1089. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1090. if (errn == 0) {
  1091. switch(eventCode) {
  1092. case 0:
  1093. errn = decodeUnsignedInteger16(stream, &iso1DiffieHellmanPublickeyType->CONTENT.bytesLen);
  1094. if (errn == 0) {
  1095. errn = (iso1DiffieHellmanPublickeyType->CONTENT.bytesLen) <= iso1DiffieHellmanPublickeyType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  1096. }
  1097. if (errn == 0) {
  1098. errn = decodeBytes(stream, iso1DiffieHellmanPublickeyType->CONTENT.bytesLen, iso1DiffieHellmanPublickeyType->CONTENT.bytes);
  1099. }
  1100. grammarID = 3;
  1101. break;
  1102. default:
  1103. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1104. break;
  1105. }
  1106. }
  1107. break;
  1108. case 3:
  1109. /* Element[END_ELEMENT] */
  1110. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1111. if (errn == 0) {
  1112. switch(eventCode) {
  1113. case 0:
  1114. done = 1;
  1115. grammarID = 4;
  1116. break;
  1117. default:
  1118. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1119. break;
  1120. }
  1121. }
  1122. break;
  1123. default:
  1124. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1125. break;
  1126. }
  1127. if(errn) {
  1128. done = 1;
  1129. }
  1130. }
  1131. return errn;
  1132. }
  1133. /* 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'. */
  1134. static int decode_iso1ServiceDiscoveryResType(bitstream_t* stream, struct iso1ServiceDiscoveryResType* iso1ServiceDiscoveryResType) {
  1135. int grammarID = 25;
  1136. int done = 0;
  1137. init_iso1ServiceDiscoveryResType(iso1ServiceDiscoveryResType);
  1138. while(!done) {
  1139. switch(grammarID) {
  1140. case 25:
  1141. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  1142. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1143. if (errn == 0) {
  1144. switch(eventCode) {
  1145. case 0:
  1146. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1147. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1148. if(errn == 0) {
  1149. if(eventCode == 0) {
  1150. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  1151. iso1ServiceDiscoveryResType->ResponseCode = (iso1responseCodeType) uint32;
  1152. } else {
  1153. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1154. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1155. }
  1156. }
  1157. if(errn == 0) {
  1158. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  1159. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1160. if(eventCode == 0) {
  1161. grammarID = 26;
  1162. } else {
  1163. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1164. }
  1165. }
  1166. break;
  1167. default:
  1168. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1169. break;
  1170. }
  1171. }
  1172. break;
  1173. case 26:
  1174. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */
  1175. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1176. if (errn == 0) {
  1177. switch(eventCode) {
  1178. case 0:
  1179. errn = decode_iso1PaymentOptionListType(stream, &iso1ServiceDiscoveryResType->PaymentOptionList);
  1180. grammarID = 27;
  1181. break;
  1182. default:
  1183. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1184. break;
  1185. }
  1186. }
  1187. break;
  1188. case 27:
  1189. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */
  1190. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1191. if (errn == 0) {
  1192. switch(eventCode) {
  1193. case 0:
  1194. errn = decode_iso1ChargeServiceType(stream, &iso1ServiceDiscoveryResType->ChargeService);
  1195. grammarID = 28;
  1196. break;
  1197. default:
  1198. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1199. break;
  1200. }
  1201. }
  1202. break;
  1203. case 28:
  1204. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */
  1205. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1206. if (errn == 0) {
  1207. switch(eventCode) {
  1208. case 0:
  1209. errn = decode_iso1ServiceListType(stream, &iso1ServiceDiscoveryResType->ServiceList);
  1210. iso1ServiceDiscoveryResType->ServiceList_isUsed = 1u;
  1211. grammarID = 3;
  1212. break;
  1213. case 1:
  1214. done = 1;
  1215. grammarID = 4;
  1216. break;
  1217. default:
  1218. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1219. break;
  1220. }
  1221. }
  1222. break;
  1223. case 3:
  1224. /* Element[END_ELEMENT] */
  1225. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1226. if (errn == 0) {
  1227. switch(eventCode) {
  1228. case 0:
  1229. done = 1;
  1230. grammarID = 4;
  1231. break;
  1232. default:
  1233. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1234. break;
  1235. }
  1236. }
  1237. break;
  1238. default:
  1239. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1240. break;
  1241. }
  1242. if(errn) {
  1243. done = 1;
  1244. }
  1245. }
  1246. return errn;
  1247. }
  1248. /* 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'. */
  1249. static int decode_iso1ServiceParameterListType(bitstream_t* stream, struct iso1ServiceParameterListType* iso1ServiceParameterListType) {
  1250. int grammarID = 29;
  1251. int done = 0;
  1252. init_iso1ServiceParameterListType(iso1ServiceParameterListType);
  1253. while(!done) {
  1254. switch(grammarID) {
  1255. case 29:
  1256. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */
  1257. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1258. if (errn == 0) {
  1259. switch(eventCode) {
  1260. case 0:
  1261. if (iso1ServiceParameterListType->ParameterSet.arrayLen < iso1ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
  1262. errn = decode_iso1ParameterSetType(stream, &iso1ServiceParameterListType->ParameterSet.array[iso1ServiceParameterListType->ParameterSet.arrayLen++]);
  1263. } else {
  1264. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1265. }
  1266. grammarID = 30;
  1267. break;
  1268. default:
  1269. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1270. break;
  1271. }
  1272. }
  1273. break;
  1274. case 30:
  1275. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */
  1276. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1277. if (errn == 0) {
  1278. switch(eventCode) {
  1279. case 0:
  1280. if (iso1ServiceParameterListType->ParameterSet.arrayLen < iso1ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
  1281. errn = decode_iso1ParameterSetType(stream, &iso1ServiceParameterListType->ParameterSet.array[iso1ServiceParameterListType->ParameterSet.arrayLen++]);
  1282. } else {
  1283. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1284. }
  1285. grammarID = 30;
  1286. break;
  1287. case 1:
  1288. done = 1;
  1289. grammarID = 4;
  1290. break;
  1291. default:
  1292. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1293. break;
  1294. }
  1295. }
  1296. break;
  1297. default:
  1298. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1299. break;
  1300. }
  1301. if(errn) {
  1302. done = 1;
  1303. }
  1304. }
  1305. return errn;
  1306. }
  1307. /* 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'. */
  1308. static int decode_iso1CertificateChainType(bitstream_t* stream, struct iso1CertificateChainType* iso1CertificateChainType) {
  1309. int grammarID = 31;
  1310. int done = 0;
  1311. init_iso1CertificateChainType(iso1CertificateChainType);
  1312. while(!done) {
  1313. switch(grammarID) {
  1314. case 31:
  1315. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */
  1316. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1317. if (errn == 0) {
  1318. switch(eventCode) {
  1319. case 0:
  1320. errn = decodeUnsignedInteger16(stream, &iso1CertificateChainType->Id.charactersLen);
  1321. if (errn == 0) {
  1322. if (iso1CertificateChainType->Id.charactersLen >= 2) {
  1323. iso1CertificateChainType->Id.charactersLen = (uint16_t)(iso1CertificateChainType->Id.charactersLen - 2); /* string table miss */
  1324. errn = decodeCharacters(stream, iso1CertificateChainType->Id.charactersLen, iso1CertificateChainType->Id.characters, iso1CertificateChainType_Id_CHARACTERS_SIZE);
  1325. } else {
  1326. /* string table hit */
  1327. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  1328. }
  1329. }
  1330. iso1CertificateChainType->Id_isUsed = 1u;
  1331. grammarID = 32;
  1332. break;
  1333. case 1:
  1334. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  1335. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1336. if(errn == 0) {
  1337. if(eventCode == 0) {
  1338. errn = decodeUnsignedInteger16(stream, &iso1CertificateChainType->Certificate.bytesLen);
  1339. if (errn == 0) {
  1340. errn = (iso1CertificateChainType->Certificate.bytesLen) <= iso1CertificateChainType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  1341. }
  1342. if (errn == 0) {
  1343. errn = decodeBytes(stream, iso1CertificateChainType->Certificate.bytesLen, iso1CertificateChainType->Certificate.bytes);
  1344. }
  1345. } else {
  1346. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1347. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1348. }
  1349. }
  1350. if(errn == 0) {
  1351. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */
  1352. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1353. if(eventCode == 0) {
  1354. grammarID = 33;
  1355. } else {
  1356. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1357. }
  1358. }
  1359. break;
  1360. default:
  1361. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1362. break;
  1363. }
  1364. }
  1365. break;
  1366. case 32:
  1367. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */
  1368. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1369. if (errn == 0) {
  1370. switch(eventCode) {
  1371. case 0:
  1372. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  1373. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1374. if(errn == 0) {
  1375. if(eventCode == 0) {
  1376. errn = decodeUnsignedInteger16(stream, &iso1CertificateChainType->Certificate.bytesLen);
  1377. if (errn == 0) {
  1378. errn = (iso1CertificateChainType->Certificate.bytesLen) <= iso1CertificateChainType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  1379. }
  1380. if (errn == 0) {
  1381. errn = decodeBytes(stream, iso1CertificateChainType->Certificate.bytesLen, iso1CertificateChainType->Certificate.bytes);
  1382. }
  1383. } else {
  1384. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1385. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1386. }
  1387. }
  1388. if(errn == 0) {
  1389. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */
  1390. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1391. if(eventCode == 0) {
  1392. grammarID = 33;
  1393. } else {
  1394. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1395. }
  1396. }
  1397. break;
  1398. default:
  1399. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1400. break;
  1401. }
  1402. }
  1403. break;
  1404. case 33:
  1405. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */
  1406. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1407. if (errn == 0) {
  1408. switch(eventCode) {
  1409. case 0:
  1410. errn = decode_iso1SubCertificatesType(stream, &iso1CertificateChainType->SubCertificates);
  1411. iso1CertificateChainType->SubCertificates_isUsed = 1u;
  1412. grammarID = 3;
  1413. break;
  1414. case 1:
  1415. done = 1;
  1416. grammarID = 4;
  1417. break;
  1418. default:
  1419. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1420. break;
  1421. }
  1422. }
  1423. break;
  1424. case 3:
  1425. /* Element[END_ELEMENT] */
  1426. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1427. if (errn == 0) {
  1428. switch(eventCode) {
  1429. case 0:
  1430. done = 1;
  1431. grammarID = 4;
  1432. break;
  1433. default:
  1434. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1435. break;
  1436. }
  1437. }
  1438. break;
  1439. default:
  1440. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1441. break;
  1442. }
  1443. if(errn) {
  1444. done = 1;
  1445. }
  1446. }
  1447. return errn;
  1448. }
  1449. /* 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'. */
  1450. static int decode_iso1SASchedulesType(bitstream_t* stream, struct iso1SASchedulesType* iso1SASchedulesType) {
  1451. int grammarID = 34;
  1452. int done = 0;
  1453. init_iso1SASchedulesType(iso1SASchedulesType);
  1454. while(!done) {
  1455. switch(grammarID) {
  1456. case 34:
  1457. /* FirstStartTag[END_ELEMENT] */
  1458. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1459. if (errn == 0) {
  1460. switch(eventCode) {
  1461. case 0:
  1462. done = 1;
  1463. grammarID = 4;
  1464. break;
  1465. default:
  1466. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1467. break;
  1468. }
  1469. }
  1470. break;
  1471. default:
  1472. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1473. break;
  1474. }
  1475. if(errn) {
  1476. done = 1;
  1477. }
  1478. }
  1479. return errn;
  1480. }
  1481. /* 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'. */
  1482. static int decode_iso1DC_EVSEStatusType(bitstream_t* stream, struct iso1DC_EVSEStatusType* iso1DC_EVSEStatusType) {
  1483. int grammarID = 35;
  1484. int done = 0;
  1485. init_iso1DC_EVSEStatusType(iso1DC_EVSEStatusType);
  1486. while(!done) {
  1487. switch(grammarID) {
  1488. case 35:
  1489. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */
  1490. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1491. if (errn == 0) {
  1492. switch(eventCode) {
  1493. case 0:
  1494. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  1495. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1496. if(errn == 0) {
  1497. if(eventCode == 0) {
  1498. errn = decodeUnsignedInteger16(stream, &iso1DC_EVSEStatusType->NotificationMaxDelay);
  1499. } else {
  1500. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1501. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1502. }
  1503. }
  1504. if(errn == 0) {
  1505. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) ? */
  1506. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1507. if(eventCode == 0) {
  1508. grammarID = 36;
  1509. } else {
  1510. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1511. }
  1512. }
  1513. break;
  1514. default:
  1515. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1516. break;
  1517. }
  1518. }
  1519. break;
  1520. case 36:
  1521. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */
  1522. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1523. if (errn == 0) {
  1524. switch(eventCode) {
  1525. case 0:
  1526. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1527. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1528. if(errn == 0) {
  1529. if(eventCode == 0) {
  1530. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  1531. iso1DC_EVSEStatusType->EVSENotification = (iso1EVSENotificationType) uint32;
  1532. } else {
  1533. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1534. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1535. }
  1536. }
  1537. if(errn == 0) {
  1538. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) ? */
  1539. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1540. if(eventCode == 0) {
  1541. grammarID = 37;
  1542. } else {
  1543. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1544. }
  1545. }
  1546. break;
  1547. default:
  1548. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1549. break;
  1550. }
  1551. }
  1552. break;
  1553. case 37:
  1554. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */
  1555. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1556. if (errn == 0) {
  1557. switch(eventCode) {
  1558. case 0:
  1559. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1560. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1561. if(errn == 0) {
  1562. if(eventCode == 0) {
  1563. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  1564. iso1DC_EVSEStatusType->EVSEIsolationStatus = (iso1isolationLevelType) uint32;
  1565. iso1DC_EVSEStatusType->EVSEIsolationStatus_isUsed = 1u;
  1566. } else {
  1567. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1568. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1569. }
  1570. }
  1571. if(errn == 0) {
  1572. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus) ? */
  1573. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1574. if(eventCode == 0) {
  1575. grammarID = 38;
  1576. } else {
  1577. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1578. }
  1579. }
  1580. break;
  1581. case 1:
  1582. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1583. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1584. if(errn == 0) {
  1585. if(eventCode == 0) {
  1586. errn = decodeNBitUnsignedInteger(stream, 4, &uint32);
  1587. iso1DC_EVSEStatusType->EVSEStatusCode = (iso1DC_EVSEStatusCodeType) uint32;
  1588. } else {
  1589. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1590. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1591. }
  1592. }
  1593. if(errn == 0) {
  1594. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode) ? */
  1595. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1596. if(eventCode == 0) {
  1597. grammarID = 3;
  1598. } else {
  1599. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1600. }
  1601. }
  1602. break;
  1603. default:
  1604. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1605. break;
  1606. }
  1607. }
  1608. break;
  1609. case 38:
  1610. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */
  1611. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1612. if (errn == 0) {
  1613. switch(eventCode) {
  1614. case 0:
  1615. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1616. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1617. if(errn == 0) {
  1618. if(eventCode == 0) {
  1619. errn = decodeNBitUnsignedInteger(stream, 4, &uint32);
  1620. iso1DC_EVSEStatusType->EVSEStatusCode = (iso1DC_EVSEStatusCodeType) uint32;
  1621. } else {
  1622. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1623. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1624. }
  1625. }
  1626. if(errn == 0) {
  1627. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode) ? */
  1628. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1629. if(eventCode == 0) {
  1630. grammarID = 3;
  1631. } else {
  1632. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1633. }
  1634. }
  1635. break;
  1636. default:
  1637. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1638. break;
  1639. }
  1640. }
  1641. break;
  1642. case 3:
  1643. /* Element[END_ELEMENT] */
  1644. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1645. if (errn == 0) {
  1646. switch(eventCode) {
  1647. case 0:
  1648. done = 1;
  1649. grammarID = 4;
  1650. break;
  1651. default:
  1652. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1653. break;
  1654. }
  1655. }
  1656. break;
  1657. default:
  1658. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1659. break;
  1660. }
  1661. if(errn) {
  1662. done = 1;
  1663. }
  1664. }
  1665. return errn;
  1666. }
  1667. /* 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'. */
  1668. static int decode_iso1PreChargeResType(bitstream_t* stream, struct iso1PreChargeResType* iso1PreChargeResType) {
  1669. int grammarID = 39;
  1670. int done = 0;
  1671. init_iso1PreChargeResType(iso1PreChargeResType);
  1672. while(!done) {
  1673. switch(grammarID) {
  1674. case 39:
  1675. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  1676. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1677. if (errn == 0) {
  1678. switch(eventCode) {
  1679. case 0:
  1680. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  1681. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1682. if(errn == 0) {
  1683. if(eventCode == 0) {
  1684. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  1685. iso1PreChargeResType->ResponseCode = (iso1responseCodeType) uint32;
  1686. } else {
  1687. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1688. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1689. }
  1690. }
  1691. if(errn == 0) {
  1692. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  1693. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1694. if(eventCode == 0) {
  1695. grammarID = 40;
  1696. } else {
  1697. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1698. }
  1699. }
  1700. break;
  1701. default:
  1702. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1703. break;
  1704. }
  1705. }
  1706. break;
  1707. case 40:
  1708. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  1709. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1710. if (errn == 0) {
  1711. switch(eventCode) {
  1712. case 0:
  1713. errn = decode_iso1DC_EVSEStatusType(stream, &iso1PreChargeResType->DC_EVSEStatus);
  1714. grammarID = 41;
  1715. break;
  1716. default:
  1717. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1718. break;
  1719. }
  1720. }
  1721. break;
  1722. case 41:
  1723. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */
  1724. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1725. if (errn == 0) {
  1726. switch(eventCode) {
  1727. case 0:
  1728. errn = decode_iso1PhysicalValueType(stream, &iso1PreChargeResType->EVSEPresentVoltage);
  1729. grammarID = 3;
  1730. break;
  1731. default:
  1732. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1733. break;
  1734. }
  1735. }
  1736. break;
  1737. case 3:
  1738. /* Element[END_ELEMENT] */
  1739. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1740. if (errn == 0) {
  1741. switch(eventCode) {
  1742. case 0:
  1743. done = 1;
  1744. grammarID = 4;
  1745. break;
  1746. default:
  1747. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1748. break;
  1749. }
  1750. }
  1751. break;
  1752. default:
  1753. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  1754. break;
  1755. }
  1756. if(errn) {
  1757. done = 1;
  1758. }
  1759. }
  1760. return errn;
  1761. }
  1762. /* 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'. */
  1763. static int decode_iso1ParameterSetType(bitstream_t* stream, struct iso1ParameterSetType* iso1ParameterSetType) {
  1764. int grammarID = 42;
  1765. int done = 0;
  1766. init_iso1ParameterSetType(iso1ParameterSetType);
  1767. while(!done) {
  1768. switch(grammarID) {
  1769. case 42:
  1770. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */
  1771. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1772. if (errn == 0) {
  1773. switch(eventCode) {
  1774. case 0:
  1775. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  1776. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1777. if(errn == 0) {
  1778. if(eventCode == 0) {
  1779. errn = decodeInteger16(stream, &iso1ParameterSetType->ParameterSetID);
  1780. } else {
  1781. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  1782. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  1783. }
  1784. }
  1785. if(errn == 0) {
  1786. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID) ? */
  1787. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1788. if(eventCode == 0) {
  1789. grammarID = 43;
  1790. } else {
  1791. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  1792. }
  1793. }
  1794. break;
  1795. default:
  1796. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1797. break;
  1798. }
  1799. }
  1800. break;
  1801. case 43:
  1802. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */
  1803. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  1804. if (errn == 0) {
  1805. switch(eventCode) {
  1806. case 0:
  1807. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1808. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1809. } else {
  1810. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1811. }
  1812. grammarID = 44;
  1813. break;
  1814. default:
  1815. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1816. break;
  1817. }
  1818. }
  1819. break;
  1820. case 44:
  1821. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1822. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1823. if (errn == 0) {
  1824. switch(eventCode) {
  1825. case 0:
  1826. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1827. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1828. } else {
  1829. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1830. }
  1831. grammarID = 45;
  1832. break;
  1833. case 1:
  1834. done = 1;
  1835. grammarID = 4;
  1836. break;
  1837. default:
  1838. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1839. break;
  1840. }
  1841. }
  1842. break;
  1843. case 45:
  1844. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1845. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1846. if (errn == 0) {
  1847. switch(eventCode) {
  1848. case 0:
  1849. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1850. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1851. } else {
  1852. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1853. }
  1854. grammarID = 46;
  1855. break;
  1856. case 1:
  1857. done = 1;
  1858. grammarID = 4;
  1859. break;
  1860. default:
  1861. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1862. break;
  1863. }
  1864. }
  1865. break;
  1866. case 46:
  1867. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1868. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1869. if (errn == 0) {
  1870. switch(eventCode) {
  1871. case 0:
  1872. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1873. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1874. } else {
  1875. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1876. }
  1877. grammarID = 47;
  1878. break;
  1879. case 1:
  1880. done = 1;
  1881. grammarID = 4;
  1882. break;
  1883. default:
  1884. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1885. break;
  1886. }
  1887. }
  1888. break;
  1889. case 47:
  1890. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1891. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1892. if (errn == 0) {
  1893. switch(eventCode) {
  1894. case 0:
  1895. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1896. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1897. } else {
  1898. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1899. }
  1900. grammarID = 48;
  1901. break;
  1902. case 1:
  1903. done = 1;
  1904. grammarID = 4;
  1905. break;
  1906. default:
  1907. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1908. break;
  1909. }
  1910. }
  1911. break;
  1912. case 48:
  1913. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1914. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1915. if (errn == 0) {
  1916. switch(eventCode) {
  1917. case 0:
  1918. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1919. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1920. } else {
  1921. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1922. }
  1923. grammarID = 49;
  1924. break;
  1925. case 1:
  1926. done = 1;
  1927. grammarID = 4;
  1928. break;
  1929. default:
  1930. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1931. break;
  1932. }
  1933. }
  1934. break;
  1935. case 49:
  1936. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1937. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1938. if (errn == 0) {
  1939. switch(eventCode) {
  1940. case 0:
  1941. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1942. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1943. } else {
  1944. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1945. }
  1946. grammarID = 50;
  1947. break;
  1948. case 1:
  1949. done = 1;
  1950. grammarID = 4;
  1951. break;
  1952. default:
  1953. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1954. break;
  1955. }
  1956. }
  1957. break;
  1958. case 50:
  1959. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1960. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1961. if (errn == 0) {
  1962. switch(eventCode) {
  1963. case 0:
  1964. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1965. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1966. } else {
  1967. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1968. }
  1969. grammarID = 51;
  1970. break;
  1971. case 1:
  1972. done = 1;
  1973. grammarID = 4;
  1974. break;
  1975. default:
  1976. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  1977. break;
  1978. }
  1979. }
  1980. break;
  1981. case 51:
  1982. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  1983. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  1984. if (errn == 0) {
  1985. switch(eventCode) {
  1986. case 0:
  1987. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  1988. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  1989. } else {
  1990. errn = EXI_ERROR_OUT_OF_BOUNDS;
  1991. }
  1992. grammarID = 52;
  1993. break;
  1994. case 1:
  1995. done = 1;
  1996. grammarID = 4;
  1997. break;
  1998. default:
  1999. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2000. break;
  2001. }
  2002. }
  2003. break;
  2004. case 52:
  2005. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2006. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2007. if (errn == 0) {
  2008. switch(eventCode) {
  2009. case 0:
  2010. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2011. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2012. } else {
  2013. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2014. }
  2015. grammarID = 53;
  2016. break;
  2017. case 1:
  2018. done = 1;
  2019. grammarID = 4;
  2020. break;
  2021. default:
  2022. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2023. break;
  2024. }
  2025. }
  2026. break;
  2027. case 53:
  2028. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2029. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2030. if (errn == 0) {
  2031. switch(eventCode) {
  2032. case 0:
  2033. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2034. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2035. } else {
  2036. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2037. }
  2038. grammarID = 54;
  2039. break;
  2040. case 1:
  2041. done = 1;
  2042. grammarID = 4;
  2043. break;
  2044. default:
  2045. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2046. break;
  2047. }
  2048. }
  2049. break;
  2050. case 54:
  2051. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2052. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2053. if (errn == 0) {
  2054. switch(eventCode) {
  2055. case 0:
  2056. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2057. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2058. } else {
  2059. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2060. }
  2061. grammarID = 55;
  2062. break;
  2063. case 1:
  2064. done = 1;
  2065. grammarID = 4;
  2066. break;
  2067. default:
  2068. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2069. break;
  2070. }
  2071. }
  2072. break;
  2073. case 55:
  2074. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2075. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2076. if (errn == 0) {
  2077. switch(eventCode) {
  2078. case 0:
  2079. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2080. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2081. } else {
  2082. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2083. }
  2084. grammarID = 56;
  2085. break;
  2086. case 1:
  2087. done = 1;
  2088. grammarID = 4;
  2089. break;
  2090. default:
  2091. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2092. break;
  2093. }
  2094. }
  2095. break;
  2096. case 56:
  2097. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2098. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2099. if (errn == 0) {
  2100. switch(eventCode) {
  2101. case 0:
  2102. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2103. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2104. } else {
  2105. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2106. }
  2107. grammarID = 57;
  2108. break;
  2109. case 1:
  2110. done = 1;
  2111. grammarID = 4;
  2112. break;
  2113. default:
  2114. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2115. break;
  2116. }
  2117. }
  2118. break;
  2119. case 57:
  2120. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2121. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2122. if (errn == 0) {
  2123. switch(eventCode) {
  2124. case 0:
  2125. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2126. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2127. } else {
  2128. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2129. }
  2130. grammarID = 58;
  2131. break;
  2132. case 1:
  2133. done = 1;
  2134. grammarID = 4;
  2135. break;
  2136. default:
  2137. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2138. break;
  2139. }
  2140. }
  2141. break;
  2142. case 58:
  2143. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */
  2144. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2145. if (errn == 0) {
  2146. switch(eventCode) {
  2147. case 0:
  2148. if (iso1ParameterSetType->Parameter.arrayLen < iso1ParameterSetType_Parameter_ARRAY_SIZE) {
  2149. errn = decode_iso1ParameterType(stream, &iso1ParameterSetType->Parameter.array[iso1ParameterSetType->Parameter.arrayLen++]);
  2150. } else {
  2151. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2152. }
  2153. grammarID = 3;
  2154. break;
  2155. case 1:
  2156. done = 1;
  2157. grammarID = 4;
  2158. break;
  2159. default:
  2160. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2161. break;
  2162. }
  2163. }
  2164. break;
  2165. case 3:
  2166. /* Element[END_ELEMENT] */
  2167. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2168. if (errn == 0) {
  2169. switch(eventCode) {
  2170. case 0:
  2171. done = 1;
  2172. grammarID = 4;
  2173. break;
  2174. default:
  2175. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2176. break;
  2177. }
  2178. }
  2179. break;
  2180. default:
  2181. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2182. break;
  2183. }
  2184. if(errn) {
  2185. done = 1;
  2186. }
  2187. }
  2188. return errn;
  2189. }
  2190. /* 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'. */
  2191. static int decode_iso1ServiceDetailReqType(bitstream_t* stream, struct iso1ServiceDetailReqType* iso1ServiceDetailReqType) {
  2192. int grammarID = 59;
  2193. int done = 0;
  2194. init_iso1ServiceDetailReqType(iso1ServiceDetailReqType);
  2195. while(!done) {
  2196. switch(grammarID) {
  2197. case 59:
  2198. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */
  2199. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2200. if (errn == 0) {
  2201. switch(eventCode) {
  2202. case 0:
  2203. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2204. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2205. if(errn == 0) {
  2206. if(eventCode == 0) {
  2207. errn = decodeUnsignedInteger16(stream, &iso1ServiceDetailReqType->ServiceID);
  2208. } else {
  2209. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  2210. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  2211. }
  2212. }
  2213. if(errn == 0) {
  2214. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID) ? */
  2215. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2216. if(eventCode == 0) {
  2217. grammarID = 3;
  2218. } else {
  2219. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  2220. }
  2221. }
  2222. break;
  2223. default:
  2224. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2225. break;
  2226. }
  2227. }
  2228. break;
  2229. case 3:
  2230. /* Element[END_ELEMENT] */
  2231. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2232. if (errn == 0) {
  2233. switch(eventCode) {
  2234. case 0:
  2235. done = 1;
  2236. grammarID = 4;
  2237. break;
  2238. default:
  2239. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2240. break;
  2241. }
  2242. }
  2243. break;
  2244. default:
  2245. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2246. break;
  2247. }
  2248. if(errn) {
  2249. done = 1;
  2250. }
  2251. }
  2252. return errn;
  2253. }
  2254. /* 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'. */
  2255. static int decode_iso1RelativeTimeIntervalType(bitstream_t* stream, struct iso1RelativeTimeIntervalType* iso1RelativeTimeIntervalType) {
  2256. int grammarID = 60;
  2257. int done = 0;
  2258. init_iso1RelativeTimeIntervalType(iso1RelativeTimeIntervalType);
  2259. while(!done) {
  2260. switch(grammarID) {
  2261. case 60:
  2262. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */
  2263. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2264. if (errn == 0) {
  2265. switch(eventCode) {
  2266. case 0:
  2267. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2268. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2269. if(errn == 0) {
  2270. if(eventCode == 0) {
  2271. errn = decodeUnsignedInteger32(stream, &iso1RelativeTimeIntervalType->start);
  2272. } else {
  2273. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  2274. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  2275. }
  2276. }
  2277. if(errn == 0) {
  2278. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start) ? */
  2279. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2280. if(eventCode == 0) {
  2281. grammarID = 61;
  2282. } else {
  2283. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  2284. }
  2285. }
  2286. break;
  2287. default:
  2288. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2289. break;
  2290. }
  2291. }
  2292. break;
  2293. case 61:
  2294. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */
  2295. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2296. if (errn == 0) {
  2297. switch(eventCode) {
  2298. case 0:
  2299. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2300. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2301. if(errn == 0) {
  2302. if(eventCode == 0) {
  2303. errn = decodeUnsignedInteger32(stream, &iso1RelativeTimeIntervalType->duration);
  2304. iso1RelativeTimeIntervalType->duration_isUsed = 1u;
  2305. } else {
  2306. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  2307. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  2308. }
  2309. }
  2310. if(errn == 0) {
  2311. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration) ? */
  2312. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2313. if(eventCode == 0) {
  2314. grammarID = 3;
  2315. } else {
  2316. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  2317. }
  2318. }
  2319. break;
  2320. case 1:
  2321. done = 1;
  2322. grammarID = 4;
  2323. break;
  2324. default:
  2325. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2326. break;
  2327. }
  2328. }
  2329. break;
  2330. case 3:
  2331. /* Element[END_ELEMENT] */
  2332. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2333. if (errn == 0) {
  2334. switch(eventCode) {
  2335. case 0:
  2336. done = 1;
  2337. grammarID = 4;
  2338. break;
  2339. default:
  2340. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2341. break;
  2342. }
  2343. }
  2344. break;
  2345. default:
  2346. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2347. break;
  2348. }
  2349. if(errn) {
  2350. done = 1;
  2351. }
  2352. }
  2353. return errn;
  2354. }
  2355. /* 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'. */
  2356. static int decode_iso1SignedInfoType(bitstream_t* stream, struct iso1SignedInfoType* iso1SignedInfoType) {
  2357. int grammarID = 62;
  2358. int done = 0;
  2359. init_iso1SignedInfoType(iso1SignedInfoType);
  2360. while(!done) {
  2361. switch(grammarID) {
  2362. case 62:
  2363. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */
  2364. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2365. if (errn == 0) {
  2366. switch(eventCode) {
  2367. case 0:
  2368. errn = decodeUnsignedInteger16(stream, &iso1SignedInfoType->Id.charactersLen);
  2369. if (errn == 0) {
  2370. if (iso1SignedInfoType->Id.charactersLen >= 2) {
  2371. iso1SignedInfoType->Id.charactersLen = (uint16_t)(iso1SignedInfoType->Id.charactersLen - 2); /* string table miss */
  2372. errn = decodeCharacters(stream, iso1SignedInfoType->Id.charactersLen, iso1SignedInfoType->Id.characters, iso1SignedInfoType_Id_CHARACTERS_SIZE);
  2373. } else {
  2374. /* string table hit */
  2375. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  2376. }
  2377. }
  2378. iso1SignedInfoType->Id_isUsed = 1u;
  2379. grammarID = 63;
  2380. break;
  2381. case 1:
  2382. errn = decode_iso1CanonicalizationMethodType(stream, &iso1SignedInfoType->CanonicalizationMethod);
  2383. grammarID = 64;
  2384. break;
  2385. default:
  2386. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2387. break;
  2388. }
  2389. }
  2390. break;
  2391. case 63:
  2392. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */
  2393. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2394. if (errn == 0) {
  2395. switch(eventCode) {
  2396. case 0:
  2397. errn = decode_iso1CanonicalizationMethodType(stream, &iso1SignedInfoType->CanonicalizationMethod);
  2398. grammarID = 64;
  2399. break;
  2400. default:
  2401. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2402. break;
  2403. }
  2404. }
  2405. break;
  2406. case 64:
  2407. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */
  2408. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2409. if (errn == 0) {
  2410. switch(eventCode) {
  2411. case 0:
  2412. errn = decode_iso1SignatureMethodType(stream, &iso1SignedInfoType->SignatureMethod);
  2413. grammarID = 65;
  2414. break;
  2415. default:
  2416. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2417. break;
  2418. }
  2419. }
  2420. break;
  2421. case 65:
  2422. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
  2423. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2424. if (errn == 0) {
  2425. switch(eventCode) {
  2426. case 0:
  2427. if (iso1SignedInfoType->Reference.arrayLen < iso1SignedInfoType_Reference_ARRAY_SIZE) {
  2428. errn = decode_iso1ReferenceType(stream, &iso1SignedInfoType->Reference.array[iso1SignedInfoType->Reference.arrayLen++]);
  2429. } else {
  2430. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2431. }
  2432. grammarID = 66;
  2433. break;
  2434. default:
  2435. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2436. break;
  2437. }
  2438. }
  2439. break;
  2440. case 66:
  2441. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */
  2442. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2443. if (errn == 0) {
  2444. switch(eventCode) {
  2445. case 0:
  2446. if (iso1SignedInfoType->Reference.arrayLen < iso1SignedInfoType_Reference_ARRAY_SIZE) {
  2447. errn = decode_iso1ReferenceType(stream, &iso1SignedInfoType->Reference.array[iso1SignedInfoType->Reference.arrayLen++]);
  2448. } else {
  2449. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2450. }
  2451. grammarID = 66;
  2452. break;
  2453. case 1:
  2454. done = 1;
  2455. grammarID = 4;
  2456. break;
  2457. default:
  2458. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2459. break;
  2460. }
  2461. }
  2462. break;
  2463. default:
  2464. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2465. break;
  2466. }
  2467. if(errn) {
  2468. done = 1;
  2469. }
  2470. }
  2471. return errn;
  2472. }
  2473. /* 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'. */
  2474. static int decode_iso1EMAIDType(bitstream_t* stream, struct iso1EMAIDType* iso1EMAIDType) {
  2475. int grammarID = 67;
  2476. int done = 0;
  2477. init_iso1EMAIDType(iso1EMAIDType);
  2478. while(!done) {
  2479. switch(grammarID) {
  2480. case 67:
  2481. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */
  2482. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2483. if (errn == 0) {
  2484. switch(eventCode) {
  2485. case 0:
  2486. errn = decodeUnsignedInteger16(stream, &iso1EMAIDType->Id.charactersLen);
  2487. if (errn == 0) {
  2488. if (iso1EMAIDType->Id.charactersLen >= 2) {
  2489. iso1EMAIDType->Id.charactersLen = (uint16_t)(iso1EMAIDType->Id.charactersLen - 2); /* string table miss */
  2490. errn = decodeCharacters(stream, iso1EMAIDType->Id.charactersLen, iso1EMAIDType->Id.characters, iso1EMAIDType_Id_CHARACTERS_SIZE);
  2491. } else {
  2492. /* string table hit */
  2493. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  2494. }
  2495. }
  2496. grammarID = 68;
  2497. break;
  2498. default:
  2499. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2500. break;
  2501. }
  2502. }
  2503. break;
  2504. case 68:
  2505. /* StartTag[CHARACTERS[STRING]] */
  2506. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2507. if (errn == 0) {
  2508. switch(eventCode) {
  2509. case 0:
  2510. errn = decodeUnsignedInteger16(stream, &iso1EMAIDType->CONTENT.charactersLen);
  2511. if (errn == 0) {
  2512. if (iso1EMAIDType->CONTENT.charactersLen >= 2) {
  2513. iso1EMAIDType->CONTENT.charactersLen = (uint16_t)(iso1EMAIDType->CONTENT.charactersLen - 2); /* string table miss */
  2514. errn = decodeCharacters(stream, iso1EMAIDType->CONTENT.charactersLen, iso1EMAIDType->CONTENT.characters, iso1EMAIDType_CONTENT_CHARACTERS_SIZE);
  2515. } else {
  2516. /* string table hit */
  2517. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  2518. }
  2519. }
  2520. grammarID = 3;
  2521. break;
  2522. default:
  2523. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2524. break;
  2525. }
  2526. }
  2527. break;
  2528. case 3:
  2529. /* Element[END_ELEMENT] */
  2530. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2531. if (errn == 0) {
  2532. switch(eventCode) {
  2533. case 0:
  2534. done = 1;
  2535. grammarID = 4;
  2536. break;
  2537. default:
  2538. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2539. break;
  2540. }
  2541. }
  2542. break;
  2543. default:
  2544. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2545. break;
  2546. }
  2547. if(errn) {
  2548. done = 1;
  2549. }
  2550. }
  2551. return errn;
  2552. }
  2553. /* 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'. */
  2554. static int decode_iso1EVStatusType(bitstream_t* stream, struct iso1EVStatusType* iso1EVStatusType) {
  2555. int grammarID = 34;
  2556. int done = 0;
  2557. init_iso1EVStatusType(iso1EVStatusType);
  2558. while(!done) {
  2559. switch(grammarID) {
  2560. case 34:
  2561. /* FirstStartTag[END_ELEMENT] */
  2562. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2563. if (errn == 0) {
  2564. switch(eventCode) {
  2565. case 0:
  2566. done = 1;
  2567. grammarID = 4;
  2568. break;
  2569. default:
  2570. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2571. break;
  2572. }
  2573. }
  2574. break;
  2575. default:
  2576. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2577. break;
  2578. }
  2579. if(errn) {
  2580. done = 1;
  2581. }
  2582. }
  2583. return errn;
  2584. }
  2585. /* 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'. */
  2586. static int decode_iso1ServiceListType(bitstream_t* stream, struct iso1ServiceListType* iso1ServiceListType) {
  2587. int grammarID = 69;
  2588. int done = 0;
  2589. init_iso1ServiceListType(iso1ServiceListType);
  2590. while(!done) {
  2591. switch(grammarID) {
  2592. case 69:
  2593. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */
  2594. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2595. if (errn == 0) {
  2596. switch(eventCode) {
  2597. case 0:
  2598. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2599. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2600. } else {
  2601. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2602. }
  2603. grammarID = 70;
  2604. break;
  2605. default:
  2606. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2607. break;
  2608. }
  2609. }
  2610. break;
  2611. case 70:
  2612. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2613. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2614. if (errn == 0) {
  2615. switch(eventCode) {
  2616. case 0:
  2617. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2618. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2619. } else {
  2620. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2621. }
  2622. grammarID = 71;
  2623. break;
  2624. case 1:
  2625. done = 1;
  2626. grammarID = 4;
  2627. break;
  2628. default:
  2629. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2630. break;
  2631. }
  2632. }
  2633. break;
  2634. case 71:
  2635. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2636. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2637. if (errn == 0) {
  2638. switch(eventCode) {
  2639. case 0:
  2640. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2641. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2642. } else {
  2643. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2644. }
  2645. grammarID = 72;
  2646. break;
  2647. case 1:
  2648. done = 1;
  2649. grammarID = 4;
  2650. break;
  2651. default:
  2652. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2653. break;
  2654. }
  2655. }
  2656. break;
  2657. case 72:
  2658. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2659. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2660. if (errn == 0) {
  2661. switch(eventCode) {
  2662. case 0:
  2663. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2664. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2665. } else {
  2666. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2667. }
  2668. grammarID = 73;
  2669. break;
  2670. case 1:
  2671. done = 1;
  2672. grammarID = 4;
  2673. break;
  2674. default:
  2675. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2676. break;
  2677. }
  2678. }
  2679. break;
  2680. case 73:
  2681. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2682. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2683. if (errn == 0) {
  2684. switch(eventCode) {
  2685. case 0:
  2686. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2687. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2688. } else {
  2689. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2690. }
  2691. grammarID = 74;
  2692. break;
  2693. case 1:
  2694. done = 1;
  2695. grammarID = 4;
  2696. break;
  2697. default:
  2698. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2699. break;
  2700. }
  2701. }
  2702. break;
  2703. case 74:
  2704. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2705. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2706. if (errn == 0) {
  2707. switch(eventCode) {
  2708. case 0:
  2709. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2710. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2711. } else {
  2712. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2713. }
  2714. grammarID = 75;
  2715. break;
  2716. case 1:
  2717. done = 1;
  2718. grammarID = 4;
  2719. break;
  2720. default:
  2721. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2722. break;
  2723. }
  2724. }
  2725. break;
  2726. case 75:
  2727. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2728. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2729. if (errn == 0) {
  2730. switch(eventCode) {
  2731. case 0:
  2732. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2733. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2734. } else {
  2735. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2736. }
  2737. grammarID = 76;
  2738. break;
  2739. case 1:
  2740. done = 1;
  2741. grammarID = 4;
  2742. break;
  2743. default:
  2744. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2745. break;
  2746. }
  2747. }
  2748. break;
  2749. case 76:
  2750. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */
  2751. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2752. if (errn == 0) {
  2753. switch(eventCode) {
  2754. case 0:
  2755. if (iso1ServiceListType->Service.arrayLen < iso1ServiceListType_Service_ARRAY_SIZE) {
  2756. errn = decode_iso1ServiceType(stream, &iso1ServiceListType->Service.array[iso1ServiceListType->Service.arrayLen++]);
  2757. } else {
  2758. errn = EXI_ERROR_OUT_OF_BOUNDS;
  2759. }
  2760. grammarID = 3;
  2761. break;
  2762. case 1:
  2763. done = 1;
  2764. grammarID = 4;
  2765. break;
  2766. default:
  2767. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2768. break;
  2769. }
  2770. }
  2771. break;
  2772. case 3:
  2773. /* Element[END_ELEMENT] */
  2774. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2775. if (errn == 0) {
  2776. switch(eventCode) {
  2777. case 0:
  2778. done = 1;
  2779. grammarID = 4;
  2780. break;
  2781. default:
  2782. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2783. break;
  2784. }
  2785. }
  2786. break;
  2787. default:
  2788. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2789. break;
  2790. }
  2791. if(errn) {
  2792. done = 1;
  2793. }
  2794. }
  2795. return errn;
  2796. }
  2797. /* 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'. */
  2798. static int decode_iso1EVSEChargeParameterType(bitstream_t* stream, struct iso1EVSEChargeParameterType* iso1EVSEChargeParameterType) {
  2799. int grammarID = 34;
  2800. int done = 0;
  2801. init_iso1EVSEChargeParameterType(iso1EVSEChargeParameterType);
  2802. while(!done) {
  2803. switch(grammarID) {
  2804. case 34:
  2805. /* FirstStartTag[END_ELEMENT] */
  2806. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2807. if (errn == 0) {
  2808. switch(eventCode) {
  2809. case 0:
  2810. done = 1;
  2811. grammarID = 4;
  2812. break;
  2813. default:
  2814. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2815. break;
  2816. }
  2817. }
  2818. break;
  2819. default:
  2820. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2821. break;
  2822. }
  2823. if(errn) {
  2824. done = 1;
  2825. }
  2826. }
  2827. return errn;
  2828. }
  2829. /* 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'. */
  2830. static int decode_iso1EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1EVPowerDeliveryParameterType* iso1EVPowerDeliveryParameterType) {
  2831. int grammarID = 34;
  2832. int done = 0;
  2833. init_iso1EVPowerDeliveryParameterType(iso1EVPowerDeliveryParameterType);
  2834. while(!done) {
  2835. switch(grammarID) {
  2836. case 34:
  2837. /* FirstStartTag[END_ELEMENT] */
  2838. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2839. if (errn == 0) {
  2840. switch(eventCode) {
  2841. case 0:
  2842. done = 1;
  2843. grammarID = 4;
  2844. break;
  2845. default:
  2846. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2847. break;
  2848. }
  2849. }
  2850. break;
  2851. default:
  2852. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2853. break;
  2854. }
  2855. if(errn) {
  2856. done = 1;
  2857. }
  2858. }
  2859. return errn;
  2860. }
  2861. /* 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'. */
  2862. static int decode_iso1ProfileEntryType(bitstream_t* stream, struct iso1ProfileEntryType* iso1ProfileEntryType) {
  2863. int grammarID = 77;
  2864. int done = 0;
  2865. init_iso1ProfileEntryType(iso1ProfileEntryType);
  2866. while(!done) {
  2867. switch(grammarID) {
  2868. case 77:
  2869. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */
  2870. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2871. if (errn == 0) {
  2872. switch(eventCode) {
  2873. case 0:
  2874. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  2875. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2876. if(errn == 0) {
  2877. if(eventCode == 0) {
  2878. errn = decodeUnsignedInteger32(stream, &iso1ProfileEntryType->ChargingProfileEntryStart);
  2879. } else {
  2880. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  2881. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  2882. }
  2883. }
  2884. if(errn == 0) {
  2885. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart) ? */
  2886. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2887. if(eventCode == 0) {
  2888. grammarID = 78;
  2889. } else {
  2890. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  2891. }
  2892. }
  2893. break;
  2894. default:
  2895. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2896. break;
  2897. }
  2898. }
  2899. break;
  2900. case 78:
  2901. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */
  2902. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2903. if (errn == 0) {
  2904. switch(eventCode) {
  2905. case 0:
  2906. errn = decode_iso1PhysicalValueType(stream, &iso1ProfileEntryType->ChargingProfileEntryMaxPower);
  2907. grammarID = 79;
  2908. break;
  2909. default:
  2910. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2911. break;
  2912. }
  2913. }
  2914. break;
  2915. case 79:
  2916. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */
  2917. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2918. if (errn == 0) {
  2919. switch(eventCode) {
  2920. case 0:
  2921. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  2922. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2923. if(errn == 0) {
  2924. if(eventCode == 0) {
  2925. errn = decodeNBitUnsignedInteger(stream, 2, &(uint32));
  2926. iso1ProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse = (int8_t)(uint32 + 1);
  2927. iso1ProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 1u;
  2928. } else {
  2929. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  2930. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  2931. }
  2932. }
  2933. if(errn == 0) {
  2934. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse) ? */
  2935. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2936. if(eventCode == 0) {
  2937. grammarID = 3;
  2938. } else {
  2939. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  2940. }
  2941. }
  2942. break;
  2943. case 1:
  2944. done = 1;
  2945. grammarID = 4;
  2946. break;
  2947. default:
  2948. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2949. break;
  2950. }
  2951. }
  2952. break;
  2953. case 3:
  2954. /* Element[END_ELEMENT] */
  2955. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  2956. if (errn == 0) {
  2957. switch(eventCode) {
  2958. case 0:
  2959. done = 1;
  2960. grammarID = 4;
  2961. break;
  2962. default:
  2963. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  2964. break;
  2965. }
  2966. }
  2967. break;
  2968. default:
  2969. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  2970. break;
  2971. }
  2972. if(errn) {
  2973. done = 1;
  2974. }
  2975. }
  2976. return errn;
  2977. }
  2978. /* 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'. */
  2979. static int decode_iso1AuthorizationReqType(bitstream_t* stream, struct iso1AuthorizationReqType* iso1AuthorizationReqType) {
  2980. int grammarID = 80;
  2981. int done = 0;
  2982. init_iso1AuthorizationReqType(iso1AuthorizationReqType);
  2983. while(!done) {
  2984. switch(grammarID) {
  2985. case 80:
  2986. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */
  2987. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  2988. if (errn == 0) {
  2989. switch(eventCode) {
  2990. case 0:
  2991. errn = decodeUnsignedInteger16(stream, &iso1AuthorizationReqType->Id.charactersLen);
  2992. if (errn == 0) {
  2993. if (iso1AuthorizationReqType->Id.charactersLen >= 2) {
  2994. iso1AuthorizationReqType->Id.charactersLen = (uint16_t)(iso1AuthorizationReqType->Id.charactersLen - 2); /* string table miss */
  2995. errn = decodeCharacters(stream, iso1AuthorizationReqType->Id.charactersLen, iso1AuthorizationReqType->Id.characters, iso1AuthorizationReqType_Id_CHARACTERS_SIZE);
  2996. } else {
  2997. /* string table hit */
  2998. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  2999. }
  3000. }
  3001. iso1AuthorizationReqType->Id_isUsed = 1u;
  3002. grammarID = 81;
  3003. break;
  3004. case 1:
  3005. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  3006. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3007. if(errn == 0) {
  3008. if(eventCode == 0) {
  3009. errn = decodeUnsignedInteger16(stream, &iso1AuthorizationReqType->GenChallenge.bytesLen);
  3010. if (errn == 0) {
  3011. errn = (iso1AuthorizationReqType->GenChallenge.bytesLen) <= iso1AuthorizationReqType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  3012. }
  3013. if (errn == 0) {
  3014. errn = decodeBytes(stream, iso1AuthorizationReqType->GenChallenge.bytesLen, iso1AuthorizationReqType->GenChallenge.bytes);
  3015. }
  3016. iso1AuthorizationReqType->GenChallenge_isUsed = 1u;
  3017. } else {
  3018. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3019. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3020. }
  3021. }
  3022. if(errn == 0) {
  3023. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) ? */
  3024. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3025. if(eventCode == 0) {
  3026. grammarID = 3;
  3027. } else {
  3028. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3029. }
  3030. }
  3031. break;
  3032. case 2:
  3033. done = 1;
  3034. grammarID = 4;
  3035. break;
  3036. default:
  3037. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3038. break;
  3039. }
  3040. }
  3041. break;
  3042. case 81:
  3043. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */
  3044. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3045. if (errn == 0) {
  3046. switch(eventCode) {
  3047. case 0:
  3048. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  3049. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3050. if(errn == 0) {
  3051. if(eventCode == 0) {
  3052. errn = decodeUnsignedInteger16(stream, &iso1AuthorizationReqType->GenChallenge.bytesLen);
  3053. if (errn == 0) {
  3054. errn = (iso1AuthorizationReqType->GenChallenge.bytesLen) <= iso1AuthorizationReqType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  3055. }
  3056. if (errn == 0) {
  3057. errn = decodeBytes(stream, iso1AuthorizationReqType->GenChallenge.bytesLen, iso1AuthorizationReqType->GenChallenge.bytes);
  3058. }
  3059. iso1AuthorizationReqType->GenChallenge_isUsed = 1u;
  3060. } else {
  3061. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3062. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3063. }
  3064. }
  3065. if(errn == 0) {
  3066. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) ? */
  3067. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3068. if(eventCode == 0) {
  3069. grammarID = 3;
  3070. } else {
  3071. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3072. }
  3073. }
  3074. break;
  3075. case 1:
  3076. done = 1;
  3077. grammarID = 4;
  3078. break;
  3079. default:
  3080. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3081. break;
  3082. }
  3083. }
  3084. break;
  3085. case 3:
  3086. /* Element[END_ELEMENT] */
  3087. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3088. if (errn == 0) {
  3089. switch(eventCode) {
  3090. case 0:
  3091. done = 1;
  3092. grammarID = 4;
  3093. break;
  3094. default:
  3095. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3096. break;
  3097. }
  3098. }
  3099. break;
  3100. default:
  3101. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3102. break;
  3103. }
  3104. if(errn) {
  3105. done = 1;
  3106. }
  3107. }
  3108. return errn;
  3109. }
  3110. /* 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'. */
  3111. static int decode_iso1MeterInfoType(bitstream_t* stream, struct iso1MeterInfoType* iso1MeterInfoType) {
  3112. int grammarID = 82;
  3113. int done = 0;
  3114. init_iso1MeterInfoType(iso1MeterInfoType);
  3115. while(!done) {
  3116. switch(grammarID) {
  3117. case 82:
  3118. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */
  3119. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3120. if (errn == 0) {
  3121. switch(eventCode) {
  3122. case 0:
  3123. /* FirstStartTag[CHARACTERS[STRING]] */
  3124. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3125. if(errn == 0) {
  3126. if(eventCode == 0) {
  3127. errn = decodeUnsignedInteger16(stream, &iso1MeterInfoType->MeterID.charactersLen);
  3128. if (errn == 0) {
  3129. if (iso1MeterInfoType->MeterID.charactersLen >= 2) {
  3130. iso1MeterInfoType->MeterID.charactersLen = (uint16_t)(iso1MeterInfoType->MeterID.charactersLen - 2); /* string table miss */
  3131. errn = decodeCharacters(stream, iso1MeterInfoType->MeterID.charactersLen, iso1MeterInfoType->MeterID.characters, iso1MeterInfoType_MeterID_CHARACTERS_SIZE);
  3132. } else {
  3133. /* string table hit */
  3134. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  3135. }
  3136. }
  3137. } else {
  3138. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3139. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3140. }
  3141. }
  3142. if(errn == 0) {
  3143. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID) ? */
  3144. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3145. if(eventCode == 0) {
  3146. grammarID = 83;
  3147. } else {
  3148. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3149. }
  3150. }
  3151. break;
  3152. default:
  3153. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3154. break;
  3155. }
  3156. }
  3157. break;
  3158. case 83:
  3159. /* 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] */
  3160. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  3161. if (errn == 0) {
  3162. switch(eventCode) {
  3163. case 0:
  3164. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  3165. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3166. if(errn == 0) {
  3167. if(eventCode == 0) {
  3168. errn = decodeUnsignedInteger64(stream, &iso1MeterInfoType->MeterReading);
  3169. iso1MeterInfoType->MeterReading_isUsed = 1u;
  3170. } else {
  3171. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3172. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3173. }
  3174. }
  3175. if(errn == 0) {
  3176. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading) ? */
  3177. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3178. if(eventCode == 0) {
  3179. grammarID = 84;
  3180. } else {
  3181. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3182. }
  3183. }
  3184. break;
  3185. case 1:
  3186. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  3187. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3188. if(errn == 0) {
  3189. if(eventCode == 0) {
  3190. errn = decodeUnsignedInteger16(stream, &iso1MeterInfoType->SigMeterReading.bytesLen);
  3191. if (errn == 0) {
  3192. errn = (iso1MeterInfoType->SigMeterReading.bytesLen) <= iso1MeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  3193. }
  3194. if (errn == 0) {
  3195. errn = decodeBytes(stream, iso1MeterInfoType->SigMeterReading.bytesLen, iso1MeterInfoType->SigMeterReading.bytes);
  3196. }
  3197. iso1MeterInfoType->SigMeterReading_isUsed = 1u;
  3198. } else {
  3199. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3200. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3201. }
  3202. }
  3203. if(errn == 0) {
  3204. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading) ? */
  3205. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3206. if(eventCode == 0) {
  3207. grammarID = 85;
  3208. } else {
  3209. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3210. }
  3211. }
  3212. break;
  3213. case 2:
  3214. /* FirstStartTag[CHARACTERS[INTEGER]] */
  3215. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3216. if(errn == 0) {
  3217. if(eventCode == 0) {
  3218. errn = decodeInteger16(stream, &iso1MeterInfoType->MeterStatus);
  3219. iso1MeterInfoType->MeterStatus_isUsed = 1u;
  3220. } else {
  3221. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3222. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3223. }
  3224. }
  3225. if(errn == 0) {
  3226. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) ? */
  3227. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3228. if(eventCode == 0) {
  3229. grammarID = 86;
  3230. } else {
  3231. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3232. }
  3233. }
  3234. break;
  3235. case 3:
  3236. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  3237. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3238. if(errn == 0) {
  3239. if(eventCode == 0) {
  3240. errn = decodeInteger64(stream, &iso1MeterInfoType->TMeter);
  3241. iso1MeterInfoType->TMeter_isUsed = 1u;
  3242. } else {
  3243. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3244. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3245. }
  3246. }
  3247. if(errn == 0) {
  3248. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */
  3249. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3250. if(eventCode == 0) {
  3251. grammarID = 3;
  3252. } else {
  3253. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3254. }
  3255. }
  3256. break;
  3257. case 4:
  3258. done = 1;
  3259. grammarID = 4;
  3260. break;
  3261. default:
  3262. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3263. break;
  3264. }
  3265. }
  3266. break;
  3267. case 84:
  3268. /* 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] */
  3269. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  3270. if (errn == 0) {
  3271. switch(eventCode) {
  3272. case 0:
  3273. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  3274. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3275. if(errn == 0) {
  3276. if(eventCode == 0) {
  3277. errn = decodeUnsignedInteger16(stream, &iso1MeterInfoType->SigMeterReading.bytesLen);
  3278. if (errn == 0) {
  3279. errn = (iso1MeterInfoType->SigMeterReading.bytesLen) <= iso1MeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  3280. }
  3281. if (errn == 0) {
  3282. errn = decodeBytes(stream, iso1MeterInfoType->SigMeterReading.bytesLen, iso1MeterInfoType->SigMeterReading.bytes);
  3283. }
  3284. iso1MeterInfoType->SigMeterReading_isUsed = 1u;
  3285. } else {
  3286. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3287. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3288. }
  3289. }
  3290. if(errn == 0) {
  3291. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading) ? */
  3292. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3293. if(eventCode == 0) {
  3294. grammarID = 85;
  3295. } else {
  3296. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3297. }
  3298. }
  3299. break;
  3300. case 1:
  3301. /* FirstStartTag[CHARACTERS[INTEGER]] */
  3302. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3303. if(errn == 0) {
  3304. if(eventCode == 0) {
  3305. errn = decodeInteger16(stream, &iso1MeterInfoType->MeterStatus);
  3306. iso1MeterInfoType->MeterStatus_isUsed = 1u;
  3307. } else {
  3308. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3309. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3310. }
  3311. }
  3312. if(errn == 0) {
  3313. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) ? */
  3314. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3315. if(eventCode == 0) {
  3316. grammarID = 86;
  3317. } else {
  3318. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3319. }
  3320. }
  3321. break;
  3322. case 2:
  3323. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  3324. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3325. if(errn == 0) {
  3326. if(eventCode == 0) {
  3327. errn = decodeInteger64(stream, &iso1MeterInfoType->TMeter);
  3328. iso1MeterInfoType->TMeter_isUsed = 1u;
  3329. } else {
  3330. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3331. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3332. }
  3333. }
  3334. if(errn == 0) {
  3335. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */
  3336. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3337. if(eventCode == 0) {
  3338. grammarID = 3;
  3339. } else {
  3340. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3341. }
  3342. }
  3343. break;
  3344. case 3:
  3345. done = 1;
  3346. grammarID = 4;
  3347. break;
  3348. default:
  3349. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3350. break;
  3351. }
  3352. }
  3353. break;
  3354. case 85:
  3355. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */
  3356. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3357. if (errn == 0) {
  3358. switch(eventCode) {
  3359. case 0:
  3360. /* FirstStartTag[CHARACTERS[INTEGER]] */
  3361. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3362. if(errn == 0) {
  3363. if(eventCode == 0) {
  3364. errn = decodeInteger16(stream, &iso1MeterInfoType->MeterStatus);
  3365. iso1MeterInfoType->MeterStatus_isUsed = 1u;
  3366. } else {
  3367. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3368. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3369. }
  3370. }
  3371. if(errn == 0) {
  3372. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) ? */
  3373. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3374. if(eventCode == 0) {
  3375. grammarID = 86;
  3376. } else {
  3377. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3378. }
  3379. }
  3380. break;
  3381. case 1:
  3382. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  3383. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3384. if(errn == 0) {
  3385. if(eventCode == 0) {
  3386. errn = decodeInteger64(stream, &iso1MeterInfoType->TMeter);
  3387. iso1MeterInfoType->TMeter_isUsed = 1u;
  3388. } else {
  3389. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3390. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3391. }
  3392. }
  3393. if(errn == 0) {
  3394. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */
  3395. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3396. if(eventCode == 0) {
  3397. grammarID = 3;
  3398. } else {
  3399. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3400. }
  3401. }
  3402. break;
  3403. case 2:
  3404. done = 1;
  3405. grammarID = 4;
  3406. break;
  3407. default:
  3408. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3409. break;
  3410. }
  3411. }
  3412. break;
  3413. case 86:
  3414. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */
  3415. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3416. if (errn == 0) {
  3417. switch(eventCode) {
  3418. case 0:
  3419. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  3420. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3421. if(errn == 0) {
  3422. if(eventCode == 0) {
  3423. errn = decodeInteger64(stream, &iso1MeterInfoType->TMeter);
  3424. iso1MeterInfoType->TMeter_isUsed = 1u;
  3425. } else {
  3426. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3427. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3428. }
  3429. }
  3430. if(errn == 0) {
  3431. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */
  3432. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3433. if(eventCode == 0) {
  3434. grammarID = 3;
  3435. } else {
  3436. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3437. }
  3438. }
  3439. break;
  3440. case 1:
  3441. done = 1;
  3442. grammarID = 4;
  3443. break;
  3444. default:
  3445. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3446. break;
  3447. }
  3448. }
  3449. break;
  3450. case 3:
  3451. /* Element[END_ELEMENT] */
  3452. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3453. if (errn == 0) {
  3454. switch(eventCode) {
  3455. case 0:
  3456. done = 1;
  3457. grammarID = 4;
  3458. break;
  3459. default:
  3460. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3461. break;
  3462. }
  3463. }
  3464. break;
  3465. default:
  3466. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3467. break;
  3468. }
  3469. if(errn) {
  3470. done = 1;
  3471. }
  3472. }
  3473. return errn;
  3474. }
  3475. /* 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'. */
  3476. static int decode_iso1ManifestType(bitstream_t* stream, struct iso1ManifestType* iso1ManifestType) {
  3477. int grammarID = 87;
  3478. int done = 0;
  3479. init_iso1ManifestType(iso1ManifestType);
  3480. while(!done) {
  3481. switch(grammarID) {
  3482. case 87:
  3483. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
  3484. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3485. if (errn == 0) {
  3486. switch(eventCode) {
  3487. case 0:
  3488. errn = decodeUnsignedInteger16(stream, &iso1ManifestType->Id.charactersLen);
  3489. if (errn == 0) {
  3490. if (iso1ManifestType->Id.charactersLen >= 2) {
  3491. iso1ManifestType->Id.charactersLen = (uint16_t)(iso1ManifestType->Id.charactersLen - 2); /* string table miss */
  3492. errn = decodeCharacters(stream, iso1ManifestType->Id.charactersLen, iso1ManifestType->Id.characters, iso1ManifestType_Id_CHARACTERS_SIZE);
  3493. } else {
  3494. /* string table hit */
  3495. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  3496. }
  3497. }
  3498. iso1ManifestType->Id_isUsed = 1u;
  3499. grammarID = 88;
  3500. break;
  3501. case 1:
  3502. if (iso1ManifestType->Reference.arrayLen < iso1ManifestType_Reference_ARRAY_SIZE) {
  3503. errn = decode_iso1ReferenceType(stream, &iso1ManifestType->Reference.array[iso1ManifestType->Reference.arrayLen++]);
  3504. } else {
  3505. errn = EXI_ERROR_OUT_OF_BOUNDS;
  3506. }
  3507. grammarID = 66;
  3508. break;
  3509. default:
  3510. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3511. break;
  3512. }
  3513. }
  3514. break;
  3515. case 88:
  3516. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
  3517. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3518. if (errn == 0) {
  3519. switch(eventCode) {
  3520. case 0:
  3521. if (iso1ManifestType->Reference.arrayLen < iso1ManifestType_Reference_ARRAY_SIZE) {
  3522. errn = decode_iso1ReferenceType(stream, &iso1ManifestType->Reference.array[iso1ManifestType->Reference.arrayLen++]);
  3523. } else {
  3524. errn = EXI_ERROR_OUT_OF_BOUNDS;
  3525. }
  3526. grammarID = 66;
  3527. break;
  3528. default:
  3529. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3530. break;
  3531. }
  3532. }
  3533. break;
  3534. case 66:
  3535. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */
  3536. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3537. if (errn == 0) {
  3538. switch(eventCode) {
  3539. case 0:
  3540. if (iso1ManifestType->Reference.arrayLen < iso1ManifestType_Reference_ARRAY_SIZE) {
  3541. errn = decode_iso1ReferenceType(stream, &iso1ManifestType->Reference.array[iso1ManifestType->Reference.arrayLen++]);
  3542. } else {
  3543. errn = EXI_ERROR_OUT_OF_BOUNDS;
  3544. }
  3545. grammarID = 66;
  3546. break;
  3547. case 1:
  3548. done = 1;
  3549. grammarID = 4;
  3550. break;
  3551. default:
  3552. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3553. break;
  3554. }
  3555. }
  3556. break;
  3557. default:
  3558. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3559. break;
  3560. }
  3561. if(errn) {
  3562. done = 1;
  3563. }
  3564. }
  3565. return errn;
  3566. }
  3567. /* 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'. */
  3568. static int decode_iso1ChargeParameterDiscoveryResType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryResType* iso1ChargeParameterDiscoveryResType) {
  3569. int grammarID = 89;
  3570. int done = 0;
  3571. init_iso1ChargeParameterDiscoveryResType(iso1ChargeParameterDiscoveryResType);
  3572. while(!done) {
  3573. switch(grammarID) {
  3574. case 89:
  3575. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  3576. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3577. if (errn == 0) {
  3578. switch(eventCode) {
  3579. case 0:
  3580. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3581. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3582. if(errn == 0) {
  3583. if(eventCode == 0) {
  3584. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  3585. iso1ChargeParameterDiscoveryResType->ResponseCode = (iso1responseCodeType) uint32;
  3586. } else {
  3587. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3588. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3589. }
  3590. }
  3591. if(errn == 0) {
  3592. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  3593. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3594. if(eventCode == 0) {
  3595. grammarID = 90;
  3596. } else {
  3597. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3598. }
  3599. }
  3600. break;
  3601. default:
  3602. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3603. break;
  3604. }
  3605. }
  3606. break;
  3607. case 90:
  3608. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */
  3609. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3610. if (errn == 0) {
  3611. switch(eventCode) {
  3612. case 0:
  3613. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3614. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3615. if(errn == 0) {
  3616. if(eventCode == 0) {
  3617. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  3618. iso1ChargeParameterDiscoveryResType->EVSEProcessing = (iso1EVSEProcessingType) uint32;
  3619. } else {
  3620. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3621. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3622. }
  3623. }
  3624. if(errn == 0) {
  3625. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) ? */
  3626. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3627. if(eventCode == 0) {
  3628. grammarID = 91;
  3629. } else {
  3630. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3631. }
  3632. }
  3633. break;
  3634. default:
  3635. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3636. break;
  3637. }
  3638. }
  3639. break;
  3640. case 91:
  3641. /* 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)] */
  3642. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  3643. if (errn == 0) {
  3644. switch(eventCode) {
  3645. case 0:
  3646. errn = decode_iso1SAScheduleListType(stream, &iso1ChargeParameterDiscoveryResType->SAScheduleList);
  3647. iso1ChargeParameterDiscoveryResType->SAScheduleList_isUsed = 1u;
  3648. grammarID = 92;
  3649. break;
  3650. case 1:
  3651. errn = decode_iso1SASchedulesType(stream, &iso1ChargeParameterDiscoveryResType->SASchedules);
  3652. iso1ChargeParameterDiscoveryResType->SASchedules_isUsed = 1u;
  3653. grammarID = 92;
  3654. break;
  3655. case 2:
  3656. errn = decode_iso1AC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter);
  3657. iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 1u;
  3658. grammarID = 3;
  3659. break;
  3660. case 3:
  3661. errn = decode_iso1DC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter);
  3662. iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 1u;
  3663. grammarID = 3;
  3664. break;
  3665. case 4:
  3666. errn = decode_iso1EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->EVSEChargeParameter);
  3667. iso1ChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 1u;
  3668. grammarID = 3;
  3669. break;
  3670. default:
  3671. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3672. break;
  3673. }
  3674. }
  3675. break;
  3676. case 92:
  3677. /* 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)] */
  3678. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3679. if (errn == 0) {
  3680. switch(eventCode) {
  3681. case 0:
  3682. errn = decode_iso1AC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter);
  3683. iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 1u;
  3684. grammarID = 3;
  3685. break;
  3686. case 1:
  3687. errn = decode_iso1DC_EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter);
  3688. iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 1u;
  3689. grammarID = 3;
  3690. break;
  3691. case 2:
  3692. errn = decode_iso1EVSEChargeParameterType(stream, &iso1ChargeParameterDiscoveryResType->EVSEChargeParameter);
  3693. iso1ChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 1u;
  3694. grammarID = 3;
  3695. break;
  3696. default:
  3697. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3698. break;
  3699. }
  3700. }
  3701. break;
  3702. case 3:
  3703. /* Element[END_ELEMENT] */
  3704. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3705. if (errn == 0) {
  3706. switch(eventCode) {
  3707. case 0:
  3708. done = 1;
  3709. grammarID = 4;
  3710. break;
  3711. default:
  3712. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3713. break;
  3714. }
  3715. }
  3716. break;
  3717. default:
  3718. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3719. break;
  3720. }
  3721. if(errn) {
  3722. done = 1;
  3723. }
  3724. }
  3725. return errn;
  3726. }
  3727. /* 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'. */
  3728. static int decode_iso1PowerDeliveryResType(bitstream_t* stream, struct iso1PowerDeliveryResType* iso1PowerDeliveryResType) {
  3729. int grammarID = 93;
  3730. int done = 0;
  3731. init_iso1PowerDeliveryResType(iso1PowerDeliveryResType);
  3732. while(!done) {
  3733. switch(grammarID) {
  3734. case 93:
  3735. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  3736. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3737. if (errn == 0) {
  3738. switch(eventCode) {
  3739. case 0:
  3740. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  3741. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3742. if(errn == 0) {
  3743. if(eventCode == 0) {
  3744. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  3745. iso1PowerDeliveryResType->ResponseCode = (iso1responseCodeType) uint32;
  3746. } else {
  3747. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3748. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3749. }
  3750. }
  3751. if(errn == 0) {
  3752. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  3753. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3754. if(eventCode == 0) {
  3755. grammarID = 94;
  3756. } else {
  3757. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3758. }
  3759. }
  3760. break;
  3761. default:
  3762. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3763. break;
  3764. }
  3765. }
  3766. break;
  3767. case 94:
  3768. /* 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)] */
  3769. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3770. if (errn == 0) {
  3771. switch(eventCode) {
  3772. case 0:
  3773. errn = decode_iso1AC_EVSEStatusType(stream, &iso1PowerDeliveryResType->AC_EVSEStatus);
  3774. iso1PowerDeliveryResType->AC_EVSEStatus_isUsed = 1u;
  3775. grammarID = 3;
  3776. break;
  3777. case 1:
  3778. errn = decode_iso1DC_EVSEStatusType(stream, &iso1PowerDeliveryResType->DC_EVSEStatus);
  3779. iso1PowerDeliveryResType->DC_EVSEStatus_isUsed = 1u;
  3780. grammarID = 3;
  3781. break;
  3782. case 2:
  3783. errn = decode_iso1EVSEStatusType(stream, &iso1PowerDeliveryResType->EVSEStatus);
  3784. iso1PowerDeliveryResType->EVSEStatus_isUsed = 1u;
  3785. grammarID = 3;
  3786. break;
  3787. default:
  3788. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3789. break;
  3790. }
  3791. }
  3792. break;
  3793. case 3:
  3794. /* Element[END_ELEMENT] */
  3795. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3796. if (errn == 0) {
  3797. switch(eventCode) {
  3798. case 0:
  3799. done = 1;
  3800. grammarID = 4;
  3801. break;
  3802. default:
  3803. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3804. break;
  3805. }
  3806. }
  3807. break;
  3808. default:
  3809. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  3810. break;
  3811. }
  3812. if(errn) {
  3813. done = 1;
  3814. }
  3815. }
  3816. return errn;
  3817. }
  3818. /* 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'. */
  3819. static int decode_iso1DC_EVChargeParameterType(bitstream_t* stream, struct iso1DC_EVChargeParameterType* iso1DC_EVChargeParameterType) {
  3820. int grammarID = 95;
  3821. int done = 0;
  3822. init_iso1DC_EVChargeParameterType(iso1DC_EVChargeParameterType);
  3823. while(!done) {
  3824. switch(grammarID) {
  3825. case 95:
  3826. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */
  3827. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3828. if (errn == 0) {
  3829. switch(eventCode) {
  3830. case 0:
  3831. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  3832. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3833. if(errn == 0) {
  3834. if(eventCode == 0) {
  3835. errn = decodeUnsignedInteger32(stream, &iso1DC_EVChargeParameterType->DepartureTime);
  3836. iso1DC_EVChargeParameterType->DepartureTime_isUsed = 1u;
  3837. } else {
  3838. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3839. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3840. }
  3841. }
  3842. if(errn == 0) {
  3843. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) ? */
  3844. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3845. if(eventCode == 0) {
  3846. grammarID = 96;
  3847. } else {
  3848. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3849. }
  3850. }
  3851. break;
  3852. case 1:
  3853. errn = decode_iso1DC_EVStatusType(stream, &iso1DC_EVChargeParameterType->DC_EVStatus);
  3854. grammarID = 97;
  3855. break;
  3856. default:
  3857. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3858. break;
  3859. }
  3860. }
  3861. break;
  3862. case 96:
  3863. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */
  3864. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3865. if (errn == 0) {
  3866. switch(eventCode) {
  3867. case 0:
  3868. errn = decode_iso1DC_EVStatusType(stream, &iso1DC_EVChargeParameterType->DC_EVStatus);
  3869. grammarID = 97;
  3870. break;
  3871. default:
  3872. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3873. break;
  3874. }
  3875. }
  3876. break;
  3877. case 97:
  3878. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */
  3879. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3880. if (errn == 0) {
  3881. switch(eventCode) {
  3882. case 0:
  3883. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumCurrentLimit);
  3884. grammarID = 98;
  3885. break;
  3886. default:
  3887. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3888. break;
  3889. }
  3890. }
  3891. break;
  3892. case 98:
  3893. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */
  3894. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  3895. if (errn == 0) {
  3896. switch(eventCode) {
  3897. case 0:
  3898. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumPowerLimit);
  3899. iso1DC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 1u;
  3900. grammarID = 99;
  3901. break;
  3902. case 1:
  3903. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumVoltageLimit);
  3904. grammarID = 100;
  3905. break;
  3906. default:
  3907. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3908. break;
  3909. }
  3910. }
  3911. break;
  3912. case 99:
  3913. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */
  3914. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3915. if (errn == 0) {
  3916. switch(eventCode) {
  3917. case 0:
  3918. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVMaximumVoltageLimit);
  3919. grammarID = 100;
  3920. break;
  3921. default:
  3922. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3923. break;
  3924. }
  3925. }
  3926. break;
  3927. case 100:
  3928. /* 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] */
  3929. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  3930. if (errn == 0) {
  3931. switch(eventCode) {
  3932. case 0:
  3933. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVEnergyCapacity);
  3934. iso1DC_EVChargeParameterType->EVEnergyCapacity_isUsed = 1u;
  3935. grammarID = 101;
  3936. break;
  3937. case 1:
  3938. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVEnergyRequest);
  3939. iso1DC_EVChargeParameterType->EVEnergyRequest_isUsed = 1u;
  3940. grammarID = 102;
  3941. break;
  3942. case 2:
  3943. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  3944. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3945. if(errn == 0) {
  3946. if(eventCode == 0) {
  3947. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  3948. iso1DC_EVChargeParameterType->FullSOC = (int8_t)(uint32 + 0);
  3949. iso1DC_EVChargeParameterType->FullSOC_isUsed = 1u;
  3950. } else {
  3951. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3952. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3953. }
  3954. }
  3955. if(errn == 0) {
  3956. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) ? */
  3957. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3958. if(eventCode == 0) {
  3959. grammarID = 103;
  3960. } else {
  3961. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3962. }
  3963. }
  3964. break;
  3965. case 3:
  3966. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  3967. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3968. if(errn == 0) {
  3969. if(eventCode == 0) {
  3970. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  3971. iso1DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
  3972. iso1DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
  3973. } else {
  3974. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  3975. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  3976. }
  3977. }
  3978. if(errn == 0) {
  3979. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */
  3980. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  3981. if(eventCode == 0) {
  3982. grammarID = 3;
  3983. } else {
  3984. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  3985. }
  3986. }
  3987. break;
  3988. case 4:
  3989. done = 1;
  3990. grammarID = 4;
  3991. break;
  3992. default:
  3993. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  3994. break;
  3995. }
  3996. }
  3997. break;
  3998. case 101:
  3999. /* 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] */
  4000. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  4001. if (errn == 0) {
  4002. switch(eventCode) {
  4003. case 0:
  4004. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVChargeParameterType->EVEnergyRequest);
  4005. iso1DC_EVChargeParameterType->EVEnergyRequest_isUsed = 1u;
  4006. grammarID = 102;
  4007. break;
  4008. case 1:
  4009. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4010. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4011. if(errn == 0) {
  4012. if(eventCode == 0) {
  4013. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  4014. iso1DC_EVChargeParameterType->FullSOC = (int8_t)(uint32 + 0);
  4015. iso1DC_EVChargeParameterType->FullSOC_isUsed = 1u;
  4016. } else {
  4017. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4018. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4019. }
  4020. }
  4021. if(errn == 0) {
  4022. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) ? */
  4023. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4024. if(eventCode == 0) {
  4025. grammarID = 103;
  4026. } else {
  4027. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4028. }
  4029. }
  4030. break;
  4031. case 2:
  4032. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4033. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4034. if(errn == 0) {
  4035. if(eventCode == 0) {
  4036. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  4037. iso1DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
  4038. iso1DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
  4039. } else {
  4040. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4041. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4042. }
  4043. }
  4044. if(errn == 0) {
  4045. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */
  4046. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4047. if(eventCode == 0) {
  4048. grammarID = 3;
  4049. } else {
  4050. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4051. }
  4052. }
  4053. break;
  4054. case 3:
  4055. done = 1;
  4056. grammarID = 4;
  4057. break;
  4058. default:
  4059. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4060. break;
  4061. }
  4062. }
  4063. break;
  4064. case 102:
  4065. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */
  4066. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4067. if (errn == 0) {
  4068. switch(eventCode) {
  4069. case 0:
  4070. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4071. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4072. if(errn == 0) {
  4073. if(eventCode == 0) {
  4074. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  4075. iso1DC_EVChargeParameterType->FullSOC = (int8_t)(uint32 + 0);
  4076. iso1DC_EVChargeParameterType->FullSOC_isUsed = 1u;
  4077. } else {
  4078. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4079. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4080. }
  4081. }
  4082. if(errn == 0) {
  4083. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) ? */
  4084. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4085. if(eventCode == 0) {
  4086. grammarID = 103;
  4087. } else {
  4088. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4089. }
  4090. }
  4091. break;
  4092. case 1:
  4093. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4094. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4095. if(errn == 0) {
  4096. if(eventCode == 0) {
  4097. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  4098. iso1DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
  4099. iso1DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
  4100. } else {
  4101. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4102. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4103. }
  4104. }
  4105. if(errn == 0) {
  4106. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */
  4107. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4108. if(eventCode == 0) {
  4109. grammarID = 3;
  4110. } else {
  4111. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4112. }
  4113. }
  4114. break;
  4115. case 2:
  4116. done = 1;
  4117. grammarID = 4;
  4118. break;
  4119. default:
  4120. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4121. break;
  4122. }
  4123. }
  4124. break;
  4125. case 103:
  4126. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */
  4127. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4128. if (errn == 0) {
  4129. switch(eventCode) {
  4130. case 0:
  4131. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4132. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4133. if(errn == 0) {
  4134. if(eventCode == 0) {
  4135. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  4136. iso1DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
  4137. iso1DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
  4138. } else {
  4139. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4140. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4141. }
  4142. }
  4143. if(errn == 0) {
  4144. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */
  4145. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4146. if(eventCode == 0) {
  4147. grammarID = 3;
  4148. } else {
  4149. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4150. }
  4151. }
  4152. break;
  4153. case 1:
  4154. done = 1;
  4155. grammarID = 4;
  4156. break;
  4157. default:
  4158. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4159. break;
  4160. }
  4161. }
  4162. break;
  4163. case 3:
  4164. /* Element[END_ELEMENT] */
  4165. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4166. if (errn == 0) {
  4167. switch(eventCode) {
  4168. case 0:
  4169. done = 1;
  4170. grammarID = 4;
  4171. break;
  4172. default:
  4173. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4174. break;
  4175. }
  4176. }
  4177. break;
  4178. default:
  4179. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4180. break;
  4181. }
  4182. if(errn) {
  4183. done = 1;
  4184. }
  4185. }
  4186. return errn;
  4187. }
  4188. /* 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'. */
  4189. static int decode_iso1ConsumptionCostType(bitstream_t* stream, struct iso1ConsumptionCostType* iso1ConsumptionCostType) {
  4190. int grammarID = 104;
  4191. int done = 0;
  4192. init_iso1ConsumptionCostType(iso1ConsumptionCostType);
  4193. while(!done) {
  4194. switch(grammarID) {
  4195. case 104:
  4196. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */
  4197. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4198. if (errn == 0) {
  4199. switch(eventCode) {
  4200. case 0:
  4201. errn = decode_iso1PhysicalValueType(stream, &iso1ConsumptionCostType->startValue);
  4202. grammarID = 105;
  4203. break;
  4204. default:
  4205. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4206. break;
  4207. }
  4208. }
  4209. break;
  4210. case 105:
  4211. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */
  4212. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4213. if (errn == 0) {
  4214. switch(eventCode) {
  4215. case 0:
  4216. if (iso1ConsumptionCostType->Cost.arrayLen < iso1ConsumptionCostType_Cost_ARRAY_SIZE) {
  4217. errn = decode_iso1CostType(stream, &iso1ConsumptionCostType->Cost.array[iso1ConsumptionCostType->Cost.arrayLen++]);
  4218. } else {
  4219. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4220. }
  4221. grammarID = 106;
  4222. break;
  4223. default:
  4224. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4225. break;
  4226. }
  4227. }
  4228. break;
  4229. case 106:
  4230. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */
  4231. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4232. if (errn == 0) {
  4233. switch(eventCode) {
  4234. case 0:
  4235. if (iso1ConsumptionCostType->Cost.arrayLen < iso1ConsumptionCostType_Cost_ARRAY_SIZE) {
  4236. errn = decode_iso1CostType(stream, &iso1ConsumptionCostType->Cost.array[iso1ConsumptionCostType->Cost.arrayLen++]);
  4237. } else {
  4238. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4239. }
  4240. grammarID = 107;
  4241. break;
  4242. case 1:
  4243. done = 1;
  4244. grammarID = 4;
  4245. break;
  4246. default:
  4247. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4248. break;
  4249. }
  4250. }
  4251. break;
  4252. case 107:
  4253. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */
  4254. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4255. if (errn == 0) {
  4256. switch(eventCode) {
  4257. case 0:
  4258. if (iso1ConsumptionCostType->Cost.arrayLen < iso1ConsumptionCostType_Cost_ARRAY_SIZE) {
  4259. errn = decode_iso1CostType(stream, &iso1ConsumptionCostType->Cost.array[iso1ConsumptionCostType->Cost.arrayLen++]);
  4260. } else {
  4261. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4262. }
  4263. grammarID = 3;
  4264. break;
  4265. case 1:
  4266. done = 1;
  4267. grammarID = 4;
  4268. break;
  4269. default:
  4270. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4271. break;
  4272. }
  4273. }
  4274. break;
  4275. case 3:
  4276. /* Element[END_ELEMENT] */
  4277. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4278. if (errn == 0) {
  4279. switch(eventCode) {
  4280. case 0:
  4281. done = 1;
  4282. grammarID = 4;
  4283. break;
  4284. default:
  4285. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4286. break;
  4287. }
  4288. }
  4289. break;
  4290. default:
  4291. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4292. break;
  4293. }
  4294. if(errn) {
  4295. done = 1;
  4296. }
  4297. }
  4298. return errn;
  4299. }
  4300. /* 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'. */
  4301. static int decode_iso1PMaxScheduleType(bitstream_t* stream, struct iso1PMaxScheduleType* iso1PMaxScheduleType) {
  4302. int grammarID = 108;
  4303. int done = 0;
  4304. init_iso1PMaxScheduleType(iso1PMaxScheduleType);
  4305. while(!done) {
  4306. switch(grammarID) {
  4307. case 108:
  4308. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */
  4309. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4310. if (errn == 0) {
  4311. switch(eventCode) {
  4312. case 0:
  4313. if (iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen < iso1PMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE) {
  4314. errn = decode_iso1PMaxScheduleEntryType(stream, &iso1PMaxScheduleType->PMaxScheduleEntry.array[iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen++]);
  4315. } else {
  4316. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4317. }
  4318. grammarID = 109;
  4319. break;
  4320. default:
  4321. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4322. break;
  4323. }
  4324. }
  4325. break;
  4326. case 109:
  4327. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */
  4328. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4329. if (errn == 0) {
  4330. switch(eventCode) {
  4331. case 0:
  4332. if (iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen < iso1PMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE) {
  4333. errn = decode_iso1PMaxScheduleEntryType(stream, &iso1PMaxScheduleType->PMaxScheduleEntry.array[iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen++]);
  4334. } else {
  4335. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4336. }
  4337. grammarID = 109;
  4338. break;
  4339. case 1:
  4340. done = 1;
  4341. grammarID = 4;
  4342. break;
  4343. default:
  4344. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4345. break;
  4346. }
  4347. }
  4348. break;
  4349. default:
  4350. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4351. break;
  4352. }
  4353. if(errn) {
  4354. done = 1;
  4355. }
  4356. }
  4357. return errn;
  4358. }
  4359. /* 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'. */
  4360. static int decode_iso1PaymentOptionListType(bitstream_t* stream, struct iso1PaymentOptionListType* iso1PaymentOptionListType) {
  4361. int grammarID = 110;
  4362. int done = 0;
  4363. init_iso1PaymentOptionListType(iso1PaymentOptionListType);
  4364. while(!done) {
  4365. switch(grammarID) {
  4366. case 110:
  4367. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */
  4368. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4369. if (errn == 0) {
  4370. switch(eventCode) {
  4371. case 0:
  4372. if (iso1PaymentOptionListType->PaymentOption.arrayLen < iso1PaymentOptionListType_PaymentOption_ARRAY_SIZE) {
  4373. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4374. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4375. if(errn == 0) {
  4376. if(eventCode == 0) {
  4377. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  4378. iso1PaymentOptionListType->PaymentOption.array[iso1PaymentOptionListType->PaymentOption.arrayLen] = (iso1paymentOptionType) uint32;
  4379. iso1PaymentOptionListType->PaymentOption.arrayLen++;
  4380. } else {
  4381. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4382. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4383. }
  4384. }
  4385. } else {
  4386. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4387. }
  4388. if(errn == 0) {
  4389. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption) ? */
  4390. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4391. if(eventCode == 0) {
  4392. grammarID = 111;
  4393. } else {
  4394. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4395. }
  4396. }
  4397. break;
  4398. default:
  4399. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4400. break;
  4401. }
  4402. }
  4403. break;
  4404. case 111:
  4405. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */
  4406. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4407. if (errn == 0) {
  4408. switch(eventCode) {
  4409. case 0:
  4410. if (iso1PaymentOptionListType->PaymentOption.arrayLen < iso1PaymentOptionListType_PaymentOption_ARRAY_SIZE) {
  4411. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4412. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4413. if(errn == 0) {
  4414. if(eventCode == 0) {
  4415. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  4416. iso1PaymentOptionListType->PaymentOption.array[iso1PaymentOptionListType->PaymentOption.arrayLen] = (iso1paymentOptionType) uint32;
  4417. iso1PaymentOptionListType->PaymentOption.arrayLen++;
  4418. } else {
  4419. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4420. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4421. }
  4422. }
  4423. } else {
  4424. errn = EXI_ERROR_OUT_OF_BOUNDS;
  4425. }
  4426. if(errn == 0) {
  4427. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption) ? */
  4428. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4429. if(eventCode == 0) {
  4430. grammarID = 3;
  4431. } else {
  4432. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4433. }
  4434. }
  4435. break;
  4436. case 1:
  4437. done = 1;
  4438. grammarID = 4;
  4439. break;
  4440. default:
  4441. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4442. break;
  4443. }
  4444. }
  4445. break;
  4446. case 3:
  4447. /* Element[END_ELEMENT] */
  4448. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4449. if (errn == 0) {
  4450. switch(eventCode) {
  4451. case 0:
  4452. done = 1;
  4453. grammarID = 4;
  4454. break;
  4455. default:
  4456. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4457. break;
  4458. }
  4459. }
  4460. break;
  4461. default:
  4462. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4463. break;
  4464. }
  4465. if(errn) {
  4466. done = 1;
  4467. }
  4468. }
  4469. return errn;
  4470. }
  4471. /* 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'. */
  4472. static int decode_iso1ObjectType(bitstream_t* stream, struct iso1ObjectType* iso1ObjectType) {
  4473. int grammarID = 112;
  4474. int done = 0;
  4475. init_iso1ObjectType(iso1ObjectType);
  4476. while(!done) {
  4477. switch(grammarID) {
  4478. case 112:
  4479. /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  4480. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  4481. if (errn == 0) {
  4482. switch(eventCode) {
  4483. case 0:
  4484. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->Encoding.charactersLen);
  4485. if (errn == 0) {
  4486. if (iso1ObjectType->Encoding.charactersLen >= 2) {
  4487. iso1ObjectType->Encoding.charactersLen = (uint16_t)(iso1ObjectType->Encoding.charactersLen - 2); /* string table miss */
  4488. errn = decodeCharacters(stream, iso1ObjectType->Encoding.charactersLen, iso1ObjectType->Encoding.characters, iso1ObjectType_Encoding_CHARACTERS_SIZE);
  4489. } else {
  4490. /* string table hit */
  4491. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4492. }
  4493. }
  4494. iso1ObjectType->Encoding_isUsed = 1u;
  4495. grammarID = 113;
  4496. break;
  4497. case 1:
  4498. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->Id.charactersLen);
  4499. if (errn == 0) {
  4500. if (iso1ObjectType->Id.charactersLen >= 2) {
  4501. iso1ObjectType->Id.charactersLen = (uint16_t)(iso1ObjectType->Id.charactersLen - 2); /* string table miss */
  4502. errn = decodeCharacters(stream, iso1ObjectType->Id.charactersLen, iso1ObjectType->Id.characters, iso1ObjectType_Id_CHARACTERS_SIZE);
  4503. } else {
  4504. /* string table hit */
  4505. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4506. }
  4507. }
  4508. iso1ObjectType->Id_isUsed = 1u;
  4509. grammarID = 114;
  4510. break;
  4511. case 2:
  4512. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->MimeType.charactersLen);
  4513. if (errn == 0) {
  4514. if (iso1ObjectType->MimeType.charactersLen >= 2) {
  4515. iso1ObjectType->MimeType.charactersLen = (uint16_t)(iso1ObjectType->MimeType.charactersLen - 2); /* string table miss */
  4516. errn = decodeCharacters(stream, iso1ObjectType->MimeType.charactersLen, iso1ObjectType->MimeType.characters, iso1ObjectType_MimeType_CHARACTERS_SIZE);
  4517. } else {
  4518. /* string table hit */
  4519. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4520. }
  4521. }
  4522. iso1ObjectType->MimeType_isUsed = 1u;
  4523. grammarID = 115;
  4524. break;
  4525. case 3:
  4526. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4527. /* TODO unsupported event : START_ELEMENT_GENERIC */
  4528. grammarID = 116;
  4529. break;
  4530. case 4:
  4531. done = 1;
  4532. grammarID = 4;
  4533. break;
  4534. case 5:
  4535. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->ANY.charactersLen);
  4536. if (errn == 0) {
  4537. if (iso1ObjectType->ANY.charactersLen >= 2) {
  4538. iso1ObjectType->ANY.charactersLen = (uint16_t)(iso1ObjectType->ANY.charactersLen - 2); /* string table miss */
  4539. errn = decodeCharacters(stream, iso1ObjectType->ANY.charactersLen, iso1ObjectType->ANY.characters, iso1ObjectType_ANY_CHARACTERS_SIZE);
  4540. } else {
  4541. /* string table hit */
  4542. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4543. }
  4544. }
  4545. iso1ObjectType->ANY_isUsed = 1u;
  4546. grammarID = 116;
  4547. break;
  4548. default:
  4549. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4550. break;
  4551. }
  4552. }
  4553. break;
  4554. case 113:
  4555. /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  4556. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  4557. if (errn == 0) {
  4558. switch(eventCode) {
  4559. case 0:
  4560. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->Id.charactersLen);
  4561. if (errn == 0) {
  4562. if (iso1ObjectType->Id.charactersLen >= 2) {
  4563. iso1ObjectType->Id.charactersLen = (uint16_t)(iso1ObjectType->Id.charactersLen - 2); /* string table miss */
  4564. errn = decodeCharacters(stream, iso1ObjectType->Id.charactersLen, iso1ObjectType->Id.characters, iso1ObjectType_Id_CHARACTERS_SIZE);
  4565. } else {
  4566. /* string table hit */
  4567. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4568. }
  4569. }
  4570. iso1ObjectType->Id_isUsed = 1u;
  4571. grammarID = 114;
  4572. break;
  4573. case 1:
  4574. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->MimeType.charactersLen);
  4575. if (errn == 0) {
  4576. if (iso1ObjectType->MimeType.charactersLen >= 2) {
  4577. iso1ObjectType->MimeType.charactersLen = (uint16_t)(iso1ObjectType->MimeType.charactersLen - 2); /* string table miss */
  4578. errn = decodeCharacters(stream, iso1ObjectType->MimeType.charactersLen, iso1ObjectType->MimeType.characters, iso1ObjectType_MimeType_CHARACTERS_SIZE);
  4579. } else {
  4580. /* string table hit */
  4581. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4582. }
  4583. }
  4584. iso1ObjectType->MimeType_isUsed = 1u;
  4585. grammarID = 115;
  4586. break;
  4587. case 2:
  4588. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4589. /* TODO unsupported event : START_ELEMENT_GENERIC */
  4590. grammarID = 116;
  4591. break;
  4592. case 3:
  4593. done = 1;
  4594. grammarID = 4;
  4595. break;
  4596. case 4:
  4597. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->ANY.charactersLen);
  4598. if (errn == 0) {
  4599. if (iso1ObjectType->ANY.charactersLen >= 2) {
  4600. iso1ObjectType->ANY.charactersLen = (uint16_t)(iso1ObjectType->ANY.charactersLen - 2); /* string table miss */
  4601. errn = decodeCharacters(stream, iso1ObjectType->ANY.charactersLen, iso1ObjectType->ANY.characters, iso1ObjectType_ANY_CHARACTERS_SIZE);
  4602. } else {
  4603. /* string table hit */
  4604. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4605. }
  4606. }
  4607. iso1ObjectType->ANY_isUsed = 1u;
  4608. grammarID = 116;
  4609. break;
  4610. default:
  4611. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4612. break;
  4613. }
  4614. }
  4615. break;
  4616. case 114:
  4617. /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  4618. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  4619. if (errn == 0) {
  4620. switch(eventCode) {
  4621. case 0:
  4622. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->MimeType.charactersLen);
  4623. if (errn == 0) {
  4624. if (iso1ObjectType->MimeType.charactersLen >= 2) {
  4625. iso1ObjectType->MimeType.charactersLen = (uint16_t)(iso1ObjectType->MimeType.charactersLen - 2); /* string table miss */
  4626. errn = decodeCharacters(stream, iso1ObjectType->MimeType.charactersLen, iso1ObjectType->MimeType.characters, iso1ObjectType_MimeType_CHARACTERS_SIZE);
  4627. } else {
  4628. /* string table hit */
  4629. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4630. }
  4631. }
  4632. iso1ObjectType->MimeType_isUsed = 1u;
  4633. grammarID = 115;
  4634. break;
  4635. case 1:
  4636. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4637. /* TODO unsupported event : START_ELEMENT_GENERIC */
  4638. grammarID = 116;
  4639. break;
  4640. case 2:
  4641. done = 1;
  4642. grammarID = 4;
  4643. break;
  4644. case 3:
  4645. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->ANY.charactersLen);
  4646. if (errn == 0) {
  4647. if (iso1ObjectType->ANY.charactersLen >= 2) {
  4648. iso1ObjectType->ANY.charactersLen = (uint16_t)(iso1ObjectType->ANY.charactersLen - 2); /* string table miss */
  4649. errn = decodeCharacters(stream, iso1ObjectType->ANY.charactersLen, iso1ObjectType->ANY.characters, iso1ObjectType_ANY_CHARACTERS_SIZE);
  4650. } else {
  4651. /* string table hit */
  4652. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4653. }
  4654. }
  4655. iso1ObjectType->ANY_isUsed = 1u;
  4656. grammarID = 116;
  4657. break;
  4658. default:
  4659. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4660. break;
  4661. }
  4662. }
  4663. break;
  4664. case 115:
  4665. /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  4666. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4667. if (errn == 0) {
  4668. switch(eventCode) {
  4669. case 0:
  4670. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4671. /* TODO unsupported event : START_ELEMENT_GENERIC */
  4672. grammarID = 116;
  4673. break;
  4674. case 1:
  4675. done = 1;
  4676. grammarID = 4;
  4677. break;
  4678. case 2:
  4679. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->ANY.charactersLen);
  4680. if (errn == 0) {
  4681. if (iso1ObjectType->ANY.charactersLen >= 2) {
  4682. iso1ObjectType->ANY.charactersLen = (uint16_t)(iso1ObjectType->ANY.charactersLen - 2); /* string table miss */
  4683. errn = decodeCharacters(stream, iso1ObjectType->ANY.charactersLen, iso1ObjectType->ANY.characters, iso1ObjectType_ANY_CHARACTERS_SIZE);
  4684. } else {
  4685. /* string table hit */
  4686. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4687. }
  4688. }
  4689. iso1ObjectType->ANY_isUsed = 1u;
  4690. grammarID = 116;
  4691. break;
  4692. default:
  4693. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4694. break;
  4695. }
  4696. }
  4697. break;
  4698. case 116:
  4699. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  4700. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  4701. if (errn == 0) {
  4702. switch(eventCode) {
  4703. case 0:
  4704. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4705. /* TODO unsupported event : START_ELEMENT_GENERIC */
  4706. grammarID = 116;
  4707. break;
  4708. case 1:
  4709. done = 1;
  4710. grammarID = 4;
  4711. break;
  4712. case 2:
  4713. errn = decodeUnsignedInteger16(stream, &iso1ObjectType->ANY.charactersLen);
  4714. if (errn == 0) {
  4715. if (iso1ObjectType->ANY.charactersLen >= 2) {
  4716. iso1ObjectType->ANY.charactersLen = (uint16_t)(iso1ObjectType->ANY.charactersLen - 2); /* string table miss */
  4717. errn = decodeCharacters(stream, iso1ObjectType->ANY.charactersLen, iso1ObjectType->ANY.characters, iso1ObjectType_ANY_CHARACTERS_SIZE);
  4718. } else {
  4719. /* string table hit */
  4720. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  4721. }
  4722. }
  4723. iso1ObjectType->ANY_isUsed = 1u;
  4724. grammarID = 116;
  4725. break;
  4726. default:
  4727. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4728. break;
  4729. }
  4730. }
  4731. break;
  4732. default:
  4733. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4734. break;
  4735. }
  4736. if(errn) {
  4737. done = 1;
  4738. }
  4739. }
  4740. return errn;
  4741. }
  4742. /* 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'. */
  4743. static int decode_iso1PhysicalValueType(bitstream_t* stream, struct iso1PhysicalValueType* iso1PhysicalValueType) {
  4744. int grammarID = 117;
  4745. int done = 0;
  4746. init_iso1PhysicalValueType(iso1PhysicalValueType);
  4747. while(!done) {
  4748. switch(grammarID) {
  4749. case 117:
  4750. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */
  4751. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4752. if (errn == 0) {
  4753. switch(eventCode) {
  4754. case 0:
  4755. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  4756. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4757. if(errn == 0) {
  4758. if(eventCode == 0) {
  4759. errn = decodeNBitUnsignedInteger(stream, 3, &(uint32));
  4760. iso1PhysicalValueType->Multiplier = (int8_t)(uint32 -3);
  4761. } else {
  4762. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4763. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4764. }
  4765. }
  4766. if(errn == 0) {
  4767. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier) ? */
  4768. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4769. if(eventCode == 0) {
  4770. grammarID = 118;
  4771. } else {
  4772. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4773. }
  4774. }
  4775. break;
  4776. default:
  4777. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4778. break;
  4779. }
  4780. }
  4781. break;
  4782. case 118:
  4783. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */
  4784. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4785. if (errn == 0) {
  4786. switch(eventCode) {
  4787. case 0:
  4788. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4789. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4790. if(errn == 0) {
  4791. if(eventCode == 0) {
  4792. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  4793. iso1PhysicalValueType->Unit = (iso1unitSymbolType) uint32;
  4794. } else {
  4795. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4796. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4797. }
  4798. }
  4799. if(errn == 0) {
  4800. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit) ? */
  4801. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4802. if(eventCode == 0) {
  4803. grammarID = 119;
  4804. } else {
  4805. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4806. }
  4807. }
  4808. break;
  4809. default:
  4810. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4811. break;
  4812. }
  4813. }
  4814. break;
  4815. case 119:
  4816. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */
  4817. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4818. if (errn == 0) {
  4819. switch(eventCode) {
  4820. case 0:
  4821. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  4822. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4823. if(errn == 0) {
  4824. if(eventCode == 0) {
  4825. errn = decodeInteger16(stream, &iso1PhysicalValueType->Value);
  4826. } else {
  4827. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4828. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4829. }
  4830. }
  4831. if(errn == 0) {
  4832. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value) ? */
  4833. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4834. if(eventCode == 0) {
  4835. grammarID = 3;
  4836. } else {
  4837. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4838. }
  4839. }
  4840. break;
  4841. default:
  4842. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4843. break;
  4844. }
  4845. }
  4846. break;
  4847. case 3:
  4848. /* Element[END_ELEMENT] */
  4849. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4850. if (errn == 0) {
  4851. switch(eventCode) {
  4852. case 0:
  4853. done = 1;
  4854. grammarID = 4;
  4855. break;
  4856. default:
  4857. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4858. break;
  4859. }
  4860. }
  4861. break;
  4862. default:
  4863. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4864. break;
  4865. }
  4866. if(errn) {
  4867. done = 1;
  4868. }
  4869. }
  4870. return errn;
  4871. }
  4872. /* 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'. */
  4873. static int decode_iso1RSAKeyValueType(bitstream_t* stream, struct iso1RSAKeyValueType* iso1RSAKeyValueType) {
  4874. int grammarID = 120;
  4875. int done = 0;
  4876. init_iso1RSAKeyValueType(iso1RSAKeyValueType);
  4877. while(!done) {
  4878. switch(grammarID) {
  4879. case 120:
  4880. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */
  4881. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4882. if (errn == 0) {
  4883. switch(eventCode) {
  4884. case 0:
  4885. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4886. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4887. if(errn == 0) {
  4888. if(eventCode == 0) {
  4889. errn = decodeUnsignedInteger16(stream, &iso1RSAKeyValueType->Modulus.bytesLen);
  4890. if (errn == 0) {
  4891. errn = (iso1RSAKeyValueType->Modulus.bytesLen) <= iso1RSAKeyValueType_Modulus_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  4892. }
  4893. if (errn == 0) {
  4894. errn = decodeBytes(stream, iso1RSAKeyValueType->Modulus.bytesLen, iso1RSAKeyValueType->Modulus.bytes);
  4895. }
  4896. } else {
  4897. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4898. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4899. }
  4900. }
  4901. if(errn == 0) {
  4902. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus) ? */
  4903. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4904. if(eventCode == 0) {
  4905. grammarID = 121;
  4906. } else {
  4907. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4908. }
  4909. }
  4910. break;
  4911. default:
  4912. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4913. break;
  4914. }
  4915. }
  4916. break;
  4917. case 121:
  4918. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */
  4919. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4920. if (errn == 0) {
  4921. switch(eventCode) {
  4922. case 0:
  4923. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  4924. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4925. if(errn == 0) {
  4926. if(eventCode == 0) {
  4927. errn = decodeUnsignedInteger16(stream, &iso1RSAKeyValueType->Exponent.bytesLen);
  4928. if (errn == 0) {
  4929. errn = (iso1RSAKeyValueType->Exponent.bytesLen) <= iso1RSAKeyValueType_Exponent_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  4930. }
  4931. if (errn == 0) {
  4932. errn = decodeBytes(stream, iso1RSAKeyValueType->Exponent.bytesLen, iso1RSAKeyValueType->Exponent.bytes);
  4933. }
  4934. } else {
  4935. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  4936. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  4937. }
  4938. }
  4939. if(errn == 0) {
  4940. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent) ? */
  4941. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4942. if(eventCode == 0) {
  4943. grammarID = 3;
  4944. } else {
  4945. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  4946. }
  4947. }
  4948. break;
  4949. default:
  4950. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4951. break;
  4952. }
  4953. }
  4954. break;
  4955. case 3:
  4956. /* Element[END_ELEMENT] */
  4957. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4958. if (errn == 0) {
  4959. switch(eventCode) {
  4960. case 0:
  4961. done = 1;
  4962. grammarID = 4;
  4963. break;
  4964. default:
  4965. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  4966. break;
  4967. }
  4968. }
  4969. break;
  4970. default:
  4971. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  4972. break;
  4973. }
  4974. if(errn) {
  4975. done = 1;
  4976. }
  4977. }
  4978. return errn;
  4979. }
  4980. /* 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'. */
  4981. static int decode_iso1SessionStopResType(bitstream_t* stream, struct iso1SessionStopResType* iso1SessionStopResType) {
  4982. int grammarID = 122;
  4983. int done = 0;
  4984. init_iso1SessionStopResType(iso1SessionStopResType);
  4985. while(!done) {
  4986. switch(grammarID) {
  4987. case 122:
  4988. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  4989. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4990. if (errn == 0) {
  4991. switch(eventCode) {
  4992. case 0:
  4993. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  4994. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  4995. if(errn == 0) {
  4996. if(eventCode == 0) {
  4997. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  4998. iso1SessionStopResType->ResponseCode = (iso1responseCodeType) uint32;
  4999. } else {
  5000. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5001. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5002. }
  5003. }
  5004. if(errn == 0) {
  5005. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  5006. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5007. if(eventCode == 0) {
  5008. grammarID = 3;
  5009. } else {
  5010. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5011. }
  5012. }
  5013. break;
  5014. default:
  5015. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5016. break;
  5017. }
  5018. }
  5019. break;
  5020. case 3:
  5021. /* Element[END_ELEMENT] */
  5022. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5023. if (errn == 0) {
  5024. switch(eventCode) {
  5025. case 0:
  5026. done = 1;
  5027. grammarID = 4;
  5028. break;
  5029. default:
  5030. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5031. break;
  5032. }
  5033. }
  5034. break;
  5035. default:
  5036. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5037. break;
  5038. }
  5039. if(errn) {
  5040. done = 1;
  5041. }
  5042. }
  5043. return errn;
  5044. }
  5045. /* 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'. */
  5046. static int decode_iso1CertificateUpdateReqType(bitstream_t* stream, struct iso1CertificateUpdateReqType* iso1CertificateUpdateReqType) {
  5047. int grammarID = 123;
  5048. int done = 0;
  5049. init_iso1CertificateUpdateReqType(iso1CertificateUpdateReqType);
  5050. while(!done) {
  5051. switch(grammarID) {
  5052. case 123:
  5053. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */
  5054. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5055. if (errn == 0) {
  5056. switch(eventCode) {
  5057. case 0:
  5058. errn = decodeUnsignedInteger16(stream, &iso1CertificateUpdateReqType->Id.charactersLen);
  5059. if (errn == 0) {
  5060. if (iso1CertificateUpdateReqType->Id.charactersLen >= 2) {
  5061. iso1CertificateUpdateReqType->Id.charactersLen = (uint16_t)(iso1CertificateUpdateReqType->Id.charactersLen - 2); /* string table miss */
  5062. errn = decodeCharacters(stream, iso1CertificateUpdateReqType->Id.charactersLen, iso1CertificateUpdateReqType->Id.characters, iso1CertificateUpdateReqType_Id_CHARACTERS_SIZE);
  5063. } else {
  5064. /* string table hit */
  5065. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  5066. }
  5067. }
  5068. grammarID = 124;
  5069. break;
  5070. default:
  5071. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5072. break;
  5073. }
  5074. }
  5075. break;
  5076. case 124:
  5077. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  5078. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5079. if (errn == 0) {
  5080. switch(eventCode) {
  5081. case 0:
  5082. errn = decode_iso1CertificateChainType(stream, &iso1CertificateUpdateReqType->ContractSignatureCertChain);
  5083. grammarID = 125;
  5084. break;
  5085. default:
  5086. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5087. break;
  5088. }
  5089. }
  5090. break;
  5091. case 125:
  5092. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  5093. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5094. if (errn == 0) {
  5095. switch(eventCode) {
  5096. case 0:
  5097. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5098. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5099. if(errn == 0) {
  5100. if(eventCode == 0) {
  5101. errn = decodeUnsignedInteger16(stream, &iso1CertificateUpdateReqType->eMAID.charactersLen);
  5102. if (errn == 0) {
  5103. if (iso1CertificateUpdateReqType->eMAID.charactersLen >= 2) {
  5104. iso1CertificateUpdateReqType->eMAID.charactersLen = (uint16_t)(iso1CertificateUpdateReqType->eMAID.charactersLen - 2); /* string table miss */
  5105. errn = decodeCharacters(stream, iso1CertificateUpdateReqType->eMAID.charactersLen, iso1CertificateUpdateReqType->eMAID.characters, iso1CertificateUpdateReqType_eMAID_CHARACTERS_SIZE);
  5106. } else {
  5107. /* string table hit */
  5108. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  5109. }
  5110. }
  5111. } else {
  5112. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5113. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5114. }
  5115. }
  5116. if(errn == 0) {
  5117. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID) ? */
  5118. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5119. if(eventCode == 0) {
  5120. grammarID = 18;
  5121. } else {
  5122. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5123. }
  5124. }
  5125. break;
  5126. default:
  5127. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5128. break;
  5129. }
  5130. }
  5131. break;
  5132. case 18:
  5133. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */
  5134. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5135. if (errn == 0) {
  5136. switch(eventCode) {
  5137. case 0:
  5138. errn = decode_iso1ListOfRootCertificateIDsType(stream, &iso1CertificateUpdateReqType->ListOfRootCertificateIDs);
  5139. grammarID = 3;
  5140. break;
  5141. default:
  5142. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5143. break;
  5144. }
  5145. }
  5146. break;
  5147. case 3:
  5148. /* Element[END_ELEMENT] */
  5149. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5150. if (errn == 0) {
  5151. switch(eventCode) {
  5152. case 0:
  5153. done = 1;
  5154. grammarID = 4;
  5155. break;
  5156. default:
  5157. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5158. break;
  5159. }
  5160. }
  5161. break;
  5162. default:
  5163. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5164. break;
  5165. }
  5166. if(errn) {
  5167. done = 1;
  5168. }
  5169. }
  5170. return errn;
  5171. }
  5172. /* 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'. */
  5173. static int decode_iso1SignatureValueType(bitstream_t* stream, struct iso1SignatureValueType* iso1SignatureValueType) {
  5174. int grammarID = 126;
  5175. int done = 0;
  5176. init_iso1SignatureValueType(iso1SignatureValueType);
  5177. while(!done) {
  5178. switch(grammarID) {
  5179. case 126:
  5180. /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */
  5181. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  5182. if (errn == 0) {
  5183. switch(eventCode) {
  5184. case 0:
  5185. errn = decodeUnsignedInteger16(stream, &iso1SignatureValueType->Id.charactersLen);
  5186. if (errn == 0) {
  5187. if (iso1SignatureValueType->Id.charactersLen >= 2) {
  5188. iso1SignatureValueType->Id.charactersLen = (uint16_t)(iso1SignatureValueType->Id.charactersLen - 2); /* string table miss */
  5189. errn = decodeCharacters(stream, iso1SignatureValueType->Id.charactersLen, iso1SignatureValueType->Id.characters, iso1SignatureValueType_Id_CHARACTERS_SIZE);
  5190. } else {
  5191. /* string table hit */
  5192. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  5193. }
  5194. }
  5195. iso1SignatureValueType->Id_isUsed = 1u;
  5196. grammarID = 24;
  5197. break;
  5198. case 1:
  5199. errn = decodeUnsignedInteger16(stream, &iso1SignatureValueType->CONTENT.bytesLen);
  5200. if (errn == 0) {
  5201. errn = (iso1SignatureValueType->CONTENT.bytesLen) <= iso1SignatureValueType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  5202. }
  5203. if (errn == 0) {
  5204. errn = decodeBytes(stream, iso1SignatureValueType->CONTENT.bytesLen, iso1SignatureValueType->CONTENT.bytes);
  5205. }
  5206. grammarID = 3;
  5207. break;
  5208. default:
  5209. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5210. break;
  5211. }
  5212. }
  5213. break;
  5214. case 24:
  5215. /* StartTag[CHARACTERS[BINARY_BASE64]] */
  5216. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5217. if (errn == 0) {
  5218. switch(eventCode) {
  5219. case 0:
  5220. errn = decodeUnsignedInteger16(stream, &iso1SignatureValueType->CONTENT.bytesLen);
  5221. if (errn == 0) {
  5222. errn = (iso1SignatureValueType->CONTENT.bytesLen) <= iso1SignatureValueType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  5223. }
  5224. if (errn == 0) {
  5225. errn = decodeBytes(stream, iso1SignatureValueType->CONTENT.bytesLen, iso1SignatureValueType->CONTENT.bytes);
  5226. }
  5227. grammarID = 3;
  5228. break;
  5229. default:
  5230. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5231. break;
  5232. }
  5233. }
  5234. break;
  5235. case 3:
  5236. /* Element[END_ELEMENT] */
  5237. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5238. if (errn == 0) {
  5239. switch(eventCode) {
  5240. case 0:
  5241. done = 1;
  5242. grammarID = 4;
  5243. break;
  5244. default:
  5245. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5246. break;
  5247. }
  5248. }
  5249. break;
  5250. default:
  5251. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5252. break;
  5253. }
  5254. if(errn) {
  5255. done = 1;
  5256. }
  5257. }
  5258. return errn;
  5259. }
  5260. /* 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'. */
  5261. static int decode_iso1PaymentDetailsReqType(bitstream_t* stream, struct iso1PaymentDetailsReqType* iso1PaymentDetailsReqType) {
  5262. int grammarID = 127;
  5263. int done = 0;
  5264. init_iso1PaymentDetailsReqType(iso1PaymentDetailsReqType);
  5265. while(!done) {
  5266. switch(grammarID) {
  5267. case 127:
  5268. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  5269. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5270. if (errn == 0) {
  5271. switch(eventCode) {
  5272. case 0:
  5273. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  5274. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5275. if(errn == 0) {
  5276. if(eventCode == 0) {
  5277. errn = decodeUnsignedInteger16(stream, &iso1PaymentDetailsReqType->eMAID.charactersLen);
  5278. if (errn == 0) {
  5279. if (iso1PaymentDetailsReqType->eMAID.charactersLen >= 2) {
  5280. iso1PaymentDetailsReqType->eMAID.charactersLen = (uint16_t)(iso1PaymentDetailsReqType->eMAID.charactersLen - 2); /* string table miss */
  5281. errn = decodeCharacters(stream, iso1PaymentDetailsReqType->eMAID.charactersLen, iso1PaymentDetailsReqType->eMAID.characters, iso1PaymentDetailsReqType_eMAID_CHARACTERS_SIZE);
  5282. } else {
  5283. /* string table hit */
  5284. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  5285. }
  5286. }
  5287. } else {
  5288. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5289. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5290. }
  5291. }
  5292. if(errn == 0) {
  5293. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID) ? */
  5294. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5295. if(eventCode == 0) {
  5296. grammarID = 128;
  5297. } else {
  5298. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5299. }
  5300. }
  5301. break;
  5302. default:
  5303. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5304. break;
  5305. }
  5306. }
  5307. break;
  5308. case 128:
  5309. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  5310. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5311. if (errn == 0) {
  5312. switch(eventCode) {
  5313. case 0:
  5314. errn = decode_iso1CertificateChainType(stream, &iso1PaymentDetailsReqType->ContractSignatureCertChain);
  5315. grammarID = 3;
  5316. break;
  5317. default:
  5318. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5319. break;
  5320. }
  5321. }
  5322. break;
  5323. case 3:
  5324. /* Element[END_ELEMENT] */
  5325. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5326. if (errn == 0) {
  5327. switch(eventCode) {
  5328. case 0:
  5329. done = 1;
  5330. grammarID = 4;
  5331. break;
  5332. default:
  5333. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5334. break;
  5335. }
  5336. }
  5337. break;
  5338. default:
  5339. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5340. break;
  5341. }
  5342. if(errn) {
  5343. done = 1;
  5344. }
  5345. }
  5346. return errn;
  5347. }
  5348. /* 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'. */
  5349. static int decode_iso1AuthorizationResType(bitstream_t* stream, struct iso1AuthorizationResType* iso1AuthorizationResType) {
  5350. int grammarID = 129;
  5351. int done = 0;
  5352. init_iso1AuthorizationResType(iso1AuthorizationResType);
  5353. while(!done) {
  5354. switch(grammarID) {
  5355. case 129:
  5356. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  5357. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5358. if (errn == 0) {
  5359. switch(eventCode) {
  5360. case 0:
  5361. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  5362. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5363. if(errn == 0) {
  5364. if(eventCode == 0) {
  5365. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  5366. iso1AuthorizationResType->ResponseCode = (iso1responseCodeType) uint32;
  5367. } else {
  5368. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5369. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5370. }
  5371. }
  5372. if(errn == 0) {
  5373. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  5374. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5375. if(eventCode == 0) {
  5376. grammarID = 130;
  5377. } else {
  5378. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5379. }
  5380. }
  5381. break;
  5382. default:
  5383. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5384. break;
  5385. }
  5386. }
  5387. break;
  5388. case 130:
  5389. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */
  5390. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5391. if (errn == 0) {
  5392. switch(eventCode) {
  5393. case 0:
  5394. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  5395. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5396. if(errn == 0) {
  5397. if(eventCode == 0) {
  5398. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  5399. iso1AuthorizationResType->EVSEProcessing = (iso1EVSEProcessingType) uint32;
  5400. } else {
  5401. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5402. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5403. }
  5404. }
  5405. if(errn == 0) {
  5406. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) ? */
  5407. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5408. if(eventCode == 0) {
  5409. grammarID = 3;
  5410. } else {
  5411. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5412. }
  5413. }
  5414. break;
  5415. default:
  5416. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5417. break;
  5418. }
  5419. }
  5420. break;
  5421. case 3:
  5422. /* Element[END_ELEMENT] */
  5423. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5424. if (errn == 0) {
  5425. switch(eventCode) {
  5426. case 0:
  5427. done = 1;
  5428. grammarID = 4;
  5429. break;
  5430. default:
  5431. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5432. break;
  5433. }
  5434. }
  5435. break;
  5436. default:
  5437. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5438. break;
  5439. }
  5440. if(errn) {
  5441. done = 1;
  5442. }
  5443. }
  5444. return errn;
  5445. }
  5446. /* 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'. */
  5447. static int decode_iso1DC_EVSEChargeParameterType(bitstream_t* stream, struct iso1DC_EVSEChargeParameterType* iso1DC_EVSEChargeParameterType) {
  5448. int grammarID = 131;
  5449. int done = 0;
  5450. init_iso1DC_EVSEChargeParameterType(iso1DC_EVSEChargeParameterType);
  5451. while(!done) {
  5452. switch(grammarID) {
  5453. case 131:
  5454. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */
  5455. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5456. if (errn == 0) {
  5457. switch(eventCode) {
  5458. case 0:
  5459. errn = decode_iso1DC_EVSEStatusType(stream, &iso1DC_EVSEChargeParameterType->DC_EVSEStatus);
  5460. grammarID = 132;
  5461. break;
  5462. default:
  5463. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5464. break;
  5465. }
  5466. }
  5467. break;
  5468. case 132:
  5469. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */
  5470. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5471. if (errn == 0) {
  5472. switch(eventCode) {
  5473. case 0:
  5474. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMaximumCurrentLimit);
  5475. grammarID = 133;
  5476. break;
  5477. default:
  5478. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5479. break;
  5480. }
  5481. }
  5482. break;
  5483. case 133:
  5484. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */
  5485. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5486. if (errn == 0) {
  5487. switch(eventCode) {
  5488. case 0:
  5489. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMaximumPowerLimit);
  5490. grammarID = 134;
  5491. break;
  5492. default:
  5493. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5494. break;
  5495. }
  5496. }
  5497. break;
  5498. case 134:
  5499. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */
  5500. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5501. if (errn == 0) {
  5502. switch(eventCode) {
  5503. case 0:
  5504. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMaximumVoltageLimit);
  5505. grammarID = 135;
  5506. break;
  5507. default:
  5508. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5509. break;
  5510. }
  5511. }
  5512. break;
  5513. case 135:
  5514. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */
  5515. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5516. if (errn == 0) {
  5517. switch(eventCode) {
  5518. case 0:
  5519. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMinimumCurrentLimit);
  5520. grammarID = 136;
  5521. break;
  5522. default:
  5523. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5524. break;
  5525. }
  5526. }
  5527. break;
  5528. case 136:
  5529. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */
  5530. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5531. if (errn == 0) {
  5532. switch(eventCode) {
  5533. case 0:
  5534. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEMinimumVoltageLimit);
  5535. grammarID = 137;
  5536. break;
  5537. default:
  5538. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5539. break;
  5540. }
  5541. }
  5542. break;
  5543. case 137:
  5544. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */
  5545. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  5546. if (errn == 0) {
  5547. switch(eventCode) {
  5548. case 0:
  5549. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance);
  5550. iso1DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 1u;
  5551. grammarID = 138;
  5552. break;
  5553. case 1:
  5554. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEPeakCurrentRipple);
  5555. grammarID = 139;
  5556. break;
  5557. default:
  5558. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5559. break;
  5560. }
  5561. }
  5562. break;
  5563. case 138:
  5564. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */
  5565. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5566. if (errn == 0) {
  5567. switch(eventCode) {
  5568. case 0:
  5569. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEPeakCurrentRipple);
  5570. grammarID = 139;
  5571. break;
  5572. default:
  5573. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5574. break;
  5575. }
  5576. }
  5577. break;
  5578. case 139:
  5579. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */
  5580. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  5581. if (errn == 0) {
  5582. switch(eventCode) {
  5583. case 0:
  5584. errn = decode_iso1PhysicalValueType(stream, &iso1DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered);
  5585. iso1DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 1u;
  5586. grammarID = 3;
  5587. break;
  5588. case 1:
  5589. done = 1;
  5590. grammarID = 4;
  5591. break;
  5592. default:
  5593. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5594. break;
  5595. }
  5596. }
  5597. break;
  5598. case 3:
  5599. /* Element[END_ELEMENT] */
  5600. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5601. if (errn == 0) {
  5602. switch(eventCode) {
  5603. case 0:
  5604. done = 1;
  5605. grammarID = 4;
  5606. break;
  5607. default:
  5608. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5609. break;
  5610. }
  5611. }
  5612. break;
  5613. default:
  5614. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5615. break;
  5616. }
  5617. if(errn) {
  5618. done = 1;
  5619. }
  5620. }
  5621. return errn;
  5622. }
  5623. /* 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'. */
  5624. static int decode_iso1SubCertificatesType(bitstream_t* stream, struct iso1SubCertificatesType* iso1SubCertificatesType) {
  5625. int grammarID = 140;
  5626. int done = 0;
  5627. init_iso1SubCertificatesType(iso1SubCertificatesType);
  5628. while(!done) {
  5629. switch(grammarID) {
  5630. case 140:
  5631. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */
  5632. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5633. if (errn == 0) {
  5634. switch(eventCode) {
  5635. case 0:
  5636. if (iso1SubCertificatesType->Certificate.arrayLen < iso1SubCertificatesType_Certificate_ARRAY_SIZE) {
  5637. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  5638. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5639. if(errn == 0) {
  5640. if(eventCode == 0) {
  5641. errn = decodeUnsignedInteger16(stream, &iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen);
  5642. if (errn == 0) {
  5643. errn = (iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso1SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  5644. }
  5645. if (errn == 0) {
  5646. errn = decodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytes);
  5647. }
  5648. iso1SubCertificatesType->Certificate.arrayLen++;
  5649. } else {
  5650. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5651. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5652. }
  5653. }
  5654. } else {
  5655. errn = EXI_ERROR_OUT_OF_BOUNDS;
  5656. }
  5657. if(errn == 0) {
  5658. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */
  5659. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5660. if(eventCode == 0) {
  5661. grammarID = 141;
  5662. } else {
  5663. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5664. }
  5665. }
  5666. break;
  5667. default:
  5668. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5669. break;
  5670. }
  5671. }
  5672. break;
  5673. case 141:
  5674. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */
  5675. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  5676. if (errn == 0) {
  5677. switch(eventCode) {
  5678. case 0:
  5679. if (iso1SubCertificatesType->Certificate.arrayLen < iso1SubCertificatesType_Certificate_ARRAY_SIZE) {
  5680. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  5681. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5682. if(errn == 0) {
  5683. if(eventCode == 0) {
  5684. errn = decodeUnsignedInteger16(stream, &iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen);
  5685. if (errn == 0) {
  5686. errn = (iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso1SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  5687. }
  5688. if (errn == 0) {
  5689. errn = decodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytes);
  5690. }
  5691. iso1SubCertificatesType->Certificate.arrayLen++;
  5692. } else {
  5693. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5694. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5695. }
  5696. }
  5697. } else {
  5698. errn = EXI_ERROR_OUT_OF_BOUNDS;
  5699. }
  5700. if(errn == 0) {
  5701. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */
  5702. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5703. if(eventCode == 0) {
  5704. grammarID = 142;
  5705. } else {
  5706. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5707. }
  5708. }
  5709. break;
  5710. case 1:
  5711. done = 1;
  5712. grammarID = 4;
  5713. break;
  5714. default:
  5715. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5716. break;
  5717. }
  5718. }
  5719. break;
  5720. case 142:
  5721. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */
  5722. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  5723. if (errn == 0) {
  5724. switch(eventCode) {
  5725. case 0:
  5726. if (iso1SubCertificatesType->Certificate.arrayLen < iso1SubCertificatesType_Certificate_ARRAY_SIZE) {
  5727. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  5728. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5729. if(errn == 0) {
  5730. if(eventCode == 0) {
  5731. errn = decodeUnsignedInteger16(stream, &iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen);
  5732. if (errn == 0) {
  5733. errn = (iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso1SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  5734. }
  5735. if (errn == 0) {
  5736. errn = decodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytes);
  5737. }
  5738. iso1SubCertificatesType->Certificate.arrayLen++;
  5739. } else {
  5740. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5741. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5742. }
  5743. }
  5744. } else {
  5745. errn = EXI_ERROR_OUT_OF_BOUNDS;
  5746. }
  5747. if(errn == 0) {
  5748. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */
  5749. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5750. if(eventCode == 0) {
  5751. grammarID = 143;
  5752. } else {
  5753. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5754. }
  5755. }
  5756. break;
  5757. case 1:
  5758. done = 1;
  5759. grammarID = 4;
  5760. break;
  5761. default:
  5762. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5763. break;
  5764. }
  5765. }
  5766. break;
  5767. case 143:
  5768. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */
  5769. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  5770. if (errn == 0) {
  5771. switch(eventCode) {
  5772. case 0:
  5773. if (iso1SubCertificatesType->Certificate.arrayLen < iso1SubCertificatesType_Certificate_ARRAY_SIZE) {
  5774. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  5775. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5776. if(errn == 0) {
  5777. if(eventCode == 0) {
  5778. errn = decodeUnsignedInteger16(stream, &iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen);
  5779. if (errn == 0) {
  5780. errn = (iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso1SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  5781. }
  5782. if (errn == 0) {
  5783. errn = decodeBytes(stream, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytesLen, iso1SubCertificatesType->Certificate.array[iso1SubCertificatesType->Certificate.arrayLen].bytes);
  5784. }
  5785. iso1SubCertificatesType->Certificate.arrayLen++;
  5786. } else {
  5787. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5788. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5789. }
  5790. }
  5791. } else {
  5792. errn = EXI_ERROR_OUT_OF_BOUNDS;
  5793. }
  5794. if(errn == 0) {
  5795. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */
  5796. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5797. if(eventCode == 0) {
  5798. grammarID = 3;
  5799. } else {
  5800. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5801. }
  5802. }
  5803. break;
  5804. case 1:
  5805. done = 1;
  5806. grammarID = 4;
  5807. break;
  5808. default:
  5809. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5810. break;
  5811. }
  5812. }
  5813. break;
  5814. case 3:
  5815. /* Element[END_ELEMENT] */
  5816. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5817. if (errn == 0) {
  5818. switch(eventCode) {
  5819. case 0:
  5820. done = 1;
  5821. grammarID = 4;
  5822. break;
  5823. default:
  5824. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5825. break;
  5826. }
  5827. }
  5828. break;
  5829. default:
  5830. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  5831. break;
  5832. }
  5833. if(errn) {
  5834. done = 1;
  5835. }
  5836. }
  5837. return errn;
  5838. }
  5839. /* 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'. */
  5840. static int decode_iso1ChargingStatusResType(bitstream_t* stream, struct iso1ChargingStatusResType* iso1ChargingStatusResType) {
  5841. int grammarID = 144;
  5842. int done = 0;
  5843. init_iso1ChargingStatusResType(iso1ChargingStatusResType);
  5844. while(!done) {
  5845. switch(grammarID) {
  5846. case 144:
  5847. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  5848. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5849. if (errn == 0) {
  5850. switch(eventCode) {
  5851. case 0:
  5852. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  5853. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5854. if(errn == 0) {
  5855. if(eventCode == 0) {
  5856. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  5857. iso1ChargingStatusResType->ResponseCode = (iso1responseCodeType) uint32;
  5858. } else {
  5859. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5860. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5861. }
  5862. }
  5863. if(errn == 0) {
  5864. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  5865. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5866. if(eventCode == 0) {
  5867. grammarID = 145;
  5868. } else {
  5869. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5870. }
  5871. }
  5872. break;
  5873. default:
  5874. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5875. break;
  5876. }
  5877. }
  5878. break;
  5879. case 145:
  5880. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  5881. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5882. if (errn == 0) {
  5883. switch(eventCode) {
  5884. case 0:
  5885. /* FirstStartTag[CHARACTERS[STRING]] */
  5886. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5887. if(errn == 0) {
  5888. if(eventCode == 0) {
  5889. errn = decodeUnsignedInteger16(stream, &iso1ChargingStatusResType->EVSEID.charactersLen);
  5890. if (errn == 0) {
  5891. if (iso1ChargingStatusResType->EVSEID.charactersLen >= 2) {
  5892. iso1ChargingStatusResType->EVSEID.charactersLen = (uint16_t)(iso1ChargingStatusResType->EVSEID.charactersLen - 2); /* string table miss */
  5893. errn = decodeCharacters(stream, iso1ChargingStatusResType->EVSEID.charactersLen, iso1ChargingStatusResType->EVSEID.characters, iso1ChargingStatusResType_EVSEID_CHARACTERS_SIZE);
  5894. } else {
  5895. /* string table hit */
  5896. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  5897. }
  5898. }
  5899. } else {
  5900. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5901. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5902. }
  5903. }
  5904. if(errn == 0) {
  5905. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */
  5906. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5907. if(eventCode == 0) {
  5908. grammarID = 146;
  5909. } else {
  5910. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5911. }
  5912. }
  5913. break;
  5914. default:
  5915. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5916. break;
  5917. }
  5918. }
  5919. break;
  5920. case 146:
  5921. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */
  5922. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5923. if (errn == 0) {
  5924. switch(eventCode) {
  5925. case 0:
  5926. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  5927. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5928. if(errn == 0) {
  5929. if(eventCode == 0) {
  5930. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  5931. iso1ChargingStatusResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  5932. } else {
  5933. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5934. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5935. }
  5936. }
  5937. if(errn == 0) {
  5938. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */
  5939. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5940. if(eventCode == 0) {
  5941. grammarID = 147;
  5942. } else {
  5943. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5944. }
  5945. }
  5946. break;
  5947. default:
  5948. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5949. break;
  5950. }
  5951. }
  5952. break;
  5953. case 147:
  5954. /* 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)] */
  5955. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  5956. if (errn == 0) {
  5957. switch(eventCode) {
  5958. case 0:
  5959. errn = decode_iso1PhysicalValueType(stream, &iso1ChargingStatusResType->EVSEMaxCurrent);
  5960. iso1ChargingStatusResType->EVSEMaxCurrent_isUsed = 1u;
  5961. grammarID = 148;
  5962. break;
  5963. case 1:
  5964. errn = decode_iso1MeterInfoType(stream, &iso1ChargingStatusResType->MeterInfo);
  5965. iso1ChargingStatusResType->MeterInfo_isUsed = 1u;
  5966. grammarID = 149;
  5967. break;
  5968. case 2:
  5969. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  5970. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5971. if(errn == 0) {
  5972. if(eventCode == 0) {
  5973. errn = decodeBoolean(stream, &iso1ChargingStatusResType->ReceiptRequired);
  5974. iso1ChargingStatusResType->ReceiptRequired_isUsed = 1u;
  5975. } else {
  5976. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  5977. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  5978. }
  5979. }
  5980. if(errn == 0) {
  5981. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */
  5982. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  5983. if(eventCode == 0) {
  5984. grammarID = 150;
  5985. } else {
  5986. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  5987. }
  5988. }
  5989. break;
  5990. case 3:
  5991. errn = decode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus);
  5992. grammarID = 3;
  5993. break;
  5994. default:
  5995. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  5996. break;
  5997. }
  5998. }
  5999. break;
  6000. case 148:
  6001. /* 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)] */
  6002. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6003. if (errn == 0) {
  6004. switch(eventCode) {
  6005. case 0:
  6006. errn = decode_iso1MeterInfoType(stream, &iso1ChargingStatusResType->MeterInfo);
  6007. iso1ChargingStatusResType->MeterInfo_isUsed = 1u;
  6008. grammarID = 149;
  6009. break;
  6010. case 1:
  6011. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  6012. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6013. if(errn == 0) {
  6014. if(eventCode == 0) {
  6015. errn = decodeBoolean(stream, &iso1ChargingStatusResType->ReceiptRequired);
  6016. iso1ChargingStatusResType->ReceiptRequired_isUsed = 1u;
  6017. } else {
  6018. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6019. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6020. }
  6021. }
  6022. if(errn == 0) {
  6023. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */
  6024. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6025. if(eventCode == 0) {
  6026. grammarID = 150;
  6027. } else {
  6028. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6029. }
  6030. }
  6031. break;
  6032. case 2:
  6033. errn = decode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus);
  6034. grammarID = 3;
  6035. break;
  6036. default:
  6037. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6038. break;
  6039. }
  6040. }
  6041. break;
  6042. case 149:
  6043. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */
  6044. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6045. if (errn == 0) {
  6046. switch(eventCode) {
  6047. case 0:
  6048. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  6049. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6050. if(errn == 0) {
  6051. if(eventCode == 0) {
  6052. errn = decodeBoolean(stream, &iso1ChargingStatusResType->ReceiptRequired);
  6053. iso1ChargingStatusResType->ReceiptRequired_isUsed = 1u;
  6054. } else {
  6055. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6056. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6057. }
  6058. }
  6059. if(errn == 0) {
  6060. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */
  6061. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6062. if(eventCode == 0) {
  6063. grammarID = 150;
  6064. } else {
  6065. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6066. }
  6067. }
  6068. break;
  6069. case 1:
  6070. errn = decode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus);
  6071. grammarID = 3;
  6072. break;
  6073. default:
  6074. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6075. break;
  6076. }
  6077. }
  6078. break;
  6079. case 150:
  6080. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */
  6081. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6082. if (errn == 0) {
  6083. switch(eventCode) {
  6084. case 0:
  6085. errn = decode_iso1AC_EVSEStatusType(stream, &iso1ChargingStatusResType->AC_EVSEStatus);
  6086. grammarID = 3;
  6087. break;
  6088. default:
  6089. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6090. break;
  6091. }
  6092. }
  6093. break;
  6094. case 3:
  6095. /* Element[END_ELEMENT] */
  6096. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6097. if (errn == 0) {
  6098. switch(eventCode) {
  6099. case 0:
  6100. done = 1;
  6101. grammarID = 4;
  6102. break;
  6103. default:
  6104. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6105. break;
  6106. }
  6107. }
  6108. break;
  6109. default:
  6110. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6111. break;
  6112. }
  6113. if(errn) {
  6114. done = 1;
  6115. }
  6116. }
  6117. return errn;
  6118. }
  6119. /* 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'. */
  6120. static int decode_iso1DSAKeyValueType(bitstream_t* stream, struct iso1DSAKeyValueType* iso1DSAKeyValueType) {
  6121. int grammarID = 151;
  6122. int done = 0;
  6123. init_iso1DSAKeyValueType(iso1DSAKeyValueType);
  6124. while(!done) {
  6125. switch(grammarID) {
  6126. case 151:
  6127. /* 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)] */
  6128. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6129. if (errn == 0) {
  6130. switch(eventCode) {
  6131. case 0:
  6132. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6133. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6134. if(errn == 0) {
  6135. if(eventCode == 0) {
  6136. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->P.bytesLen);
  6137. if (errn == 0) {
  6138. errn = (iso1DSAKeyValueType->P.bytesLen) <= iso1DSAKeyValueType_P_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6139. }
  6140. if (errn == 0) {
  6141. errn = decodeBytes(stream, iso1DSAKeyValueType->P.bytesLen, iso1DSAKeyValueType->P.bytes);
  6142. }
  6143. iso1DSAKeyValueType->P_isUsed = 1u;
  6144. } else {
  6145. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6146. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6147. }
  6148. }
  6149. if(errn == 0) {
  6150. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P) ? */
  6151. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6152. if(eventCode == 0) {
  6153. grammarID = 152;
  6154. } else {
  6155. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6156. }
  6157. }
  6158. break;
  6159. case 1:
  6160. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6161. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6162. if(errn == 0) {
  6163. if(eventCode == 0) {
  6164. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->G.bytesLen);
  6165. if (errn == 0) {
  6166. errn = (iso1DSAKeyValueType->G.bytesLen) <= iso1DSAKeyValueType_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6167. }
  6168. if (errn == 0) {
  6169. errn = decodeBytes(stream, iso1DSAKeyValueType->G.bytesLen, iso1DSAKeyValueType->G.bytes);
  6170. }
  6171. iso1DSAKeyValueType->G_isUsed = 1u;
  6172. } else {
  6173. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6174. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6175. }
  6176. }
  6177. if(errn == 0) {
  6178. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) ? */
  6179. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6180. if(eventCode == 0) {
  6181. grammarID = 153;
  6182. } else {
  6183. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6184. }
  6185. }
  6186. break;
  6187. case 2:
  6188. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6189. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6190. if(errn == 0) {
  6191. if(eventCode == 0) {
  6192. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->Y.bytesLen);
  6193. if (errn == 0) {
  6194. errn = (iso1DSAKeyValueType->Y.bytesLen) <= iso1DSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6195. }
  6196. if (errn == 0) {
  6197. errn = decodeBytes(stream, iso1DSAKeyValueType->Y.bytesLen, iso1DSAKeyValueType->Y.bytes);
  6198. }
  6199. } else {
  6200. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6201. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6202. }
  6203. }
  6204. if(errn == 0) {
  6205. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */
  6206. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6207. if(eventCode == 0) {
  6208. grammarID = 154;
  6209. } else {
  6210. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6211. }
  6212. }
  6213. break;
  6214. default:
  6215. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6216. break;
  6217. }
  6218. }
  6219. break;
  6220. case 152:
  6221. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */
  6222. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6223. if (errn == 0) {
  6224. switch(eventCode) {
  6225. case 0:
  6226. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6227. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6228. if(errn == 0) {
  6229. if(eventCode == 0) {
  6230. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->Q.bytesLen);
  6231. if (errn == 0) {
  6232. errn = (iso1DSAKeyValueType->Q.bytesLen) <= iso1DSAKeyValueType_Q_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6233. }
  6234. if (errn == 0) {
  6235. errn = decodeBytes(stream, iso1DSAKeyValueType->Q.bytesLen, iso1DSAKeyValueType->Q.bytes);
  6236. }
  6237. iso1DSAKeyValueType->Q_isUsed = 1u;
  6238. } else {
  6239. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6240. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6241. }
  6242. }
  6243. if(errn == 0) {
  6244. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q) ? */
  6245. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6246. if(eventCode == 0) {
  6247. grammarID = 155;
  6248. } else {
  6249. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6250. }
  6251. }
  6252. break;
  6253. default:
  6254. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6255. break;
  6256. }
  6257. }
  6258. break;
  6259. case 155:
  6260. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
  6261. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6262. if (errn == 0) {
  6263. switch(eventCode) {
  6264. case 0:
  6265. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6266. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6267. if(errn == 0) {
  6268. if(eventCode == 0) {
  6269. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->G.bytesLen);
  6270. if (errn == 0) {
  6271. errn = (iso1DSAKeyValueType->G.bytesLen) <= iso1DSAKeyValueType_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6272. }
  6273. if (errn == 0) {
  6274. errn = decodeBytes(stream, iso1DSAKeyValueType->G.bytesLen, iso1DSAKeyValueType->G.bytes);
  6275. }
  6276. iso1DSAKeyValueType->G_isUsed = 1u;
  6277. } else {
  6278. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6279. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6280. }
  6281. }
  6282. if(errn == 0) {
  6283. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) ? */
  6284. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6285. if(eventCode == 0) {
  6286. grammarID = 153;
  6287. } else {
  6288. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6289. }
  6290. }
  6291. break;
  6292. case 1:
  6293. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6294. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6295. if(errn == 0) {
  6296. if(eventCode == 0) {
  6297. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->Y.bytesLen);
  6298. if (errn == 0) {
  6299. errn = (iso1DSAKeyValueType->Y.bytesLen) <= iso1DSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6300. }
  6301. if (errn == 0) {
  6302. errn = decodeBytes(stream, iso1DSAKeyValueType->Y.bytesLen, iso1DSAKeyValueType->Y.bytes);
  6303. }
  6304. } else {
  6305. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6306. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6307. }
  6308. }
  6309. if(errn == 0) {
  6310. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */
  6311. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6312. if(eventCode == 0) {
  6313. grammarID = 154;
  6314. } else {
  6315. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6316. }
  6317. }
  6318. break;
  6319. default:
  6320. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6321. break;
  6322. }
  6323. }
  6324. break;
  6325. case 153:
  6326. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
  6327. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6328. if (errn == 0) {
  6329. switch(eventCode) {
  6330. case 0:
  6331. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6332. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6333. if(errn == 0) {
  6334. if(eventCode == 0) {
  6335. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->Y.bytesLen);
  6336. if (errn == 0) {
  6337. errn = (iso1DSAKeyValueType->Y.bytesLen) <= iso1DSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6338. }
  6339. if (errn == 0) {
  6340. errn = decodeBytes(stream, iso1DSAKeyValueType->Y.bytesLen, iso1DSAKeyValueType->Y.bytes);
  6341. }
  6342. } else {
  6343. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6344. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6345. }
  6346. }
  6347. if(errn == 0) {
  6348. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */
  6349. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6350. if(eventCode == 0) {
  6351. grammarID = 154;
  6352. } else {
  6353. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6354. }
  6355. }
  6356. break;
  6357. default:
  6358. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6359. break;
  6360. }
  6361. }
  6362. break;
  6363. case 154:
  6364. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */
  6365. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6366. if (errn == 0) {
  6367. switch(eventCode) {
  6368. case 0:
  6369. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6370. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6371. if(errn == 0) {
  6372. if(eventCode == 0) {
  6373. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->J.bytesLen);
  6374. if (errn == 0) {
  6375. errn = (iso1DSAKeyValueType->J.bytesLen) <= iso1DSAKeyValueType_J_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6376. }
  6377. if (errn == 0) {
  6378. errn = decodeBytes(stream, iso1DSAKeyValueType->J.bytesLen, iso1DSAKeyValueType->J.bytes);
  6379. }
  6380. iso1DSAKeyValueType->J_isUsed = 1u;
  6381. } else {
  6382. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6383. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6384. }
  6385. }
  6386. if(errn == 0) {
  6387. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J) ? */
  6388. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6389. if(eventCode == 0) {
  6390. grammarID = 156;
  6391. } else {
  6392. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6393. }
  6394. }
  6395. break;
  6396. case 1:
  6397. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6398. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6399. if(errn == 0) {
  6400. if(eventCode == 0) {
  6401. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->Seed.bytesLen);
  6402. if (errn == 0) {
  6403. errn = (iso1DSAKeyValueType->Seed.bytesLen) <= iso1DSAKeyValueType_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6404. }
  6405. if (errn == 0) {
  6406. errn = decodeBytes(stream, iso1DSAKeyValueType->Seed.bytesLen, iso1DSAKeyValueType->Seed.bytes);
  6407. }
  6408. iso1DSAKeyValueType->Seed_isUsed = 1u;
  6409. } else {
  6410. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6411. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6412. }
  6413. }
  6414. if(errn == 0) {
  6415. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) ? */
  6416. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6417. if(eventCode == 0) {
  6418. grammarID = 157;
  6419. } else {
  6420. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6421. }
  6422. }
  6423. break;
  6424. case 2:
  6425. done = 1;
  6426. grammarID = 4;
  6427. break;
  6428. default:
  6429. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6430. break;
  6431. }
  6432. }
  6433. break;
  6434. case 156:
  6435. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */
  6436. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6437. if (errn == 0) {
  6438. switch(eventCode) {
  6439. case 0:
  6440. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6441. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6442. if(errn == 0) {
  6443. if(eventCode == 0) {
  6444. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->Seed.bytesLen);
  6445. if (errn == 0) {
  6446. errn = (iso1DSAKeyValueType->Seed.bytesLen) <= iso1DSAKeyValueType_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6447. }
  6448. if (errn == 0) {
  6449. errn = decodeBytes(stream, iso1DSAKeyValueType->Seed.bytesLen, iso1DSAKeyValueType->Seed.bytes);
  6450. }
  6451. iso1DSAKeyValueType->Seed_isUsed = 1u;
  6452. } else {
  6453. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6454. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6455. }
  6456. }
  6457. if(errn == 0) {
  6458. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) ? */
  6459. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6460. if(eventCode == 0) {
  6461. grammarID = 157;
  6462. } else {
  6463. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6464. }
  6465. }
  6466. break;
  6467. case 1:
  6468. done = 1;
  6469. grammarID = 4;
  6470. break;
  6471. default:
  6472. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6473. break;
  6474. }
  6475. }
  6476. break;
  6477. case 157:
  6478. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */
  6479. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6480. if (errn == 0) {
  6481. switch(eventCode) {
  6482. case 0:
  6483. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  6484. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6485. if(errn == 0) {
  6486. if(eventCode == 0) {
  6487. errn = decodeUnsignedInteger16(stream, &iso1DSAKeyValueType->PgenCounter.bytesLen);
  6488. if (errn == 0) {
  6489. errn = (iso1DSAKeyValueType->PgenCounter.bytesLen) <= iso1DSAKeyValueType_PgenCounter_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6490. }
  6491. if (errn == 0) {
  6492. errn = decodeBytes(stream, iso1DSAKeyValueType->PgenCounter.bytesLen, iso1DSAKeyValueType->PgenCounter.bytes);
  6493. }
  6494. iso1DSAKeyValueType->PgenCounter_isUsed = 1u;
  6495. } else {
  6496. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6497. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6498. }
  6499. }
  6500. if(errn == 0) {
  6501. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter) ? */
  6502. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6503. if(eventCode == 0) {
  6504. grammarID = 3;
  6505. } else {
  6506. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6507. }
  6508. }
  6509. break;
  6510. default:
  6511. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6512. break;
  6513. }
  6514. }
  6515. break;
  6516. case 3:
  6517. /* Element[END_ELEMENT] */
  6518. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6519. if (errn == 0) {
  6520. switch(eventCode) {
  6521. case 0:
  6522. done = 1;
  6523. grammarID = 4;
  6524. break;
  6525. default:
  6526. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6527. break;
  6528. }
  6529. }
  6530. break;
  6531. default:
  6532. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6533. break;
  6534. }
  6535. if(errn) {
  6536. done = 1;
  6537. }
  6538. }
  6539. return errn;
  6540. }
  6541. /* 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'. */
  6542. static int decode_iso1ListOfRootCertificateIDsType(bitstream_t* stream, struct iso1ListOfRootCertificateIDsType* iso1ListOfRootCertificateIDsType) {
  6543. int grammarID = 158;
  6544. int done = 0;
  6545. init_iso1ListOfRootCertificateIDsType(iso1ListOfRootCertificateIDsType);
  6546. while(!done) {
  6547. switch(grammarID) {
  6548. case 158:
  6549. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */
  6550. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6551. if (errn == 0) {
  6552. switch(eventCode) {
  6553. case 0:
  6554. if (iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso1ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
  6555. errn = decode_iso1X509IssuerSerialType(stream, &iso1ListOfRootCertificateIDsType->RootCertificateID.array[iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
  6556. } else {
  6557. errn = EXI_ERROR_OUT_OF_BOUNDS;
  6558. }
  6559. grammarID = 159;
  6560. break;
  6561. default:
  6562. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6563. break;
  6564. }
  6565. }
  6566. break;
  6567. case 159:
  6568. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */
  6569. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6570. if (errn == 0) {
  6571. switch(eventCode) {
  6572. case 0:
  6573. if (iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso1ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
  6574. errn = decode_iso1X509IssuerSerialType(stream, &iso1ListOfRootCertificateIDsType->RootCertificateID.array[iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
  6575. } else {
  6576. errn = EXI_ERROR_OUT_OF_BOUNDS;
  6577. }
  6578. grammarID = 159;
  6579. break;
  6580. case 1:
  6581. done = 1;
  6582. grammarID = 4;
  6583. break;
  6584. default:
  6585. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6586. break;
  6587. }
  6588. }
  6589. break;
  6590. default:
  6591. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6592. break;
  6593. }
  6594. if(errn) {
  6595. done = 1;
  6596. }
  6597. }
  6598. return errn;
  6599. }
  6600. /* 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'. */
  6601. static int decode_iso1ChargeServiceType(bitstream_t* stream, struct iso1ChargeServiceType* iso1ChargeServiceType) {
  6602. int grammarID = 160;
  6603. int done = 0;
  6604. init_iso1ChargeServiceType(iso1ChargeServiceType);
  6605. while(!done) {
  6606. switch(grammarID) {
  6607. case 160:
  6608. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */
  6609. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6610. if (errn == 0) {
  6611. switch(eventCode) {
  6612. case 0:
  6613. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  6614. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6615. if(errn == 0) {
  6616. if(eventCode == 0) {
  6617. errn = decodeUnsignedInteger16(stream, &iso1ChargeServiceType->ServiceID);
  6618. } else {
  6619. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6620. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6621. }
  6622. }
  6623. if(errn == 0) {
  6624. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) ? */
  6625. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6626. if(eventCode == 0) {
  6627. grammarID = 161;
  6628. } else {
  6629. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6630. }
  6631. }
  6632. break;
  6633. default:
  6634. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6635. break;
  6636. }
  6637. }
  6638. break;
  6639. case 161:
  6640. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  6641. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6642. if (errn == 0) {
  6643. switch(eventCode) {
  6644. case 0:
  6645. /* FirstStartTag[CHARACTERS[STRING]] */
  6646. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6647. if(errn == 0) {
  6648. if(eventCode == 0) {
  6649. errn = decodeUnsignedInteger16(stream, &iso1ChargeServiceType->ServiceName.charactersLen);
  6650. if (errn == 0) {
  6651. if (iso1ChargeServiceType->ServiceName.charactersLen >= 2) {
  6652. iso1ChargeServiceType->ServiceName.charactersLen = (uint16_t)(iso1ChargeServiceType->ServiceName.charactersLen - 2); /* string table miss */
  6653. errn = decodeCharacters(stream, iso1ChargeServiceType->ServiceName.charactersLen, iso1ChargeServiceType->ServiceName.characters, iso1ChargeServiceType_ServiceName_CHARACTERS_SIZE);
  6654. } else {
  6655. /* string table hit */
  6656. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  6657. }
  6658. }
  6659. iso1ChargeServiceType->ServiceName_isUsed = 1u;
  6660. } else {
  6661. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6662. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6663. }
  6664. }
  6665. if(errn == 0) {
  6666. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName) ? */
  6667. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6668. if(eventCode == 0) {
  6669. grammarID = 162;
  6670. } else {
  6671. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6672. }
  6673. }
  6674. break;
  6675. case 1:
  6676. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  6677. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6678. if(errn == 0) {
  6679. if(eventCode == 0) {
  6680. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  6681. iso1ChargeServiceType->ServiceCategory = (iso1serviceCategoryType) uint32;
  6682. } else {
  6683. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6684. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6685. }
  6686. }
  6687. if(errn == 0) {
  6688. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */
  6689. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6690. if(eventCode == 0) {
  6691. grammarID = 163;
  6692. } else {
  6693. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6694. }
  6695. }
  6696. break;
  6697. default:
  6698. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6699. break;
  6700. }
  6701. }
  6702. break;
  6703. case 162:
  6704. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  6705. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6706. if (errn == 0) {
  6707. switch(eventCode) {
  6708. case 0:
  6709. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  6710. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6711. if(errn == 0) {
  6712. if(eventCode == 0) {
  6713. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  6714. iso1ChargeServiceType->ServiceCategory = (iso1serviceCategoryType) uint32;
  6715. } else {
  6716. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6717. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6718. }
  6719. }
  6720. if(errn == 0) {
  6721. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */
  6722. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6723. if(eventCode == 0) {
  6724. grammarID = 163;
  6725. } else {
  6726. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6727. }
  6728. }
  6729. break;
  6730. default:
  6731. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6732. break;
  6733. }
  6734. }
  6735. break;
  6736. case 163:
  6737. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  6738. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6739. if (errn == 0) {
  6740. switch(eventCode) {
  6741. case 0:
  6742. /* FirstStartTag[CHARACTERS[STRING]] */
  6743. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6744. if(errn == 0) {
  6745. if(eventCode == 0) {
  6746. errn = decodeUnsignedInteger16(stream, &iso1ChargeServiceType->ServiceScope.charactersLen);
  6747. if (errn == 0) {
  6748. if (iso1ChargeServiceType->ServiceScope.charactersLen >= 2) {
  6749. iso1ChargeServiceType->ServiceScope.charactersLen = (uint16_t)(iso1ChargeServiceType->ServiceScope.charactersLen - 2); /* string table miss */
  6750. errn = decodeCharacters(stream, iso1ChargeServiceType->ServiceScope.charactersLen, iso1ChargeServiceType->ServiceScope.characters, iso1ChargeServiceType_ServiceScope_CHARACTERS_SIZE);
  6751. } else {
  6752. /* string table hit */
  6753. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  6754. }
  6755. }
  6756. iso1ChargeServiceType->ServiceScope_isUsed = 1u;
  6757. } else {
  6758. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6759. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6760. }
  6761. }
  6762. if(errn == 0) {
  6763. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope) ? */
  6764. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6765. if(eventCode == 0) {
  6766. grammarID = 164;
  6767. } else {
  6768. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6769. }
  6770. }
  6771. break;
  6772. case 1:
  6773. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  6774. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6775. if(errn == 0) {
  6776. if(eventCode == 0) {
  6777. errn = decodeBoolean(stream, &iso1ChargeServiceType->FreeService);
  6778. } else {
  6779. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6780. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6781. }
  6782. }
  6783. if(errn == 0) {
  6784. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */
  6785. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6786. if(eventCode == 0) {
  6787. grammarID = 165;
  6788. } else {
  6789. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6790. }
  6791. }
  6792. break;
  6793. default:
  6794. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6795. break;
  6796. }
  6797. }
  6798. break;
  6799. case 164:
  6800. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  6801. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6802. if (errn == 0) {
  6803. switch(eventCode) {
  6804. case 0:
  6805. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  6806. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6807. if(errn == 0) {
  6808. if(eventCode == 0) {
  6809. errn = decodeBoolean(stream, &iso1ChargeServiceType->FreeService);
  6810. } else {
  6811. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6812. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6813. }
  6814. }
  6815. if(errn == 0) {
  6816. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */
  6817. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6818. if(eventCode == 0) {
  6819. grammarID = 165;
  6820. } else {
  6821. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6822. }
  6823. }
  6824. break;
  6825. default:
  6826. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6827. break;
  6828. }
  6829. }
  6830. break;
  6831. case 165:
  6832. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */
  6833. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6834. if (errn == 0) {
  6835. switch(eventCode) {
  6836. case 0:
  6837. errn = decode_iso1SupportedEnergyTransferModeType(stream, &iso1ChargeServiceType->SupportedEnergyTransferMode);
  6838. grammarID = 3;
  6839. break;
  6840. default:
  6841. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6842. break;
  6843. }
  6844. }
  6845. break;
  6846. case 3:
  6847. /* Element[END_ELEMENT] */
  6848. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6849. if (errn == 0) {
  6850. switch(eventCode) {
  6851. case 0:
  6852. done = 1;
  6853. grammarID = 4;
  6854. break;
  6855. default:
  6856. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6857. break;
  6858. }
  6859. }
  6860. break;
  6861. default:
  6862. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6863. break;
  6864. }
  6865. if(errn) {
  6866. done = 1;
  6867. }
  6868. }
  6869. return errn;
  6870. }
  6871. /* 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'. */
  6872. static int decode_iso1IntervalType(bitstream_t* stream, struct iso1IntervalType* iso1IntervalType) {
  6873. int grammarID = 34;
  6874. int done = 0;
  6875. init_iso1IntervalType(iso1IntervalType);
  6876. while(!done) {
  6877. switch(grammarID) {
  6878. case 34:
  6879. /* FirstStartTag[END_ELEMENT] */
  6880. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6881. if (errn == 0) {
  6882. switch(eventCode) {
  6883. case 0:
  6884. done = 1;
  6885. grammarID = 4;
  6886. break;
  6887. default:
  6888. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6889. break;
  6890. }
  6891. }
  6892. break;
  6893. default:
  6894. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  6895. break;
  6896. }
  6897. if(errn) {
  6898. done = 1;
  6899. }
  6900. }
  6901. return errn;
  6902. }
  6903. /* 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'. */
  6904. static int decode_iso1MeteringReceiptReqType(bitstream_t* stream, struct iso1MeteringReceiptReqType* iso1MeteringReceiptReqType) {
  6905. int grammarID = 166;
  6906. int done = 0;
  6907. init_iso1MeteringReceiptReqType(iso1MeteringReceiptReqType);
  6908. while(!done) {
  6909. switch(grammarID) {
  6910. case 166:
  6911. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */
  6912. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  6913. if (errn == 0) {
  6914. switch(eventCode) {
  6915. case 0:
  6916. errn = decodeUnsignedInteger16(stream, &iso1MeteringReceiptReqType->Id.charactersLen);
  6917. if (errn == 0) {
  6918. if (iso1MeteringReceiptReqType->Id.charactersLen >= 2) {
  6919. iso1MeteringReceiptReqType->Id.charactersLen = (uint16_t)(iso1MeteringReceiptReqType->Id.charactersLen - 2); /* string table miss */
  6920. errn = decodeCharacters(stream, iso1MeteringReceiptReqType->Id.charactersLen, iso1MeteringReceiptReqType->Id.characters, iso1MeteringReceiptReqType_Id_CHARACTERS_SIZE);
  6921. } else {
  6922. /* string table hit */
  6923. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  6924. }
  6925. }
  6926. iso1MeteringReceiptReqType->Id_isUsed = 1u;
  6927. grammarID = 167;
  6928. break;
  6929. case 1:
  6930. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  6931. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6932. if(errn == 0) {
  6933. if(eventCode == 0) {
  6934. errn = decodeUnsignedInteger16(stream, &iso1MeteringReceiptReqType->SessionID.bytesLen);
  6935. if (errn == 0) {
  6936. errn = (iso1MeteringReceiptReqType->SessionID.bytesLen) <= iso1MeteringReceiptReqType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6937. }
  6938. if (errn == 0) {
  6939. errn = decodeBytes(stream, iso1MeteringReceiptReqType->SessionID.bytesLen, iso1MeteringReceiptReqType->SessionID.bytes);
  6940. }
  6941. } else {
  6942. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6943. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6944. }
  6945. }
  6946. if(errn == 0) {
  6947. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID) ? */
  6948. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6949. if(eventCode == 0) {
  6950. grammarID = 168;
  6951. } else {
  6952. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6953. }
  6954. }
  6955. break;
  6956. default:
  6957. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6958. break;
  6959. }
  6960. }
  6961. break;
  6962. case 167:
  6963. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */
  6964. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6965. if (errn == 0) {
  6966. switch(eventCode) {
  6967. case 0:
  6968. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  6969. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6970. if(errn == 0) {
  6971. if(eventCode == 0) {
  6972. errn = decodeUnsignedInteger16(stream, &iso1MeteringReceiptReqType->SessionID.bytesLen);
  6973. if (errn == 0) {
  6974. errn = (iso1MeteringReceiptReqType->SessionID.bytesLen) <= iso1MeteringReceiptReqType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  6975. }
  6976. if (errn == 0) {
  6977. errn = decodeBytes(stream, iso1MeteringReceiptReqType->SessionID.bytesLen, iso1MeteringReceiptReqType->SessionID.bytes);
  6978. }
  6979. } else {
  6980. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  6981. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  6982. }
  6983. }
  6984. if(errn == 0) {
  6985. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID) ? */
  6986. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  6987. if(eventCode == 0) {
  6988. grammarID = 168;
  6989. } else {
  6990. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  6991. }
  6992. }
  6993. break;
  6994. default:
  6995. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  6996. break;
  6997. }
  6998. }
  6999. break;
  7000. case 168:
  7001. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */
  7002. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7003. if (errn == 0) {
  7004. switch(eventCode) {
  7005. case 0:
  7006. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  7007. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7008. if(errn == 0) {
  7009. if(eventCode == 0) {
  7010. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  7011. iso1MeteringReceiptReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  7012. iso1MeteringReceiptReqType->SAScheduleTupleID_isUsed = 1u;
  7013. } else {
  7014. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7015. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7016. }
  7017. }
  7018. if(errn == 0) {
  7019. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */
  7020. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7021. if(eventCode == 0) {
  7022. grammarID = 169;
  7023. } else {
  7024. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7025. }
  7026. }
  7027. break;
  7028. case 1:
  7029. errn = decode_iso1MeterInfoType(stream, &iso1MeteringReceiptReqType->MeterInfo);
  7030. grammarID = 3;
  7031. break;
  7032. default:
  7033. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7034. break;
  7035. }
  7036. }
  7037. break;
  7038. case 169:
  7039. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */
  7040. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7041. if (errn == 0) {
  7042. switch(eventCode) {
  7043. case 0:
  7044. errn = decode_iso1MeterInfoType(stream, &iso1MeteringReceiptReqType->MeterInfo);
  7045. grammarID = 3;
  7046. break;
  7047. default:
  7048. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7049. break;
  7050. }
  7051. }
  7052. break;
  7053. case 3:
  7054. /* Element[END_ELEMENT] */
  7055. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7056. if (errn == 0) {
  7057. switch(eventCode) {
  7058. case 0:
  7059. done = 1;
  7060. grammarID = 4;
  7061. break;
  7062. default:
  7063. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7064. break;
  7065. }
  7066. }
  7067. break;
  7068. default:
  7069. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7070. break;
  7071. }
  7072. if(errn) {
  7073. done = 1;
  7074. }
  7075. }
  7076. return errn;
  7077. }
  7078. /* 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'. */
  7079. static int decode_iso1ServiceDetailResType(bitstream_t* stream, struct iso1ServiceDetailResType* iso1ServiceDetailResType) {
  7080. int grammarID = 170;
  7081. int done = 0;
  7082. init_iso1ServiceDetailResType(iso1ServiceDetailResType);
  7083. while(!done) {
  7084. switch(grammarID) {
  7085. case 170:
  7086. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  7087. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7088. if (errn == 0) {
  7089. switch(eventCode) {
  7090. case 0:
  7091. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  7092. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7093. if(errn == 0) {
  7094. if(eventCode == 0) {
  7095. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  7096. iso1ServiceDetailResType->ResponseCode = (iso1responseCodeType) uint32;
  7097. } else {
  7098. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7099. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7100. }
  7101. }
  7102. if(errn == 0) {
  7103. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  7104. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7105. if(eventCode == 0) {
  7106. grammarID = 171;
  7107. } else {
  7108. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7109. }
  7110. }
  7111. break;
  7112. default:
  7113. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7114. break;
  7115. }
  7116. }
  7117. break;
  7118. case 171:
  7119. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */
  7120. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7121. if (errn == 0) {
  7122. switch(eventCode) {
  7123. case 0:
  7124. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  7125. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7126. if(errn == 0) {
  7127. if(eventCode == 0) {
  7128. errn = decodeUnsignedInteger16(stream, &iso1ServiceDetailResType->ServiceID);
  7129. } else {
  7130. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7131. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7132. }
  7133. }
  7134. if(errn == 0) {
  7135. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID) ? */
  7136. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7137. if(eventCode == 0) {
  7138. grammarID = 172;
  7139. } else {
  7140. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7141. }
  7142. }
  7143. break;
  7144. default:
  7145. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7146. break;
  7147. }
  7148. }
  7149. break;
  7150. case 172:
  7151. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */
  7152. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7153. if (errn == 0) {
  7154. switch(eventCode) {
  7155. case 0:
  7156. errn = decode_iso1ServiceParameterListType(stream, &iso1ServiceDetailResType->ServiceParameterList);
  7157. iso1ServiceDetailResType->ServiceParameterList_isUsed = 1u;
  7158. grammarID = 3;
  7159. break;
  7160. case 1:
  7161. done = 1;
  7162. grammarID = 4;
  7163. break;
  7164. default:
  7165. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7166. break;
  7167. }
  7168. }
  7169. break;
  7170. case 3:
  7171. /* Element[END_ELEMENT] */
  7172. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7173. if (errn == 0) {
  7174. switch(eventCode) {
  7175. case 0:
  7176. done = 1;
  7177. grammarID = 4;
  7178. break;
  7179. default:
  7180. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7181. break;
  7182. }
  7183. }
  7184. break;
  7185. default:
  7186. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7187. break;
  7188. }
  7189. if(errn) {
  7190. done = 1;
  7191. }
  7192. }
  7193. return errn;
  7194. }
  7195. /* 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'. */
  7196. static int decode_iso1KeyValueType(bitstream_t* stream, struct iso1KeyValueType* iso1KeyValueType) {
  7197. int grammarID = 173;
  7198. int done = 0;
  7199. init_iso1KeyValueType(iso1KeyValueType);
  7200. while(!done) {
  7201. switch(grammarID) {
  7202. case 173:
  7203. /* 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]] */
  7204. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  7205. if (errn == 0) {
  7206. switch(eventCode) {
  7207. case 0:
  7208. errn = decode_iso1DSAKeyValueType(stream, &iso1KeyValueType->DSAKeyValue);
  7209. iso1KeyValueType->DSAKeyValue_isUsed = 1u;
  7210. grammarID = 174;
  7211. break;
  7212. case 1:
  7213. errn = decode_iso1RSAKeyValueType(stream, &iso1KeyValueType->RSAKeyValue);
  7214. iso1KeyValueType->RSAKeyValue_isUsed = 1u;
  7215. grammarID = 174;
  7216. break;
  7217. case 2:
  7218. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7219. /* TODO unsupported event : START_ELEMENT_GENERIC */
  7220. grammarID = 174;
  7221. break;
  7222. case 3:
  7223. errn = decodeUnsignedInteger16(stream, &iso1KeyValueType->ANY.charactersLen);
  7224. if (errn == 0) {
  7225. if (iso1KeyValueType->ANY.charactersLen >= 2) {
  7226. iso1KeyValueType->ANY.charactersLen = (uint16_t)(iso1KeyValueType->ANY.charactersLen - 2); /* string table miss */
  7227. errn = decodeCharacters(stream, iso1KeyValueType->ANY.charactersLen, iso1KeyValueType->ANY.characters, iso1KeyValueType_ANY_CHARACTERS_SIZE);
  7228. } else {
  7229. /* string table hit */
  7230. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  7231. }
  7232. }
  7233. iso1KeyValueType->ANY_isUsed = 1u;
  7234. grammarID = 175;
  7235. break;
  7236. default:
  7237. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7238. break;
  7239. }
  7240. }
  7241. break;
  7242. case 174:
  7243. /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  7244. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7245. if (errn == 0) {
  7246. switch(eventCode) {
  7247. case 0:
  7248. done = 1;
  7249. grammarID = 4;
  7250. break;
  7251. case 1:
  7252. errn = decodeUnsignedInteger16(stream, &iso1KeyValueType->ANY.charactersLen);
  7253. if (errn == 0) {
  7254. if (iso1KeyValueType->ANY.charactersLen >= 2) {
  7255. iso1KeyValueType->ANY.charactersLen = (uint16_t)(iso1KeyValueType->ANY.charactersLen - 2); /* string table miss */
  7256. errn = decodeCharacters(stream, iso1KeyValueType->ANY.charactersLen, iso1KeyValueType->ANY.characters, iso1KeyValueType_ANY_CHARACTERS_SIZE);
  7257. } else {
  7258. /* string table hit */
  7259. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  7260. }
  7261. }
  7262. iso1KeyValueType->ANY_isUsed = 1u;
  7263. grammarID = 174;
  7264. break;
  7265. default:
  7266. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7267. break;
  7268. }
  7269. }
  7270. break;
  7271. case 175:
  7272. /* 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]] */
  7273. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  7274. if (errn == 0) {
  7275. switch(eventCode) {
  7276. case 0:
  7277. errn = decode_iso1DSAKeyValueType(stream, &iso1KeyValueType->DSAKeyValue);
  7278. iso1KeyValueType->DSAKeyValue_isUsed = 1u;
  7279. grammarID = 174;
  7280. break;
  7281. case 1:
  7282. errn = decode_iso1RSAKeyValueType(stream, &iso1KeyValueType->RSAKeyValue);
  7283. iso1KeyValueType->RSAKeyValue_isUsed = 1u;
  7284. grammarID = 174;
  7285. break;
  7286. case 2:
  7287. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7288. /* TODO unsupported event : START_ELEMENT_GENERIC */
  7289. grammarID = 174;
  7290. break;
  7291. case 3:
  7292. errn = decodeUnsignedInteger16(stream, &iso1KeyValueType->ANY.charactersLen);
  7293. if (errn == 0) {
  7294. if (iso1KeyValueType->ANY.charactersLen >= 2) {
  7295. iso1KeyValueType->ANY.charactersLen = (uint16_t)(iso1KeyValueType->ANY.charactersLen - 2); /* string table miss */
  7296. errn = decodeCharacters(stream, iso1KeyValueType->ANY.charactersLen, iso1KeyValueType->ANY.characters, iso1KeyValueType_ANY_CHARACTERS_SIZE);
  7297. } else {
  7298. /* string table hit */
  7299. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  7300. }
  7301. }
  7302. iso1KeyValueType->ANY_isUsed = 1u;
  7303. grammarID = 175;
  7304. break;
  7305. default:
  7306. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7307. break;
  7308. }
  7309. }
  7310. break;
  7311. default:
  7312. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7313. break;
  7314. }
  7315. if(errn) {
  7316. done = 1;
  7317. }
  7318. }
  7319. return errn;
  7320. }
  7321. /* 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'. */
  7322. static int decode_iso1SelectedServiceListType(bitstream_t* stream, struct iso1SelectedServiceListType* iso1SelectedServiceListType) {
  7323. int grammarID = 176;
  7324. int done = 0;
  7325. init_iso1SelectedServiceListType(iso1SelectedServiceListType);
  7326. while(!done) {
  7327. switch(grammarID) {
  7328. case 176:
  7329. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */
  7330. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7331. if (errn == 0) {
  7332. switch(eventCode) {
  7333. case 0:
  7334. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7335. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7336. } else {
  7337. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7338. }
  7339. grammarID = 177;
  7340. break;
  7341. default:
  7342. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7343. break;
  7344. }
  7345. }
  7346. break;
  7347. case 177:
  7348. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7349. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7350. if (errn == 0) {
  7351. switch(eventCode) {
  7352. case 0:
  7353. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7354. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7355. } else {
  7356. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7357. }
  7358. grammarID = 178;
  7359. break;
  7360. case 1:
  7361. done = 1;
  7362. grammarID = 4;
  7363. break;
  7364. default:
  7365. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7366. break;
  7367. }
  7368. }
  7369. break;
  7370. case 178:
  7371. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7372. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7373. if (errn == 0) {
  7374. switch(eventCode) {
  7375. case 0:
  7376. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7377. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7378. } else {
  7379. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7380. }
  7381. grammarID = 179;
  7382. break;
  7383. case 1:
  7384. done = 1;
  7385. grammarID = 4;
  7386. break;
  7387. default:
  7388. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7389. break;
  7390. }
  7391. }
  7392. break;
  7393. case 179:
  7394. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7395. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7396. if (errn == 0) {
  7397. switch(eventCode) {
  7398. case 0:
  7399. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7400. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7401. } else {
  7402. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7403. }
  7404. grammarID = 180;
  7405. break;
  7406. case 1:
  7407. done = 1;
  7408. grammarID = 4;
  7409. break;
  7410. default:
  7411. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7412. break;
  7413. }
  7414. }
  7415. break;
  7416. case 180:
  7417. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7418. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7419. if (errn == 0) {
  7420. switch(eventCode) {
  7421. case 0:
  7422. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7423. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7424. } else {
  7425. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7426. }
  7427. grammarID = 181;
  7428. break;
  7429. case 1:
  7430. done = 1;
  7431. grammarID = 4;
  7432. break;
  7433. default:
  7434. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7435. break;
  7436. }
  7437. }
  7438. break;
  7439. case 181:
  7440. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7441. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7442. if (errn == 0) {
  7443. switch(eventCode) {
  7444. case 0:
  7445. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7446. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7447. } else {
  7448. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7449. }
  7450. grammarID = 182;
  7451. break;
  7452. case 1:
  7453. done = 1;
  7454. grammarID = 4;
  7455. break;
  7456. default:
  7457. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7458. break;
  7459. }
  7460. }
  7461. break;
  7462. case 182:
  7463. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7464. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7465. if (errn == 0) {
  7466. switch(eventCode) {
  7467. case 0:
  7468. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7469. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7470. } else {
  7471. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7472. }
  7473. grammarID = 183;
  7474. break;
  7475. case 1:
  7476. done = 1;
  7477. grammarID = 4;
  7478. break;
  7479. default:
  7480. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7481. break;
  7482. }
  7483. }
  7484. break;
  7485. case 183:
  7486. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7487. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7488. if (errn == 0) {
  7489. switch(eventCode) {
  7490. case 0:
  7491. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7492. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7493. } else {
  7494. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7495. }
  7496. grammarID = 184;
  7497. break;
  7498. case 1:
  7499. done = 1;
  7500. grammarID = 4;
  7501. break;
  7502. default:
  7503. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7504. break;
  7505. }
  7506. }
  7507. break;
  7508. case 184:
  7509. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7510. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7511. if (errn == 0) {
  7512. switch(eventCode) {
  7513. case 0:
  7514. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7515. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7516. } else {
  7517. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7518. }
  7519. grammarID = 185;
  7520. break;
  7521. case 1:
  7522. done = 1;
  7523. grammarID = 4;
  7524. break;
  7525. default:
  7526. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7527. break;
  7528. }
  7529. }
  7530. break;
  7531. case 185:
  7532. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7533. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7534. if (errn == 0) {
  7535. switch(eventCode) {
  7536. case 0:
  7537. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7538. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7539. } else {
  7540. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7541. }
  7542. grammarID = 186;
  7543. break;
  7544. case 1:
  7545. done = 1;
  7546. grammarID = 4;
  7547. break;
  7548. default:
  7549. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7550. break;
  7551. }
  7552. }
  7553. break;
  7554. case 186:
  7555. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7556. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7557. if (errn == 0) {
  7558. switch(eventCode) {
  7559. case 0:
  7560. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7561. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7562. } else {
  7563. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7564. }
  7565. grammarID = 187;
  7566. break;
  7567. case 1:
  7568. done = 1;
  7569. grammarID = 4;
  7570. break;
  7571. default:
  7572. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7573. break;
  7574. }
  7575. }
  7576. break;
  7577. case 187:
  7578. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7579. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7580. if (errn == 0) {
  7581. switch(eventCode) {
  7582. case 0:
  7583. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7584. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7585. } else {
  7586. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7587. }
  7588. grammarID = 188;
  7589. break;
  7590. case 1:
  7591. done = 1;
  7592. grammarID = 4;
  7593. break;
  7594. default:
  7595. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7596. break;
  7597. }
  7598. }
  7599. break;
  7600. case 188:
  7601. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7602. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7603. if (errn == 0) {
  7604. switch(eventCode) {
  7605. case 0:
  7606. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7607. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7608. } else {
  7609. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7610. }
  7611. grammarID = 189;
  7612. break;
  7613. case 1:
  7614. done = 1;
  7615. grammarID = 4;
  7616. break;
  7617. default:
  7618. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7619. break;
  7620. }
  7621. }
  7622. break;
  7623. case 189:
  7624. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7625. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7626. if (errn == 0) {
  7627. switch(eventCode) {
  7628. case 0:
  7629. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7630. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7631. } else {
  7632. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7633. }
  7634. grammarID = 190;
  7635. break;
  7636. case 1:
  7637. done = 1;
  7638. grammarID = 4;
  7639. break;
  7640. default:
  7641. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7642. break;
  7643. }
  7644. }
  7645. break;
  7646. case 190:
  7647. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7648. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7649. if (errn == 0) {
  7650. switch(eventCode) {
  7651. case 0:
  7652. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7653. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7654. } else {
  7655. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7656. }
  7657. grammarID = 191;
  7658. break;
  7659. case 1:
  7660. done = 1;
  7661. grammarID = 4;
  7662. break;
  7663. default:
  7664. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7665. break;
  7666. }
  7667. }
  7668. break;
  7669. case 191:
  7670. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */
  7671. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  7672. if (errn == 0) {
  7673. switch(eventCode) {
  7674. case 0:
  7675. if (iso1SelectedServiceListType->SelectedService.arrayLen < iso1SelectedServiceListType_SelectedService_ARRAY_SIZE) {
  7676. errn = decode_iso1SelectedServiceType(stream, &iso1SelectedServiceListType->SelectedService.array[iso1SelectedServiceListType->SelectedService.arrayLen++]);
  7677. } else {
  7678. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7679. }
  7680. grammarID = 3;
  7681. break;
  7682. case 1:
  7683. done = 1;
  7684. grammarID = 4;
  7685. break;
  7686. default:
  7687. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7688. break;
  7689. }
  7690. }
  7691. break;
  7692. case 3:
  7693. /* Element[END_ELEMENT] */
  7694. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7695. if (errn == 0) {
  7696. switch(eventCode) {
  7697. case 0:
  7698. done = 1;
  7699. grammarID = 4;
  7700. break;
  7701. default:
  7702. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7703. break;
  7704. }
  7705. }
  7706. break;
  7707. default:
  7708. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7709. break;
  7710. }
  7711. if(errn) {
  7712. done = 1;
  7713. }
  7714. }
  7715. return errn;
  7716. }
  7717. /* 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'. */
  7718. static int decode_iso1CableCheckResType(bitstream_t* stream, struct iso1CableCheckResType* iso1CableCheckResType) {
  7719. int grammarID = 192;
  7720. int done = 0;
  7721. init_iso1CableCheckResType(iso1CableCheckResType);
  7722. while(!done) {
  7723. switch(grammarID) {
  7724. case 192:
  7725. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  7726. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7727. if (errn == 0) {
  7728. switch(eventCode) {
  7729. case 0:
  7730. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  7731. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7732. if(errn == 0) {
  7733. if(eventCode == 0) {
  7734. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  7735. iso1CableCheckResType->ResponseCode = (iso1responseCodeType) uint32;
  7736. } else {
  7737. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7738. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7739. }
  7740. }
  7741. if(errn == 0) {
  7742. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  7743. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7744. if(eventCode == 0) {
  7745. grammarID = 193;
  7746. } else {
  7747. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7748. }
  7749. }
  7750. break;
  7751. default:
  7752. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7753. break;
  7754. }
  7755. }
  7756. break;
  7757. case 193:
  7758. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  7759. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7760. if (errn == 0) {
  7761. switch(eventCode) {
  7762. case 0:
  7763. errn = decode_iso1DC_EVSEStatusType(stream, &iso1CableCheckResType->DC_EVSEStatus);
  7764. grammarID = 130;
  7765. break;
  7766. default:
  7767. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7768. break;
  7769. }
  7770. }
  7771. break;
  7772. case 130:
  7773. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */
  7774. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7775. if (errn == 0) {
  7776. switch(eventCode) {
  7777. case 0:
  7778. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  7779. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7780. if(errn == 0) {
  7781. if(eventCode == 0) {
  7782. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  7783. iso1CableCheckResType->EVSEProcessing = (iso1EVSEProcessingType) uint32;
  7784. } else {
  7785. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7786. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7787. }
  7788. }
  7789. if(errn == 0) {
  7790. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) ? */
  7791. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7792. if(eventCode == 0) {
  7793. grammarID = 3;
  7794. } else {
  7795. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7796. }
  7797. }
  7798. break;
  7799. default:
  7800. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7801. break;
  7802. }
  7803. }
  7804. break;
  7805. case 3:
  7806. /* Element[END_ELEMENT] */
  7807. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7808. if (errn == 0) {
  7809. switch(eventCode) {
  7810. case 0:
  7811. done = 1;
  7812. grammarID = 4;
  7813. break;
  7814. default:
  7815. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7816. break;
  7817. }
  7818. }
  7819. break;
  7820. default:
  7821. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7822. break;
  7823. }
  7824. if(errn) {
  7825. done = 1;
  7826. }
  7827. }
  7828. return errn;
  7829. }
  7830. /* 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'. */
  7831. static int decode_iso1X509IssuerSerialType(bitstream_t* stream, struct iso1X509IssuerSerialType* iso1X509IssuerSerialType) {
  7832. int grammarID = 194;
  7833. int done = 0;
  7834. init_iso1X509IssuerSerialType(iso1X509IssuerSerialType);
  7835. while(!done) {
  7836. switch(grammarID) {
  7837. case 194:
  7838. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */
  7839. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7840. if (errn == 0) {
  7841. switch(eventCode) {
  7842. case 0:
  7843. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  7844. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7845. if(errn == 0) {
  7846. if(eventCode == 0) {
  7847. errn = decodeUnsignedInteger16(stream, &iso1X509IssuerSerialType->X509IssuerName.charactersLen);
  7848. if (errn == 0) {
  7849. if (iso1X509IssuerSerialType->X509IssuerName.charactersLen >= 2) {
  7850. iso1X509IssuerSerialType->X509IssuerName.charactersLen = (uint16_t)(iso1X509IssuerSerialType->X509IssuerName.charactersLen - 2); /* string table miss */
  7851. errn = decodeCharacters(stream, iso1X509IssuerSerialType->X509IssuerName.charactersLen, iso1X509IssuerSerialType->X509IssuerName.characters, iso1X509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE);
  7852. } else {
  7853. /* string table hit */
  7854. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  7855. }
  7856. }
  7857. } else {
  7858. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7859. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7860. }
  7861. }
  7862. if(errn == 0) {
  7863. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName) ? */
  7864. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7865. if(eventCode == 0) {
  7866. grammarID = 195;
  7867. } else {
  7868. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7869. }
  7870. }
  7871. break;
  7872. default:
  7873. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7874. break;
  7875. }
  7876. }
  7877. break;
  7878. case 195:
  7879. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */
  7880. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7881. if (errn == 0) {
  7882. switch(eventCode) {
  7883. case 0:
  7884. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  7885. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7886. if(errn == 0) {
  7887. if(eventCode == 0) {
  7888. errn = decodeInteger64(stream, &iso1X509IssuerSerialType->X509SerialNumber);
  7889. } else {
  7890. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7891. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7892. }
  7893. }
  7894. if(errn == 0) {
  7895. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber) ? */
  7896. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7897. if(eventCode == 0) {
  7898. grammarID = 3;
  7899. } else {
  7900. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7901. }
  7902. }
  7903. break;
  7904. default:
  7905. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7906. break;
  7907. }
  7908. }
  7909. break;
  7910. case 3:
  7911. /* Element[END_ELEMENT] */
  7912. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7913. if (errn == 0) {
  7914. switch(eventCode) {
  7915. case 0:
  7916. done = 1;
  7917. grammarID = 4;
  7918. break;
  7919. default:
  7920. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  7921. break;
  7922. }
  7923. }
  7924. break;
  7925. default:
  7926. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  7927. break;
  7928. }
  7929. if(errn) {
  7930. done = 1;
  7931. }
  7932. }
  7933. return errn;
  7934. }
  7935. /* 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'. */
  7936. static int decode_iso1KeyInfoType(bitstream_t* stream, struct iso1KeyInfoType* iso1KeyInfoType) {
  7937. int grammarID = 196;
  7938. int done = 0;
  7939. init_iso1KeyInfoType(iso1KeyInfoType);
  7940. while(!done) {
  7941. switch(grammarID) {
  7942. case 196:
  7943. /* 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]] */
  7944. errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
  7945. if (errn == 0) {
  7946. switch(eventCode) {
  7947. case 0:
  7948. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->Id.charactersLen);
  7949. if (errn == 0) {
  7950. if (iso1KeyInfoType->Id.charactersLen >= 2) {
  7951. iso1KeyInfoType->Id.charactersLen = (uint16_t)(iso1KeyInfoType->Id.charactersLen - 2); /* string table miss */
  7952. errn = decodeCharacters(stream, iso1KeyInfoType->Id.charactersLen, iso1KeyInfoType->Id.characters, iso1KeyInfoType_Id_CHARACTERS_SIZE);
  7953. } else {
  7954. /* string table hit */
  7955. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  7956. }
  7957. }
  7958. iso1KeyInfoType->Id_isUsed = 1u;
  7959. grammarID = 197;
  7960. break;
  7961. case 1:
  7962. if (iso1KeyInfoType->KeyName.arrayLen < iso1KeyInfoType_KeyName_ARRAY_SIZE) {
  7963. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  7964. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7965. if(errn == 0) {
  7966. if(eventCode == 0) {
  7967. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen);
  7968. if (errn == 0) {
  7969. if (iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
  7970. iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
  7971. errn = decodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].characters, iso1KeyInfoType_KeyName_CHARACTERS_SIZE);
  7972. } else {
  7973. /* string table hit */
  7974. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  7975. }
  7976. }
  7977. iso1KeyInfoType->KeyName.arrayLen++;
  7978. } else {
  7979. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  7980. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  7981. }
  7982. }
  7983. } else {
  7984. errn = EXI_ERROR_OUT_OF_BOUNDS;
  7985. }
  7986. if(errn == 0) {
  7987. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
  7988. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  7989. if(eventCode == 0) {
  7990. grammarID = 198;
  7991. } else {
  7992. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  7993. }
  7994. }
  7995. break;
  7996. case 2:
  7997. if (iso1KeyInfoType->KeyValue.arrayLen < iso1KeyInfoType_KeyValue_ARRAY_SIZE) {
  7998. errn = decode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array[iso1KeyInfoType->KeyValue.arrayLen++]);
  7999. } else {
  8000. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8001. }
  8002. grammarID = 198;
  8003. break;
  8004. case 3:
  8005. if (iso1KeyInfoType->RetrievalMethod.arrayLen < iso1KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
  8006. errn = decode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array[iso1KeyInfoType->RetrievalMethod.arrayLen++]);
  8007. } else {
  8008. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8009. }
  8010. grammarID = 198;
  8011. break;
  8012. case 4:
  8013. if (iso1KeyInfoType->X509Data.arrayLen < iso1KeyInfoType_X509Data_ARRAY_SIZE) {
  8014. errn = decode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array[iso1KeyInfoType->X509Data.arrayLen++]);
  8015. } else {
  8016. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8017. }
  8018. grammarID = 198;
  8019. break;
  8020. case 5:
  8021. if (iso1KeyInfoType->PGPData.arrayLen < iso1KeyInfoType_PGPData_ARRAY_SIZE) {
  8022. errn = decode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array[iso1KeyInfoType->PGPData.arrayLen++]);
  8023. } else {
  8024. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8025. }
  8026. grammarID = 198;
  8027. break;
  8028. case 6:
  8029. if (iso1KeyInfoType->SPKIData.arrayLen < iso1KeyInfoType_SPKIData_ARRAY_SIZE) {
  8030. errn = decode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array[iso1KeyInfoType->SPKIData.arrayLen++]);
  8031. } else {
  8032. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8033. }
  8034. grammarID = 198;
  8035. break;
  8036. case 7:
  8037. if (iso1KeyInfoType->MgmtData.arrayLen < iso1KeyInfoType_MgmtData_ARRAY_SIZE) {
  8038. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8039. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8040. if(errn == 0) {
  8041. if(eventCode == 0) {
  8042. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen);
  8043. if (errn == 0) {
  8044. if (iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
  8045. iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
  8046. errn = decodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].characters, iso1KeyInfoType_MgmtData_CHARACTERS_SIZE);
  8047. } else {
  8048. /* string table hit */
  8049. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8050. }
  8051. }
  8052. iso1KeyInfoType->MgmtData.arrayLen++;
  8053. } else {
  8054. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8055. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8056. }
  8057. }
  8058. } else {
  8059. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8060. }
  8061. if(errn == 0) {
  8062. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
  8063. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8064. if(eventCode == 0) {
  8065. grammarID = 198;
  8066. } else {
  8067. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8068. }
  8069. }
  8070. break;
  8071. case 8:
  8072. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8073. /* TODO unsupported event : START_ELEMENT_GENERIC */
  8074. grammarID = 198;
  8075. break;
  8076. case 9:
  8077. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->ANY.charactersLen);
  8078. if (errn == 0) {
  8079. if (iso1KeyInfoType->ANY.charactersLen >= 2) {
  8080. iso1KeyInfoType->ANY.charactersLen = (uint16_t)(iso1KeyInfoType->ANY.charactersLen - 2); /* string table miss */
  8081. errn = decodeCharacters(stream, iso1KeyInfoType->ANY.charactersLen, iso1KeyInfoType->ANY.characters, iso1KeyInfoType_ANY_CHARACTERS_SIZE);
  8082. } else {
  8083. /* string table hit */
  8084. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8085. }
  8086. }
  8087. iso1KeyInfoType->ANY_isUsed = 1u;
  8088. grammarID = 199;
  8089. break;
  8090. default:
  8091. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8092. break;
  8093. }
  8094. }
  8095. break;
  8096. case 197:
  8097. /* 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]] */
  8098. errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
  8099. if (errn == 0) {
  8100. switch(eventCode) {
  8101. case 0:
  8102. if (iso1KeyInfoType->KeyName.arrayLen < iso1KeyInfoType_KeyName_ARRAY_SIZE) {
  8103. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8104. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8105. if(errn == 0) {
  8106. if(eventCode == 0) {
  8107. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen);
  8108. if (errn == 0) {
  8109. if (iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
  8110. iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
  8111. errn = decodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].characters, iso1KeyInfoType_KeyName_CHARACTERS_SIZE);
  8112. } else {
  8113. /* string table hit */
  8114. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8115. }
  8116. }
  8117. iso1KeyInfoType->KeyName.arrayLen++;
  8118. } else {
  8119. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8120. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8121. }
  8122. }
  8123. } else {
  8124. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8125. }
  8126. if(errn == 0) {
  8127. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
  8128. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8129. if(eventCode == 0) {
  8130. grammarID = 198;
  8131. } else {
  8132. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8133. }
  8134. }
  8135. break;
  8136. case 1:
  8137. if (iso1KeyInfoType->KeyValue.arrayLen < iso1KeyInfoType_KeyValue_ARRAY_SIZE) {
  8138. errn = decode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array[iso1KeyInfoType->KeyValue.arrayLen++]);
  8139. } else {
  8140. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8141. }
  8142. grammarID = 198;
  8143. break;
  8144. case 2:
  8145. if (iso1KeyInfoType->RetrievalMethod.arrayLen < iso1KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
  8146. errn = decode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array[iso1KeyInfoType->RetrievalMethod.arrayLen++]);
  8147. } else {
  8148. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8149. }
  8150. grammarID = 198;
  8151. break;
  8152. case 3:
  8153. if (iso1KeyInfoType->X509Data.arrayLen < iso1KeyInfoType_X509Data_ARRAY_SIZE) {
  8154. errn = decode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array[iso1KeyInfoType->X509Data.arrayLen++]);
  8155. } else {
  8156. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8157. }
  8158. grammarID = 198;
  8159. break;
  8160. case 4:
  8161. if (iso1KeyInfoType->PGPData.arrayLen < iso1KeyInfoType_PGPData_ARRAY_SIZE) {
  8162. errn = decode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array[iso1KeyInfoType->PGPData.arrayLen++]);
  8163. } else {
  8164. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8165. }
  8166. grammarID = 198;
  8167. break;
  8168. case 5:
  8169. if (iso1KeyInfoType->SPKIData.arrayLen < iso1KeyInfoType_SPKIData_ARRAY_SIZE) {
  8170. errn = decode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array[iso1KeyInfoType->SPKIData.arrayLen++]);
  8171. } else {
  8172. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8173. }
  8174. grammarID = 198;
  8175. break;
  8176. case 6:
  8177. if (iso1KeyInfoType->MgmtData.arrayLen < iso1KeyInfoType_MgmtData_ARRAY_SIZE) {
  8178. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8179. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8180. if(errn == 0) {
  8181. if(eventCode == 0) {
  8182. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen);
  8183. if (errn == 0) {
  8184. if (iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
  8185. iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
  8186. errn = decodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].characters, iso1KeyInfoType_MgmtData_CHARACTERS_SIZE);
  8187. } else {
  8188. /* string table hit */
  8189. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8190. }
  8191. }
  8192. iso1KeyInfoType->MgmtData.arrayLen++;
  8193. } else {
  8194. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8195. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8196. }
  8197. }
  8198. } else {
  8199. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8200. }
  8201. if(errn == 0) {
  8202. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
  8203. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8204. if(eventCode == 0) {
  8205. grammarID = 198;
  8206. } else {
  8207. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8208. }
  8209. }
  8210. break;
  8211. case 7:
  8212. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8213. /* TODO unsupported event : START_ELEMENT_GENERIC */
  8214. grammarID = 198;
  8215. break;
  8216. case 8:
  8217. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->ANY.charactersLen);
  8218. if (errn == 0) {
  8219. if (iso1KeyInfoType->ANY.charactersLen >= 2) {
  8220. iso1KeyInfoType->ANY.charactersLen = (uint16_t)(iso1KeyInfoType->ANY.charactersLen - 2); /* string table miss */
  8221. errn = decodeCharacters(stream, iso1KeyInfoType->ANY.charactersLen, iso1KeyInfoType->ANY.characters, iso1KeyInfoType_ANY_CHARACTERS_SIZE);
  8222. } else {
  8223. /* string table hit */
  8224. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8225. }
  8226. }
  8227. iso1KeyInfoType->ANY_isUsed = 1u;
  8228. grammarID = 199;
  8229. break;
  8230. default:
  8231. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8232. break;
  8233. }
  8234. }
  8235. break;
  8236. case 198:
  8237. /* 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]] */
  8238. errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
  8239. if (errn == 0) {
  8240. switch(eventCode) {
  8241. case 0:
  8242. if (iso1KeyInfoType->KeyName.arrayLen < iso1KeyInfoType_KeyName_ARRAY_SIZE) {
  8243. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8244. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8245. if(errn == 0) {
  8246. if(eventCode == 0) {
  8247. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen);
  8248. if (errn == 0) {
  8249. if (iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
  8250. iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
  8251. errn = decodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].characters, iso1KeyInfoType_KeyName_CHARACTERS_SIZE);
  8252. } else {
  8253. /* string table hit */
  8254. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8255. }
  8256. }
  8257. iso1KeyInfoType->KeyName.arrayLen++;
  8258. } else {
  8259. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8260. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8261. }
  8262. }
  8263. } else {
  8264. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8265. }
  8266. if(errn == 0) {
  8267. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
  8268. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8269. if(eventCode == 0) {
  8270. grammarID = 198;
  8271. } else {
  8272. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8273. }
  8274. }
  8275. break;
  8276. case 1:
  8277. if (iso1KeyInfoType->KeyValue.arrayLen < iso1KeyInfoType_KeyValue_ARRAY_SIZE) {
  8278. errn = decode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array[iso1KeyInfoType->KeyValue.arrayLen++]);
  8279. } else {
  8280. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8281. }
  8282. grammarID = 198;
  8283. break;
  8284. case 2:
  8285. if (iso1KeyInfoType->RetrievalMethod.arrayLen < iso1KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
  8286. errn = decode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array[iso1KeyInfoType->RetrievalMethod.arrayLen++]);
  8287. } else {
  8288. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8289. }
  8290. grammarID = 198;
  8291. break;
  8292. case 3:
  8293. if (iso1KeyInfoType->X509Data.arrayLen < iso1KeyInfoType_X509Data_ARRAY_SIZE) {
  8294. errn = decode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array[iso1KeyInfoType->X509Data.arrayLen++]);
  8295. } else {
  8296. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8297. }
  8298. grammarID = 198;
  8299. break;
  8300. case 4:
  8301. if (iso1KeyInfoType->PGPData.arrayLen < iso1KeyInfoType_PGPData_ARRAY_SIZE) {
  8302. errn = decode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array[iso1KeyInfoType->PGPData.arrayLen++]);
  8303. } else {
  8304. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8305. }
  8306. grammarID = 198;
  8307. break;
  8308. case 5:
  8309. if (iso1KeyInfoType->SPKIData.arrayLen < iso1KeyInfoType_SPKIData_ARRAY_SIZE) {
  8310. errn = decode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array[iso1KeyInfoType->SPKIData.arrayLen++]);
  8311. } else {
  8312. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8313. }
  8314. grammarID = 198;
  8315. break;
  8316. case 6:
  8317. if (iso1KeyInfoType->MgmtData.arrayLen < iso1KeyInfoType_MgmtData_ARRAY_SIZE) {
  8318. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8319. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8320. if(errn == 0) {
  8321. if(eventCode == 0) {
  8322. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen);
  8323. if (errn == 0) {
  8324. if (iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
  8325. iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
  8326. errn = decodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].characters, iso1KeyInfoType_MgmtData_CHARACTERS_SIZE);
  8327. } else {
  8328. /* string table hit */
  8329. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8330. }
  8331. }
  8332. iso1KeyInfoType->MgmtData.arrayLen++;
  8333. } else {
  8334. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8335. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8336. }
  8337. }
  8338. } else {
  8339. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8340. }
  8341. if(errn == 0) {
  8342. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
  8343. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8344. if(eventCode == 0) {
  8345. grammarID = 198;
  8346. } else {
  8347. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8348. }
  8349. }
  8350. break;
  8351. case 7:
  8352. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8353. /* TODO unsupported event : START_ELEMENT_GENERIC */
  8354. grammarID = 198;
  8355. break;
  8356. case 8:
  8357. done = 1;
  8358. grammarID = 4;
  8359. break;
  8360. case 9:
  8361. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->ANY.charactersLen);
  8362. if (errn == 0) {
  8363. if (iso1KeyInfoType->ANY.charactersLen >= 2) {
  8364. iso1KeyInfoType->ANY.charactersLen = (uint16_t)(iso1KeyInfoType->ANY.charactersLen - 2); /* string table miss */
  8365. errn = decodeCharacters(stream, iso1KeyInfoType->ANY.charactersLen, iso1KeyInfoType->ANY.characters, iso1KeyInfoType_ANY_CHARACTERS_SIZE);
  8366. } else {
  8367. /* string table hit */
  8368. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8369. }
  8370. }
  8371. iso1KeyInfoType->ANY_isUsed = 1u;
  8372. grammarID = 198;
  8373. break;
  8374. default:
  8375. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8376. break;
  8377. }
  8378. }
  8379. break;
  8380. case 199:
  8381. /* 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]] */
  8382. errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
  8383. if (errn == 0) {
  8384. switch(eventCode) {
  8385. case 0:
  8386. if (iso1KeyInfoType->KeyName.arrayLen < iso1KeyInfoType_KeyName_ARRAY_SIZE) {
  8387. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8388. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8389. if(errn == 0) {
  8390. if(eventCode == 0) {
  8391. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen);
  8392. if (errn == 0) {
  8393. if (iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
  8394. iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
  8395. errn = decodeCharacters(stream, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].charactersLen, iso1KeyInfoType->KeyName.array[iso1KeyInfoType->KeyName.arrayLen].characters, iso1KeyInfoType_KeyName_CHARACTERS_SIZE);
  8396. } else {
  8397. /* string table hit */
  8398. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8399. }
  8400. }
  8401. iso1KeyInfoType->KeyName.arrayLen++;
  8402. } else {
  8403. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8404. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8405. }
  8406. }
  8407. } else {
  8408. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8409. }
  8410. if(errn == 0) {
  8411. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
  8412. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8413. if(eventCode == 0) {
  8414. grammarID = 198;
  8415. } else {
  8416. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8417. }
  8418. }
  8419. break;
  8420. case 1:
  8421. if (iso1KeyInfoType->KeyValue.arrayLen < iso1KeyInfoType_KeyValue_ARRAY_SIZE) {
  8422. errn = decode_iso1KeyValueType(stream, &iso1KeyInfoType->KeyValue.array[iso1KeyInfoType->KeyValue.arrayLen++]);
  8423. } else {
  8424. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8425. }
  8426. grammarID = 198;
  8427. break;
  8428. case 2:
  8429. if (iso1KeyInfoType->RetrievalMethod.arrayLen < iso1KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
  8430. errn = decode_iso1RetrievalMethodType(stream, &iso1KeyInfoType->RetrievalMethod.array[iso1KeyInfoType->RetrievalMethod.arrayLen++]);
  8431. } else {
  8432. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8433. }
  8434. grammarID = 198;
  8435. break;
  8436. case 3:
  8437. if (iso1KeyInfoType->X509Data.arrayLen < iso1KeyInfoType_X509Data_ARRAY_SIZE) {
  8438. errn = decode_iso1X509DataType(stream, &iso1KeyInfoType->X509Data.array[iso1KeyInfoType->X509Data.arrayLen++]);
  8439. } else {
  8440. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8441. }
  8442. grammarID = 198;
  8443. break;
  8444. case 4:
  8445. if (iso1KeyInfoType->PGPData.arrayLen < iso1KeyInfoType_PGPData_ARRAY_SIZE) {
  8446. errn = decode_iso1PGPDataType(stream, &iso1KeyInfoType->PGPData.array[iso1KeyInfoType->PGPData.arrayLen++]);
  8447. } else {
  8448. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8449. }
  8450. grammarID = 198;
  8451. break;
  8452. case 5:
  8453. if (iso1KeyInfoType->SPKIData.arrayLen < iso1KeyInfoType_SPKIData_ARRAY_SIZE) {
  8454. errn = decode_iso1SPKIDataType(stream, &iso1KeyInfoType->SPKIData.array[iso1KeyInfoType->SPKIData.arrayLen++]);
  8455. } else {
  8456. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8457. }
  8458. grammarID = 198;
  8459. break;
  8460. case 6:
  8461. if (iso1KeyInfoType->MgmtData.arrayLen < iso1KeyInfoType_MgmtData_ARRAY_SIZE) {
  8462. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  8463. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8464. if(errn == 0) {
  8465. if(eventCode == 0) {
  8466. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen);
  8467. if (errn == 0) {
  8468. if (iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
  8469. iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
  8470. errn = decodeCharacters(stream, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].charactersLen, iso1KeyInfoType->MgmtData.array[iso1KeyInfoType->MgmtData.arrayLen].characters, iso1KeyInfoType_MgmtData_CHARACTERS_SIZE);
  8471. } else {
  8472. /* string table hit */
  8473. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8474. }
  8475. }
  8476. iso1KeyInfoType->MgmtData.arrayLen++;
  8477. } else {
  8478. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8479. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8480. }
  8481. }
  8482. } else {
  8483. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8484. }
  8485. if(errn == 0) {
  8486. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
  8487. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8488. if(eventCode == 0) {
  8489. grammarID = 198;
  8490. } else {
  8491. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8492. }
  8493. }
  8494. break;
  8495. case 7:
  8496. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8497. /* TODO unsupported event : START_ELEMENT_GENERIC */
  8498. grammarID = 198;
  8499. break;
  8500. case 8:
  8501. errn = decodeUnsignedInteger16(stream, &iso1KeyInfoType->ANY.charactersLen);
  8502. if (errn == 0) {
  8503. if (iso1KeyInfoType->ANY.charactersLen >= 2) {
  8504. iso1KeyInfoType->ANY.charactersLen = (uint16_t)(iso1KeyInfoType->ANY.charactersLen - 2); /* string table miss */
  8505. errn = decodeCharacters(stream, iso1KeyInfoType->ANY.charactersLen, iso1KeyInfoType->ANY.characters, iso1KeyInfoType_ANY_CHARACTERS_SIZE);
  8506. } else {
  8507. /* string table hit */
  8508. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8509. }
  8510. }
  8511. iso1KeyInfoType->ANY_isUsed = 1u;
  8512. grammarID = 199;
  8513. break;
  8514. default:
  8515. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8516. break;
  8517. }
  8518. }
  8519. break;
  8520. default:
  8521. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8522. break;
  8523. }
  8524. if(errn) {
  8525. done = 1;
  8526. }
  8527. }
  8528. return errn;
  8529. }
  8530. /* 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'. */
  8531. static int decode_iso1TransformsType(bitstream_t* stream, struct iso1TransformsType* iso1TransformsType) {
  8532. int grammarID = 200;
  8533. int done = 0;
  8534. init_iso1TransformsType(iso1TransformsType);
  8535. while(!done) {
  8536. switch(grammarID) {
  8537. case 200:
  8538. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */
  8539. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8540. if (errn == 0) {
  8541. switch(eventCode) {
  8542. case 0:
  8543. if (iso1TransformsType->Transform.arrayLen < iso1TransformsType_Transform_ARRAY_SIZE) {
  8544. errn = decode_iso1TransformType(stream, &iso1TransformsType->Transform.array[iso1TransformsType->Transform.arrayLen++]);
  8545. } else {
  8546. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8547. }
  8548. grammarID = 201;
  8549. break;
  8550. default:
  8551. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8552. break;
  8553. }
  8554. }
  8555. break;
  8556. case 201:
  8557. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */
  8558. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  8559. if (errn == 0) {
  8560. switch(eventCode) {
  8561. case 0:
  8562. if (iso1TransformsType->Transform.arrayLen < iso1TransformsType_Transform_ARRAY_SIZE) {
  8563. errn = decode_iso1TransformType(stream, &iso1TransformsType->Transform.array[iso1TransformsType->Transform.arrayLen++]);
  8564. } else {
  8565. errn = EXI_ERROR_OUT_OF_BOUNDS;
  8566. }
  8567. grammarID = 201;
  8568. break;
  8569. case 1:
  8570. done = 1;
  8571. grammarID = 4;
  8572. break;
  8573. default:
  8574. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8575. break;
  8576. }
  8577. }
  8578. break;
  8579. default:
  8580. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8581. break;
  8582. }
  8583. if(errn) {
  8584. done = 1;
  8585. }
  8586. }
  8587. return errn;
  8588. }
  8589. /* 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'. */
  8590. static int decode_iso1ChargeParameterDiscoveryReqType(bitstream_t* stream, struct iso1ChargeParameterDiscoveryReqType* iso1ChargeParameterDiscoveryReqType) {
  8591. int grammarID = 202;
  8592. int done = 0;
  8593. init_iso1ChargeParameterDiscoveryReqType(iso1ChargeParameterDiscoveryReqType);
  8594. while(!done) {
  8595. switch(grammarID) {
  8596. case 202:
  8597. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */
  8598. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  8599. if (errn == 0) {
  8600. switch(eventCode) {
  8601. case 0:
  8602. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  8603. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8604. if(errn == 0) {
  8605. if(eventCode == 0) {
  8606. errn = decodeUnsignedInteger16(stream, &iso1ChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple);
  8607. iso1ChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 1u;
  8608. } else {
  8609. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8610. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8611. }
  8612. }
  8613. if(errn == 0) {
  8614. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple) ? */
  8615. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8616. if(eventCode == 0) {
  8617. grammarID = 203;
  8618. } else {
  8619. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8620. }
  8621. }
  8622. break;
  8623. case 1:
  8624. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  8625. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8626. if(errn == 0) {
  8627. if(eventCode == 0) {
  8628. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  8629. iso1ChargeParameterDiscoveryReqType->RequestedEnergyTransferMode = (iso1EnergyTransferModeType) uint32;
  8630. } else {
  8631. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8632. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8633. }
  8634. }
  8635. if(errn == 0) {
  8636. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode) ? */
  8637. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8638. if(eventCode == 0) {
  8639. grammarID = 204;
  8640. } else {
  8641. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8642. }
  8643. }
  8644. break;
  8645. default:
  8646. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8647. break;
  8648. }
  8649. }
  8650. break;
  8651. case 203:
  8652. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */
  8653. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8654. if (errn == 0) {
  8655. switch(eventCode) {
  8656. case 0:
  8657. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  8658. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8659. if(errn == 0) {
  8660. if(eventCode == 0) {
  8661. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  8662. iso1ChargeParameterDiscoveryReqType->RequestedEnergyTransferMode = (iso1EnergyTransferModeType) uint32;
  8663. } else {
  8664. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8665. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8666. }
  8667. }
  8668. if(errn == 0) {
  8669. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode) ? */
  8670. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8671. if(eventCode == 0) {
  8672. grammarID = 204;
  8673. } else {
  8674. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8675. }
  8676. }
  8677. break;
  8678. default:
  8679. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8680. break;
  8681. }
  8682. }
  8683. break;
  8684. case 204:
  8685. /* 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)] */
  8686. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  8687. if (errn == 0) {
  8688. switch(eventCode) {
  8689. case 0:
  8690. errn = decode_iso1AC_EVChargeParameterType(stream, &iso1ChargeParameterDiscoveryReqType->AC_EVChargeParameter);
  8691. iso1ChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 1u;
  8692. grammarID = 3;
  8693. break;
  8694. case 1:
  8695. errn = decode_iso1DC_EVChargeParameterType(stream, &iso1ChargeParameterDiscoveryReqType->DC_EVChargeParameter);
  8696. iso1ChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 1u;
  8697. grammarID = 3;
  8698. break;
  8699. case 2:
  8700. errn = decode_iso1EVChargeParameterType(stream, &iso1ChargeParameterDiscoveryReqType->EVChargeParameter);
  8701. iso1ChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 1u;
  8702. grammarID = 3;
  8703. break;
  8704. default:
  8705. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8706. break;
  8707. }
  8708. }
  8709. break;
  8710. case 3:
  8711. /* Element[END_ELEMENT] */
  8712. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8713. if (errn == 0) {
  8714. switch(eventCode) {
  8715. case 0:
  8716. done = 1;
  8717. grammarID = 4;
  8718. break;
  8719. default:
  8720. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8721. break;
  8722. }
  8723. }
  8724. break;
  8725. default:
  8726. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8727. break;
  8728. }
  8729. if(errn) {
  8730. done = 1;
  8731. }
  8732. }
  8733. return errn;
  8734. }
  8735. /* 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'. */
  8736. static int decode_iso1PreChargeReqType(bitstream_t* stream, struct iso1PreChargeReqType* iso1PreChargeReqType) {
  8737. int grammarID = 205;
  8738. int done = 0;
  8739. init_iso1PreChargeReqType(iso1PreChargeReqType);
  8740. while(!done) {
  8741. switch(grammarID) {
  8742. case 205:
  8743. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  8744. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8745. if (errn == 0) {
  8746. switch(eventCode) {
  8747. case 0:
  8748. errn = decode_iso1DC_EVStatusType(stream, &iso1PreChargeReqType->DC_EVStatus);
  8749. grammarID = 206;
  8750. break;
  8751. default:
  8752. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8753. break;
  8754. }
  8755. }
  8756. break;
  8757. case 206:
  8758. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  8759. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8760. if (errn == 0) {
  8761. switch(eventCode) {
  8762. case 0:
  8763. errn = decode_iso1PhysicalValueType(stream, &iso1PreChargeReqType->EVTargetVoltage);
  8764. grammarID = 207;
  8765. break;
  8766. default:
  8767. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8768. break;
  8769. }
  8770. }
  8771. break;
  8772. case 207:
  8773. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */
  8774. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8775. if (errn == 0) {
  8776. switch(eventCode) {
  8777. case 0:
  8778. errn = decode_iso1PhysicalValueType(stream, &iso1PreChargeReqType->EVTargetCurrent);
  8779. grammarID = 3;
  8780. break;
  8781. default:
  8782. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8783. break;
  8784. }
  8785. }
  8786. break;
  8787. case 3:
  8788. /* Element[END_ELEMENT] */
  8789. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8790. if (errn == 0) {
  8791. switch(eventCode) {
  8792. case 0:
  8793. done = 1;
  8794. grammarID = 4;
  8795. break;
  8796. default:
  8797. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8798. break;
  8799. }
  8800. }
  8801. break;
  8802. default:
  8803. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8804. break;
  8805. }
  8806. if(errn) {
  8807. done = 1;
  8808. }
  8809. }
  8810. return errn;
  8811. }
  8812. /* 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'. */
  8813. static int decode_iso1EVSEStatusType(bitstream_t* stream, struct iso1EVSEStatusType* iso1EVSEStatusType) {
  8814. int grammarID = 208;
  8815. int done = 0;
  8816. init_iso1EVSEStatusType(iso1EVSEStatusType);
  8817. while(!done) {
  8818. switch(grammarID) {
  8819. case 208:
  8820. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */
  8821. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8822. if (errn == 0) {
  8823. switch(eventCode) {
  8824. case 0:
  8825. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  8826. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8827. if(errn == 0) {
  8828. if(eventCode == 0) {
  8829. errn = decodeUnsignedInteger16(stream, &iso1EVSEStatusType->NotificationMaxDelay);
  8830. } else {
  8831. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8832. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8833. }
  8834. }
  8835. if(errn == 0) {
  8836. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) ? */
  8837. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8838. if(eventCode == 0) {
  8839. grammarID = 209;
  8840. } else {
  8841. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8842. }
  8843. }
  8844. break;
  8845. default:
  8846. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8847. break;
  8848. }
  8849. }
  8850. break;
  8851. case 209:
  8852. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */
  8853. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8854. if (errn == 0) {
  8855. switch(eventCode) {
  8856. case 0:
  8857. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  8858. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8859. if(errn == 0) {
  8860. if(eventCode == 0) {
  8861. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  8862. iso1EVSEStatusType->EVSENotification = (iso1EVSENotificationType) uint32;
  8863. } else {
  8864. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8865. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8866. }
  8867. }
  8868. if(errn == 0) {
  8869. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) ? */
  8870. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8871. if(eventCode == 0) {
  8872. grammarID = 3;
  8873. } else {
  8874. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8875. }
  8876. }
  8877. break;
  8878. default:
  8879. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8880. break;
  8881. }
  8882. }
  8883. break;
  8884. case 3:
  8885. /* Element[END_ELEMENT] */
  8886. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8887. if (errn == 0) {
  8888. switch(eventCode) {
  8889. case 0:
  8890. done = 1;
  8891. grammarID = 4;
  8892. break;
  8893. default:
  8894. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8895. break;
  8896. }
  8897. }
  8898. break;
  8899. default:
  8900. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  8901. break;
  8902. }
  8903. if(errn) {
  8904. done = 1;
  8905. }
  8906. }
  8907. return errn;
  8908. }
  8909. /* 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'. */
  8910. static int decode_iso1SignatureMethodType(bitstream_t* stream, struct iso1SignatureMethodType* iso1SignatureMethodType) {
  8911. int grammarID = 210;
  8912. int done = 0;
  8913. init_iso1SignatureMethodType(iso1SignatureMethodType);
  8914. while(!done) {
  8915. switch(grammarID) {
  8916. case 210:
  8917. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  8918. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8919. if (errn == 0) {
  8920. switch(eventCode) {
  8921. case 0:
  8922. errn = decodeUnsignedInteger16(stream, &iso1SignatureMethodType->Algorithm.charactersLen);
  8923. if (errn == 0) {
  8924. if (iso1SignatureMethodType->Algorithm.charactersLen >= 2) {
  8925. iso1SignatureMethodType->Algorithm.charactersLen = (uint16_t)(iso1SignatureMethodType->Algorithm.charactersLen - 2); /* string table miss */
  8926. errn = decodeCharacters(stream, iso1SignatureMethodType->Algorithm.charactersLen, iso1SignatureMethodType->Algorithm.characters, iso1SignatureMethodType_Algorithm_CHARACTERS_SIZE);
  8927. } else {
  8928. /* string table hit */
  8929. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8930. }
  8931. }
  8932. grammarID = 211;
  8933. break;
  8934. default:
  8935. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8936. break;
  8937. }
  8938. }
  8939. break;
  8940. case 211:
  8941. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  8942. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  8943. if (errn == 0) {
  8944. switch(eventCode) {
  8945. case 0:
  8946. /* FirstStartTag[CHARACTERS[INTEGER]] */
  8947. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8948. if(errn == 0) {
  8949. if(eventCode == 0) {
  8950. errn = decodeInteger64(stream, &iso1SignatureMethodType->HMACOutputLength);
  8951. iso1SignatureMethodType->HMACOutputLength_isUsed = 1u;
  8952. } else {
  8953. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  8954. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8955. }
  8956. }
  8957. if(errn == 0) {
  8958. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) ? */
  8959. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  8960. if(eventCode == 0) {
  8961. grammarID = 116;
  8962. } else {
  8963. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  8964. }
  8965. }
  8966. break;
  8967. case 1:
  8968. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  8969. /* TODO unsupported event : START_ELEMENT_GENERIC */
  8970. grammarID = 116;
  8971. break;
  8972. case 2:
  8973. done = 1;
  8974. grammarID = 4;
  8975. break;
  8976. case 3:
  8977. errn = decodeUnsignedInteger16(stream, &iso1SignatureMethodType->ANY.charactersLen);
  8978. if (errn == 0) {
  8979. if (iso1SignatureMethodType->ANY.charactersLen >= 2) {
  8980. iso1SignatureMethodType->ANY.charactersLen = (uint16_t)(iso1SignatureMethodType->ANY.charactersLen - 2); /* string table miss */
  8981. errn = decodeCharacters(stream, iso1SignatureMethodType->ANY.charactersLen, iso1SignatureMethodType->ANY.characters, iso1SignatureMethodType_ANY_CHARACTERS_SIZE);
  8982. } else {
  8983. /* string table hit */
  8984. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  8985. }
  8986. }
  8987. iso1SignatureMethodType->ANY_isUsed = 1u;
  8988. grammarID = 212;
  8989. break;
  8990. default:
  8991. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  8992. break;
  8993. }
  8994. }
  8995. break;
  8996. case 116:
  8997. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  8998. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  8999. if (errn == 0) {
  9000. switch(eventCode) {
  9001. case 0:
  9002. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9003. /* TODO unsupported event : START_ELEMENT_GENERIC */
  9004. grammarID = 116;
  9005. break;
  9006. case 1:
  9007. done = 1;
  9008. grammarID = 4;
  9009. break;
  9010. case 2:
  9011. errn = decodeUnsignedInteger16(stream, &iso1SignatureMethodType->ANY.charactersLen);
  9012. if (errn == 0) {
  9013. if (iso1SignatureMethodType->ANY.charactersLen >= 2) {
  9014. iso1SignatureMethodType->ANY.charactersLen = (uint16_t)(iso1SignatureMethodType->ANY.charactersLen - 2); /* string table miss */
  9015. errn = decodeCharacters(stream, iso1SignatureMethodType->ANY.charactersLen, iso1SignatureMethodType->ANY.characters, iso1SignatureMethodType_ANY_CHARACTERS_SIZE);
  9016. } else {
  9017. /* string table hit */
  9018. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  9019. }
  9020. }
  9021. iso1SignatureMethodType->ANY_isUsed = 1u;
  9022. grammarID = 116;
  9023. break;
  9024. default:
  9025. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9026. break;
  9027. }
  9028. }
  9029. break;
  9030. case 212:
  9031. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  9032. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  9033. if (errn == 0) {
  9034. switch(eventCode) {
  9035. case 0:
  9036. /* FirstStartTag[CHARACTERS[INTEGER]] */
  9037. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9038. if(errn == 0) {
  9039. if(eventCode == 0) {
  9040. errn = decodeInteger64(stream, &iso1SignatureMethodType->HMACOutputLength);
  9041. iso1SignatureMethodType->HMACOutputLength_isUsed = 1u;
  9042. } else {
  9043. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9044. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9045. }
  9046. }
  9047. if(errn == 0) {
  9048. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) ? */
  9049. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9050. if(eventCode == 0) {
  9051. grammarID = 116;
  9052. } else {
  9053. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9054. }
  9055. }
  9056. break;
  9057. case 1:
  9058. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9059. /* TODO unsupported event : START_ELEMENT_GENERIC */
  9060. grammarID = 116;
  9061. break;
  9062. case 2:
  9063. done = 1;
  9064. grammarID = 4;
  9065. break;
  9066. case 3:
  9067. errn = decodeUnsignedInteger16(stream, &iso1SignatureMethodType->ANY.charactersLen);
  9068. if (errn == 0) {
  9069. if (iso1SignatureMethodType->ANY.charactersLen >= 2) {
  9070. iso1SignatureMethodType->ANY.charactersLen = (uint16_t)(iso1SignatureMethodType->ANY.charactersLen - 2); /* string table miss */
  9071. errn = decodeCharacters(stream, iso1SignatureMethodType->ANY.charactersLen, iso1SignatureMethodType->ANY.characters, iso1SignatureMethodType_ANY_CHARACTERS_SIZE);
  9072. } else {
  9073. /* string table hit */
  9074. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  9075. }
  9076. }
  9077. iso1SignatureMethodType->ANY_isUsed = 1u;
  9078. grammarID = 212;
  9079. break;
  9080. default:
  9081. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9082. break;
  9083. }
  9084. }
  9085. break;
  9086. default:
  9087. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9088. break;
  9089. }
  9090. if(errn) {
  9091. done = 1;
  9092. }
  9093. }
  9094. return errn;
  9095. }
  9096. /* 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'. */
  9097. static int decode_iso1X509DataType(bitstream_t* stream, struct iso1X509DataType* iso1X509DataType) {
  9098. int grammarID = 213;
  9099. int done = 0;
  9100. init_iso1X509DataType(iso1X509DataType);
  9101. while(!done) {
  9102. switch(grammarID) {
  9103. case 213:
  9104. /* 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] */
  9105. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  9106. if (errn == 0) {
  9107. switch(eventCode) {
  9108. case 0:
  9109. if (iso1X509DataType->X509IssuerSerial.arrayLen < iso1X509DataType_X509IssuerSerial_ARRAY_SIZE) {
  9110. errn = decode_iso1X509IssuerSerialType(stream, &iso1X509DataType->X509IssuerSerial.array[iso1X509DataType->X509IssuerSerial.arrayLen++]);
  9111. } else {
  9112. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9113. }
  9114. grammarID = 214;
  9115. break;
  9116. case 1:
  9117. if (iso1X509DataType->X509SKI.arrayLen < iso1X509DataType_X509SKI_ARRAY_SIZE) {
  9118. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  9119. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9120. if(errn == 0) {
  9121. if(eventCode == 0) {
  9122. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytesLen);
  9123. if (errn == 0) {
  9124. errn = (iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytesLen) <= iso1X509DataType_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  9125. }
  9126. if (errn == 0) {
  9127. errn = decodeBytes(stream, iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytesLen, iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytes);
  9128. }
  9129. iso1X509DataType->X509SKI.arrayLen++;
  9130. } else {
  9131. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9132. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9133. }
  9134. }
  9135. } else {
  9136. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9137. }
  9138. if(errn == 0) {
  9139. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) ? */
  9140. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9141. if(eventCode == 0) {
  9142. grammarID = 214;
  9143. } else {
  9144. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9145. }
  9146. }
  9147. break;
  9148. case 2:
  9149. if (iso1X509DataType->X509SubjectName.arrayLen < iso1X509DataType_X509SubjectName_ARRAY_SIZE) {
  9150. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  9151. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9152. if(errn == 0) {
  9153. if(eventCode == 0) {
  9154. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen);
  9155. if (errn == 0) {
  9156. if (iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen >= 2) {
  9157. iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen = (uint16_t)(iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen - 2); /* string table miss */
  9158. errn = decodeCharacters(stream, iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen, iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].characters, iso1X509DataType_X509SubjectName_CHARACTERS_SIZE);
  9159. } else {
  9160. /* string table hit */
  9161. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  9162. }
  9163. }
  9164. iso1X509DataType->X509SubjectName.arrayLen++;
  9165. } else {
  9166. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9167. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9168. }
  9169. }
  9170. } else {
  9171. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9172. }
  9173. if(errn == 0) {
  9174. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) ? */
  9175. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9176. if(eventCode == 0) {
  9177. grammarID = 214;
  9178. } else {
  9179. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9180. }
  9181. }
  9182. break;
  9183. case 3:
  9184. if (iso1X509DataType->X509Certificate.arrayLen < iso1X509DataType_X509Certificate_ARRAY_SIZE) {
  9185. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  9186. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9187. if(errn == 0) {
  9188. if(eventCode == 0) {
  9189. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytesLen);
  9190. if (errn == 0) {
  9191. errn = (iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytesLen) <= iso1X509DataType_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  9192. }
  9193. if (errn == 0) {
  9194. errn = decodeBytes(stream, iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytesLen, iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytes);
  9195. }
  9196. iso1X509DataType->X509Certificate.arrayLen++;
  9197. } else {
  9198. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9199. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9200. }
  9201. }
  9202. } else {
  9203. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9204. }
  9205. if(errn == 0) {
  9206. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) ? */
  9207. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9208. if(eventCode == 0) {
  9209. grammarID = 214;
  9210. } else {
  9211. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9212. }
  9213. }
  9214. break;
  9215. case 4:
  9216. if (iso1X509DataType->X509CRL.arrayLen < iso1X509DataType_X509CRL_ARRAY_SIZE) {
  9217. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  9218. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9219. if(errn == 0) {
  9220. if(eventCode == 0) {
  9221. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytesLen);
  9222. if (errn == 0) {
  9223. errn = (iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytesLen) <= iso1X509DataType_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  9224. }
  9225. if (errn == 0) {
  9226. errn = decodeBytes(stream, iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytesLen, iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytes);
  9227. }
  9228. iso1X509DataType->X509CRL.arrayLen++;
  9229. } else {
  9230. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9231. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9232. }
  9233. }
  9234. } else {
  9235. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9236. }
  9237. if(errn == 0) {
  9238. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) ? */
  9239. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9240. if(eventCode == 0) {
  9241. grammarID = 214;
  9242. } else {
  9243. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9244. }
  9245. }
  9246. break;
  9247. case 5:
  9248. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9249. /* TODO unsupported event : START_ELEMENT_GENERIC */
  9250. grammarID = 214;
  9251. break;
  9252. default:
  9253. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9254. break;
  9255. }
  9256. }
  9257. break;
  9258. case 214:
  9259. /* 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] */
  9260. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  9261. if (errn == 0) {
  9262. switch(eventCode) {
  9263. case 0:
  9264. if (iso1X509DataType->X509IssuerSerial.arrayLen < iso1X509DataType_X509IssuerSerial_ARRAY_SIZE) {
  9265. errn = decode_iso1X509IssuerSerialType(stream, &iso1X509DataType->X509IssuerSerial.array[iso1X509DataType->X509IssuerSerial.arrayLen++]);
  9266. } else {
  9267. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9268. }
  9269. grammarID = 214;
  9270. break;
  9271. case 1:
  9272. if (iso1X509DataType->X509SKI.arrayLen < iso1X509DataType_X509SKI_ARRAY_SIZE) {
  9273. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  9274. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9275. if(errn == 0) {
  9276. if(eventCode == 0) {
  9277. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytesLen);
  9278. if (errn == 0) {
  9279. errn = (iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytesLen) <= iso1X509DataType_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  9280. }
  9281. if (errn == 0) {
  9282. errn = decodeBytes(stream, iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytesLen, iso1X509DataType->X509SKI.array[iso1X509DataType->X509SKI.arrayLen].bytes);
  9283. }
  9284. iso1X509DataType->X509SKI.arrayLen++;
  9285. } else {
  9286. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9287. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9288. }
  9289. }
  9290. } else {
  9291. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9292. }
  9293. if(errn == 0) {
  9294. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) ? */
  9295. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9296. if(eventCode == 0) {
  9297. grammarID = 214;
  9298. } else {
  9299. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9300. }
  9301. }
  9302. break;
  9303. case 2:
  9304. if (iso1X509DataType->X509SubjectName.arrayLen < iso1X509DataType_X509SubjectName_ARRAY_SIZE) {
  9305. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  9306. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9307. if(errn == 0) {
  9308. if(eventCode == 0) {
  9309. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen);
  9310. if (errn == 0) {
  9311. if (iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen >= 2) {
  9312. iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen = (uint16_t)(iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen - 2); /* string table miss */
  9313. errn = decodeCharacters(stream, iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].charactersLen, iso1X509DataType->X509SubjectName.array[iso1X509DataType->X509SubjectName.arrayLen].characters, iso1X509DataType_X509SubjectName_CHARACTERS_SIZE);
  9314. } else {
  9315. /* string table hit */
  9316. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  9317. }
  9318. }
  9319. iso1X509DataType->X509SubjectName.arrayLen++;
  9320. } else {
  9321. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9322. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9323. }
  9324. }
  9325. } else {
  9326. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9327. }
  9328. if(errn == 0) {
  9329. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) ? */
  9330. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9331. if(eventCode == 0) {
  9332. grammarID = 214;
  9333. } else {
  9334. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9335. }
  9336. }
  9337. break;
  9338. case 3:
  9339. if (iso1X509DataType->X509Certificate.arrayLen < iso1X509DataType_X509Certificate_ARRAY_SIZE) {
  9340. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  9341. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9342. if(errn == 0) {
  9343. if(eventCode == 0) {
  9344. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytesLen);
  9345. if (errn == 0) {
  9346. errn = (iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytesLen) <= iso1X509DataType_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  9347. }
  9348. if (errn == 0) {
  9349. errn = decodeBytes(stream, iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytesLen, iso1X509DataType->X509Certificate.array[iso1X509DataType->X509Certificate.arrayLen].bytes);
  9350. }
  9351. iso1X509DataType->X509Certificate.arrayLen++;
  9352. } else {
  9353. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9354. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9355. }
  9356. }
  9357. } else {
  9358. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9359. }
  9360. if(errn == 0) {
  9361. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) ? */
  9362. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9363. if(eventCode == 0) {
  9364. grammarID = 214;
  9365. } else {
  9366. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9367. }
  9368. }
  9369. break;
  9370. case 4:
  9371. if (iso1X509DataType->X509CRL.arrayLen < iso1X509DataType_X509CRL_ARRAY_SIZE) {
  9372. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  9373. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9374. if(errn == 0) {
  9375. if(eventCode == 0) {
  9376. errn = decodeUnsignedInteger16(stream, &iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytesLen);
  9377. if (errn == 0) {
  9378. errn = (iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytesLen) <= iso1X509DataType_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  9379. }
  9380. if (errn == 0) {
  9381. errn = decodeBytes(stream, iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytesLen, iso1X509DataType->X509CRL.array[iso1X509DataType->X509CRL.arrayLen].bytes);
  9382. }
  9383. iso1X509DataType->X509CRL.arrayLen++;
  9384. } else {
  9385. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9386. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9387. }
  9388. }
  9389. } else {
  9390. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9391. }
  9392. if(errn == 0) {
  9393. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) ? */
  9394. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9395. if(eventCode == 0) {
  9396. grammarID = 214;
  9397. } else {
  9398. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9399. }
  9400. }
  9401. break;
  9402. case 5:
  9403. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9404. /* TODO unsupported event : START_ELEMENT_GENERIC */
  9405. grammarID = 214;
  9406. break;
  9407. case 6:
  9408. done = 1;
  9409. grammarID = 4;
  9410. break;
  9411. default:
  9412. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9413. break;
  9414. }
  9415. }
  9416. break;
  9417. default:
  9418. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9419. break;
  9420. }
  9421. if(errn) {
  9422. done = 1;
  9423. }
  9424. }
  9425. return errn;
  9426. }
  9427. /* 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'. */
  9428. static int decode_iso1NotificationType(bitstream_t* stream, struct iso1NotificationType* iso1NotificationType) {
  9429. int grammarID = 215;
  9430. int done = 0;
  9431. init_iso1NotificationType(iso1NotificationType);
  9432. while(!done) {
  9433. switch(grammarID) {
  9434. case 215:
  9435. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */
  9436. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9437. if (errn == 0) {
  9438. switch(eventCode) {
  9439. case 0:
  9440. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  9441. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9442. if(errn == 0) {
  9443. if(eventCode == 0) {
  9444. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  9445. iso1NotificationType->FaultCode = (iso1faultCodeType) uint32;
  9446. } else {
  9447. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9448. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9449. }
  9450. }
  9451. if(errn == 0) {
  9452. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode) ? */
  9453. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9454. if(eventCode == 0) {
  9455. grammarID = 216;
  9456. } else {
  9457. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9458. }
  9459. }
  9460. break;
  9461. default:
  9462. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9463. break;
  9464. }
  9465. }
  9466. break;
  9467. case 216:
  9468. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */
  9469. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9470. if (errn == 0) {
  9471. switch(eventCode) {
  9472. case 0:
  9473. /* FirstStartTag[CHARACTERS[STRING]] */
  9474. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9475. if(errn == 0) {
  9476. if(eventCode == 0) {
  9477. errn = decodeUnsignedInteger16(stream, &iso1NotificationType->FaultMsg.charactersLen);
  9478. if (errn == 0) {
  9479. if (iso1NotificationType->FaultMsg.charactersLen >= 2) {
  9480. iso1NotificationType->FaultMsg.charactersLen = (uint16_t)(iso1NotificationType->FaultMsg.charactersLen - 2); /* string table miss */
  9481. errn = decodeCharacters(stream, iso1NotificationType->FaultMsg.charactersLen, iso1NotificationType->FaultMsg.characters, iso1NotificationType_FaultMsg_CHARACTERS_SIZE);
  9482. } else {
  9483. /* string table hit */
  9484. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  9485. }
  9486. }
  9487. iso1NotificationType->FaultMsg_isUsed = 1u;
  9488. } else {
  9489. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  9490. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  9491. }
  9492. }
  9493. if(errn == 0) {
  9494. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg) ? */
  9495. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9496. if(eventCode == 0) {
  9497. grammarID = 3;
  9498. } else {
  9499. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  9500. }
  9501. }
  9502. break;
  9503. case 1:
  9504. done = 1;
  9505. grammarID = 4;
  9506. break;
  9507. default:
  9508. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9509. break;
  9510. }
  9511. }
  9512. break;
  9513. case 3:
  9514. /* Element[END_ELEMENT] */
  9515. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9516. if (errn == 0) {
  9517. switch(eventCode) {
  9518. case 0:
  9519. done = 1;
  9520. grammarID = 4;
  9521. break;
  9522. default:
  9523. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9524. break;
  9525. }
  9526. }
  9527. break;
  9528. default:
  9529. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9530. break;
  9531. }
  9532. if(errn) {
  9533. done = 1;
  9534. }
  9535. }
  9536. return errn;
  9537. }
  9538. /* 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'. */
  9539. static int decode_iso1SAScheduleListType(bitstream_t* stream, struct iso1SAScheduleListType* iso1SAScheduleListType) {
  9540. int grammarID = 217;
  9541. int done = 0;
  9542. init_iso1SAScheduleListType(iso1SAScheduleListType);
  9543. while(!done) {
  9544. switch(grammarID) {
  9545. case 217:
  9546. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */
  9547. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9548. if (errn == 0) {
  9549. switch(eventCode) {
  9550. case 0:
  9551. if (iso1SAScheduleListType->SAScheduleTuple.arrayLen < iso1SAScheduleListType_SAScheduleTuple_ARRAY_SIZE) {
  9552. errn = decode_iso1SAScheduleTupleType(stream, &iso1SAScheduleListType->SAScheduleTuple.array[iso1SAScheduleListType->SAScheduleTuple.arrayLen++]);
  9553. } else {
  9554. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9555. }
  9556. grammarID = 218;
  9557. break;
  9558. default:
  9559. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9560. break;
  9561. }
  9562. }
  9563. break;
  9564. case 218:
  9565. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */
  9566. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9567. if (errn == 0) {
  9568. switch(eventCode) {
  9569. case 0:
  9570. if (iso1SAScheduleListType->SAScheduleTuple.arrayLen < iso1SAScheduleListType_SAScheduleTuple_ARRAY_SIZE) {
  9571. errn = decode_iso1SAScheduleTupleType(stream, &iso1SAScheduleListType->SAScheduleTuple.array[iso1SAScheduleListType->SAScheduleTuple.arrayLen++]);
  9572. } else {
  9573. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9574. }
  9575. grammarID = 219;
  9576. break;
  9577. case 1:
  9578. done = 1;
  9579. grammarID = 4;
  9580. break;
  9581. default:
  9582. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9583. break;
  9584. }
  9585. }
  9586. break;
  9587. case 219:
  9588. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */
  9589. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9590. if (errn == 0) {
  9591. switch(eventCode) {
  9592. case 0:
  9593. if (iso1SAScheduleListType->SAScheduleTuple.arrayLen < iso1SAScheduleListType_SAScheduleTuple_ARRAY_SIZE) {
  9594. errn = decode_iso1SAScheduleTupleType(stream, &iso1SAScheduleListType->SAScheduleTuple.array[iso1SAScheduleListType->SAScheduleTuple.arrayLen++]);
  9595. } else {
  9596. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9597. }
  9598. grammarID = 3;
  9599. break;
  9600. case 1:
  9601. done = 1;
  9602. grammarID = 4;
  9603. break;
  9604. default:
  9605. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9606. break;
  9607. }
  9608. }
  9609. break;
  9610. case 3:
  9611. /* Element[END_ELEMENT] */
  9612. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9613. if (errn == 0) {
  9614. switch(eventCode) {
  9615. case 0:
  9616. done = 1;
  9617. grammarID = 4;
  9618. break;
  9619. default:
  9620. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9621. break;
  9622. }
  9623. }
  9624. break;
  9625. default:
  9626. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9627. break;
  9628. }
  9629. if(errn) {
  9630. done = 1;
  9631. }
  9632. }
  9633. return errn;
  9634. }
  9635. /* 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'. */
  9636. static int decode_iso1BodyType(bitstream_t* stream, struct iso1BodyType* iso1BodyType) {
  9637. int grammarID = 220;
  9638. int done = 0;
  9639. init_iso1BodyType(iso1BodyType);
  9640. while(!done) {
  9641. switch(grammarID) {
  9642. case 220:
  9643. /* 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] */
  9644. errn = decodeNBitUnsignedInteger(stream, 6, &eventCode);
  9645. if (errn == 0) {
  9646. switch(eventCode) {
  9647. case 0:
  9648. errn = decode_iso1AuthorizationReqType(stream, &iso1BodyType->AuthorizationReq);
  9649. iso1BodyType->AuthorizationReq_isUsed = 1u;
  9650. grammarID = 3;
  9651. break;
  9652. case 1:
  9653. errn = decode_iso1AuthorizationResType(stream, &iso1BodyType->AuthorizationRes);
  9654. iso1BodyType->AuthorizationRes_isUsed = 1u;
  9655. grammarID = 3;
  9656. break;
  9657. case 2:
  9658. errn = decode_iso1BodyBaseType(stream, &iso1BodyType->BodyElement);
  9659. iso1BodyType->BodyElement_isUsed = 1u;
  9660. grammarID = 3;
  9661. break;
  9662. case 3:
  9663. errn = decode_iso1CableCheckReqType(stream, &iso1BodyType->CableCheckReq);
  9664. iso1BodyType->CableCheckReq_isUsed = 1u;
  9665. grammarID = 3;
  9666. break;
  9667. case 4:
  9668. errn = decode_iso1CableCheckResType(stream, &iso1BodyType->CableCheckRes);
  9669. iso1BodyType->CableCheckRes_isUsed = 1u;
  9670. grammarID = 3;
  9671. break;
  9672. case 5:
  9673. errn = decode_iso1CertificateInstallationReqType(stream, &iso1BodyType->CertificateInstallationReq);
  9674. iso1BodyType->CertificateInstallationReq_isUsed = 1u;
  9675. grammarID = 3;
  9676. break;
  9677. case 6:
  9678. errn = decode_iso1CertificateInstallationResType(stream, &iso1BodyType->CertificateInstallationRes);
  9679. iso1BodyType->CertificateInstallationRes_isUsed = 1u;
  9680. grammarID = 3;
  9681. break;
  9682. case 7:
  9683. errn = decode_iso1CertificateUpdateReqType(stream, &iso1BodyType->CertificateUpdateReq);
  9684. iso1BodyType->CertificateUpdateReq_isUsed = 1u;
  9685. grammarID = 3;
  9686. break;
  9687. case 8:
  9688. errn = decode_iso1CertificateUpdateResType(stream, &iso1BodyType->CertificateUpdateRes);
  9689. iso1BodyType->CertificateUpdateRes_isUsed = 1u;
  9690. grammarID = 3;
  9691. break;
  9692. case 9:
  9693. errn = decode_iso1ChargeParameterDiscoveryReqType(stream, &iso1BodyType->ChargeParameterDiscoveryReq);
  9694. iso1BodyType->ChargeParameterDiscoveryReq_isUsed = 1u;
  9695. grammarID = 3;
  9696. break;
  9697. case 10:
  9698. errn = decode_iso1ChargeParameterDiscoveryResType(stream, &iso1BodyType->ChargeParameterDiscoveryRes);
  9699. iso1BodyType->ChargeParameterDiscoveryRes_isUsed = 1u;
  9700. grammarID = 3;
  9701. break;
  9702. case 11:
  9703. errn = decode_iso1ChargingStatusReqType(stream, &iso1BodyType->ChargingStatusReq);
  9704. iso1BodyType->ChargingStatusReq_isUsed = 1u;
  9705. grammarID = 3;
  9706. break;
  9707. case 12:
  9708. errn = decode_iso1ChargingStatusResType(stream, &iso1BodyType->ChargingStatusRes);
  9709. iso1BodyType->ChargingStatusRes_isUsed = 1u;
  9710. grammarID = 3;
  9711. break;
  9712. case 13:
  9713. errn = decode_iso1CurrentDemandReqType(stream, &iso1BodyType->CurrentDemandReq);
  9714. iso1BodyType->CurrentDemandReq_isUsed = 1u;
  9715. grammarID = 3;
  9716. break;
  9717. case 14:
  9718. errn = decode_iso1CurrentDemandResType(stream, &iso1BodyType->CurrentDemandRes);
  9719. iso1BodyType->CurrentDemandRes_isUsed = 1u;
  9720. grammarID = 3;
  9721. break;
  9722. case 15:
  9723. errn = decode_iso1MeteringReceiptReqType(stream, &iso1BodyType->MeteringReceiptReq);
  9724. iso1BodyType->MeteringReceiptReq_isUsed = 1u;
  9725. grammarID = 3;
  9726. break;
  9727. case 16:
  9728. errn = decode_iso1MeteringReceiptResType(stream, &iso1BodyType->MeteringReceiptRes);
  9729. iso1BodyType->MeteringReceiptRes_isUsed = 1u;
  9730. grammarID = 3;
  9731. break;
  9732. case 17:
  9733. errn = decode_iso1PaymentDetailsReqType(stream, &iso1BodyType->PaymentDetailsReq);
  9734. iso1BodyType->PaymentDetailsReq_isUsed = 1u;
  9735. grammarID = 3;
  9736. break;
  9737. case 18:
  9738. errn = decode_iso1PaymentDetailsResType(stream, &iso1BodyType->PaymentDetailsRes);
  9739. iso1BodyType->PaymentDetailsRes_isUsed = 1u;
  9740. grammarID = 3;
  9741. break;
  9742. case 19:
  9743. errn = decode_iso1PaymentServiceSelectionReqType(stream, &iso1BodyType->PaymentServiceSelectionReq);
  9744. iso1BodyType->PaymentServiceSelectionReq_isUsed = 1u;
  9745. grammarID = 3;
  9746. break;
  9747. case 20:
  9748. errn = decode_iso1PaymentServiceSelectionResType(stream, &iso1BodyType->PaymentServiceSelectionRes);
  9749. iso1BodyType->PaymentServiceSelectionRes_isUsed = 1u;
  9750. grammarID = 3;
  9751. break;
  9752. case 21:
  9753. errn = decode_iso1PowerDeliveryReqType(stream, &iso1BodyType->PowerDeliveryReq);
  9754. iso1BodyType->PowerDeliveryReq_isUsed = 1u;
  9755. grammarID = 3;
  9756. break;
  9757. case 22:
  9758. errn = decode_iso1PowerDeliveryResType(stream, &iso1BodyType->PowerDeliveryRes);
  9759. iso1BodyType->PowerDeliveryRes_isUsed = 1u;
  9760. grammarID = 3;
  9761. break;
  9762. case 23:
  9763. errn = decode_iso1PreChargeReqType(stream, &iso1BodyType->PreChargeReq);
  9764. iso1BodyType->PreChargeReq_isUsed = 1u;
  9765. grammarID = 3;
  9766. break;
  9767. case 24:
  9768. errn = decode_iso1PreChargeResType(stream, &iso1BodyType->PreChargeRes);
  9769. iso1BodyType->PreChargeRes_isUsed = 1u;
  9770. grammarID = 3;
  9771. break;
  9772. case 25:
  9773. errn = decode_iso1ServiceDetailReqType(stream, &iso1BodyType->ServiceDetailReq);
  9774. iso1BodyType->ServiceDetailReq_isUsed = 1u;
  9775. grammarID = 3;
  9776. break;
  9777. case 26:
  9778. errn = decode_iso1ServiceDetailResType(stream, &iso1BodyType->ServiceDetailRes);
  9779. iso1BodyType->ServiceDetailRes_isUsed = 1u;
  9780. grammarID = 3;
  9781. break;
  9782. case 27:
  9783. errn = decode_iso1ServiceDiscoveryReqType(stream, &iso1BodyType->ServiceDiscoveryReq);
  9784. iso1BodyType->ServiceDiscoveryReq_isUsed = 1u;
  9785. grammarID = 3;
  9786. break;
  9787. case 28:
  9788. errn = decode_iso1ServiceDiscoveryResType(stream, &iso1BodyType->ServiceDiscoveryRes);
  9789. iso1BodyType->ServiceDiscoveryRes_isUsed = 1u;
  9790. grammarID = 3;
  9791. break;
  9792. case 29:
  9793. errn = decode_iso1SessionSetupReqType(stream, &iso1BodyType->SessionSetupReq);
  9794. iso1BodyType->SessionSetupReq_isUsed = 1u;
  9795. grammarID = 3;
  9796. break;
  9797. case 30:
  9798. errn = decode_iso1SessionSetupResType(stream, &iso1BodyType->SessionSetupRes);
  9799. iso1BodyType->SessionSetupRes_isUsed = 1u;
  9800. grammarID = 3;
  9801. break;
  9802. case 31:
  9803. errn = decode_iso1SessionStopReqType(stream, &iso1BodyType->SessionStopReq);
  9804. iso1BodyType->SessionStopReq_isUsed = 1u;
  9805. grammarID = 3;
  9806. break;
  9807. case 32:
  9808. errn = decode_iso1SessionStopResType(stream, &iso1BodyType->SessionStopRes);
  9809. iso1BodyType->SessionStopRes_isUsed = 1u;
  9810. grammarID = 3;
  9811. break;
  9812. case 33:
  9813. errn = decode_iso1WeldingDetectionReqType(stream, &iso1BodyType->WeldingDetectionReq);
  9814. iso1BodyType->WeldingDetectionReq_isUsed = 1u;
  9815. grammarID = 3;
  9816. break;
  9817. case 34:
  9818. errn = decode_iso1WeldingDetectionResType(stream, &iso1BodyType->WeldingDetectionRes);
  9819. iso1BodyType->WeldingDetectionRes_isUsed = 1u;
  9820. grammarID = 3;
  9821. break;
  9822. case 35:
  9823. done = 1;
  9824. grammarID = 4;
  9825. break;
  9826. default:
  9827. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9828. break;
  9829. }
  9830. }
  9831. break;
  9832. case 3:
  9833. /* Element[END_ELEMENT] */
  9834. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9835. if (errn == 0) {
  9836. switch(eventCode) {
  9837. case 0:
  9838. done = 1;
  9839. grammarID = 4;
  9840. break;
  9841. default:
  9842. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9843. break;
  9844. }
  9845. }
  9846. break;
  9847. default:
  9848. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  9849. break;
  9850. }
  9851. if(errn) {
  9852. done = 1;
  9853. }
  9854. }
  9855. return errn;
  9856. }
  9857. /* 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'. */
  9858. static int decode_iso1ChargingProfileType(bitstream_t* stream, struct iso1ChargingProfileType* iso1ChargingProfileType) {
  9859. int grammarID = 221;
  9860. int done = 0;
  9861. init_iso1ChargingProfileType(iso1ChargingProfileType);
  9862. while(!done) {
  9863. switch(grammarID) {
  9864. case 221:
  9865. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */
  9866. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  9867. if (errn == 0) {
  9868. switch(eventCode) {
  9869. case 0:
  9870. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  9871. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  9872. } else {
  9873. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9874. }
  9875. grammarID = 222;
  9876. break;
  9877. default:
  9878. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9879. break;
  9880. }
  9881. }
  9882. break;
  9883. case 222:
  9884. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  9885. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9886. if (errn == 0) {
  9887. switch(eventCode) {
  9888. case 0:
  9889. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  9890. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  9891. } else {
  9892. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9893. }
  9894. grammarID = 223;
  9895. break;
  9896. case 1:
  9897. done = 1;
  9898. grammarID = 4;
  9899. break;
  9900. default:
  9901. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9902. break;
  9903. }
  9904. }
  9905. break;
  9906. case 223:
  9907. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  9908. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9909. if (errn == 0) {
  9910. switch(eventCode) {
  9911. case 0:
  9912. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  9913. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  9914. } else {
  9915. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9916. }
  9917. grammarID = 224;
  9918. break;
  9919. case 1:
  9920. done = 1;
  9921. grammarID = 4;
  9922. break;
  9923. default:
  9924. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9925. break;
  9926. }
  9927. }
  9928. break;
  9929. case 224:
  9930. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  9931. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9932. if (errn == 0) {
  9933. switch(eventCode) {
  9934. case 0:
  9935. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  9936. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  9937. } else {
  9938. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9939. }
  9940. grammarID = 225;
  9941. break;
  9942. case 1:
  9943. done = 1;
  9944. grammarID = 4;
  9945. break;
  9946. default:
  9947. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9948. break;
  9949. }
  9950. }
  9951. break;
  9952. case 225:
  9953. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  9954. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9955. if (errn == 0) {
  9956. switch(eventCode) {
  9957. case 0:
  9958. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  9959. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  9960. } else {
  9961. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9962. }
  9963. grammarID = 226;
  9964. break;
  9965. case 1:
  9966. done = 1;
  9967. grammarID = 4;
  9968. break;
  9969. default:
  9970. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9971. break;
  9972. }
  9973. }
  9974. break;
  9975. case 226:
  9976. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  9977. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  9978. if (errn == 0) {
  9979. switch(eventCode) {
  9980. case 0:
  9981. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  9982. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  9983. } else {
  9984. errn = EXI_ERROR_OUT_OF_BOUNDS;
  9985. }
  9986. grammarID = 227;
  9987. break;
  9988. case 1:
  9989. done = 1;
  9990. grammarID = 4;
  9991. break;
  9992. default:
  9993. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  9994. break;
  9995. }
  9996. }
  9997. break;
  9998. case 227:
  9999. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10000. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10001. if (errn == 0) {
  10002. switch(eventCode) {
  10003. case 0:
  10004. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10005. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10006. } else {
  10007. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10008. }
  10009. grammarID = 228;
  10010. break;
  10011. case 1:
  10012. done = 1;
  10013. grammarID = 4;
  10014. break;
  10015. default:
  10016. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10017. break;
  10018. }
  10019. }
  10020. break;
  10021. case 228:
  10022. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10023. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10024. if (errn == 0) {
  10025. switch(eventCode) {
  10026. case 0:
  10027. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10028. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10029. } else {
  10030. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10031. }
  10032. grammarID = 229;
  10033. break;
  10034. case 1:
  10035. done = 1;
  10036. grammarID = 4;
  10037. break;
  10038. default:
  10039. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10040. break;
  10041. }
  10042. }
  10043. break;
  10044. case 229:
  10045. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10046. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10047. if (errn == 0) {
  10048. switch(eventCode) {
  10049. case 0:
  10050. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10051. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10052. } else {
  10053. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10054. }
  10055. grammarID = 230;
  10056. break;
  10057. case 1:
  10058. done = 1;
  10059. grammarID = 4;
  10060. break;
  10061. default:
  10062. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10063. break;
  10064. }
  10065. }
  10066. break;
  10067. case 230:
  10068. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10069. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10070. if (errn == 0) {
  10071. switch(eventCode) {
  10072. case 0:
  10073. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10074. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10075. } else {
  10076. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10077. }
  10078. grammarID = 231;
  10079. break;
  10080. case 1:
  10081. done = 1;
  10082. grammarID = 4;
  10083. break;
  10084. default:
  10085. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10086. break;
  10087. }
  10088. }
  10089. break;
  10090. case 231:
  10091. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10092. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10093. if (errn == 0) {
  10094. switch(eventCode) {
  10095. case 0:
  10096. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10097. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10098. } else {
  10099. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10100. }
  10101. grammarID = 232;
  10102. break;
  10103. case 1:
  10104. done = 1;
  10105. grammarID = 4;
  10106. break;
  10107. default:
  10108. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10109. break;
  10110. }
  10111. }
  10112. break;
  10113. case 232:
  10114. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10115. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10116. if (errn == 0) {
  10117. switch(eventCode) {
  10118. case 0:
  10119. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10120. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10121. } else {
  10122. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10123. }
  10124. grammarID = 233;
  10125. break;
  10126. case 1:
  10127. done = 1;
  10128. grammarID = 4;
  10129. break;
  10130. default:
  10131. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10132. break;
  10133. }
  10134. }
  10135. break;
  10136. case 233:
  10137. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10138. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10139. if (errn == 0) {
  10140. switch(eventCode) {
  10141. case 0:
  10142. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10143. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10144. } else {
  10145. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10146. }
  10147. grammarID = 234;
  10148. break;
  10149. case 1:
  10150. done = 1;
  10151. grammarID = 4;
  10152. break;
  10153. default:
  10154. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10155. break;
  10156. }
  10157. }
  10158. break;
  10159. case 234:
  10160. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10161. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10162. if (errn == 0) {
  10163. switch(eventCode) {
  10164. case 0:
  10165. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10166. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10167. } else {
  10168. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10169. }
  10170. grammarID = 235;
  10171. break;
  10172. case 1:
  10173. done = 1;
  10174. grammarID = 4;
  10175. break;
  10176. default:
  10177. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10178. break;
  10179. }
  10180. }
  10181. break;
  10182. case 235:
  10183. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10184. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10185. if (errn == 0) {
  10186. switch(eventCode) {
  10187. case 0:
  10188. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10189. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10190. } else {
  10191. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10192. }
  10193. grammarID = 236;
  10194. break;
  10195. case 1:
  10196. done = 1;
  10197. grammarID = 4;
  10198. break;
  10199. default:
  10200. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10201. break;
  10202. }
  10203. }
  10204. break;
  10205. case 236:
  10206. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10207. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10208. if (errn == 0) {
  10209. switch(eventCode) {
  10210. case 0:
  10211. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10212. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10213. } else {
  10214. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10215. }
  10216. grammarID = 237;
  10217. break;
  10218. case 1:
  10219. done = 1;
  10220. grammarID = 4;
  10221. break;
  10222. default:
  10223. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10224. break;
  10225. }
  10226. }
  10227. break;
  10228. case 237:
  10229. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10230. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10231. if (errn == 0) {
  10232. switch(eventCode) {
  10233. case 0:
  10234. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10235. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10236. } else {
  10237. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10238. }
  10239. grammarID = 238;
  10240. break;
  10241. case 1:
  10242. done = 1;
  10243. grammarID = 4;
  10244. break;
  10245. default:
  10246. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10247. break;
  10248. }
  10249. }
  10250. break;
  10251. case 238:
  10252. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10253. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10254. if (errn == 0) {
  10255. switch(eventCode) {
  10256. case 0:
  10257. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10258. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10259. } else {
  10260. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10261. }
  10262. grammarID = 239;
  10263. break;
  10264. case 1:
  10265. done = 1;
  10266. grammarID = 4;
  10267. break;
  10268. default:
  10269. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10270. break;
  10271. }
  10272. }
  10273. break;
  10274. case 239:
  10275. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10276. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10277. if (errn == 0) {
  10278. switch(eventCode) {
  10279. case 0:
  10280. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10281. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10282. } else {
  10283. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10284. }
  10285. grammarID = 240;
  10286. break;
  10287. case 1:
  10288. done = 1;
  10289. grammarID = 4;
  10290. break;
  10291. default:
  10292. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10293. break;
  10294. }
  10295. }
  10296. break;
  10297. case 240:
  10298. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10299. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10300. if (errn == 0) {
  10301. switch(eventCode) {
  10302. case 0:
  10303. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10304. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10305. } else {
  10306. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10307. }
  10308. grammarID = 241;
  10309. break;
  10310. case 1:
  10311. done = 1;
  10312. grammarID = 4;
  10313. break;
  10314. default:
  10315. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10316. break;
  10317. }
  10318. }
  10319. break;
  10320. case 241:
  10321. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10322. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10323. if (errn == 0) {
  10324. switch(eventCode) {
  10325. case 0:
  10326. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10327. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10328. } else {
  10329. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10330. }
  10331. grammarID = 242;
  10332. break;
  10333. case 1:
  10334. done = 1;
  10335. grammarID = 4;
  10336. break;
  10337. default:
  10338. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10339. break;
  10340. }
  10341. }
  10342. break;
  10343. case 242:
  10344. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10345. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10346. if (errn == 0) {
  10347. switch(eventCode) {
  10348. case 0:
  10349. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10350. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10351. } else {
  10352. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10353. }
  10354. grammarID = 243;
  10355. break;
  10356. case 1:
  10357. done = 1;
  10358. grammarID = 4;
  10359. break;
  10360. default:
  10361. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10362. break;
  10363. }
  10364. }
  10365. break;
  10366. case 243:
  10367. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10368. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10369. if (errn == 0) {
  10370. switch(eventCode) {
  10371. case 0:
  10372. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10373. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10374. } else {
  10375. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10376. }
  10377. grammarID = 244;
  10378. break;
  10379. case 1:
  10380. done = 1;
  10381. grammarID = 4;
  10382. break;
  10383. default:
  10384. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10385. break;
  10386. }
  10387. }
  10388. break;
  10389. case 244:
  10390. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */
  10391. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10392. if (errn == 0) {
  10393. switch(eventCode) {
  10394. case 0:
  10395. if (iso1ChargingProfileType->ProfileEntry.arrayLen < iso1ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
  10396. errn = decode_iso1ProfileEntryType(stream, &iso1ChargingProfileType->ProfileEntry.array[iso1ChargingProfileType->ProfileEntry.arrayLen++]);
  10397. } else {
  10398. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10399. }
  10400. grammarID = 3;
  10401. break;
  10402. case 1:
  10403. done = 1;
  10404. grammarID = 4;
  10405. break;
  10406. default:
  10407. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10408. break;
  10409. }
  10410. }
  10411. break;
  10412. case 3:
  10413. /* Element[END_ELEMENT] */
  10414. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10415. if (errn == 0) {
  10416. switch(eventCode) {
  10417. case 0:
  10418. done = 1;
  10419. grammarID = 4;
  10420. break;
  10421. default:
  10422. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10423. break;
  10424. }
  10425. }
  10426. break;
  10427. default:
  10428. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10429. break;
  10430. }
  10431. if(errn) {
  10432. done = 1;
  10433. }
  10434. }
  10435. return errn;
  10436. }
  10437. /* 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'. */
  10438. static int decode_iso1TransformType(bitstream_t* stream, struct iso1TransformType* iso1TransformType) {
  10439. int grammarID = 245;
  10440. int done = 0;
  10441. init_iso1TransformType(iso1TransformType);
  10442. while(!done) {
  10443. switch(grammarID) {
  10444. case 245:
  10445. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  10446. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10447. if (errn == 0) {
  10448. switch(eventCode) {
  10449. case 0:
  10450. errn = decodeUnsignedInteger16(stream, &iso1TransformType->Algorithm.charactersLen);
  10451. if (errn == 0) {
  10452. if (iso1TransformType->Algorithm.charactersLen >= 2) {
  10453. iso1TransformType->Algorithm.charactersLen = (uint16_t)(iso1TransformType->Algorithm.charactersLen - 2); /* string table miss */
  10454. errn = decodeCharacters(stream, iso1TransformType->Algorithm.charactersLen, iso1TransformType->Algorithm.characters, iso1TransformType_Algorithm_CHARACTERS_SIZE);
  10455. } else {
  10456. /* string table hit */
  10457. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  10458. }
  10459. }
  10460. grammarID = 246;
  10461. break;
  10462. default:
  10463. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10464. break;
  10465. }
  10466. }
  10467. break;
  10468. case 246:
  10469. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  10470. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  10471. if (errn == 0) {
  10472. switch(eventCode) {
  10473. case 0:
  10474. if (iso1TransformType->XPath.arrayLen < iso1TransformType_XPath_ARRAY_SIZE) {
  10475. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  10476. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10477. if(errn == 0) {
  10478. if(eventCode == 0) {
  10479. errn = decodeUnsignedInteger16(stream, &iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen);
  10480. if (errn == 0) {
  10481. if (iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen >= 2) {
  10482. iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen = (uint16_t)(iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen - 2); /* string table miss */
  10483. errn = decodeCharacters(stream, iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen, iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].characters, iso1TransformType_XPath_CHARACTERS_SIZE);
  10484. } else {
  10485. /* string table hit */
  10486. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  10487. }
  10488. }
  10489. iso1TransformType->XPath.arrayLen++;
  10490. } else {
  10491. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10492. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10493. }
  10494. }
  10495. } else {
  10496. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10497. }
  10498. if(errn == 0) {
  10499. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) ? */
  10500. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10501. if(eventCode == 0) {
  10502. grammarID = 247;
  10503. } else {
  10504. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  10505. }
  10506. }
  10507. break;
  10508. case 1:
  10509. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10510. /* TODO unsupported event : START_ELEMENT_GENERIC */
  10511. grammarID = 247;
  10512. break;
  10513. case 2:
  10514. done = 1;
  10515. grammarID = 4;
  10516. break;
  10517. case 3:
  10518. errn = decodeUnsignedInteger16(stream, &iso1TransformType->ANY.charactersLen);
  10519. if (errn == 0) {
  10520. if (iso1TransformType->ANY.charactersLen >= 2) {
  10521. iso1TransformType->ANY.charactersLen = (uint16_t)(iso1TransformType->ANY.charactersLen - 2); /* string table miss */
  10522. errn = decodeCharacters(stream, iso1TransformType->ANY.charactersLen, iso1TransformType->ANY.characters, iso1TransformType_ANY_CHARACTERS_SIZE);
  10523. } else {
  10524. /* string table hit */
  10525. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  10526. }
  10527. }
  10528. iso1TransformType->ANY_isUsed = 1u;
  10529. grammarID = 247;
  10530. break;
  10531. default:
  10532. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10533. break;
  10534. }
  10535. }
  10536. break;
  10537. case 247:
  10538. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  10539. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  10540. if (errn == 0) {
  10541. switch(eventCode) {
  10542. case 0:
  10543. if (iso1TransformType->XPath.arrayLen < iso1TransformType_XPath_ARRAY_SIZE) {
  10544. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  10545. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10546. if(errn == 0) {
  10547. if(eventCode == 0) {
  10548. errn = decodeUnsignedInteger16(stream, &iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen);
  10549. if (errn == 0) {
  10550. if (iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen >= 2) {
  10551. iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen = (uint16_t)(iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen - 2); /* string table miss */
  10552. errn = decodeCharacters(stream, iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].charactersLen, iso1TransformType->XPath.array[iso1TransformType->XPath.arrayLen].characters, iso1TransformType_XPath_CHARACTERS_SIZE);
  10553. } else {
  10554. /* string table hit */
  10555. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  10556. }
  10557. }
  10558. iso1TransformType->XPath.arrayLen++;
  10559. } else {
  10560. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10561. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10562. }
  10563. }
  10564. } else {
  10565. errn = EXI_ERROR_OUT_OF_BOUNDS;
  10566. }
  10567. if(errn == 0) {
  10568. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) ? */
  10569. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10570. if(eventCode == 0) {
  10571. grammarID = 247;
  10572. } else {
  10573. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  10574. }
  10575. }
  10576. break;
  10577. case 1:
  10578. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10579. /* TODO unsupported event : START_ELEMENT_GENERIC */
  10580. grammarID = 247;
  10581. break;
  10582. case 2:
  10583. done = 1;
  10584. grammarID = 4;
  10585. break;
  10586. case 3:
  10587. errn = decodeUnsignedInteger16(stream, &iso1TransformType->ANY.charactersLen);
  10588. if (errn == 0) {
  10589. if (iso1TransformType->ANY.charactersLen >= 2) {
  10590. iso1TransformType->ANY.charactersLen = (uint16_t)(iso1TransformType->ANY.charactersLen - 2); /* string table miss */
  10591. errn = decodeCharacters(stream, iso1TransformType->ANY.charactersLen, iso1TransformType->ANY.characters, iso1TransformType_ANY_CHARACTERS_SIZE);
  10592. } else {
  10593. /* string table hit */
  10594. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  10595. }
  10596. }
  10597. iso1TransformType->ANY_isUsed = 1u;
  10598. grammarID = 247;
  10599. break;
  10600. default:
  10601. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10602. break;
  10603. }
  10604. }
  10605. break;
  10606. default:
  10607. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10608. break;
  10609. }
  10610. if(errn) {
  10611. done = 1;
  10612. }
  10613. }
  10614. return errn;
  10615. }
  10616. /* 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'. */
  10617. static int decode_iso1SAScheduleTupleType(bitstream_t* stream, struct iso1SAScheduleTupleType* iso1SAScheduleTupleType) {
  10618. int grammarID = 248;
  10619. int done = 0;
  10620. init_iso1SAScheduleTupleType(iso1SAScheduleTupleType);
  10621. while(!done) {
  10622. switch(grammarID) {
  10623. case 248:
  10624. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */
  10625. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10626. if (errn == 0) {
  10627. switch(eventCode) {
  10628. case 0:
  10629. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  10630. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10631. if(errn == 0) {
  10632. if(eventCode == 0) {
  10633. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  10634. iso1SAScheduleTupleType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  10635. } else {
  10636. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10637. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10638. }
  10639. }
  10640. if(errn == 0) {
  10641. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID) ? */
  10642. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10643. if(eventCode == 0) {
  10644. grammarID = 249;
  10645. } else {
  10646. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  10647. }
  10648. }
  10649. break;
  10650. default:
  10651. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10652. break;
  10653. }
  10654. }
  10655. break;
  10656. case 249:
  10657. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */
  10658. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10659. if (errn == 0) {
  10660. switch(eventCode) {
  10661. case 0:
  10662. errn = decode_iso1PMaxScheduleType(stream, &iso1SAScheduleTupleType->PMaxSchedule);
  10663. grammarID = 250;
  10664. break;
  10665. default:
  10666. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10667. break;
  10668. }
  10669. }
  10670. break;
  10671. case 250:
  10672. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */
  10673. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10674. if (errn == 0) {
  10675. switch(eventCode) {
  10676. case 0:
  10677. errn = decode_iso1SalesTariffType(stream, &iso1SAScheduleTupleType->SalesTariff);
  10678. iso1SAScheduleTupleType->SalesTariff_isUsed = 1u;
  10679. grammarID = 3;
  10680. break;
  10681. case 1:
  10682. done = 1;
  10683. grammarID = 4;
  10684. break;
  10685. default:
  10686. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10687. break;
  10688. }
  10689. }
  10690. break;
  10691. case 3:
  10692. /* Element[END_ELEMENT] */
  10693. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10694. if (errn == 0) {
  10695. switch(eventCode) {
  10696. case 0:
  10697. done = 1;
  10698. grammarID = 4;
  10699. break;
  10700. default:
  10701. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10702. break;
  10703. }
  10704. }
  10705. break;
  10706. default:
  10707. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10708. break;
  10709. }
  10710. if(errn) {
  10711. done = 1;
  10712. }
  10713. }
  10714. return errn;
  10715. }
  10716. /* 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'. */
  10717. static int decode_iso1AC_EVChargeParameterType(bitstream_t* stream, struct iso1AC_EVChargeParameterType* iso1AC_EVChargeParameterType) {
  10718. int grammarID = 251;
  10719. int done = 0;
  10720. init_iso1AC_EVChargeParameterType(iso1AC_EVChargeParameterType);
  10721. while(!done) {
  10722. switch(grammarID) {
  10723. case 251:
  10724. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */
  10725. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  10726. if (errn == 0) {
  10727. switch(eventCode) {
  10728. case 0:
  10729. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  10730. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10731. if(errn == 0) {
  10732. if(eventCode == 0) {
  10733. errn = decodeUnsignedInteger32(stream, &iso1AC_EVChargeParameterType->DepartureTime);
  10734. iso1AC_EVChargeParameterType->DepartureTime_isUsed = 1u;
  10735. } else {
  10736. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10737. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10738. }
  10739. }
  10740. if(errn == 0) {
  10741. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) ? */
  10742. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10743. if(eventCode == 0) {
  10744. grammarID = 252;
  10745. } else {
  10746. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  10747. }
  10748. }
  10749. break;
  10750. case 1:
  10751. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EAmount);
  10752. grammarID = 253;
  10753. break;
  10754. default:
  10755. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10756. break;
  10757. }
  10758. }
  10759. break;
  10760. case 252:
  10761. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */
  10762. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10763. if (errn == 0) {
  10764. switch(eventCode) {
  10765. case 0:
  10766. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EAmount);
  10767. grammarID = 253;
  10768. break;
  10769. default:
  10770. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10771. break;
  10772. }
  10773. }
  10774. break;
  10775. case 253:
  10776. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */
  10777. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10778. if (errn == 0) {
  10779. switch(eventCode) {
  10780. case 0:
  10781. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EVMaxVoltage);
  10782. grammarID = 254;
  10783. break;
  10784. default:
  10785. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10786. break;
  10787. }
  10788. }
  10789. break;
  10790. case 254:
  10791. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */
  10792. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10793. if (errn == 0) {
  10794. switch(eventCode) {
  10795. case 0:
  10796. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EVMaxCurrent);
  10797. grammarID = 255;
  10798. break;
  10799. default:
  10800. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10801. break;
  10802. }
  10803. }
  10804. break;
  10805. case 255:
  10806. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */
  10807. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10808. if (errn == 0) {
  10809. switch(eventCode) {
  10810. case 0:
  10811. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVChargeParameterType->EVMinCurrent);
  10812. grammarID = 3;
  10813. break;
  10814. default:
  10815. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10816. break;
  10817. }
  10818. }
  10819. break;
  10820. case 3:
  10821. /* Element[END_ELEMENT] */
  10822. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10823. if (errn == 0) {
  10824. switch(eventCode) {
  10825. case 0:
  10826. done = 1;
  10827. grammarID = 4;
  10828. break;
  10829. default:
  10830. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10831. break;
  10832. }
  10833. }
  10834. break;
  10835. default:
  10836. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10837. break;
  10838. }
  10839. if(errn) {
  10840. done = 1;
  10841. }
  10842. }
  10843. return errn;
  10844. }
  10845. /* 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'. */
  10846. static int decode_iso1AnonType_V2G_Message(bitstream_t* stream, struct iso1AnonType_V2G_Message* iso1AnonType_V2G_Message) {
  10847. int grammarID = 256;
  10848. int done = 0;
  10849. init_iso1AnonType_V2G_Message(iso1AnonType_V2G_Message);
  10850. while(!done) {
  10851. switch(grammarID) {
  10852. case 256:
  10853. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */
  10854. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10855. if (errn == 0) {
  10856. switch(eventCode) {
  10857. case 0:
  10858. errn = decode_iso1MessageHeaderType(stream, &iso1AnonType_V2G_Message->Header);
  10859. grammarID = 257;
  10860. break;
  10861. default:
  10862. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10863. break;
  10864. }
  10865. }
  10866. break;
  10867. case 257:
  10868. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */
  10869. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10870. if (errn == 0) {
  10871. switch(eventCode) {
  10872. case 0:
  10873. errn = decode_iso1BodyType(stream, &iso1AnonType_V2G_Message->Body);
  10874. grammarID = 3;
  10875. break;
  10876. default:
  10877. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10878. break;
  10879. }
  10880. }
  10881. break;
  10882. case 3:
  10883. /* Element[END_ELEMENT] */
  10884. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10885. if (errn == 0) {
  10886. switch(eventCode) {
  10887. case 0:
  10888. done = 1;
  10889. grammarID = 4;
  10890. break;
  10891. default:
  10892. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10893. break;
  10894. }
  10895. }
  10896. break;
  10897. default:
  10898. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  10899. break;
  10900. }
  10901. if(errn) {
  10902. done = 1;
  10903. }
  10904. }
  10905. return errn;
  10906. }
  10907. /* 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'. */
  10908. static int decode_iso1PaymentDetailsResType(bitstream_t* stream, struct iso1PaymentDetailsResType* iso1PaymentDetailsResType) {
  10909. int grammarID = 258;
  10910. int done = 0;
  10911. init_iso1PaymentDetailsResType(iso1PaymentDetailsResType);
  10912. while(!done) {
  10913. switch(grammarID) {
  10914. case 258:
  10915. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  10916. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10917. if (errn == 0) {
  10918. switch(eventCode) {
  10919. case 0:
  10920. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  10921. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10922. if(errn == 0) {
  10923. if(eventCode == 0) {
  10924. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  10925. iso1PaymentDetailsResType->ResponseCode = (iso1responseCodeType) uint32;
  10926. } else {
  10927. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10928. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10929. }
  10930. }
  10931. if(errn == 0) {
  10932. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  10933. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10934. if(eventCode == 0) {
  10935. grammarID = 259;
  10936. } else {
  10937. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  10938. }
  10939. }
  10940. break;
  10941. default:
  10942. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10943. break;
  10944. }
  10945. }
  10946. break;
  10947. case 259:
  10948. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */
  10949. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10950. if (errn == 0) {
  10951. switch(eventCode) {
  10952. case 0:
  10953. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  10954. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10955. if(errn == 0) {
  10956. if(eventCode == 0) {
  10957. errn = decodeUnsignedInteger16(stream, &iso1PaymentDetailsResType->GenChallenge.bytesLen);
  10958. if (errn == 0) {
  10959. errn = (iso1PaymentDetailsResType->GenChallenge.bytesLen) <= iso1PaymentDetailsResType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  10960. }
  10961. if (errn == 0) {
  10962. errn = decodeBytes(stream, iso1PaymentDetailsResType->GenChallenge.bytesLen, iso1PaymentDetailsResType->GenChallenge.bytes);
  10963. }
  10964. } else {
  10965. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10966. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10967. }
  10968. }
  10969. if(errn == 0) {
  10970. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) ? */
  10971. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10972. if(eventCode == 0) {
  10973. grammarID = 260;
  10974. } else {
  10975. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  10976. }
  10977. }
  10978. break;
  10979. default:
  10980. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  10981. break;
  10982. }
  10983. }
  10984. break;
  10985. case 260:
  10986. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */
  10987. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10988. if (errn == 0) {
  10989. switch(eventCode) {
  10990. case 0:
  10991. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  10992. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  10993. if(errn == 0) {
  10994. if(eventCode == 0) {
  10995. errn = decodeInteger64(stream, &iso1PaymentDetailsResType->EVSETimeStamp);
  10996. } else {
  10997. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  10998. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  10999. }
  11000. }
  11001. if(errn == 0) {
  11002. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp) ? */
  11003. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11004. if(eventCode == 0) {
  11005. grammarID = 3;
  11006. } else {
  11007. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11008. }
  11009. }
  11010. break;
  11011. default:
  11012. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11013. break;
  11014. }
  11015. }
  11016. break;
  11017. case 3:
  11018. /* Element[END_ELEMENT] */
  11019. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11020. if (errn == 0) {
  11021. switch(eventCode) {
  11022. case 0:
  11023. done = 1;
  11024. grammarID = 4;
  11025. break;
  11026. default:
  11027. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11028. break;
  11029. }
  11030. }
  11031. break;
  11032. default:
  11033. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11034. break;
  11035. }
  11036. if(errn) {
  11037. done = 1;
  11038. }
  11039. }
  11040. return errn;
  11041. }
  11042. /* 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'. */
  11043. static int decode_iso1ContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct iso1ContractSignatureEncryptedPrivateKeyType* iso1ContractSignatureEncryptedPrivateKeyType) {
  11044. int grammarID = 23;
  11045. int done = 0;
  11046. init_iso1ContractSignatureEncryptedPrivateKeyType(iso1ContractSignatureEncryptedPrivateKeyType);
  11047. while(!done) {
  11048. switch(grammarID) {
  11049. case 23:
  11050. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */
  11051. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11052. if (errn == 0) {
  11053. switch(eventCode) {
  11054. case 0:
  11055. errn = decodeUnsignedInteger16(stream, &iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen);
  11056. if (errn == 0) {
  11057. if (iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen >= 2) {
  11058. iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen = (uint16_t)(iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen - 2); /* string table miss */
  11059. errn = decodeCharacters(stream, iso1ContractSignatureEncryptedPrivateKeyType->Id.charactersLen, iso1ContractSignatureEncryptedPrivateKeyType->Id.characters, iso1ContractSignatureEncryptedPrivateKeyType_Id_CHARACTERS_SIZE);
  11060. } else {
  11061. /* string table hit */
  11062. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11063. }
  11064. }
  11065. grammarID = 24;
  11066. break;
  11067. default:
  11068. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11069. break;
  11070. }
  11071. }
  11072. break;
  11073. case 24:
  11074. /* StartTag[CHARACTERS[BINARY_BASE64]] */
  11075. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11076. if (errn == 0) {
  11077. switch(eventCode) {
  11078. case 0:
  11079. errn = decodeUnsignedInteger16(stream, &iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen);
  11080. if (errn == 0) {
  11081. errn = (iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen) <= iso1ContractSignatureEncryptedPrivateKeyType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  11082. }
  11083. if (errn == 0) {
  11084. errn = decodeBytes(stream, iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen, iso1ContractSignatureEncryptedPrivateKeyType->CONTENT.bytes);
  11085. }
  11086. grammarID = 3;
  11087. break;
  11088. default:
  11089. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11090. break;
  11091. }
  11092. }
  11093. break;
  11094. case 3:
  11095. /* Element[END_ELEMENT] */
  11096. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11097. if (errn == 0) {
  11098. switch(eventCode) {
  11099. case 0:
  11100. done = 1;
  11101. grammarID = 4;
  11102. break;
  11103. default:
  11104. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11105. break;
  11106. }
  11107. }
  11108. break;
  11109. default:
  11110. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11111. break;
  11112. }
  11113. if(errn) {
  11114. done = 1;
  11115. }
  11116. }
  11117. return errn;
  11118. }
  11119. /* 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'. */
  11120. static int decode_iso1PMaxScheduleEntryType(bitstream_t* stream, struct iso1PMaxScheduleEntryType* iso1PMaxScheduleEntryType) {
  11121. int grammarID = 261;
  11122. int done = 0;
  11123. init_iso1PMaxScheduleEntryType(iso1PMaxScheduleEntryType);
  11124. while(!done) {
  11125. switch(grammarID) {
  11126. case 261:
  11127. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */
  11128. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  11129. if (errn == 0) {
  11130. switch(eventCode) {
  11131. case 0:
  11132. errn = decode_iso1RelativeTimeIntervalType(stream, &iso1PMaxScheduleEntryType->RelativeTimeInterval);
  11133. iso1PMaxScheduleEntryType->RelativeTimeInterval_isUsed = 1u;
  11134. grammarID = 262;
  11135. break;
  11136. case 1:
  11137. errn = decode_iso1IntervalType(stream, &iso1PMaxScheduleEntryType->TimeInterval);
  11138. iso1PMaxScheduleEntryType->TimeInterval_isUsed = 1u;
  11139. grammarID = 262;
  11140. break;
  11141. default:
  11142. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11143. break;
  11144. }
  11145. }
  11146. break;
  11147. case 262:
  11148. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */
  11149. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11150. if (errn == 0) {
  11151. switch(eventCode) {
  11152. case 0:
  11153. errn = decode_iso1PhysicalValueType(stream, &iso1PMaxScheduleEntryType->PMax);
  11154. grammarID = 3;
  11155. break;
  11156. default:
  11157. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11158. break;
  11159. }
  11160. }
  11161. break;
  11162. case 3:
  11163. /* Element[END_ELEMENT] */
  11164. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11165. if (errn == 0) {
  11166. switch(eventCode) {
  11167. case 0:
  11168. done = 1;
  11169. grammarID = 4;
  11170. break;
  11171. default:
  11172. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11173. break;
  11174. }
  11175. }
  11176. break;
  11177. default:
  11178. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11179. break;
  11180. }
  11181. if(errn) {
  11182. done = 1;
  11183. }
  11184. }
  11185. return errn;
  11186. }
  11187. /* 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'. */
  11188. static int decode_iso1SPKIDataType(bitstream_t* stream, struct iso1SPKIDataType* iso1SPKIDataType) {
  11189. int grammarID = 263;
  11190. int done = 0;
  11191. init_iso1SPKIDataType(iso1SPKIDataType);
  11192. while(!done) {
  11193. switch(grammarID) {
  11194. case 263:
  11195. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */
  11196. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11197. if (errn == 0) {
  11198. switch(eventCode) {
  11199. case 0:
  11200. if (iso1SPKIDataType->SPKISexp.arrayLen < iso1SPKIDataType_SPKISexp_ARRAY_SIZE) {
  11201. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  11202. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11203. if(errn == 0) {
  11204. if(eventCode == 0) {
  11205. errn = decodeUnsignedInteger16(stream, &iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen);
  11206. if (errn == 0) {
  11207. errn = (iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen) <= iso1SPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  11208. }
  11209. if (errn == 0) {
  11210. errn = decodeBytes(stream, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytes);
  11211. }
  11212. iso1SPKIDataType->SPKISexp.arrayLen++;
  11213. } else {
  11214. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11215. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11216. }
  11217. }
  11218. } else {
  11219. errn = EXI_ERROR_OUT_OF_BOUNDS;
  11220. }
  11221. if(errn == 0) {
  11222. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */
  11223. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11224. if(eventCode == 0) {
  11225. grammarID = 264;
  11226. } else {
  11227. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11228. }
  11229. }
  11230. break;
  11231. default:
  11232. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11233. break;
  11234. }
  11235. }
  11236. break;
  11237. case 264:
  11238. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */
  11239. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  11240. if (errn == 0) {
  11241. switch(eventCode) {
  11242. case 0:
  11243. if (iso1SPKIDataType->SPKISexp.arrayLen < iso1SPKIDataType_SPKISexp_ARRAY_SIZE) {
  11244. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  11245. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11246. if(errn == 0) {
  11247. if(eventCode == 0) {
  11248. errn = decodeUnsignedInteger16(stream, &iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen);
  11249. if (errn == 0) {
  11250. errn = (iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen) <= iso1SPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  11251. }
  11252. if (errn == 0) {
  11253. errn = decodeBytes(stream, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytes);
  11254. }
  11255. iso1SPKIDataType->SPKISexp.arrayLen++;
  11256. } else {
  11257. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11258. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11259. }
  11260. }
  11261. } else {
  11262. errn = EXI_ERROR_OUT_OF_BOUNDS;
  11263. }
  11264. if(errn == 0) {
  11265. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */
  11266. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11267. if(eventCode == 0) {
  11268. grammarID = 264;
  11269. } else {
  11270. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11271. }
  11272. }
  11273. break;
  11274. case 1:
  11275. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11276. /* TODO unsupported event : START_ELEMENT_GENERIC */
  11277. grammarID = 265;
  11278. break;
  11279. case 2:
  11280. done = 1;
  11281. grammarID = 4;
  11282. break;
  11283. default:
  11284. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11285. break;
  11286. }
  11287. }
  11288. break;
  11289. case 265:
  11290. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */
  11291. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  11292. if (errn == 0) {
  11293. switch(eventCode) {
  11294. case 0:
  11295. if (iso1SPKIDataType->SPKISexp.arrayLen < iso1SPKIDataType_SPKISexp_ARRAY_SIZE) {
  11296. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  11297. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11298. if(errn == 0) {
  11299. if(eventCode == 0) {
  11300. errn = decodeUnsignedInteger16(stream, &iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen);
  11301. if (errn == 0) {
  11302. errn = (iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen) <= iso1SPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  11303. }
  11304. if (errn == 0) {
  11305. errn = decodeBytes(stream, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytesLen, iso1SPKIDataType->SPKISexp.array[iso1SPKIDataType->SPKISexp.arrayLen].bytes);
  11306. }
  11307. iso1SPKIDataType->SPKISexp.arrayLen++;
  11308. } else {
  11309. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11310. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11311. }
  11312. }
  11313. } else {
  11314. errn = EXI_ERROR_OUT_OF_BOUNDS;
  11315. }
  11316. if(errn == 0) {
  11317. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */
  11318. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11319. if(eventCode == 0) {
  11320. grammarID = 264;
  11321. } else {
  11322. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11323. }
  11324. }
  11325. break;
  11326. case 1:
  11327. done = 1;
  11328. grammarID = 4;
  11329. break;
  11330. default:
  11331. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11332. break;
  11333. }
  11334. }
  11335. break;
  11336. default:
  11337. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11338. break;
  11339. }
  11340. if(errn) {
  11341. done = 1;
  11342. }
  11343. }
  11344. return errn;
  11345. }
  11346. /* 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'. */
  11347. static int decode_iso1MeteringReceiptResType(bitstream_t* stream, struct iso1MeteringReceiptResType* iso1MeteringReceiptResType) {
  11348. int grammarID = 93;
  11349. int done = 0;
  11350. init_iso1MeteringReceiptResType(iso1MeteringReceiptResType);
  11351. while(!done) {
  11352. switch(grammarID) {
  11353. case 93:
  11354. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  11355. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11356. if (errn == 0) {
  11357. switch(eventCode) {
  11358. case 0:
  11359. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  11360. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11361. if(errn == 0) {
  11362. if(eventCode == 0) {
  11363. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  11364. iso1MeteringReceiptResType->ResponseCode = (iso1responseCodeType) uint32;
  11365. } else {
  11366. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11367. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11368. }
  11369. }
  11370. if(errn == 0) {
  11371. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  11372. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11373. if(eventCode == 0) {
  11374. grammarID = 94;
  11375. } else {
  11376. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11377. }
  11378. }
  11379. break;
  11380. default:
  11381. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11382. break;
  11383. }
  11384. }
  11385. break;
  11386. case 94:
  11387. /* 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)] */
  11388. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  11389. if (errn == 0) {
  11390. switch(eventCode) {
  11391. case 0:
  11392. errn = decode_iso1AC_EVSEStatusType(stream, &iso1MeteringReceiptResType->AC_EVSEStatus);
  11393. iso1MeteringReceiptResType->AC_EVSEStatus_isUsed = 1u;
  11394. grammarID = 3;
  11395. break;
  11396. case 1:
  11397. errn = decode_iso1DC_EVSEStatusType(stream, &iso1MeteringReceiptResType->DC_EVSEStatus);
  11398. iso1MeteringReceiptResType->DC_EVSEStatus_isUsed = 1u;
  11399. grammarID = 3;
  11400. break;
  11401. case 2:
  11402. errn = decode_iso1EVSEStatusType(stream, &iso1MeteringReceiptResType->EVSEStatus);
  11403. iso1MeteringReceiptResType->EVSEStatus_isUsed = 1u;
  11404. grammarID = 3;
  11405. break;
  11406. default:
  11407. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11408. break;
  11409. }
  11410. }
  11411. break;
  11412. case 3:
  11413. /* Element[END_ELEMENT] */
  11414. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11415. if (errn == 0) {
  11416. switch(eventCode) {
  11417. case 0:
  11418. done = 1;
  11419. grammarID = 4;
  11420. break;
  11421. default:
  11422. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11423. break;
  11424. }
  11425. }
  11426. break;
  11427. default:
  11428. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11429. break;
  11430. }
  11431. if(errn) {
  11432. done = 1;
  11433. }
  11434. }
  11435. return errn;
  11436. }
  11437. /* 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'. */
  11438. static int decode_iso1SessionStopReqType(bitstream_t* stream, struct iso1SessionStopReqType* iso1SessionStopReqType) {
  11439. int grammarID = 266;
  11440. int done = 0;
  11441. init_iso1SessionStopReqType(iso1SessionStopReqType);
  11442. while(!done) {
  11443. switch(grammarID) {
  11444. case 266:
  11445. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */
  11446. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11447. if (errn == 0) {
  11448. switch(eventCode) {
  11449. case 0:
  11450. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  11451. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11452. if(errn == 0) {
  11453. if(eventCode == 0) {
  11454. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  11455. iso1SessionStopReqType->ChargingSession = (iso1chargingSessionType) uint32;
  11456. } else {
  11457. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11458. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11459. }
  11460. }
  11461. if(errn == 0) {
  11462. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession) ? */
  11463. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11464. if(eventCode == 0) {
  11465. grammarID = 3;
  11466. } else {
  11467. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11468. }
  11469. }
  11470. break;
  11471. default:
  11472. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11473. break;
  11474. }
  11475. }
  11476. break;
  11477. case 3:
  11478. /* Element[END_ELEMENT] */
  11479. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11480. if (errn == 0) {
  11481. switch(eventCode) {
  11482. case 0:
  11483. done = 1;
  11484. grammarID = 4;
  11485. break;
  11486. default:
  11487. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11488. break;
  11489. }
  11490. }
  11491. break;
  11492. default:
  11493. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11494. break;
  11495. }
  11496. if(errn) {
  11497. done = 1;
  11498. }
  11499. }
  11500. return errn;
  11501. }
  11502. /* 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'. */
  11503. static int decode_iso1WeldingDetectionResType(bitstream_t* stream, struct iso1WeldingDetectionResType* iso1WeldingDetectionResType) {
  11504. int grammarID = 39;
  11505. int done = 0;
  11506. init_iso1WeldingDetectionResType(iso1WeldingDetectionResType);
  11507. while(!done) {
  11508. switch(grammarID) {
  11509. case 39:
  11510. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  11511. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11512. if (errn == 0) {
  11513. switch(eventCode) {
  11514. case 0:
  11515. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  11516. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11517. if(errn == 0) {
  11518. if(eventCode == 0) {
  11519. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  11520. iso1WeldingDetectionResType->ResponseCode = (iso1responseCodeType) uint32;
  11521. } else {
  11522. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11523. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11524. }
  11525. }
  11526. if(errn == 0) {
  11527. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  11528. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11529. if(eventCode == 0) {
  11530. grammarID = 40;
  11531. } else {
  11532. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11533. }
  11534. }
  11535. break;
  11536. default:
  11537. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11538. break;
  11539. }
  11540. }
  11541. break;
  11542. case 40:
  11543. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  11544. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11545. if (errn == 0) {
  11546. switch(eventCode) {
  11547. case 0:
  11548. errn = decode_iso1DC_EVSEStatusType(stream, &iso1WeldingDetectionResType->DC_EVSEStatus);
  11549. grammarID = 41;
  11550. break;
  11551. default:
  11552. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11553. break;
  11554. }
  11555. }
  11556. break;
  11557. case 41:
  11558. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */
  11559. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11560. if (errn == 0) {
  11561. switch(eventCode) {
  11562. case 0:
  11563. errn = decode_iso1PhysicalValueType(stream, &iso1WeldingDetectionResType->EVSEPresentVoltage);
  11564. grammarID = 3;
  11565. break;
  11566. default:
  11567. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11568. break;
  11569. }
  11570. }
  11571. break;
  11572. case 3:
  11573. /* Element[END_ELEMENT] */
  11574. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11575. if (errn == 0) {
  11576. switch(eventCode) {
  11577. case 0:
  11578. done = 1;
  11579. grammarID = 4;
  11580. break;
  11581. default:
  11582. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11583. break;
  11584. }
  11585. }
  11586. break;
  11587. default:
  11588. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11589. break;
  11590. }
  11591. if(errn) {
  11592. done = 1;
  11593. }
  11594. }
  11595. return errn;
  11596. }
  11597. /* 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'. */
  11598. static int decode_iso1ReferenceType(bitstream_t* stream, struct iso1ReferenceType* iso1ReferenceType) {
  11599. int grammarID = 267;
  11600. int done = 0;
  11601. init_iso1ReferenceType(iso1ReferenceType);
  11602. while(!done) {
  11603. switch(grammarID) {
  11604. case 267:
  11605. /* 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)] */
  11606. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  11607. if (errn == 0) {
  11608. switch(eventCode) {
  11609. case 0:
  11610. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->Id.charactersLen);
  11611. if (errn == 0) {
  11612. if (iso1ReferenceType->Id.charactersLen >= 2) {
  11613. iso1ReferenceType->Id.charactersLen = (uint16_t)(iso1ReferenceType->Id.charactersLen - 2); /* string table miss */
  11614. errn = decodeCharacters(stream, iso1ReferenceType->Id.charactersLen, iso1ReferenceType->Id.characters, iso1ReferenceType_Id_CHARACTERS_SIZE);
  11615. } else {
  11616. /* string table hit */
  11617. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11618. }
  11619. }
  11620. iso1ReferenceType->Id_isUsed = 1u;
  11621. grammarID = 268;
  11622. break;
  11623. case 1:
  11624. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->Type.charactersLen);
  11625. if (errn == 0) {
  11626. if (iso1ReferenceType->Type.charactersLen >= 2) {
  11627. iso1ReferenceType->Type.charactersLen = (uint16_t)(iso1ReferenceType->Type.charactersLen - 2); /* string table miss */
  11628. errn = decodeCharacters(stream, iso1ReferenceType->Type.charactersLen, iso1ReferenceType->Type.characters, iso1ReferenceType_Type_CHARACTERS_SIZE);
  11629. } else {
  11630. /* string table hit */
  11631. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11632. }
  11633. }
  11634. iso1ReferenceType->Type_isUsed = 1u;
  11635. grammarID = 269;
  11636. break;
  11637. case 2:
  11638. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->URI.charactersLen);
  11639. if (errn == 0) {
  11640. if (iso1ReferenceType->URI.charactersLen >= 2) {
  11641. iso1ReferenceType->URI.charactersLen = (uint16_t)(iso1ReferenceType->URI.charactersLen - 2); /* string table miss */
  11642. errn = decodeCharacters(stream, iso1ReferenceType->URI.charactersLen, iso1ReferenceType->URI.characters, iso1ReferenceType_URI_CHARACTERS_SIZE);
  11643. } else {
  11644. /* string table hit */
  11645. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11646. }
  11647. }
  11648. iso1ReferenceType->URI_isUsed = 1u;
  11649. grammarID = 270;
  11650. break;
  11651. case 3:
  11652. errn = decode_iso1TransformsType(stream, &iso1ReferenceType->Transforms);
  11653. iso1ReferenceType->Transforms_isUsed = 1u;
  11654. grammarID = 271;
  11655. break;
  11656. case 4:
  11657. errn = decode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod);
  11658. grammarID = 272;
  11659. break;
  11660. default:
  11661. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11662. break;
  11663. }
  11664. }
  11665. break;
  11666. case 268:
  11667. /* 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)] */
  11668. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  11669. if (errn == 0) {
  11670. switch(eventCode) {
  11671. case 0:
  11672. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->Type.charactersLen);
  11673. if (errn == 0) {
  11674. if (iso1ReferenceType->Type.charactersLen >= 2) {
  11675. iso1ReferenceType->Type.charactersLen = (uint16_t)(iso1ReferenceType->Type.charactersLen - 2); /* string table miss */
  11676. errn = decodeCharacters(stream, iso1ReferenceType->Type.charactersLen, iso1ReferenceType->Type.characters, iso1ReferenceType_Type_CHARACTERS_SIZE);
  11677. } else {
  11678. /* string table hit */
  11679. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11680. }
  11681. }
  11682. iso1ReferenceType->Type_isUsed = 1u;
  11683. grammarID = 269;
  11684. break;
  11685. case 1:
  11686. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->URI.charactersLen);
  11687. if (errn == 0) {
  11688. if (iso1ReferenceType->URI.charactersLen >= 2) {
  11689. iso1ReferenceType->URI.charactersLen = (uint16_t)(iso1ReferenceType->URI.charactersLen - 2); /* string table miss */
  11690. errn = decodeCharacters(stream, iso1ReferenceType->URI.charactersLen, iso1ReferenceType->URI.characters, iso1ReferenceType_URI_CHARACTERS_SIZE);
  11691. } else {
  11692. /* string table hit */
  11693. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11694. }
  11695. }
  11696. iso1ReferenceType->URI_isUsed = 1u;
  11697. grammarID = 270;
  11698. break;
  11699. case 2:
  11700. errn = decode_iso1TransformsType(stream, &iso1ReferenceType->Transforms);
  11701. iso1ReferenceType->Transforms_isUsed = 1u;
  11702. grammarID = 271;
  11703. break;
  11704. case 3:
  11705. errn = decode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod);
  11706. grammarID = 272;
  11707. break;
  11708. default:
  11709. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11710. break;
  11711. }
  11712. }
  11713. break;
  11714. case 269:
  11715. /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  11716. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  11717. if (errn == 0) {
  11718. switch(eventCode) {
  11719. case 0:
  11720. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->URI.charactersLen);
  11721. if (errn == 0) {
  11722. if (iso1ReferenceType->URI.charactersLen >= 2) {
  11723. iso1ReferenceType->URI.charactersLen = (uint16_t)(iso1ReferenceType->URI.charactersLen - 2); /* string table miss */
  11724. errn = decodeCharacters(stream, iso1ReferenceType->URI.charactersLen, iso1ReferenceType->URI.characters, iso1ReferenceType_URI_CHARACTERS_SIZE);
  11725. } else {
  11726. /* string table hit */
  11727. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  11728. }
  11729. }
  11730. iso1ReferenceType->URI_isUsed = 1u;
  11731. grammarID = 270;
  11732. break;
  11733. case 1:
  11734. errn = decode_iso1TransformsType(stream, &iso1ReferenceType->Transforms);
  11735. iso1ReferenceType->Transforms_isUsed = 1u;
  11736. grammarID = 271;
  11737. break;
  11738. case 2:
  11739. errn = decode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod);
  11740. grammarID = 272;
  11741. break;
  11742. default:
  11743. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11744. break;
  11745. }
  11746. }
  11747. break;
  11748. case 270:
  11749. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  11750. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  11751. if (errn == 0) {
  11752. switch(eventCode) {
  11753. case 0:
  11754. errn = decode_iso1TransformsType(stream, &iso1ReferenceType->Transforms);
  11755. iso1ReferenceType->Transforms_isUsed = 1u;
  11756. grammarID = 271;
  11757. break;
  11758. case 1:
  11759. errn = decode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod);
  11760. grammarID = 272;
  11761. break;
  11762. default:
  11763. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11764. break;
  11765. }
  11766. }
  11767. break;
  11768. case 271:
  11769. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
  11770. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11771. if (errn == 0) {
  11772. switch(eventCode) {
  11773. case 0:
  11774. errn = decode_iso1DigestMethodType(stream, &iso1ReferenceType->DigestMethod);
  11775. grammarID = 272;
  11776. break;
  11777. default:
  11778. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11779. break;
  11780. }
  11781. }
  11782. break;
  11783. case 272:
  11784. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */
  11785. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11786. if (errn == 0) {
  11787. switch(eventCode) {
  11788. case 0:
  11789. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  11790. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11791. if(errn == 0) {
  11792. if(eventCode == 0) {
  11793. errn = decodeUnsignedInteger16(stream, &iso1ReferenceType->DigestValue.bytesLen);
  11794. if (errn == 0) {
  11795. errn = (iso1ReferenceType->DigestValue.bytesLen) <= iso1ReferenceType_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  11796. }
  11797. if (errn == 0) {
  11798. errn = decodeBytes(stream, iso1ReferenceType->DigestValue.bytesLen, iso1ReferenceType->DigestValue.bytes);
  11799. }
  11800. } else {
  11801. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11802. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11803. }
  11804. }
  11805. if(errn == 0) {
  11806. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) ? */
  11807. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11808. if(eventCode == 0) {
  11809. grammarID = 3;
  11810. } else {
  11811. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11812. }
  11813. }
  11814. break;
  11815. default:
  11816. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11817. break;
  11818. }
  11819. }
  11820. break;
  11821. case 3:
  11822. /* Element[END_ELEMENT] */
  11823. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11824. if (errn == 0) {
  11825. switch(eventCode) {
  11826. case 0:
  11827. done = 1;
  11828. grammarID = 4;
  11829. break;
  11830. default:
  11831. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11832. break;
  11833. }
  11834. }
  11835. break;
  11836. default:
  11837. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  11838. break;
  11839. }
  11840. if(errn) {
  11841. done = 1;
  11842. }
  11843. }
  11844. return errn;
  11845. }
  11846. /* 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'. */
  11847. static int decode_iso1CurrentDemandReqType(bitstream_t* stream, struct iso1CurrentDemandReqType* iso1CurrentDemandReqType) {
  11848. int grammarID = 273;
  11849. int done = 0;
  11850. init_iso1CurrentDemandReqType(iso1CurrentDemandReqType);
  11851. while(!done) {
  11852. switch(grammarID) {
  11853. case 273:
  11854. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  11855. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11856. if (errn == 0) {
  11857. switch(eventCode) {
  11858. case 0:
  11859. errn = decode_iso1DC_EVStatusType(stream, &iso1CurrentDemandReqType->DC_EVStatus);
  11860. grammarID = 274;
  11861. break;
  11862. default:
  11863. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11864. break;
  11865. }
  11866. }
  11867. break;
  11868. case 274:
  11869. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */
  11870. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11871. if (errn == 0) {
  11872. switch(eventCode) {
  11873. case 0:
  11874. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetCurrent);
  11875. grammarID = 275;
  11876. break;
  11877. default:
  11878. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11879. break;
  11880. }
  11881. }
  11882. break;
  11883. case 275:
  11884. /* 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)] */
  11885. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  11886. if (errn == 0) {
  11887. switch(eventCode) {
  11888. case 0:
  11889. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumVoltageLimit);
  11890. iso1CurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 1u;
  11891. grammarID = 276;
  11892. break;
  11893. case 1:
  11894. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumCurrentLimit);
  11895. iso1CurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 1u;
  11896. grammarID = 277;
  11897. break;
  11898. case 2:
  11899. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumPowerLimit);
  11900. iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed = 1u;
  11901. grammarID = 278;
  11902. break;
  11903. case 3:
  11904. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  11905. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11906. if(errn == 0) {
  11907. if(eventCode == 0) {
  11908. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->BulkChargingComplete);
  11909. iso1CurrentDemandReqType->BulkChargingComplete_isUsed = 1u;
  11910. } else {
  11911. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11912. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11913. }
  11914. }
  11915. if(errn == 0) {
  11916. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */
  11917. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11918. if(eventCode == 0) {
  11919. grammarID = 279;
  11920. } else {
  11921. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11922. }
  11923. }
  11924. break;
  11925. case 4:
  11926. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  11927. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11928. if(errn == 0) {
  11929. if(eventCode == 0) {
  11930. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->ChargingComplete);
  11931. } else {
  11932. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11933. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11934. }
  11935. }
  11936. if(errn == 0) {
  11937. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */
  11938. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11939. if(eventCode == 0) {
  11940. grammarID = 280;
  11941. } else {
  11942. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11943. }
  11944. }
  11945. break;
  11946. default:
  11947. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  11948. break;
  11949. }
  11950. }
  11951. break;
  11952. case 276:
  11953. /* 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)] */
  11954. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  11955. if (errn == 0) {
  11956. switch(eventCode) {
  11957. case 0:
  11958. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumCurrentLimit);
  11959. iso1CurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 1u;
  11960. grammarID = 277;
  11961. break;
  11962. case 1:
  11963. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumPowerLimit);
  11964. iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed = 1u;
  11965. grammarID = 278;
  11966. break;
  11967. case 2:
  11968. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  11969. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11970. if(errn == 0) {
  11971. if(eventCode == 0) {
  11972. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->BulkChargingComplete);
  11973. iso1CurrentDemandReqType->BulkChargingComplete_isUsed = 1u;
  11974. } else {
  11975. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11976. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11977. }
  11978. }
  11979. if(errn == 0) {
  11980. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */
  11981. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11982. if(eventCode == 0) {
  11983. grammarID = 279;
  11984. } else {
  11985. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  11986. }
  11987. }
  11988. break;
  11989. case 3:
  11990. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  11991. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  11992. if(errn == 0) {
  11993. if(eventCode == 0) {
  11994. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->ChargingComplete);
  11995. } else {
  11996. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  11997. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  11998. }
  11999. }
  12000. if(errn == 0) {
  12001. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */
  12002. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12003. if(eventCode == 0) {
  12004. grammarID = 280;
  12005. } else {
  12006. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12007. }
  12008. }
  12009. break;
  12010. default:
  12011. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12012. break;
  12013. }
  12014. }
  12015. break;
  12016. case 277:
  12017. /* 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)] */
  12018. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12019. if (errn == 0) {
  12020. switch(eventCode) {
  12021. case 0:
  12022. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVMaximumPowerLimit);
  12023. iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed = 1u;
  12024. grammarID = 278;
  12025. break;
  12026. case 1:
  12027. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12028. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12029. if(errn == 0) {
  12030. if(eventCode == 0) {
  12031. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->BulkChargingComplete);
  12032. iso1CurrentDemandReqType->BulkChargingComplete_isUsed = 1u;
  12033. } else {
  12034. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12035. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12036. }
  12037. }
  12038. if(errn == 0) {
  12039. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */
  12040. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12041. if(eventCode == 0) {
  12042. grammarID = 279;
  12043. } else {
  12044. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12045. }
  12046. }
  12047. break;
  12048. case 2:
  12049. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12050. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12051. if(errn == 0) {
  12052. if(eventCode == 0) {
  12053. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->ChargingComplete);
  12054. } else {
  12055. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12056. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12057. }
  12058. }
  12059. if(errn == 0) {
  12060. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */
  12061. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12062. if(eventCode == 0) {
  12063. grammarID = 280;
  12064. } else {
  12065. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12066. }
  12067. }
  12068. break;
  12069. default:
  12070. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12071. break;
  12072. }
  12073. }
  12074. break;
  12075. case 278:
  12076. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  12077. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12078. if (errn == 0) {
  12079. switch(eventCode) {
  12080. case 0:
  12081. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12082. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12083. if(errn == 0) {
  12084. if(eventCode == 0) {
  12085. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->BulkChargingComplete);
  12086. iso1CurrentDemandReqType->BulkChargingComplete_isUsed = 1u;
  12087. } else {
  12088. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12089. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12090. }
  12091. }
  12092. if(errn == 0) {
  12093. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */
  12094. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12095. if(eventCode == 0) {
  12096. grammarID = 279;
  12097. } else {
  12098. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12099. }
  12100. }
  12101. break;
  12102. case 1:
  12103. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12104. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12105. if(errn == 0) {
  12106. if(eventCode == 0) {
  12107. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->ChargingComplete);
  12108. } else {
  12109. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12110. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12111. }
  12112. }
  12113. if(errn == 0) {
  12114. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */
  12115. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12116. if(eventCode == 0) {
  12117. grammarID = 280;
  12118. } else {
  12119. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12120. }
  12121. }
  12122. break;
  12123. default:
  12124. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12125. break;
  12126. }
  12127. }
  12128. break;
  12129. case 279:
  12130. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */
  12131. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12132. if (errn == 0) {
  12133. switch(eventCode) {
  12134. case 0:
  12135. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12136. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12137. if(errn == 0) {
  12138. if(eventCode == 0) {
  12139. errn = decodeBoolean(stream, &iso1CurrentDemandReqType->ChargingComplete);
  12140. } else {
  12141. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12142. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12143. }
  12144. }
  12145. if(errn == 0) {
  12146. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */
  12147. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12148. if(eventCode == 0) {
  12149. grammarID = 280;
  12150. } else {
  12151. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12152. }
  12153. }
  12154. break;
  12155. default:
  12156. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12157. break;
  12158. }
  12159. }
  12160. break;
  12161. case 280:
  12162. /* 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)] */
  12163. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12164. if (errn == 0) {
  12165. switch(eventCode) {
  12166. case 0:
  12167. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->RemainingTimeToFullSoC);
  12168. iso1CurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 1u;
  12169. grammarID = 281;
  12170. break;
  12171. case 1:
  12172. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->RemainingTimeToBulkSoC);
  12173. iso1CurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 1u;
  12174. grammarID = 282;
  12175. break;
  12176. case 2:
  12177. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetVoltage);
  12178. grammarID = 3;
  12179. break;
  12180. default:
  12181. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12182. break;
  12183. }
  12184. }
  12185. break;
  12186. case 281:
  12187. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  12188. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12189. if (errn == 0) {
  12190. switch(eventCode) {
  12191. case 0:
  12192. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->RemainingTimeToBulkSoC);
  12193. iso1CurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 1u;
  12194. grammarID = 282;
  12195. break;
  12196. case 1:
  12197. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetVoltage);
  12198. grammarID = 3;
  12199. break;
  12200. default:
  12201. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12202. break;
  12203. }
  12204. }
  12205. break;
  12206. case 282:
  12207. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */
  12208. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12209. if (errn == 0) {
  12210. switch(eventCode) {
  12211. case 0:
  12212. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandReqType->EVTargetVoltage);
  12213. grammarID = 3;
  12214. break;
  12215. default:
  12216. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12217. break;
  12218. }
  12219. }
  12220. break;
  12221. case 3:
  12222. /* Element[END_ELEMENT] */
  12223. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12224. if (errn == 0) {
  12225. switch(eventCode) {
  12226. case 0:
  12227. done = 1;
  12228. grammarID = 4;
  12229. break;
  12230. default:
  12231. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12232. break;
  12233. }
  12234. }
  12235. break;
  12236. default:
  12237. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12238. break;
  12239. }
  12240. if(errn) {
  12241. done = 1;
  12242. }
  12243. }
  12244. return errn;
  12245. }
  12246. /* 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'. */
  12247. static int decode_iso1SalesTariffEntryType(bitstream_t* stream, struct iso1SalesTariffEntryType* iso1SalesTariffEntryType) {
  12248. int grammarID = 283;
  12249. int done = 0;
  12250. init_iso1SalesTariffEntryType(iso1SalesTariffEntryType);
  12251. while(!done) {
  12252. switch(grammarID) {
  12253. case 283:
  12254. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */
  12255. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12256. if (errn == 0) {
  12257. switch(eventCode) {
  12258. case 0:
  12259. errn = decode_iso1RelativeTimeIntervalType(stream, &iso1SalesTariffEntryType->RelativeTimeInterval);
  12260. iso1SalesTariffEntryType->RelativeTimeInterval_isUsed = 1u;
  12261. grammarID = 284;
  12262. break;
  12263. case 1:
  12264. errn = decode_iso1IntervalType(stream, &iso1SalesTariffEntryType->TimeInterval);
  12265. iso1SalesTariffEntryType->TimeInterval_isUsed = 1u;
  12266. grammarID = 284;
  12267. break;
  12268. default:
  12269. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12270. break;
  12271. }
  12272. }
  12273. break;
  12274. case 284:
  12275. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  12276. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12277. if (errn == 0) {
  12278. switch(eventCode) {
  12279. case 0:
  12280. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12281. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12282. if(errn == 0) {
  12283. if(eventCode == 0) {
  12284. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  12285. iso1SalesTariffEntryType->EPriceLevel = (uint8_t)(uint32 + 0);
  12286. iso1SalesTariffEntryType->EPriceLevel_isUsed = 1u;
  12287. } else {
  12288. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12289. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12290. }
  12291. }
  12292. if(errn == 0) {
  12293. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel) ? */
  12294. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12295. if(eventCode == 0) {
  12296. grammarID = 285;
  12297. } else {
  12298. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12299. }
  12300. }
  12301. break;
  12302. case 1:
  12303. if (iso1SalesTariffEntryType->ConsumptionCost.arrayLen < iso1SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
  12304. errn = decode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array[iso1SalesTariffEntryType->ConsumptionCost.arrayLen++]);
  12305. } else {
  12306. errn = EXI_ERROR_OUT_OF_BOUNDS;
  12307. }
  12308. grammarID = 286;
  12309. break;
  12310. case 2:
  12311. done = 1;
  12312. grammarID = 4;
  12313. break;
  12314. default:
  12315. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12316. break;
  12317. }
  12318. }
  12319. break;
  12320. case 285:
  12321. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  12322. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12323. if (errn == 0) {
  12324. switch(eventCode) {
  12325. case 0:
  12326. if (iso1SalesTariffEntryType->ConsumptionCost.arrayLen < iso1SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
  12327. errn = decode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array[iso1SalesTariffEntryType->ConsumptionCost.arrayLen++]);
  12328. } else {
  12329. errn = EXI_ERROR_OUT_OF_BOUNDS;
  12330. }
  12331. grammarID = 286;
  12332. break;
  12333. case 1:
  12334. done = 1;
  12335. grammarID = 4;
  12336. break;
  12337. default:
  12338. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12339. break;
  12340. }
  12341. }
  12342. break;
  12343. case 286:
  12344. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  12345. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12346. if (errn == 0) {
  12347. switch(eventCode) {
  12348. case 0:
  12349. if (iso1SalesTariffEntryType->ConsumptionCost.arrayLen < iso1SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
  12350. errn = decode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array[iso1SalesTariffEntryType->ConsumptionCost.arrayLen++]);
  12351. } else {
  12352. errn = EXI_ERROR_OUT_OF_BOUNDS;
  12353. }
  12354. grammarID = 287;
  12355. break;
  12356. case 1:
  12357. done = 1;
  12358. grammarID = 4;
  12359. break;
  12360. default:
  12361. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12362. break;
  12363. }
  12364. }
  12365. break;
  12366. case 287:
  12367. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
  12368. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12369. if (errn == 0) {
  12370. switch(eventCode) {
  12371. case 0:
  12372. if (iso1SalesTariffEntryType->ConsumptionCost.arrayLen < iso1SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
  12373. errn = decode_iso1ConsumptionCostType(stream, &iso1SalesTariffEntryType->ConsumptionCost.array[iso1SalesTariffEntryType->ConsumptionCost.arrayLen++]);
  12374. } else {
  12375. errn = EXI_ERROR_OUT_OF_BOUNDS;
  12376. }
  12377. grammarID = 3;
  12378. break;
  12379. case 1:
  12380. done = 1;
  12381. grammarID = 4;
  12382. break;
  12383. default:
  12384. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12385. break;
  12386. }
  12387. }
  12388. break;
  12389. case 3:
  12390. /* Element[END_ELEMENT] */
  12391. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12392. if (errn == 0) {
  12393. switch(eventCode) {
  12394. case 0:
  12395. done = 1;
  12396. grammarID = 4;
  12397. break;
  12398. default:
  12399. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12400. break;
  12401. }
  12402. }
  12403. break;
  12404. default:
  12405. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12406. break;
  12407. }
  12408. if(errn) {
  12409. done = 1;
  12410. }
  12411. }
  12412. return errn;
  12413. }
  12414. /* 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'. */
  12415. static int decode_iso1EntryType(bitstream_t* stream, struct iso1EntryType* iso1EntryType) {
  12416. int grammarID = 288;
  12417. int done = 0;
  12418. init_iso1EntryType(iso1EntryType);
  12419. while(!done) {
  12420. switch(grammarID) {
  12421. case 288:
  12422. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */
  12423. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12424. if (errn == 0) {
  12425. switch(eventCode) {
  12426. case 0:
  12427. errn = decode_iso1RelativeTimeIntervalType(stream, &iso1EntryType->RelativeTimeInterval);
  12428. iso1EntryType->RelativeTimeInterval_isUsed = 1u;
  12429. grammarID = 3;
  12430. break;
  12431. case 1:
  12432. errn = decode_iso1IntervalType(stream, &iso1EntryType->TimeInterval);
  12433. iso1EntryType->TimeInterval_isUsed = 1u;
  12434. grammarID = 3;
  12435. break;
  12436. default:
  12437. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12438. break;
  12439. }
  12440. }
  12441. break;
  12442. case 3:
  12443. /* Element[END_ELEMENT] */
  12444. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12445. if (errn == 0) {
  12446. switch(eventCode) {
  12447. case 0:
  12448. done = 1;
  12449. grammarID = 4;
  12450. break;
  12451. default:
  12452. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12453. break;
  12454. }
  12455. }
  12456. break;
  12457. default:
  12458. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12459. break;
  12460. }
  12461. if(errn) {
  12462. done = 1;
  12463. }
  12464. }
  12465. return errn;
  12466. }
  12467. /* 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'. */
  12468. static int decode_iso1SessionSetupReqType(bitstream_t* stream, struct iso1SessionSetupReqType* iso1SessionSetupReqType) {
  12469. int grammarID = 289;
  12470. int done = 0;
  12471. init_iso1SessionSetupReqType(iso1SessionSetupReqType);
  12472. while(!done) {
  12473. switch(grammarID) {
  12474. case 289:
  12475. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */
  12476. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12477. if (errn == 0) {
  12478. switch(eventCode) {
  12479. case 0:
  12480. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  12481. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12482. if(errn == 0) {
  12483. if(eventCode == 0) {
  12484. errn = decodeUnsignedInteger16(stream, &iso1SessionSetupReqType->EVCCID.bytesLen);
  12485. if (errn == 0) {
  12486. errn = (iso1SessionSetupReqType->EVCCID.bytesLen) <= iso1SessionSetupReqType_EVCCID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  12487. }
  12488. if (errn == 0) {
  12489. errn = decodeBytes(stream, iso1SessionSetupReqType->EVCCID.bytesLen, iso1SessionSetupReqType->EVCCID.bytes);
  12490. }
  12491. } else {
  12492. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12493. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12494. }
  12495. }
  12496. if(errn == 0) {
  12497. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID) ? */
  12498. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12499. if(eventCode == 0) {
  12500. grammarID = 3;
  12501. } else {
  12502. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12503. }
  12504. }
  12505. break;
  12506. default:
  12507. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12508. break;
  12509. }
  12510. }
  12511. break;
  12512. case 3:
  12513. /* Element[END_ELEMENT] */
  12514. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12515. if (errn == 0) {
  12516. switch(eventCode) {
  12517. case 0:
  12518. done = 1;
  12519. grammarID = 4;
  12520. break;
  12521. default:
  12522. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12523. break;
  12524. }
  12525. }
  12526. break;
  12527. default:
  12528. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12529. break;
  12530. }
  12531. if(errn) {
  12532. done = 1;
  12533. }
  12534. }
  12535. return errn;
  12536. }
  12537. /* 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'. */
  12538. static int decode_iso1CostType(bitstream_t* stream, struct iso1CostType* iso1CostType) {
  12539. int grammarID = 290;
  12540. int done = 0;
  12541. init_iso1CostType(iso1CostType);
  12542. while(!done) {
  12543. switch(grammarID) {
  12544. case 290:
  12545. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */
  12546. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12547. if (errn == 0) {
  12548. switch(eventCode) {
  12549. case 0:
  12550. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12551. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12552. if(errn == 0) {
  12553. if(eventCode == 0) {
  12554. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  12555. iso1CostType->costKind = (iso1costKindType) uint32;
  12556. } else {
  12557. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12558. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12559. }
  12560. }
  12561. if(errn == 0) {
  12562. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind) ? */
  12563. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12564. if(eventCode == 0) {
  12565. grammarID = 291;
  12566. } else {
  12567. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12568. }
  12569. }
  12570. break;
  12571. default:
  12572. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12573. break;
  12574. }
  12575. }
  12576. break;
  12577. case 291:
  12578. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */
  12579. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12580. if (errn == 0) {
  12581. switch(eventCode) {
  12582. case 0:
  12583. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  12584. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12585. if(errn == 0) {
  12586. if(eventCode == 0) {
  12587. errn = decodeUnsignedInteger32(stream, &iso1CostType->amount);
  12588. } else {
  12589. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12590. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12591. }
  12592. }
  12593. if(errn == 0) {
  12594. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount) ? */
  12595. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12596. if(eventCode == 0) {
  12597. grammarID = 292;
  12598. } else {
  12599. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12600. }
  12601. }
  12602. break;
  12603. default:
  12604. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12605. break;
  12606. }
  12607. }
  12608. break;
  12609. case 292:
  12610. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */
  12611. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12612. if (errn == 0) {
  12613. switch(eventCode) {
  12614. case 0:
  12615. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  12616. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12617. if(errn == 0) {
  12618. if(eventCode == 0) {
  12619. errn = decodeNBitUnsignedInteger(stream, 3, &(uint32));
  12620. iso1CostType->amountMultiplier = (int8_t)(uint32 -3);
  12621. iso1CostType->amountMultiplier_isUsed = 1u;
  12622. } else {
  12623. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12624. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12625. }
  12626. }
  12627. if(errn == 0) {
  12628. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier) ? */
  12629. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12630. if(eventCode == 0) {
  12631. grammarID = 3;
  12632. } else {
  12633. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12634. }
  12635. }
  12636. break;
  12637. case 1:
  12638. done = 1;
  12639. grammarID = 4;
  12640. break;
  12641. default:
  12642. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12643. break;
  12644. }
  12645. }
  12646. break;
  12647. case 3:
  12648. /* Element[END_ELEMENT] */
  12649. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12650. if (errn == 0) {
  12651. switch(eventCode) {
  12652. case 0:
  12653. done = 1;
  12654. grammarID = 4;
  12655. break;
  12656. default:
  12657. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12658. break;
  12659. }
  12660. }
  12661. break;
  12662. default:
  12663. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12664. break;
  12665. }
  12666. if(errn) {
  12667. done = 1;
  12668. }
  12669. }
  12670. return errn;
  12671. }
  12672. /* 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'. */
  12673. static int decode_iso1DC_EVPowerDeliveryParameterType(bitstream_t* stream, struct iso1DC_EVPowerDeliveryParameterType* iso1DC_EVPowerDeliveryParameterType) {
  12674. int grammarID = 293;
  12675. int done = 0;
  12676. init_iso1DC_EVPowerDeliveryParameterType(iso1DC_EVPowerDeliveryParameterType);
  12677. while(!done) {
  12678. switch(grammarID) {
  12679. case 293:
  12680. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */
  12681. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12682. if (errn == 0) {
  12683. switch(eventCode) {
  12684. case 0:
  12685. errn = decode_iso1DC_EVStatusType(stream, &iso1DC_EVPowerDeliveryParameterType->DC_EVStatus);
  12686. grammarID = 294;
  12687. break;
  12688. default:
  12689. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12690. break;
  12691. }
  12692. }
  12693. break;
  12694. case 294:
  12695. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */
  12696. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12697. if (errn == 0) {
  12698. switch(eventCode) {
  12699. case 0:
  12700. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12701. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12702. if(errn == 0) {
  12703. if(eventCode == 0) {
  12704. errn = decodeBoolean(stream, &iso1DC_EVPowerDeliveryParameterType->BulkChargingComplete);
  12705. iso1DC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 1u;
  12706. } else {
  12707. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12708. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12709. }
  12710. }
  12711. if(errn == 0) {
  12712. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete) ? */
  12713. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12714. if(eventCode == 0) {
  12715. grammarID = 295;
  12716. } else {
  12717. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12718. }
  12719. }
  12720. break;
  12721. case 1:
  12722. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12723. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12724. if(errn == 0) {
  12725. if(eventCode == 0) {
  12726. errn = decodeBoolean(stream, &iso1DC_EVPowerDeliveryParameterType->ChargingComplete);
  12727. } else {
  12728. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12729. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12730. }
  12731. }
  12732. if(errn == 0) {
  12733. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete) ? */
  12734. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12735. if(eventCode == 0) {
  12736. grammarID = 3;
  12737. } else {
  12738. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12739. }
  12740. }
  12741. break;
  12742. default:
  12743. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12744. break;
  12745. }
  12746. }
  12747. break;
  12748. case 295:
  12749. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */
  12750. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12751. if (errn == 0) {
  12752. switch(eventCode) {
  12753. case 0:
  12754. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  12755. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12756. if(errn == 0) {
  12757. if(eventCode == 0) {
  12758. errn = decodeBoolean(stream, &iso1DC_EVPowerDeliveryParameterType->ChargingComplete);
  12759. } else {
  12760. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12761. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12762. }
  12763. }
  12764. if(errn == 0) {
  12765. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete) ? */
  12766. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12767. if(eventCode == 0) {
  12768. grammarID = 3;
  12769. } else {
  12770. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12771. }
  12772. }
  12773. break;
  12774. default:
  12775. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12776. break;
  12777. }
  12778. }
  12779. break;
  12780. case 3:
  12781. /* Element[END_ELEMENT] */
  12782. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12783. if (errn == 0) {
  12784. switch(eventCode) {
  12785. case 0:
  12786. done = 1;
  12787. grammarID = 4;
  12788. break;
  12789. default:
  12790. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12791. break;
  12792. }
  12793. }
  12794. break;
  12795. default:
  12796. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12797. break;
  12798. }
  12799. if(errn) {
  12800. done = 1;
  12801. }
  12802. }
  12803. return errn;
  12804. }
  12805. /* 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'. */
  12806. static int decode_iso1RetrievalMethodType(bitstream_t* stream, struct iso1RetrievalMethodType* iso1RetrievalMethodType) {
  12807. int grammarID = 296;
  12808. int done = 0;
  12809. init_iso1RetrievalMethodType(iso1RetrievalMethodType);
  12810. while(!done) {
  12811. switch(grammarID) {
  12812. case 296:
  12813. /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
  12814. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  12815. if (errn == 0) {
  12816. switch(eventCode) {
  12817. case 0:
  12818. errn = decodeUnsignedInteger16(stream, &iso1RetrievalMethodType->Type.charactersLen);
  12819. if (errn == 0) {
  12820. if (iso1RetrievalMethodType->Type.charactersLen >= 2) {
  12821. iso1RetrievalMethodType->Type.charactersLen = (uint16_t)(iso1RetrievalMethodType->Type.charactersLen - 2); /* string table miss */
  12822. errn = decodeCharacters(stream, iso1RetrievalMethodType->Type.charactersLen, iso1RetrievalMethodType->Type.characters, iso1RetrievalMethodType_Type_CHARACTERS_SIZE);
  12823. } else {
  12824. /* string table hit */
  12825. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  12826. }
  12827. }
  12828. iso1RetrievalMethodType->Type_isUsed = 1u;
  12829. grammarID = 297;
  12830. break;
  12831. case 1:
  12832. errn = decodeUnsignedInteger16(stream, &iso1RetrievalMethodType->URI.charactersLen);
  12833. if (errn == 0) {
  12834. if (iso1RetrievalMethodType->URI.charactersLen >= 2) {
  12835. iso1RetrievalMethodType->URI.charactersLen = (uint16_t)(iso1RetrievalMethodType->URI.charactersLen - 2); /* string table miss */
  12836. errn = decodeCharacters(stream, iso1RetrievalMethodType->URI.charactersLen, iso1RetrievalMethodType->URI.characters, iso1RetrievalMethodType_URI_CHARACTERS_SIZE);
  12837. } else {
  12838. /* string table hit */
  12839. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  12840. }
  12841. }
  12842. iso1RetrievalMethodType->URI_isUsed = 1u;
  12843. grammarID = 298;
  12844. break;
  12845. case 2:
  12846. errn = decode_iso1TransformsType(stream, &iso1RetrievalMethodType->Transforms);
  12847. iso1RetrievalMethodType->Transforms_isUsed = 1u;
  12848. grammarID = 3;
  12849. break;
  12850. case 3:
  12851. done = 1;
  12852. grammarID = 4;
  12853. break;
  12854. default:
  12855. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12856. break;
  12857. }
  12858. }
  12859. break;
  12860. case 297:
  12861. /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
  12862. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12863. if (errn == 0) {
  12864. switch(eventCode) {
  12865. case 0:
  12866. errn = decodeUnsignedInteger16(stream, &iso1RetrievalMethodType->URI.charactersLen);
  12867. if (errn == 0) {
  12868. if (iso1RetrievalMethodType->URI.charactersLen >= 2) {
  12869. iso1RetrievalMethodType->URI.charactersLen = (uint16_t)(iso1RetrievalMethodType->URI.charactersLen - 2); /* string table miss */
  12870. errn = decodeCharacters(stream, iso1RetrievalMethodType->URI.charactersLen, iso1RetrievalMethodType->URI.characters, iso1RetrievalMethodType_URI_CHARACTERS_SIZE);
  12871. } else {
  12872. /* string table hit */
  12873. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  12874. }
  12875. }
  12876. iso1RetrievalMethodType->URI_isUsed = 1u;
  12877. grammarID = 298;
  12878. break;
  12879. case 1:
  12880. errn = decode_iso1TransformsType(stream, &iso1RetrievalMethodType->Transforms);
  12881. iso1RetrievalMethodType->Transforms_isUsed = 1u;
  12882. grammarID = 3;
  12883. break;
  12884. case 2:
  12885. done = 1;
  12886. grammarID = 4;
  12887. break;
  12888. default:
  12889. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12890. break;
  12891. }
  12892. }
  12893. break;
  12894. case 298:
  12895. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
  12896. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  12897. if (errn == 0) {
  12898. switch(eventCode) {
  12899. case 0:
  12900. errn = decode_iso1TransformsType(stream, &iso1RetrievalMethodType->Transforms);
  12901. iso1RetrievalMethodType->Transforms_isUsed = 1u;
  12902. grammarID = 3;
  12903. break;
  12904. case 1:
  12905. done = 1;
  12906. grammarID = 4;
  12907. break;
  12908. default:
  12909. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12910. break;
  12911. }
  12912. }
  12913. break;
  12914. case 3:
  12915. /* Element[END_ELEMENT] */
  12916. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12917. if (errn == 0) {
  12918. switch(eventCode) {
  12919. case 0:
  12920. done = 1;
  12921. grammarID = 4;
  12922. break;
  12923. default:
  12924. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12925. break;
  12926. }
  12927. }
  12928. break;
  12929. default:
  12930. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  12931. break;
  12932. }
  12933. if(errn) {
  12934. done = 1;
  12935. }
  12936. }
  12937. return errn;
  12938. }
  12939. /* 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'. */
  12940. static int decode_iso1CertificateUpdateResType(bitstream_t* stream, struct iso1CertificateUpdateResType* iso1CertificateUpdateResType) {
  12941. int grammarID = 299;
  12942. int done = 0;
  12943. init_iso1CertificateUpdateResType(iso1CertificateUpdateResType);
  12944. while(!done) {
  12945. switch(grammarID) {
  12946. case 299:
  12947. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  12948. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12949. if (errn == 0) {
  12950. switch(eventCode) {
  12951. case 0:
  12952. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  12953. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12954. if(errn == 0) {
  12955. if(eventCode == 0) {
  12956. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  12957. iso1CertificateUpdateResType->ResponseCode = (iso1responseCodeType) uint32;
  12958. } else {
  12959. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  12960. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  12961. }
  12962. }
  12963. if(errn == 0) {
  12964. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  12965. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12966. if(eventCode == 0) {
  12967. grammarID = 300;
  12968. } else {
  12969. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  12970. }
  12971. }
  12972. break;
  12973. default:
  12974. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12975. break;
  12976. }
  12977. }
  12978. break;
  12979. case 300:
  12980. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */
  12981. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12982. if (errn == 0) {
  12983. switch(eventCode) {
  12984. case 0:
  12985. errn = decode_iso1CertificateChainType(stream, &iso1CertificateUpdateResType->SAProvisioningCertificateChain);
  12986. grammarID = 301;
  12987. break;
  12988. default:
  12989. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  12990. break;
  12991. }
  12992. }
  12993. break;
  12994. case 301:
  12995. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  12996. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  12997. if (errn == 0) {
  12998. switch(eventCode) {
  12999. case 0:
  13000. errn = decode_iso1CertificateChainType(stream, &iso1CertificateUpdateResType->ContractSignatureCertChain);
  13001. grammarID = 302;
  13002. break;
  13003. default:
  13004. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13005. break;
  13006. }
  13007. }
  13008. break;
  13009. case 302:
  13010. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */
  13011. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13012. if (errn == 0) {
  13013. switch(eventCode) {
  13014. case 0:
  13015. errn = decode_iso1ContractSignatureEncryptedPrivateKeyType(stream, &iso1CertificateUpdateResType->ContractSignatureEncryptedPrivateKey);
  13016. grammarID = 303;
  13017. break;
  13018. default:
  13019. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13020. break;
  13021. }
  13022. }
  13023. break;
  13024. case 303:
  13025. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */
  13026. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13027. if (errn == 0) {
  13028. switch(eventCode) {
  13029. case 0:
  13030. errn = decode_iso1DiffieHellmanPublickeyType(stream, &iso1CertificateUpdateResType->DHpublickey);
  13031. grammarID = 304;
  13032. break;
  13033. default:
  13034. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13035. break;
  13036. }
  13037. }
  13038. break;
  13039. case 304:
  13040. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  13041. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13042. if (errn == 0) {
  13043. switch(eventCode) {
  13044. case 0:
  13045. errn = decode_iso1EMAIDType(stream, &iso1CertificateUpdateResType->eMAID);
  13046. grammarID = 305;
  13047. break;
  13048. default:
  13049. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13050. break;
  13051. }
  13052. }
  13053. break;
  13054. case 305:
  13055. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */
  13056. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13057. if (errn == 0) {
  13058. switch(eventCode) {
  13059. case 0:
  13060. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  13061. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13062. if(errn == 0) {
  13063. if(eventCode == 0) {
  13064. errn = decodeInteger16(stream, &iso1CertificateUpdateResType->RetryCounter);
  13065. iso1CertificateUpdateResType->RetryCounter_isUsed = 1u;
  13066. } else {
  13067. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13068. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13069. }
  13070. }
  13071. if(errn == 0) {
  13072. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter) ? */
  13073. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13074. if(eventCode == 0) {
  13075. grammarID = 3;
  13076. } else {
  13077. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13078. }
  13079. }
  13080. break;
  13081. case 1:
  13082. done = 1;
  13083. grammarID = 4;
  13084. break;
  13085. default:
  13086. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13087. break;
  13088. }
  13089. }
  13090. break;
  13091. case 3:
  13092. /* Element[END_ELEMENT] */
  13093. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13094. if (errn == 0) {
  13095. switch(eventCode) {
  13096. case 0:
  13097. done = 1;
  13098. grammarID = 4;
  13099. break;
  13100. default:
  13101. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13102. break;
  13103. }
  13104. }
  13105. break;
  13106. default:
  13107. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  13108. break;
  13109. }
  13110. if(errn) {
  13111. done = 1;
  13112. }
  13113. }
  13114. return errn;
  13115. }
  13116. /* 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'. */
  13117. static int decode_iso1CertificateInstallationResType(bitstream_t* stream, struct iso1CertificateInstallationResType* iso1CertificateInstallationResType) {
  13118. int grammarID = 306;
  13119. int done = 0;
  13120. init_iso1CertificateInstallationResType(iso1CertificateInstallationResType);
  13121. while(!done) {
  13122. switch(grammarID) {
  13123. case 306:
  13124. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  13125. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13126. if (errn == 0) {
  13127. switch(eventCode) {
  13128. case 0:
  13129. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13130. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13131. if(errn == 0) {
  13132. if(eventCode == 0) {
  13133. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  13134. iso1CertificateInstallationResType->ResponseCode = (iso1responseCodeType) uint32;
  13135. } else {
  13136. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13137. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13138. }
  13139. }
  13140. if(errn == 0) {
  13141. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  13142. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13143. if(eventCode == 0) {
  13144. grammarID = 307;
  13145. } else {
  13146. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13147. }
  13148. }
  13149. break;
  13150. default:
  13151. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13152. break;
  13153. }
  13154. }
  13155. break;
  13156. case 307:
  13157. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */
  13158. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13159. if (errn == 0) {
  13160. switch(eventCode) {
  13161. case 0:
  13162. errn = decode_iso1CertificateChainType(stream, &iso1CertificateInstallationResType->SAProvisioningCertificateChain);
  13163. grammarID = 308;
  13164. break;
  13165. default:
  13166. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13167. break;
  13168. }
  13169. }
  13170. break;
  13171. case 308:
  13172. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */
  13173. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13174. if (errn == 0) {
  13175. switch(eventCode) {
  13176. case 0:
  13177. errn = decode_iso1CertificateChainType(stream, &iso1CertificateInstallationResType->ContractSignatureCertChain);
  13178. grammarID = 309;
  13179. break;
  13180. default:
  13181. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13182. break;
  13183. }
  13184. }
  13185. break;
  13186. case 309:
  13187. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */
  13188. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13189. if (errn == 0) {
  13190. switch(eventCode) {
  13191. case 0:
  13192. errn = decode_iso1ContractSignatureEncryptedPrivateKeyType(stream, &iso1CertificateInstallationResType->ContractSignatureEncryptedPrivateKey);
  13193. grammarID = 310;
  13194. break;
  13195. default:
  13196. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13197. break;
  13198. }
  13199. }
  13200. break;
  13201. case 310:
  13202. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */
  13203. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13204. if (errn == 0) {
  13205. switch(eventCode) {
  13206. case 0:
  13207. errn = decode_iso1DiffieHellmanPublickeyType(stream, &iso1CertificateInstallationResType->DHpublickey);
  13208. grammarID = 311;
  13209. break;
  13210. default:
  13211. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13212. break;
  13213. }
  13214. }
  13215. break;
  13216. case 311:
  13217. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */
  13218. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13219. if (errn == 0) {
  13220. switch(eventCode) {
  13221. case 0:
  13222. errn = decode_iso1EMAIDType(stream, &iso1CertificateInstallationResType->eMAID);
  13223. grammarID = 3;
  13224. break;
  13225. default:
  13226. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13227. break;
  13228. }
  13229. }
  13230. break;
  13231. case 3:
  13232. /* Element[END_ELEMENT] */
  13233. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13234. if (errn == 0) {
  13235. switch(eventCode) {
  13236. case 0:
  13237. done = 1;
  13238. grammarID = 4;
  13239. break;
  13240. default:
  13241. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13242. break;
  13243. }
  13244. }
  13245. break;
  13246. default:
  13247. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  13248. break;
  13249. }
  13250. if(errn) {
  13251. done = 1;
  13252. }
  13253. }
  13254. return errn;
  13255. }
  13256. /* 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'. */
  13257. static int decode_iso1CanonicalizationMethodType(bitstream_t* stream, struct iso1CanonicalizationMethodType* iso1CanonicalizationMethodType) {
  13258. int grammarID = 312;
  13259. int done = 0;
  13260. init_iso1CanonicalizationMethodType(iso1CanonicalizationMethodType);
  13261. while(!done) {
  13262. switch(grammarID) {
  13263. case 312:
  13264. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  13265. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13266. if (errn == 0) {
  13267. switch(eventCode) {
  13268. case 0:
  13269. errn = decodeUnsignedInteger16(stream, &iso1CanonicalizationMethodType->Algorithm.charactersLen);
  13270. if (errn == 0) {
  13271. if (iso1CanonicalizationMethodType->Algorithm.charactersLen >= 2) {
  13272. iso1CanonicalizationMethodType->Algorithm.charactersLen = (uint16_t)(iso1CanonicalizationMethodType->Algorithm.charactersLen - 2); /* string table miss */
  13273. errn = decodeCharacters(stream, iso1CanonicalizationMethodType->Algorithm.charactersLen, iso1CanonicalizationMethodType->Algorithm.characters, iso1CanonicalizationMethodType_Algorithm_CHARACTERS_SIZE);
  13274. } else {
  13275. /* string table hit */
  13276. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13277. }
  13278. }
  13279. grammarID = 115;
  13280. break;
  13281. default:
  13282. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13283. break;
  13284. }
  13285. }
  13286. break;
  13287. case 115:
  13288. /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  13289. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13290. if (errn == 0) {
  13291. switch(eventCode) {
  13292. case 0:
  13293. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13294. /* TODO unsupported event : START_ELEMENT_GENERIC */
  13295. grammarID = 116;
  13296. break;
  13297. case 1:
  13298. done = 1;
  13299. grammarID = 4;
  13300. break;
  13301. case 2:
  13302. errn = decodeUnsignedInteger16(stream, &iso1CanonicalizationMethodType->ANY.charactersLen);
  13303. if (errn == 0) {
  13304. if (iso1CanonicalizationMethodType->ANY.charactersLen >= 2) {
  13305. iso1CanonicalizationMethodType->ANY.charactersLen = (uint16_t)(iso1CanonicalizationMethodType->ANY.charactersLen - 2); /* string table miss */
  13306. errn = decodeCharacters(stream, iso1CanonicalizationMethodType->ANY.charactersLen, iso1CanonicalizationMethodType->ANY.characters, iso1CanonicalizationMethodType_ANY_CHARACTERS_SIZE);
  13307. } else {
  13308. /* string table hit */
  13309. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13310. }
  13311. }
  13312. iso1CanonicalizationMethodType->ANY_isUsed = 1u;
  13313. grammarID = 116;
  13314. break;
  13315. default:
  13316. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13317. break;
  13318. }
  13319. }
  13320. break;
  13321. case 116:
  13322. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  13323. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13324. if (errn == 0) {
  13325. switch(eventCode) {
  13326. case 0:
  13327. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13328. /* TODO unsupported event : START_ELEMENT_GENERIC */
  13329. grammarID = 116;
  13330. break;
  13331. case 1:
  13332. done = 1;
  13333. grammarID = 4;
  13334. break;
  13335. case 2:
  13336. errn = decodeUnsignedInteger16(stream, &iso1CanonicalizationMethodType->ANY.charactersLen);
  13337. if (errn == 0) {
  13338. if (iso1CanonicalizationMethodType->ANY.charactersLen >= 2) {
  13339. iso1CanonicalizationMethodType->ANY.charactersLen = (uint16_t)(iso1CanonicalizationMethodType->ANY.charactersLen - 2); /* string table miss */
  13340. errn = decodeCharacters(stream, iso1CanonicalizationMethodType->ANY.charactersLen, iso1CanonicalizationMethodType->ANY.characters, iso1CanonicalizationMethodType_ANY_CHARACTERS_SIZE);
  13341. } else {
  13342. /* string table hit */
  13343. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13344. }
  13345. }
  13346. iso1CanonicalizationMethodType->ANY_isUsed = 1u;
  13347. grammarID = 116;
  13348. break;
  13349. default:
  13350. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13351. break;
  13352. }
  13353. }
  13354. break;
  13355. default:
  13356. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  13357. break;
  13358. }
  13359. if(errn) {
  13360. done = 1;
  13361. }
  13362. }
  13363. return errn;
  13364. }
  13365. /* 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'. */
  13366. static int decode_iso1WeldingDetectionReqType(bitstream_t* stream, struct iso1WeldingDetectionReqType* iso1WeldingDetectionReqType) {
  13367. int grammarID = 313;
  13368. int done = 0;
  13369. init_iso1WeldingDetectionReqType(iso1WeldingDetectionReqType);
  13370. while(!done) {
  13371. switch(grammarID) {
  13372. case 313:
  13373. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  13374. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13375. if (errn == 0) {
  13376. switch(eventCode) {
  13377. case 0:
  13378. errn = decode_iso1DC_EVStatusType(stream, &iso1WeldingDetectionReqType->DC_EVStatus);
  13379. grammarID = 3;
  13380. break;
  13381. default:
  13382. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13383. break;
  13384. }
  13385. }
  13386. break;
  13387. case 3:
  13388. /* Element[END_ELEMENT] */
  13389. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13390. if (errn == 0) {
  13391. switch(eventCode) {
  13392. case 0:
  13393. done = 1;
  13394. grammarID = 4;
  13395. break;
  13396. default:
  13397. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13398. break;
  13399. }
  13400. }
  13401. break;
  13402. default:
  13403. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  13404. break;
  13405. }
  13406. if(errn) {
  13407. done = 1;
  13408. }
  13409. }
  13410. return errn;
  13411. }
  13412. /* 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'. */
  13413. static int decode_iso1DC_EVStatusType(bitstream_t* stream, struct iso1DC_EVStatusType* iso1DC_EVStatusType) {
  13414. int grammarID = 314;
  13415. int done = 0;
  13416. init_iso1DC_EVStatusType(iso1DC_EVStatusType);
  13417. while(!done) {
  13418. switch(grammarID) {
  13419. case 314:
  13420. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */
  13421. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13422. if (errn == 0) {
  13423. switch(eventCode) {
  13424. case 0:
  13425. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13426. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13427. if(errn == 0) {
  13428. if(eventCode == 0) {
  13429. errn = decodeBoolean(stream, &iso1DC_EVStatusType->EVReady);
  13430. } else {
  13431. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13432. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13433. }
  13434. }
  13435. if(errn == 0) {
  13436. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady) ? */
  13437. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13438. if(eventCode == 0) {
  13439. grammarID = 315;
  13440. } else {
  13441. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13442. }
  13443. }
  13444. break;
  13445. default:
  13446. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13447. break;
  13448. }
  13449. }
  13450. break;
  13451. case 315:
  13452. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */
  13453. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13454. if (errn == 0) {
  13455. switch(eventCode) {
  13456. case 0:
  13457. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13458. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13459. if(errn == 0) {
  13460. if(eventCode == 0) {
  13461. errn = decodeNBitUnsignedInteger(stream, 4, &uint32);
  13462. iso1DC_EVStatusType->EVErrorCode = (iso1DC_EVErrorCodeType) uint32;
  13463. } else {
  13464. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13465. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13466. }
  13467. }
  13468. if(errn == 0) {
  13469. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode) ? */
  13470. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13471. if(eventCode == 0) {
  13472. grammarID = 316;
  13473. } else {
  13474. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13475. }
  13476. }
  13477. break;
  13478. default:
  13479. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13480. break;
  13481. }
  13482. }
  13483. break;
  13484. case 316:
  13485. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */
  13486. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13487. if (errn == 0) {
  13488. switch(eventCode) {
  13489. case 0:
  13490. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13491. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13492. if(errn == 0) {
  13493. if(eventCode == 0) {
  13494. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  13495. iso1DC_EVStatusType->EVRESSSOC = (int8_t)(uint32 + 0);
  13496. } else {
  13497. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13498. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13499. }
  13500. }
  13501. if(errn == 0) {
  13502. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC) ? */
  13503. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13504. if(eventCode == 0) {
  13505. grammarID = 3;
  13506. } else {
  13507. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13508. }
  13509. }
  13510. break;
  13511. default:
  13512. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13513. break;
  13514. }
  13515. }
  13516. break;
  13517. case 3:
  13518. /* Element[END_ELEMENT] */
  13519. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13520. if (errn == 0) {
  13521. switch(eventCode) {
  13522. case 0:
  13523. done = 1;
  13524. grammarID = 4;
  13525. break;
  13526. default:
  13527. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13528. break;
  13529. }
  13530. }
  13531. break;
  13532. default:
  13533. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  13534. break;
  13535. }
  13536. if(errn) {
  13537. done = 1;
  13538. }
  13539. }
  13540. return errn;
  13541. }
  13542. /* 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'. */
  13543. static int decode_iso1CurrentDemandResType(bitstream_t* stream, struct iso1CurrentDemandResType* iso1CurrentDemandResType) {
  13544. int grammarID = 317;
  13545. int done = 0;
  13546. init_iso1CurrentDemandResType(iso1CurrentDemandResType);
  13547. while(!done) {
  13548. switch(grammarID) {
  13549. case 317:
  13550. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  13551. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13552. if (errn == 0) {
  13553. switch(eventCode) {
  13554. case 0:
  13555. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  13556. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13557. if(errn == 0) {
  13558. if(eventCode == 0) {
  13559. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  13560. iso1CurrentDemandResType->ResponseCode = (iso1responseCodeType) uint32;
  13561. } else {
  13562. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13563. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13564. }
  13565. }
  13566. if(errn == 0) {
  13567. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  13568. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13569. if(eventCode == 0) {
  13570. grammarID = 318;
  13571. } else {
  13572. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13573. }
  13574. }
  13575. break;
  13576. default:
  13577. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13578. break;
  13579. }
  13580. }
  13581. break;
  13582. case 318:
  13583. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */
  13584. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13585. if (errn == 0) {
  13586. switch(eventCode) {
  13587. case 0:
  13588. errn = decode_iso1DC_EVSEStatusType(stream, &iso1CurrentDemandResType->DC_EVSEStatus);
  13589. grammarID = 319;
  13590. break;
  13591. default:
  13592. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13593. break;
  13594. }
  13595. }
  13596. break;
  13597. case 319:
  13598. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */
  13599. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13600. if (errn == 0) {
  13601. switch(eventCode) {
  13602. case 0:
  13603. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEPresentVoltage);
  13604. grammarID = 320;
  13605. break;
  13606. default:
  13607. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13608. break;
  13609. }
  13610. }
  13611. break;
  13612. case 320:
  13613. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */
  13614. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13615. if (errn == 0) {
  13616. switch(eventCode) {
  13617. case 0:
  13618. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEPresentCurrent);
  13619. grammarID = 321;
  13620. break;
  13621. default:
  13622. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13623. break;
  13624. }
  13625. }
  13626. break;
  13627. case 321:
  13628. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */
  13629. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13630. if (errn == 0) {
  13631. switch(eventCode) {
  13632. case 0:
  13633. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13634. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13635. if(errn == 0) {
  13636. if(eventCode == 0) {
  13637. errn = decodeBoolean(stream, &iso1CurrentDemandResType->EVSECurrentLimitAchieved);
  13638. } else {
  13639. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13640. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13641. }
  13642. }
  13643. if(errn == 0) {
  13644. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved) ? */
  13645. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13646. if(eventCode == 0) {
  13647. grammarID = 322;
  13648. } else {
  13649. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13650. }
  13651. }
  13652. break;
  13653. default:
  13654. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13655. break;
  13656. }
  13657. }
  13658. break;
  13659. case 322:
  13660. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */
  13661. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13662. if (errn == 0) {
  13663. switch(eventCode) {
  13664. case 0:
  13665. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13666. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13667. if(errn == 0) {
  13668. if(eventCode == 0) {
  13669. errn = decodeBoolean(stream, &iso1CurrentDemandResType->EVSEVoltageLimitAchieved);
  13670. } else {
  13671. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13672. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13673. }
  13674. }
  13675. if(errn == 0) {
  13676. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved) ? */
  13677. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13678. if(eventCode == 0) {
  13679. grammarID = 323;
  13680. } else {
  13681. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13682. }
  13683. }
  13684. break;
  13685. default:
  13686. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13687. break;
  13688. }
  13689. }
  13690. break;
  13691. case 323:
  13692. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */
  13693. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13694. if (errn == 0) {
  13695. switch(eventCode) {
  13696. case 0:
  13697. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13698. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13699. if(errn == 0) {
  13700. if(eventCode == 0) {
  13701. errn = decodeBoolean(stream, &iso1CurrentDemandResType->EVSEPowerLimitAchieved);
  13702. } else {
  13703. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13704. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13705. }
  13706. }
  13707. if(errn == 0) {
  13708. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved) ? */
  13709. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13710. if(eventCode == 0) {
  13711. grammarID = 324;
  13712. } else {
  13713. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13714. }
  13715. }
  13716. break;
  13717. default:
  13718. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13719. break;
  13720. }
  13721. }
  13722. break;
  13723. case 324:
  13724. /* 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)] */
  13725. errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
  13726. if (errn == 0) {
  13727. switch(eventCode) {
  13728. case 0:
  13729. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumVoltageLimit);
  13730. iso1CurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 1u;
  13731. grammarID = 325;
  13732. break;
  13733. case 1:
  13734. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumCurrentLimit);
  13735. iso1CurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 1u;
  13736. grammarID = 326;
  13737. break;
  13738. case 2:
  13739. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumPowerLimit);
  13740. iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 1u;
  13741. grammarID = 327;
  13742. break;
  13743. case 3:
  13744. /* FirstStartTag[CHARACTERS[STRING]] */
  13745. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13746. if(errn == 0) {
  13747. if(eventCode == 0) {
  13748. errn = decodeUnsignedInteger16(stream, &iso1CurrentDemandResType->EVSEID.charactersLen);
  13749. if (errn == 0) {
  13750. if (iso1CurrentDemandResType->EVSEID.charactersLen >= 2) {
  13751. iso1CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
  13752. errn = decodeCharacters(stream, iso1CurrentDemandResType->EVSEID.charactersLen, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
  13753. } else {
  13754. /* string table hit */
  13755. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13756. }
  13757. }
  13758. } else {
  13759. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13760. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13761. }
  13762. }
  13763. if(errn == 0) {
  13764. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */
  13765. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13766. if(eventCode == 0) {
  13767. grammarID = 328;
  13768. } else {
  13769. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13770. }
  13771. }
  13772. break;
  13773. default:
  13774. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13775. break;
  13776. }
  13777. }
  13778. break;
  13779. case 325:
  13780. /* 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)] */
  13781. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13782. if (errn == 0) {
  13783. switch(eventCode) {
  13784. case 0:
  13785. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumCurrentLimit);
  13786. iso1CurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 1u;
  13787. grammarID = 326;
  13788. break;
  13789. case 1:
  13790. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumPowerLimit);
  13791. iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 1u;
  13792. grammarID = 327;
  13793. break;
  13794. case 2:
  13795. /* FirstStartTag[CHARACTERS[STRING]] */
  13796. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13797. if(errn == 0) {
  13798. if(eventCode == 0) {
  13799. errn = decodeUnsignedInteger16(stream, &iso1CurrentDemandResType->EVSEID.charactersLen);
  13800. if (errn == 0) {
  13801. if (iso1CurrentDemandResType->EVSEID.charactersLen >= 2) {
  13802. iso1CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
  13803. errn = decodeCharacters(stream, iso1CurrentDemandResType->EVSEID.charactersLen, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
  13804. } else {
  13805. /* string table hit */
  13806. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13807. }
  13808. }
  13809. } else {
  13810. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13811. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13812. }
  13813. }
  13814. if(errn == 0) {
  13815. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */
  13816. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13817. if(eventCode == 0) {
  13818. grammarID = 328;
  13819. } else {
  13820. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13821. }
  13822. }
  13823. break;
  13824. default:
  13825. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13826. break;
  13827. }
  13828. }
  13829. break;
  13830. case 326:
  13831. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  13832. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13833. if (errn == 0) {
  13834. switch(eventCode) {
  13835. case 0:
  13836. errn = decode_iso1PhysicalValueType(stream, &iso1CurrentDemandResType->EVSEMaximumPowerLimit);
  13837. iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 1u;
  13838. grammarID = 327;
  13839. break;
  13840. case 1:
  13841. /* FirstStartTag[CHARACTERS[STRING]] */
  13842. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13843. if(errn == 0) {
  13844. if(eventCode == 0) {
  13845. errn = decodeUnsignedInteger16(stream, &iso1CurrentDemandResType->EVSEID.charactersLen);
  13846. if (errn == 0) {
  13847. if (iso1CurrentDemandResType->EVSEID.charactersLen >= 2) {
  13848. iso1CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
  13849. errn = decodeCharacters(stream, iso1CurrentDemandResType->EVSEID.charactersLen, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
  13850. } else {
  13851. /* string table hit */
  13852. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13853. }
  13854. }
  13855. } else {
  13856. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13857. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13858. }
  13859. }
  13860. if(errn == 0) {
  13861. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */
  13862. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13863. if(eventCode == 0) {
  13864. grammarID = 328;
  13865. } else {
  13866. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13867. }
  13868. }
  13869. break;
  13870. default:
  13871. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13872. break;
  13873. }
  13874. }
  13875. break;
  13876. case 327:
  13877. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */
  13878. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13879. if (errn == 0) {
  13880. switch(eventCode) {
  13881. case 0:
  13882. /* FirstStartTag[CHARACTERS[STRING]] */
  13883. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13884. if(errn == 0) {
  13885. if(eventCode == 0) {
  13886. errn = decodeUnsignedInteger16(stream, &iso1CurrentDemandResType->EVSEID.charactersLen);
  13887. if (errn == 0) {
  13888. if (iso1CurrentDemandResType->EVSEID.charactersLen >= 2) {
  13889. iso1CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso1CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
  13890. errn = decodeCharacters(stream, iso1CurrentDemandResType->EVSEID.charactersLen, iso1CurrentDemandResType->EVSEID.characters, iso1CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
  13891. } else {
  13892. /* string table hit */
  13893. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  13894. }
  13895. }
  13896. } else {
  13897. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13898. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13899. }
  13900. }
  13901. if(errn == 0) {
  13902. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */
  13903. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13904. if(eventCode == 0) {
  13905. grammarID = 328;
  13906. } else {
  13907. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13908. }
  13909. }
  13910. break;
  13911. default:
  13912. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13913. break;
  13914. }
  13915. }
  13916. break;
  13917. case 328:
  13918. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */
  13919. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13920. if (errn == 0) {
  13921. switch(eventCode) {
  13922. case 0:
  13923. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  13924. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13925. if(errn == 0) {
  13926. if(eventCode == 0) {
  13927. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  13928. iso1CurrentDemandResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  13929. } else {
  13930. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13931. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13932. }
  13933. }
  13934. if(errn == 0) {
  13935. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */
  13936. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13937. if(eventCode == 0) {
  13938. grammarID = 329;
  13939. } else {
  13940. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13941. }
  13942. }
  13943. break;
  13944. default:
  13945. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13946. break;
  13947. }
  13948. }
  13949. break;
  13950. case 329:
  13951. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */
  13952. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13953. if (errn == 0) {
  13954. switch(eventCode) {
  13955. case 0:
  13956. errn = decode_iso1MeterInfoType(stream, &iso1CurrentDemandResType->MeterInfo);
  13957. iso1CurrentDemandResType->MeterInfo_isUsed = 1u;
  13958. grammarID = 330;
  13959. break;
  13960. case 1:
  13961. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13962. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13963. if(errn == 0) {
  13964. if(eventCode == 0) {
  13965. errn = decodeBoolean(stream, &iso1CurrentDemandResType->ReceiptRequired);
  13966. iso1CurrentDemandResType->ReceiptRequired_isUsed = 1u;
  13967. } else {
  13968. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  13969. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  13970. }
  13971. }
  13972. if(errn == 0) {
  13973. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */
  13974. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  13975. if(eventCode == 0) {
  13976. grammarID = 3;
  13977. } else {
  13978. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  13979. }
  13980. }
  13981. break;
  13982. case 2:
  13983. done = 1;
  13984. grammarID = 4;
  13985. break;
  13986. default:
  13987. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  13988. break;
  13989. }
  13990. }
  13991. break;
  13992. case 330:
  13993. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */
  13994. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  13995. if (errn == 0) {
  13996. switch(eventCode) {
  13997. case 0:
  13998. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  13999. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14000. if(errn == 0) {
  14001. if(eventCode == 0) {
  14002. errn = decodeBoolean(stream, &iso1CurrentDemandResType->ReceiptRequired);
  14003. iso1CurrentDemandResType->ReceiptRequired_isUsed = 1u;
  14004. } else {
  14005. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14006. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14007. }
  14008. }
  14009. if(errn == 0) {
  14010. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */
  14011. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14012. if(eventCode == 0) {
  14013. grammarID = 3;
  14014. } else {
  14015. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14016. }
  14017. }
  14018. break;
  14019. case 1:
  14020. done = 1;
  14021. grammarID = 4;
  14022. break;
  14023. default:
  14024. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14025. break;
  14026. }
  14027. }
  14028. break;
  14029. case 3:
  14030. /* Element[END_ELEMENT] */
  14031. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14032. if (errn == 0) {
  14033. switch(eventCode) {
  14034. case 0:
  14035. done = 1;
  14036. grammarID = 4;
  14037. break;
  14038. default:
  14039. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14040. break;
  14041. }
  14042. }
  14043. break;
  14044. default:
  14045. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14046. break;
  14047. }
  14048. if(errn) {
  14049. done = 1;
  14050. }
  14051. }
  14052. return errn;
  14053. }
  14054. /* 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'. */
  14055. static int decode_iso1ServiceType(bitstream_t* stream, struct iso1ServiceType* iso1ServiceType) {
  14056. int grammarID = 331;
  14057. int done = 0;
  14058. init_iso1ServiceType(iso1ServiceType);
  14059. while(!done) {
  14060. switch(grammarID) {
  14061. case 331:
  14062. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */
  14063. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14064. if (errn == 0) {
  14065. switch(eventCode) {
  14066. case 0:
  14067. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  14068. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14069. if(errn == 0) {
  14070. if(eventCode == 0) {
  14071. errn = decodeUnsignedInteger16(stream, &iso1ServiceType->ServiceID);
  14072. } else {
  14073. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14074. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14075. }
  14076. }
  14077. if(errn == 0) {
  14078. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) ? */
  14079. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14080. if(eventCode == 0) {
  14081. grammarID = 332;
  14082. } else {
  14083. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14084. }
  14085. }
  14086. break;
  14087. default:
  14088. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14089. break;
  14090. }
  14091. }
  14092. break;
  14093. case 332:
  14094. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  14095. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14096. if (errn == 0) {
  14097. switch(eventCode) {
  14098. case 0:
  14099. /* FirstStartTag[CHARACTERS[STRING]] */
  14100. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14101. if(errn == 0) {
  14102. if(eventCode == 0) {
  14103. errn = decodeUnsignedInteger16(stream, &iso1ServiceType->ServiceName.charactersLen);
  14104. if (errn == 0) {
  14105. if (iso1ServiceType->ServiceName.charactersLen >= 2) {
  14106. iso1ServiceType->ServiceName.charactersLen = (uint16_t)(iso1ServiceType->ServiceName.charactersLen - 2); /* string table miss */
  14107. errn = decodeCharacters(stream, iso1ServiceType->ServiceName.charactersLen, iso1ServiceType->ServiceName.characters, iso1ServiceType_ServiceName_CHARACTERS_SIZE);
  14108. } else {
  14109. /* string table hit */
  14110. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  14111. }
  14112. }
  14113. iso1ServiceType->ServiceName_isUsed = 1u;
  14114. } else {
  14115. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14116. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14117. }
  14118. }
  14119. if(errn == 0) {
  14120. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName) ? */
  14121. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14122. if(eventCode == 0) {
  14123. grammarID = 333;
  14124. } else {
  14125. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14126. }
  14127. }
  14128. break;
  14129. case 1:
  14130. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  14131. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14132. if(errn == 0) {
  14133. if(eventCode == 0) {
  14134. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  14135. iso1ServiceType->ServiceCategory = (iso1serviceCategoryType) uint32;
  14136. } else {
  14137. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14138. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14139. }
  14140. }
  14141. if(errn == 0) {
  14142. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */
  14143. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14144. if(eventCode == 0) {
  14145. grammarID = 334;
  14146. } else {
  14147. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14148. }
  14149. }
  14150. break;
  14151. default:
  14152. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14153. break;
  14154. }
  14155. }
  14156. break;
  14157. case 333:
  14158. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */
  14159. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14160. if (errn == 0) {
  14161. switch(eventCode) {
  14162. case 0:
  14163. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  14164. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14165. if(errn == 0) {
  14166. if(eventCode == 0) {
  14167. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  14168. iso1ServiceType->ServiceCategory = (iso1serviceCategoryType) uint32;
  14169. } else {
  14170. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14171. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14172. }
  14173. }
  14174. if(errn == 0) {
  14175. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */
  14176. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14177. if(eventCode == 0) {
  14178. grammarID = 334;
  14179. } else {
  14180. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14181. }
  14182. }
  14183. break;
  14184. default:
  14185. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14186. break;
  14187. }
  14188. }
  14189. break;
  14190. case 334:
  14191. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  14192. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14193. if (errn == 0) {
  14194. switch(eventCode) {
  14195. case 0:
  14196. /* FirstStartTag[CHARACTERS[STRING]] */
  14197. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14198. if(errn == 0) {
  14199. if(eventCode == 0) {
  14200. errn = decodeUnsignedInteger16(stream, &iso1ServiceType->ServiceScope.charactersLen);
  14201. if (errn == 0) {
  14202. if (iso1ServiceType->ServiceScope.charactersLen >= 2) {
  14203. iso1ServiceType->ServiceScope.charactersLen = (uint16_t)(iso1ServiceType->ServiceScope.charactersLen - 2); /* string table miss */
  14204. errn = decodeCharacters(stream, iso1ServiceType->ServiceScope.charactersLen, iso1ServiceType->ServiceScope.characters, iso1ServiceType_ServiceScope_CHARACTERS_SIZE);
  14205. } else {
  14206. /* string table hit */
  14207. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  14208. }
  14209. }
  14210. iso1ServiceType->ServiceScope_isUsed = 1u;
  14211. } else {
  14212. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14213. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14214. }
  14215. }
  14216. if(errn == 0) {
  14217. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope) ? */
  14218. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14219. if(eventCode == 0) {
  14220. grammarID = 335;
  14221. } else {
  14222. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14223. }
  14224. }
  14225. break;
  14226. case 1:
  14227. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  14228. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14229. if(errn == 0) {
  14230. if(eventCode == 0) {
  14231. errn = decodeBoolean(stream, &iso1ServiceType->FreeService);
  14232. } else {
  14233. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14234. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14235. }
  14236. }
  14237. if(errn == 0) {
  14238. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */
  14239. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14240. if(eventCode == 0) {
  14241. grammarID = 3;
  14242. } else {
  14243. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14244. }
  14245. }
  14246. break;
  14247. default:
  14248. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14249. break;
  14250. }
  14251. }
  14252. break;
  14253. case 335:
  14254. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */
  14255. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14256. if (errn == 0) {
  14257. switch(eventCode) {
  14258. case 0:
  14259. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  14260. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14261. if(errn == 0) {
  14262. if(eventCode == 0) {
  14263. errn = decodeBoolean(stream, &iso1ServiceType->FreeService);
  14264. } else {
  14265. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14266. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14267. }
  14268. }
  14269. if(errn == 0) {
  14270. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */
  14271. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14272. if(eventCode == 0) {
  14273. grammarID = 3;
  14274. } else {
  14275. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14276. }
  14277. }
  14278. break;
  14279. default:
  14280. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14281. break;
  14282. }
  14283. }
  14284. break;
  14285. case 3:
  14286. /* Element[END_ELEMENT] */
  14287. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14288. if (errn == 0) {
  14289. switch(eventCode) {
  14290. case 0:
  14291. done = 1;
  14292. grammarID = 4;
  14293. break;
  14294. default:
  14295. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14296. break;
  14297. }
  14298. }
  14299. break;
  14300. default:
  14301. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14302. break;
  14303. }
  14304. if(errn) {
  14305. done = 1;
  14306. }
  14307. }
  14308. return errn;
  14309. }
  14310. /* 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'. */
  14311. static int decode_iso1ServiceDiscoveryReqType(bitstream_t* stream, struct iso1ServiceDiscoveryReqType* iso1ServiceDiscoveryReqType) {
  14312. int grammarID = 336;
  14313. int done = 0;
  14314. init_iso1ServiceDiscoveryReqType(iso1ServiceDiscoveryReqType);
  14315. while(!done) {
  14316. switch(grammarID) {
  14317. case 336:
  14318. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */
  14319. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14320. if (errn == 0) {
  14321. switch(eventCode) {
  14322. case 0:
  14323. /* FirstStartTag[CHARACTERS[STRING]] */
  14324. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14325. if(errn == 0) {
  14326. if(eventCode == 0) {
  14327. errn = decodeUnsignedInteger16(stream, &iso1ServiceDiscoveryReqType->ServiceScope.charactersLen);
  14328. if (errn == 0) {
  14329. if (iso1ServiceDiscoveryReqType->ServiceScope.charactersLen >= 2) {
  14330. iso1ServiceDiscoveryReqType->ServiceScope.charactersLen = (uint16_t)(iso1ServiceDiscoveryReqType->ServiceScope.charactersLen - 2); /* string table miss */
  14331. errn = decodeCharacters(stream, iso1ServiceDiscoveryReqType->ServiceScope.charactersLen, iso1ServiceDiscoveryReqType->ServiceScope.characters, iso1ServiceDiscoveryReqType_ServiceScope_CHARACTERS_SIZE);
  14332. } else {
  14333. /* string table hit */
  14334. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  14335. }
  14336. }
  14337. iso1ServiceDiscoveryReqType->ServiceScope_isUsed = 1u;
  14338. } else {
  14339. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14340. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14341. }
  14342. }
  14343. if(errn == 0) {
  14344. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope) ? */
  14345. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14346. if(eventCode == 0) {
  14347. grammarID = 337;
  14348. } else {
  14349. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14350. }
  14351. }
  14352. break;
  14353. case 1:
  14354. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  14355. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14356. if(errn == 0) {
  14357. if(eventCode == 0) {
  14358. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  14359. iso1ServiceDiscoveryReqType->ServiceCategory = (iso1serviceCategoryType) uint32;
  14360. iso1ServiceDiscoveryReqType->ServiceCategory_isUsed = 1u;
  14361. } else {
  14362. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14363. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14364. }
  14365. }
  14366. if(errn == 0) {
  14367. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory) ? */
  14368. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14369. if(eventCode == 0) {
  14370. grammarID = 3;
  14371. } else {
  14372. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14373. }
  14374. }
  14375. break;
  14376. case 2:
  14377. done = 1;
  14378. grammarID = 4;
  14379. break;
  14380. default:
  14381. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14382. break;
  14383. }
  14384. }
  14385. break;
  14386. case 337:
  14387. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */
  14388. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14389. if (errn == 0) {
  14390. switch(eventCode) {
  14391. case 0:
  14392. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  14393. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14394. if(errn == 0) {
  14395. if(eventCode == 0) {
  14396. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  14397. iso1ServiceDiscoveryReqType->ServiceCategory = (iso1serviceCategoryType) uint32;
  14398. iso1ServiceDiscoveryReqType->ServiceCategory_isUsed = 1u;
  14399. } else {
  14400. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14401. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14402. }
  14403. }
  14404. if(errn == 0) {
  14405. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory) ? */
  14406. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14407. if(eventCode == 0) {
  14408. grammarID = 3;
  14409. } else {
  14410. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14411. }
  14412. }
  14413. break;
  14414. case 1:
  14415. done = 1;
  14416. grammarID = 4;
  14417. break;
  14418. default:
  14419. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14420. break;
  14421. }
  14422. }
  14423. break;
  14424. case 3:
  14425. /* Element[END_ELEMENT] */
  14426. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14427. if (errn == 0) {
  14428. switch(eventCode) {
  14429. case 0:
  14430. done = 1;
  14431. grammarID = 4;
  14432. break;
  14433. default:
  14434. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14435. break;
  14436. }
  14437. }
  14438. break;
  14439. default:
  14440. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14441. break;
  14442. }
  14443. if(errn) {
  14444. done = 1;
  14445. }
  14446. }
  14447. return errn;
  14448. }
  14449. /* 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'. */
  14450. static int decode_iso1AC_EVSEChargeParameterType(bitstream_t* stream, struct iso1AC_EVSEChargeParameterType* iso1AC_EVSEChargeParameterType) {
  14451. int grammarID = 338;
  14452. int done = 0;
  14453. init_iso1AC_EVSEChargeParameterType(iso1AC_EVSEChargeParameterType);
  14454. while(!done) {
  14455. switch(grammarID) {
  14456. case 338:
  14457. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */
  14458. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14459. if (errn == 0) {
  14460. switch(eventCode) {
  14461. case 0:
  14462. errn = decode_iso1AC_EVSEStatusType(stream, &iso1AC_EVSEChargeParameterType->AC_EVSEStatus);
  14463. grammarID = 339;
  14464. break;
  14465. default:
  14466. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14467. break;
  14468. }
  14469. }
  14470. break;
  14471. case 339:
  14472. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */
  14473. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14474. if (errn == 0) {
  14475. switch(eventCode) {
  14476. case 0:
  14477. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVSEChargeParameterType->EVSENominalVoltage);
  14478. grammarID = 340;
  14479. break;
  14480. default:
  14481. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14482. break;
  14483. }
  14484. }
  14485. break;
  14486. case 340:
  14487. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */
  14488. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14489. if (errn == 0) {
  14490. switch(eventCode) {
  14491. case 0:
  14492. errn = decode_iso1PhysicalValueType(stream, &iso1AC_EVSEChargeParameterType->EVSEMaxCurrent);
  14493. grammarID = 3;
  14494. break;
  14495. default:
  14496. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14497. break;
  14498. }
  14499. }
  14500. break;
  14501. case 3:
  14502. /* Element[END_ELEMENT] */
  14503. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14504. if (errn == 0) {
  14505. switch(eventCode) {
  14506. case 0:
  14507. done = 1;
  14508. grammarID = 4;
  14509. break;
  14510. default:
  14511. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14512. break;
  14513. }
  14514. }
  14515. break;
  14516. default:
  14517. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14518. break;
  14519. }
  14520. if(errn) {
  14521. done = 1;
  14522. }
  14523. }
  14524. return errn;
  14525. }
  14526. /* 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'. */
  14527. static int decode_iso1CableCheckReqType(bitstream_t* stream, struct iso1CableCheckReqType* iso1CableCheckReqType) {
  14528. int grammarID = 313;
  14529. int done = 0;
  14530. init_iso1CableCheckReqType(iso1CableCheckReqType);
  14531. while(!done) {
  14532. switch(grammarID) {
  14533. case 313:
  14534. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */
  14535. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14536. if (errn == 0) {
  14537. switch(eventCode) {
  14538. case 0:
  14539. errn = decode_iso1DC_EVStatusType(stream, &iso1CableCheckReqType->DC_EVStatus);
  14540. grammarID = 3;
  14541. break;
  14542. default:
  14543. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14544. break;
  14545. }
  14546. }
  14547. break;
  14548. case 3:
  14549. /* Element[END_ELEMENT] */
  14550. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14551. if (errn == 0) {
  14552. switch(eventCode) {
  14553. case 0:
  14554. done = 1;
  14555. grammarID = 4;
  14556. break;
  14557. default:
  14558. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14559. break;
  14560. }
  14561. }
  14562. break;
  14563. default:
  14564. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14565. break;
  14566. }
  14567. if(errn) {
  14568. done = 1;
  14569. }
  14570. }
  14571. return errn;
  14572. }
  14573. /* 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'. */
  14574. static int decode_iso1SelectedServiceType(bitstream_t* stream, struct iso1SelectedServiceType* iso1SelectedServiceType) {
  14575. int grammarID = 341;
  14576. int done = 0;
  14577. init_iso1SelectedServiceType(iso1SelectedServiceType);
  14578. while(!done) {
  14579. switch(grammarID) {
  14580. case 341:
  14581. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */
  14582. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14583. if (errn == 0) {
  14584. switch(eventCode) {
  14585. case 0:
  14586. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  14587. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14588. if(errn == 0) {
  14589. if(eventCode == 0) {
  14590. errn = decodeUnsignedInteger16(stream, &iso1SelectedServiceType->ServiceID);
  14591. } else {
  14592. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14593. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14594. }
  14595. }
  14596. if(errn == 0) {
  14597. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) ? */
  14598. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14599. if(eventCode == 0) {
  14600. grammarID = 342;
  14601. } else {
  14602. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14603. }
  14604. }
  14605. break;
  14606. default:
  14607. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14608. break;
  14609. }
  14610. }
  14611. break;
  14612. case 342:
  14613. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */
  14614. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14615. if (errn == 0) {
  14616. switch(eventCode) {
  14617. case 0:
  14618. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  14619. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14620. if(errn == 0) {
  14621. if(eventCode == 0) {
  14622. errn = decodeInteger16(stream, &iso1SelectedServiceType->ParameterSetID);
  14623. iso1SelectedServiceType->ParameterSetID_isUsed = 1u;
  14624. } else {
  14625. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14626. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14627. }
  14628. }
  14629. if(errn == 0) {
  14630. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID) ? */
  14631. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14632. if(eventCode == 0) {
  14633. grammarID = 3;
  14634. } else {
  14635. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14636. }
  14637. }
  14638. break;
  14639. case 1:
  14640. done = 1;
  14641. grammarID = 4;
  14642. break;
  14643. default:
  14644. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14645. break;
  14646. }
  14647. }
  14648. break;
  14649. case 3:
  14650. /* Element[END_ELEMENT] */
  14651. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14652. if (errn == 0) {
  14653. switch(eventCode) {
  14654. case 0:
  14655. done = 1;
  14656. grammarID = 4;
  14657. break;
  14658. default:
  14659. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14660. break;
  14661. }
  14662. }
  14663. break;
  14664. default:
  14665. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14666. break;
  14667. }
  14668. if(errn) {
  14669. done = 1;
  14670. }
  14671. }
  14672. return errn;
  14673. }
  14674. /* 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'. */
  14675. static int decode_iso1AC_EVSEStatusType(bitstream_t* stream, struct iso1AC_EVSEStatusType* iso1AC_EVSEStatusType) {
  14676. int grammarID = 343;
  14677. int done = 0;
  14678. init_iso1AC_EVSEStatusType(iso1AC_EVSEStatusType);
  14679. while(!done) {
  14680. switch(grammarID) {
  14681. case 343:
  14682. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */
  14683. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14684. if (errn == 0) {
  14685. switch(eventCode) {
  14686. case 0:
  14687. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  14688. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14689. if(errn == 0) {
  14690. if(eventCode == 0) {
  14691. errn = decodeUnsignedInteger16(stream, &iso1AC_EVSEStatusType->NotificationMaxDelay);
  14692. } else {
  14693. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14694. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14695. }
  14696. }
  14697. if(errn == 0) {
  14698. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) ? */
  14699. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14700. if(eventCode == 0) {
  14701. grammarID = 344;
  14702. } else {
  14703. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14704. }
  14705. }
  14706. break;
  14707. default:
  14708. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14709. break;
  14710. }
  14711. }
  14712. break;
  14713. case 344:
  14714. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */
  14715. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14716. if (errn == 0) {
  14717. switch(eventCode) {
  14718. case 0:
  14719. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  14720. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14721. if(errn == 0) {
  14722. if(eventCode == 0) {
  14723. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  14724. iso1AC_EVSEStatusType->EVSENotification = (iso1EVSENotificationType) uint32;
  14725. } else {
  14726. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14727. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14728. }
  14729. }
  14730. if(errn == 0) {
  14731. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) ? */
  14732. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14733. if(eventCode == 0) {
  14734. grammarID = 345;
  14735. } else {
  14736. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14737. }
  14738. }
  14739. break;
  14740. default:
  14741. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14742. break;
  14743. }
  14744. }
  14745. break;
  14746. case 345:
  14747. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */
  14748. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14749. if (errn == 0) {
  14750. switch(eventCode) {
  14751. case 0:
  14752. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  14753. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14754. if(errn == 0) {
  14755. if(eventCode == 0) {
  14756. errn = decodeBoolean(stream, &iso1AC_EVSEStatusType->RCD);
  14757. } else {
  14758. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14759. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14760. }
  14761. }
  14762. if(errn == 0) {
  14763. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD) ? */
  14764. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14765. if(eventCode == 0) {
  14766. grammarID = 3;
  14767. } else {
  14768. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14769. }
  14770. }
  14771. break;
  14772. default:
  14773. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14774. break;
  14775. }
  14776. }
  14777. break;
  14778. case 3:
  14779. /* Element[END_ELEMENT] */
  14780. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14781. if (errn == 0) {
  14782. switch(eventCode) {
  14783. case 0:
  14784. done = 1;
  14785. grammarID = 4;
  14786. break;
  14787. default:
  14788. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14789. break;
  14790. }
  14791. }
  14792. break;
  14793. default:
  14794. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  14795. break;
  14796. }
  14797. if(errn) {
  14798. done = 1;
  14799. }
  14800. }
  14801. return errn;
  14802. }
  14803. /* 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'. */
  14804. static int decode_iso1SalesTariffType(bitstream_t* stream, struct iso1SalesTariffType* iso1SalesTariffType) {
  14805. int grammarID = 346;
  14806. int done = 0;
  14807. init_iso1SalesTariffType(iso1SalesTariffType);
  14808. while(!done) {
  14809. switch(grammarID) {
  14810. case 346:
  14811. /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */
  14812. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14813. if (errn == 0) {
  14814. switch(eventCode) {
  14815. case 0:
  14816. errn = decodeUnsignedInteger16(stream, &iso1SalesTariffType->Id.charactersLen);
  14817. if (errn == 0) {
  14818. if (iso1SalesTariffType->Id.charactersLen >= 2) {
  14819. iso1SalesTariffType->Id.charactersLen = (uint16_t)(iso1SalesTariffType->Id.charactersLen - 2); /* string table miss */
  14820. errn = decodeCharacters(stream, iso1SalesTariffType->Id.charactersLen, iso1SalesTariffType->Id.characters, iso1SalesTariffType_Id_CHARACTERS_SIZE);
  14821. } else {
  14822. /* string table hit */
  14823. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  14824. }
  14825. }
  14826. iso1SalesTariffType->Id_isUsed = 1u;
  14827. grammarID = 347;
  14828. break;
  14829. case 1:
  14830. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  14831. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14832. if(errn == 0) {
  14833. if(eventCode == 0) {
  14834. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  14835. iso1SalesTariffType->SalesTariffID = (uint8_t)(uint32 + 1);
  14836. } else {
  14837. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14838. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14839. }
  14840. }
  14841. if(errn == 0) {
  14842. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID) ? */
  14843. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14844. if(eventCode == 0) {
  14845. grammarID = 348;
  14846. } else {
  14847. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14848. }
  14849. }
  14850. break;
  14851. default:
  14852. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14853. break;
  14854. }
  14855. }
  14856. break;
  14857. case 347:
  14858. /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */
  14859. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14860. if (errn == 0) {
  14861. switch(eventCode) {
  14862. case 0:
  14863. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  14864. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14865. if(errn == 0) {
  14866. if(eventCode == 0) {
  14867. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  14868. iso1SalesTariffType->SalesTariffID = (uint8_t)(uint32 + 1);
  14869. } else {
  14870. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14871. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14872. }
  14873. }
  14874. if(errn == 0) {
  14875. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID) ? */
  14876. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14877. if(eventCode == 0) {
  14878. grammarID = 348;
  14879. } else {
  14880. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14881. }
  14882. }
  14883. break;
  14884. default:
  14885. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14886. break;
  14887. }
  14888. }
  14889. break;
  14890. case 348:
  14891. /* 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)] */
  14892. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14893. if (errn == 0) {
  14894. switch(eventCode) {
  14895. case 0:
  14896. /* FirstStartTag[CHARACTERS[STRING]] */
  14897. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14898. if(errn == 0) {
  14899. if(eventCode == 0) {
  14900. errn = decodeUnsignedInteger16(stream, &iso1SalesTariffType->SalesTariffDescription.charactersLen);
  14901. if (errn == 0) {
  14902. if (iso1SalesTariffType->SalesTariffDescription.charactersLen >= 2) {
  14903. iso1SalesTariffType->SalesTariffDescription.charactersLen = (uint16_t)(iso1SalesTariffType->SalesTariffDescription.charactersLen - 2); /* string table miss */
  14904. errn = decodeCharacters(stream, iso1SalesTariffType->SalesTariffDescription.charactersLen, iso1SalesTariffType->SalesTariffDescription.characters, iso1SalesTariffType_SalesTariffDescription_CHARACTERS_SIZE);
  14905. } else {
  14906. /* string table hit */
  14907. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  14908. }
  14909. }
  14910. iso1SalesTariffType->SalesTariffDescription_isUsed = 1u;
  14911. } else {
  14912. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14913. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14914. }
  14915. }
  14916. if(errn == 0) {
  14917. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription) ? */
  14918. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14919. if(eventCode == 0) {
  14920. grammarID = 349;
  14921. } else {
  14922. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14923. }
  14924. }
  14925. break;
  14926. case 1:
  14927. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  14928. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14929. if(errn == 0) {
  14930. if(eventCode == 0) {
  14931. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  14932. iso1SalesTariffType->NumEPriceLevels = (uint8_t)(uint32 + 0);
  14933. iso1SalesTariffType->NumEPriceLevels_isUsed = 1u;
  14934. } else {
  14935. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14936. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14937. }
  14938. }
  14939. if(errn == 0) {
  14940. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels) ? */
  14941. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14942. if(eventCode == 0) {
  14943. grammarID = 350;
  14944. } else {
  14945. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14946. }
  14947. }
  14948. break;
  14949. case 2:
  14950. if (iso1SalesTariffType->SalesTariffEntry.arrayLen < iso1SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
  14951. errn = decode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array[iso1SalesTariffType->SalesTariffEntry.arrayLen++]);
  14952. } else {
  14953. errn = EXI_ERROR_OUT_OF_BOUNDS;
  14954. }
  14955. grammarID = 351;
  14956. break;
  14957. default:
  14958. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  14959. break;
  14960. }
  14961. }
  14962. break;
  14963. case 349:
  14964. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */
  14965. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  14966. if (errn == 0) {
  14967. switch(eventCode) {
  14968. case 0:
  14969. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  14970. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14971. if(errn == 0) {
  14972. if(eventCode == 0) {
  14973. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  14974. iso1SalesTariffType->NumEPriceLevels = (uint8_t)(uint32 + 0);
  14975. iso1SalesTariffType->NumEPriceLevels_isUsed = 1u;
  14976. } else {
  14977. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  14978. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  14979. }
  14980. }
  14981. if(errn == 0) {
  14982. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels) ? */
  14983. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  14984. if(eventCode == 0) {
  14985. grammarID = 350;
  14986. } else {
  14987. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  14988. }
  14989. }
  14990. break;
  14991. case 1:
  14992. if (iso1SalesTariffType->SalesTariffEntry.arrayLen < iso1SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
  14993. errn = decode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array[iso1SalesTariffType->SalesTariffEntry.arrayLen++]);
  14994. } else {
  14995. errn = EXI_ERROR_OUT_OF_BOUNDS;
  14996. }
  14997. grammarID = 351;
  14998. break;
  14999. default:
  15000. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15001. break;
  15002. }
  15003. }
  15004. break;
  15005. case 350:
  15006. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */
  15007. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15008. if (errn == 0) {
  15009. switch(eventCode) {
  15010. case 0:
  15011. if (iso1SalesTariffType->SalesTariffEntry.arrayLen < iso1SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
  15012. errn = decode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array[iso1SalesTariffType->SalesTariffEntry.arrayLen++]);
  15013. } else {
  15014. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15015. }
  15016. grammarID = 351;
  15017. break;
  15018. default:
  15019. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15020. break;
  15021. }
  15022. }
  15023. break;
  15024. case 351:
  15025. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */
  15026. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15027. if (errn == 0) {
  15028. switch(eventCode) {
  15029. case 0:
  15030. if (iso1SalesTariffType->SalesTariffEntry.arrayLen < iso1SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
  15031. errn = decode_iso1SalesTariffEntryType(stream, &iso1SalesTariffType->SalesTariffEntry.array[iso1SalesTariffType->SalesTariffEntry.arrayLen++]);
  15032. } else {
  15033. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15034. }
  15035. grammarID = 351;
  15036. break;
  15037. case 1:
  15038. done = 1;
  15039. grammarID = 4;
  15040. break;
  15041. default:
  15042. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15043. break;
  15044. }
  15045. }
  15046. break;
  15047. default:
  15048. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15049. break;
  15050. }
  15051. if(errn) {
  15052. done = 1;
  15053. }
  15054. }
  15055. return errn;
  15056. }
  15057. /* 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'. */
  15058. static int decode_iso1PaymentServiceSelectionReqType(bitstream_t* stream, struct iso1PaymentServiceSelectionReqType* iso1PaymentServiceSelectionReqType) {
  15059. int grammarID = 352;
  15060. int done = 0;
  15061. init_iso1PaymentServiceSelectionReqType(iso1PaymentServiceSelectionReqType);
  15062. while(!done) {
  15063. switch(grammarID) {
  15064. case 352:
  15065. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */
  15066. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15067. if (errn == 0) {
  15068. switch(eventCode) {
  15069. case 0:
  15070. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15071. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15072. if(errn == 0) {
  15073. if(eventCode == 0) {
  15074. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  15075. iso1PaymentServiceSelectionReqType->SelectedPaymentOption = (iso1paymentOptionType) uint32;
  15076. } else {
  15077. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15078. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15079. }
  15080. }
  15081. if(errn == 0) {
  15082. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption) ? */
  15083. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15084. if(eventCode == 0) {
  15085. grammarID = 353;
  15086. } else {
  15087. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15088. }
  15089. }
  15090. break;
  15091. default:
  15092. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15093. break;
  15094. }
  15095. }
  15096. break;
  15097. case 353:
  15098. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */
  15099. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15100. if (errn == 0) {
  15101. switch(eventCode) {
  15102. case 0:
  15103. errn = decode_iso1SelectedServiceListType(stream, &iso1PaymentServiceSelectionReqType->SelectedServiceList);
  15104. grammarID = 3;
  15105. break;
  15106. default:
  15107. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15108. break;
  15109. }
  15110. }
  15111. break;
  15112. case 3:
  15113. /* Element[END_ELEMENT] */
  15114. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15115. if (errn == 0) {
  15116. switch(eventCode) {
  15117. case 0:
  15118. done = 1;
  15119. grammarID = 4;
  15120. break;
  15121. default:
  15122. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15123. break;
  15124. }
  15125. }
  15126. break;
  15127. default:
  15128. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15129. break;
  15130. }
  15131. if(errn) {
  15132. done = 1;
  15133. }
  15134. }
  15135. return errn;
  15136. }
  15137. /* 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'. */
  15138. static int decode_iso1SignaturePropertiesType(bitstream_t* stream, struct iso1SignaturePropertiesType* iso1SignaturePropertiesType) {
  15139. int grammarID = 354;
  15140. int done = 0;
  15141. init_iso1SignaturePropertiesType(iso1SignaturePropertiesType);
  15142. while(!done) {
  15143. switch(grammarID) {
  15144. case 354:
  15145. /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */
  15146. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15147. if (errn == 0) {
  15148. switch(eventCode) {
  15149. case 0:
  15150. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertiesType->Id.charactersLen);
  15151. if (errn == 0) {
  15152. if (iso1SignaturePropertiesType->Id.charactersLen >= 2) {
  15153. iso1SignaturePropertiesType->Id.charactersLen = (uint16_t)(iso1SignaturePropertiesType->Id.charactersLen - 2); /* string table miss */
  15154. errn = decodeCharacters(stream, iso1SignaturePropertiesType->Id.charactersLen, iso1SignaturePropertiesType->Id.characters, iso1SignaturePropertiesType_Id_CHARACTERS_SIZE);
  15155. } else {
  15156. /* string table hit */
  15157. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15158. }
  15159. }
  15160. iso1SignaturePropertiesType->Id_isUsed = 1u;
  15161. grammarID = 355;
  15162. break;
  15163. case 1:
  15164. if (iso1SignaturePropertiesType->SignatureProperty.arrayLen < iso1SignaturePropertiesType_SignatureProperty_ARRAY_SIZE) {
  15165. errn = decode_iso1SignaturePropertyType(stream, &iso1SignaturePropertiesType->SignatureProperty.array[iso1SignaturePropertiesType->SignatureProperty.arrayLen++]);
  15166. } else {
  15167. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15168. }
  15169. grammarID = 356;
  15170. break;
  15171. default:
  15172. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15173. break;
  15174. }
  15175. }
  15176. break;
  15177. case 355:
  15178. /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */
  15179. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15180. if (errn == 0) {
  15181. switch(eventCode) {
  15182. case 0:
  15183. if (iso1SignaturePropertiesType->SignatureProperty.arrayLen < iso1SignaturePropertiesType_SignatureProperty_ARRAY_SIZE) {
  15184. errn = decode_iso1SignaturePropertyType(stream, &iso1SignaturePropertiesType->SignatureProperty.array[iso1SignaturePropertiesType->SignatureProperty.arrayLen++]);
  15185. } else {
  15186. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15187. }
  15188. grammarID = 356;
  15189. break;
  15190. default:
  15191. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15192. break;
  15193. }
  15194. }
  15195. break;
  15196. case 356:
  15197. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */
  15198. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15199. if (errn == 0) {
  15200. switch(eventCode) {
  15201. case 0:
  15202. if (iso1SignaturePropertiesType->SignatureProperty.arrayLen < iso1SignaturePropertiesType_SignatureProperty_ARRAY_SIZE) {
  15203. errn = decode_iso1SignaturePropertyType(stream, &iso1SignaturePropertiesType->SignatureProperty.array[iso1SignaturePropertiesType->SignatureProperty.arrayLen++]);
  15204. } else {
  15205. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15206. }
  15207. grammarID = 356;
  15208. break;
  15209. case 1:
  15210. done = 1;
  15211. grammarID = 4;
  15212. break;
  15213. default:
  15214. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15215. break;
  15216. }
  15217. }
  15218. break;
  15219. default:
  15220. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15221. break;
  15222. }
  15223. if(errn) {
  15224. done = 1;
  15225. }
  15226. }
  15227. return errn;
  15228. }
  15229. /* 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'. */
  15230. static int decode_iso1BodyBaseType(bitstream_t* stream, struct iso1BodyBaseType* iso1BodyBaseType) {
  15231. int grammarID = 34;
  15232. int done = 0;
  15233. init_iso1BodyBaseType(iso1BodyBaseType);
  15234. while(!done) {
  15235. switch(grammarID) {
  15236. case 34:
  15237. /* FirstStartTag[END_ELEMENT] */
  15238. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15239. if (errn == 0) {
  15240. switch(eventCode) {
  15241. case 0:
  15242. done = 1;
  15243. grammarID = 4;
  15244. break;
  15245. default:
  15246. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15247. break;
  15248. }
  15249. }
  15250. break;
  15251. default:
  15252. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15253. break;
  15254. }
  15255. if(errn) {
  15256. done = 1;
  15257. }
  15258. }
  15259. return errn;
  15260. }
  15261. /* 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'. */
  15262. static int decode_iso1SupportedEnergyTransferModeType(bitstream_t* stream, struct iso1SupportedEnergyTransferModeType* iso1SupportedEnergyTransferModeType) {
  15263. int grammarID = 357;
  15264. int done = 0;
  15265. init_iso1SupportedEnergyTransferModeType(iso1SupportedEnergyTransferModeType);
  15266. while(!done) {
  15267. switch(grammarID) {
  15268. case 357:
  15269. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */
  15270. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15271. if (errn == 0) {
  15272. switch(eventCode) {
  15273. case 0:
  15274. if (iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < iso1SupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) {
  15275. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15276. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15277. if(errn == 0) {
  15278. if(eventCode == 0) {
  15279. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  15280. iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen] = (iso1EnergyTransferModeType) uint32;
  15281. iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++;
  15282. } else {
  15283. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15284. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15285. }
  15286. }
  15287. } else {
  15288. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15289. }
  15290. if(errn == 0) {
  15291. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */
  15292. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15293. if(eventCode == 0) {
  15294. grammarID = 358;
  15295. } else {
  15296. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15297. }
  15298. }
  15299. break;
  15300. default:
  15301. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15302. break;
  15303. }
  15304. }
  15305. break;
  15306. case 358:
  15307. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  15308. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15309. if (errn == 0) {
  15310. switch(eventCode) {
  15311. case 0:
  15312. if (iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < iso1SupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) {
  15313. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15314. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15315. if(errn == 0) {
  15316. if(eventCode == 0) {
  15317. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  15318. iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen] = (iso1EnergyTransferModeType) uint32;
  15319. iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++;
  15320. } else {
  15321. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15322. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15323. }
  15324. }
  15325. } else {
  15326. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15327. }
  15328. if(errn == 0) {
  15329. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */
  15330. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15331. if(eventCode == 0) {
  15332. grammarID = 359;
  15333. } else {
  15334. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15335. }
  15336. }
  15337. break;
  15338. case 1:
  15339. done = 1;
  15340. grammarID = 4;
  15341. break;
  15342. default:
  15343. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15344. break;
  15345. }
  15346. }
  15347. break;
  15348. case 359:
  15349. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  15350. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15351. if (errn == 0) {
  15352. switch(eventCode) {
  15353. case 0:
  15354. if (iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < iso1SupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) {
  15355. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15356. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15357. if(errn == 0) {
  15358. if(eventCode == 0) {
  15359. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  15360. iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen] = (iso1EnergyTransferModeType) uint32;
  15361. iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++;
  15362. } else {
  15363. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15364. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15365. }
  15366. }
  15367. } else {
  15368. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15369. }
  15370. if(errn == 0) {
  15371. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */
  15372. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15373. if(eventCode == 0) {
  15374. grammarID = 360;
  15375. } else {
  15376. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15377. }
  15378. }
  15379. break;
  15380. case 1:
  15381. done = 1;
  15382. grammarID = 4;
  15383. break;
  15384. default:
  15385. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15386. break;
  15387. }
  15388. }
  15389. break;
  15390. case 360:
  15391. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  15392. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15393. if (errn == 0) {
  15394. switch(eventCode) {
  15395. case 0:
  15396. if (iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < iso1SupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) {
  15397. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15398. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15399. if(errn == 0) {
  15400. if(eventCode == 0) {
  15401. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  15402. iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen] = (iso1EnergyTransferModeType) uint32;
  15403. iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++;
  15404. } else {
  15405. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15406. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15407. }
  15408. }
  15409. } else {
  15410. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15411. }
  15412. if(errn == 0) {
  15413. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */
  15414. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15415. if(eventCode == 0) {
  15416. grammarID = 361;
  15417. } else {
  15418. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15419. }
  15420. }
  15421. break;
  15422. case 1:
  15423. done = 1;
  15424. grammarID = 4;
  15425. break;
  15426. default:
  15427. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15428. break;
  15429. }
  15430. }
  15431. break;
  15432. case 361:
  15433. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  15434. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15435. if (errn == 0) {
  15436. switch(eventCode) {
  15437. case 0:
  15438. if (iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < iso1SupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) {
  15439. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15440. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15441. if(errn == 0) {
  15442. if(eventCode == 0) {
  15443. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  15444. iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen] = (iso1EnergyTransferModeType) uint32;
  15445. iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++;
  15446. } else {
  15447. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15448. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15449. }
  15450. }
  15451. } else {
  15452. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15453. }
  15454. if(errn == 0) {
  15455. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */
  15456. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15457. if(eventCode == 0) {
  15458. grammarID = 362;
  15459. } else {
  15460. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15461. }
  15462. }
  15463. break;
  15464. case 1:
  15465. done = 1;
  15466. grammarID = 4;
  15467. break;
  15468. default:
  15469. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15470. break;
  15471. }
  15472. }
  15473. break;
  15474. case 362:
  15475. /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */
  15476. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15477. if (errn == 0) {
  15478. switch(eventCode) {
  15479. case 0:
  15480. if (iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < iso1SupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) {
  15481. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15482. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15483. if(errn == 0) {
  15484. if(eventCode == 0) {
  15485. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  15486. iso1SupportedEnergyTransferModeType->EnergyTransferMode.array[iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen] = (iso1EnergyTransferModeType) uint32;
  15487. iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++;
  15488. } else {
  15489. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15490. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15491. }
  15492. }
  15493. } else {
  15494. errn = EXI_ERROR_OUT_OF_BOUNDS;
  15495. }
  15496. if(errn == 0) {
  15497. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */
  15498. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15499. if(eventCode == 0) {
  15500. grammarID = 3;
  15501. } else {
  15502. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15503. }
  15504. }
  15505. break;
  15506. case 1:
  15507. done = 1;
  15508. grammarID = 4;
  15509. break;
  15510. default:
  15511. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15512. break;
  15513. }
  15514. }
  15515. break;
  15516. case 3:
  15517. /* Element[END_ELEMENT] */
  15518. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15519. if (errn == 0) {
  15520. switch(eventCode) {
  15521. case 0:
  15522. done = 1;
  15523. grammarID = 4;
  15524. break;
  15525. default:
  15526. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15527. break;
  15528. }
  15529. }
  15530. break;
  15531. default:
  15532. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15533. break;
  15534. }
  15535. if(errn) {
  15536. done = 1;
  15537. }
  15538. }
  15539. return errn;
  15540. }
  15541. /* 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'. */
  15542. static int decode_iso1ChargingStatusReqType(bitstream_t* stream, struct iso1ChargingStatusReqType* iso1ChargingStatusReqType) {
  15543. int grammarID = 34;
  15544. int done = 0;
  15545. init_iso1ChargingStatusReqType(iso1ChargingStatusReqType);
  15546. while(!done) {
  15547. switch(grammarID) {
  15548. case 34:
  15549. /* FirstStartTag[END_ELEMENT] */
  15550. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15551. if (errn == 0) {
  15552. switch(eventCode) {
  15553. case 0:
  15554. done = 1;
  15555. grammarID = 4;
  15556. break;
  15557. default:
  15558. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15559. break;
  15560. }
  15561. }
  15562. break;
  15563. default:
  15564. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15565. break;
  15566. }
  15567. if(errn) {
  15568. done = 1;
  15569. }
  15570. }
  15571. return errn;
  15572. }
  15573. /* 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'. */
  15574. static int decode_iso1PaymentServiceSelectionResType(bitstream_t* stream, struct iso1PaymentServiceSelectionResType* iso1PaymentServiceSelectionResType) {
  15575. int grammarID = 122;
  15576. int done = 0;
  15577. init_iso1PaymentServiceSelectionResType(iso1PaymentServiceSelectionResType);
  15578. while(!done) {
  15579. switch(grammarID) {
  15580. case 122:
  15581. /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */
  15582. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15583. if (errn == 0) {
  15584. switch(eventCode) {
  15585. case 0:
  15586. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  15587. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15588. if(errn == 0) {
  15589. if(eventCode == 0) {
  15590. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  15591. iso1PaymentServiceSelectionResType->ResponseCode = (iso1responseCodeType) uint32;
  15592. } else {
  15593. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15594. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15595. }
  15596. }
  15597. if(errn == 0) {
  15598. /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */
  15599. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15600. if(eventCode == 0) {
  15601. grammarID = 3;
  15602. } else {
  15603. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15604. }
  15605. }
  15606. break;
  15607. default:
  15608. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15609. break;
  15610. }
  15611. }
  15612. break;
  15613. case 3:
  15614. /* Element[END_ELEMENT] */
  15615. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15616. if (errn == 0) {
  15617. switch(eventCode) {
  15618. case 0:
  15619. done = 1;
  15620. grammarID = 4;
  15621. break;
  15622. default:
  15623. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15624. break;
  15625. }
  15626. }
  15627. break;
  15628. default:
  15629. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15630. break;
  15631. }
  15632. if(errn) {
  15633. done = 1;
  15634. }
  15635. }
  15636. return errn;
  15637. }
  15638. /* 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'. */
  15639. static int decode_iso1DigestMethodType(bitstream_t* stream, struct iso1DigestMethodType* iso1DigestMethodType) {
  15640. int grammarID = 312;
  15641. int done = 0;
  15642. init_iso1DigestMethodType(iso1DigestMethodType);
  15643. while(!done) {
  15644. switch(grammarID) {
  15645. case 312:
  15646. /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
  15647. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15648. if (errn == 0) {
  15649. switch(eventCode) {
  15650. case 0:
  15651. errn = decodeUnsignedInteger16(stream, &iso1DigestMethodType->Algorithm.charactersLen);
  15652. if (errn == 0) {
  15653. if (iso1DigestMethodType->Algorithm.charactersLen >= 2) {
  15654. iso1DigestMethodType->Algorithm.charactersLen = (uint16_t)(iso1DigestMethodType->Algorithm.charactersLen - 2); /* string table miss */
  15655. errn = decodeCharacters(stream, iso1DigestMethodType->Algorithm.charactersLen, iso1DigestMethodType->Algorithm.characters, iso1DigestMethodType_Algorithm_CHARACTERS_SIZE);
  15656. } else {
  15657. /* string table hit */
  15658. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15659. }
  15660. }
  15661. grammarID = 115;
  15662. break;
  15663. default:
  15664. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15665. break;
  15666. }
  15667. }
  15668. break;
  15669. case 115:
  15670. /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  15671. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15672. if (errn == 0) {
  15673. switch(eventCode) {
  15674. case 0:
  15675. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15676. /* TODO unsupported event : START_ELEMENT_GENERIC */
  15677. grammarID = 116;
  15678. break;
  15679. case 1:
  15680. done = 1;
  15681. grammarID = 4;
  15682. break;
  15683. case 2:
  15684. errn = decodeUnsignedInteger16(stream, &iso1DigestMethodType->ANY.charactersLen);
  15685. if (errn == 0) {
  15686. if (iso1DigestMethodType->ANY.charactersLen >= 2) {
  15687. iso1DigestMethodType->ANY.charactersLen = (uint16_t)(iso1DigestMethodType->ANY.charactersLen - 2); /* string table miss */
  15688. errn = decodeCharacters(stream, iso1DigestMethodType->ANY.charactersLen, iso1DigestMethodType->ANY.characters, iso1DigestMethodType_ANY_CHARACTERS_SIZE);
  15689. } else {
  15690. /* string table hit */
  15691. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15692. }
  15693. }
  15694. iso1DigestMethodType->ANY_isUsed = 1u;
  15695. grammarID = 116;
  15696. break;
  15697. default:
  15698. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15699. break;
  15700. }
  15701. }
  15702. break;
  15703. case 116:
  15704. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  15705. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15706. if (errn == 0) {
  15707. switch(eventCode) {
  15708. case 0:
  15709. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15710. /* TODO unsupported event : START_ELEMENT_GENERIC */
  15711. grammarID = 116;
  15712. break;
  15713. case 1:
  15714. done = 1;
  15715. grammarID = 4;
  15716. break;
  15717. case 2:
  15718. errn = decodeUnsignedInteger16(stream, &iso1DigestMethodType->ANY.charactersLen);
  15719. if (errn == 0) {
  15720. if (iso1DigestMethodType->ANY.charactersLen >= 2) {
  15721. iso1DigestMethodType->ANY.charactersLen = (uint16_t)(iso1DigestMethodType->ANY.charactersLen - 2); /* string table miss */
  15722. errn = decodeCharacters(stream, iso1DigestMethodType->ANY.charactersLen, iso1DigestMethodType->ANY.characters, iso1DigestMethodType_ANY_CHARACTERS_SIZE);
  15723. } else {
  15724. /* string table hit */
  15725. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15726. }
  15727. }
  15728. iso1DigestMethodType->ANY_isUsed = 1u;
  15729. grammarID = 116;
  15730. break;
  15731. default:
  15732. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15733. break;
  15734. }
  15735. }
  15736. break;
  15737. default:
  15738. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15739. break;
  15740. }
  15741. if(errn) {
  15742. done = 1;
  15743. }
  15744. }
  15745. return errn;
  15746. }
  15747. /* 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'. */
  15748. static int decode_iso1SignaturePropertyType(bitstream_t* stream, struct iso1SignaturePropertyType* iso1SignaturePropertyType) {
  15749. int grammarID = 363;
  15750. int done = 0;
  15751. init_iso1SignaturePropertyType(iso1SignaturePropertyType);
  15752. while(!done) {
  15753. switch(grammarID) {
  15754. case 363:
  15755. /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */
  15756. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15757. if (errn == 0) {
  15758. switch(eventCode) {
  15759. case 0:
  15760. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertyType->Id.charactersLen);
  15761. if (errn == 0) {
  15762. if (iso1SignaturePropertyType->Id.charactersLen >= 2) {
  15763. iso1SignaturePropertyType->Id.charactersLen = (uint16_t)(iso1SignaturePropertyType->Id.charactersLen - 2); /* string table miss */
  15764. errn = decodeCharacters(stream, iso1SignaturePropertyType->Id.charactersLen, iso1SignaturePropertyType->Id.characters, iso1SignaturePropertyType_Id_CHARACTERS_SIZE);
  15765. } else {
  15766. /* string table hit */
  15767. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15768. }
  15769. }
  15770. iso1SignaturePropertyType->Id_isUsed = 1u;
  15771. grammarID = 364;
  15772. break;
  15773. case 1:
  15774. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertyType->Target.charactersLen);
  15775. if (errn == 0) {
  15776. if (iso1SignaturePropertyType->Target.charactersLen >= 2) {
  15777. iso1SignaturePropertyType->Target.charactersLen = (uint16_t)(iso1SignaturePropertyType->Target.charactersLen - 2); /* string table miss */
  15778. errn = decodeCharacters(stream, iso1SignaturePropertyType->Target.charactersLen, iso1SignaturePropertyType->Target.characters, iso1SignaturePropertyType_Target_CHARACTERS_SIZE);
  15779. } else {
  15780. /* string table hit */
  15781. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15782. }
  15783. }
  15784. grammarID = 365;
  15785. break;
  15786. default:
  15787. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15788. break;
  15789. }
  15790. }
  15791. break;
  15792. case 364:
  15793. /* StartTag[ATTRIBUTE[STRING](Target)] */
  15794. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15795. if (errn == 0) {
  15796. switch(eventCode) {
  15797. case 0:
  15798. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertyType->Target.charactersLen);
  15799. if (errn == 0) {
  15800. if (iso1SignaturePropertyType->Target.charactersLen >= 2) {
  15801. iso1SignaturePropertyType->Target.charactersLen = (uint16_t)(iso1SignaturePropertyType->Target.charactersLen - 2); /* string table miss */
  15802. errn = decodeCharacters(stream, iso1SignaturePropertyType->Target.charactersLen, iso1SignaturePropertyType->Target.characters, iso1SignaturePropertyType_Target_CHARACTERS_SIZE);
  15803. } else {
  15804. /* string table hit */
  15805. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15806. }
  15807. }
  15808. grammarID = 365;
  15809. break;
  15810. default:
  15811. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15812. break;
  15813. }
  15814. }
  15815. break;
  15816. case 365:
  15817. /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  15818. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15819. if (errn == 0) {
  15820. switch(eventCode) {
  15821. case 0:
  15822. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15823. /* TODO unsupported event : START_ELEMENT_GENERIC */
  15824. grammarID = 116;
  15825. break;
  15826. case 1:
  15827. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertyType->ANY.charactersLen);
  15828. if (errn == 0) {
  15829. if (iso1SignaturePropertyType->ANY.charactersLen >= 2) {
  15830. iso1SignaturePropertyType->ANY.charactersLen = (uint16_t)(iso1SignaturePropertyType->ANY.charactersLen - 2); /* string table miss */
  15831. errn = decodeCharacters(stream, iso1SignaturePropertyType->ANY.charactersLen, iso1SignaturePropertyType->ANY.characters, iso1SignaturePropertyType_ANY_CHARACTERS_SIZE);
  15832. } else {
  15833. /* string table hit */
  15834. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15835. }
  15836. }
  15837. iso1SignaturePropertyType->ANY_isUsed = 1u;
  15838. grammarID = 366;
  15839. break;
  15840. default:
  15841. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15842. break;
  15843. }
  15844. }
  15845. break;
  15846. case 116:
  15847. /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
  15848. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15849. if (errn == 0) {
  15850. switch(eventCode) {
  15851. case 0:
  15852. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15853. /* TODO unsupported event : START_ELEMENT_GENERIC */
  15854. grammarID = 116;
  15855. break;
  15856. case 1:
  15857. done = 1;
  15858. grammarID = 4;
  15859. break;
  15860. case 2:
  15861. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertyType->ANY.charactersLen);
  15862. if (errn == 0) {
  15863. if (iso1SignaturePropertyType->ANY.charactersLen >= 2) {
  15864. iso1SignaturePropertyType->ANY.charactersLen = (uint16_t)(iso1SignaturePropertyType->ANY.charactersLen - 2); /* string table miss */
  15865. errn = decodeCharacters(stream, iso1SignaturePropertyType->ANY.charactersLen, iso1SignaturePropertyType->ANY.characters, iso1SignaturePropertyType_ANY_CHARACTERS_SIZE);
  15866. } else {
  15867. /* string table hit */
  15868. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15869. }
  15870. }
  15871. iso1SignaturePropertyType->ANY_isUsed = 1u;
  15872. grammarID = 116;
  15873. break;
  15874. default:
  15875. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15876. break;
  15877. }
  15878. }
  15879. break;
  15880. case 366:
  15881. /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
  15882. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15883. if (errn == 0) {
  15884. switch(eventCode) {
  15885. case 0:
  15886. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15887. /* TODO unsupported event : START_ELEMENT_GENERIC */
  15888. grammarID = 116;
  15889. break;
  15890. case 1:
  15891. errn = decodeUnsignedInteger16(stream, &iso1SignaturePropertyType->ANY.charactersLen);
  15892. if (errn == 0) {
  15893. if (iso1SignaturePropertyType->ANY.charactersLen >= 2) {
  15894. iso1SignaturePropertyType->ANY.charactersLen = (uint16_t)(iso1SignaturePropertyType->ANY.charactersLen - 2); /* string table miss */
  15895. errn = decodeCharacters(stream, iso1SignaturePropertyType->ANY.charactersLen, iso1SignaturePropertyType->ANY.characters, iso1SignaturePropertyType_ANY_CHARACTERS_SIZE);
  15896. } else {
  15897. /* string table hit */
  15898. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  15899. }
  15900. }
  15901. iso1SignaturePropertyType->ANY_isUsed = 1u;
  15902. grammarID = 366;
  15903. break;
  15904. default:
  15905. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15906. break;
  15907. }
  15908. }
  15909. break;
  15910. default:
  15911. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  15912. break;
  15913. }
  15914. if(errn) {
  15915. done = 1;
  15916. }
  15917. }
  15918. return errn;
  15919. }
  15920. /* 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'. */
  15921. static int decode_iso1PGPDataType(bitstream_t* stream, struct iso1PGPDataType* iso1PGPDataType) {
  15922. int grammarID = 367;
  15923. int done = 0;
  15924. init_iso1PGPDataType(iso1PGPDataType);
  15925. while(!done) {
  15926. switch(grammarID) {
  15927. case 367:
  15928. /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */
  15929. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15930. if (errn == 0) {
  15931. switch(eventCode) {
  15932. case 0:
  15933. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  15934. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15935. if(errn == 0) {
  15936. if(eventCode == 0) {
  15937. errn = decodeUnsignedInteger16(stream, &iso1PGPDataType->PGPKeyID.bytesLen);
  15938. if (errn == 0) {
  15939. errn = (iso1PGPDataType->PGPKeyID.bytesLen) <= iso1PGPDataType_PGPKeyID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  15940. }
  15941. if (errn == 0) {
  15942. errn = decodeBytes(stream, iso1PGPDataType->PGPKeyID.bytesLen, iso1PGPDataType->PGPKeyID.bytes);
  15943. }
  15944. iso1PGPDataType->PGPKeyID_isUsed = 1u;
  15945. } else {
  15946. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15947. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15948. }
  15949. }
  15950. if(errn == 0) {
  15951. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID) ? */
  15952. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15953. if(eventCode == 0) {
  15954. grammarID = 368;
  15955. } else {
  15956. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15957. }
  15958. }
  15959. break;
  15960. case 1:
  15961. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  15962. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15963. if(errn == 0) {
  15964. if(eventCode == 0) {
  15965. errn = decodeUnsignedInteger16(stream, &iso1PGPDataType->PGPKeyPacket.bytesLen);
  15966. if (errn == 0) {
  15967. errn = (iso1PGPDataType->PGPKeyPacket.bytesLen) <= iso1PGPDataType_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  15968. }
  15969. if (errn == 0) {
  15970. errn = decodeBytes(stream, iso1PGPDataType->PGPKeyPacket.bytesLen, iso1PGPDataType->PGPKeyPacket.bytes);
  15971. }
  15972. iso1PGPDataType->PGPKeyPacket_isUsed = 1u;
  15973. } else {
  15974. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  15975. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  15976. }
  15977. }
  15978. if(errn == 0) {
  15979. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) ? */
  15980. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  15981. if(eventCode == 0) {
  15982. grammarID = 369;
  15983. } else {
  15984. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  15985. }
  15986. }
  15987. break;
  15988. default:
  15989. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  15990. break;
  15991. }
  15992. }
  15993. break;
  15994. case 368:
  15995. /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */
  15996. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  15997. if (errn == 0) {
  15998. switch(eventCode) {
  15999. case 0:
  16000. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  16001. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16002. if(errn == 0) {
  16003. if(eventCode == 0) {
  16004. errn = decodeUnsignedInteger16(stream, &iso1PGPDataType->PGPKeyPacket.bytesLen);
  16005. if (errn == 0) {
  16006. errn = (iso1PGPDataType->PGPKeyPacket.bytesLen) <= iso1PGPDataType_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  16007. }
  16008. if (errn == 0) {
  16009. errn = decodeBytes(stream, iso1PGPDataType->PGPKeyPacket.bytesLen, iso1PGPDataType->PGPKeyPacket.bytes);
  16010. }
  16011. iso1PGPDataType->PGPKeyPacket_isUsed = 1u;
  16012. } else {
  16013. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16014. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16015. }
  16016. }
  16017. if(errn == 0) {
  16018. /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) ? */
  16019. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16020. if(eventCode == 0) {
  16021. grammarID = 369;
  16022. } else {
  16023. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  16024. }
  16025. }
  16026. break;
  16027. case 1:
  16028. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16029. /* TODO unsupported event : START_ELEMENT_GENERIC */
  16030. grammarID = 369;
  16031. break;
  16032. case 2:
  16033. done = 1;
  16034. grammarID = 4;
  16035. break;
  16036. default:
  16037. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  16038. break;
  16039. }
  16040. }
  16041. break;
  16042. case 369:
  16043. /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */
  16044. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  16045. if (errn == 0) {
  16046. switch(eventCode) {
  16047. case 0:
  16048. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16049. /* TODO unsupported event : START_ELEMENT_GENERIC */
  16050. grammarID = 369;
  16051. break;
  16052. case 1:
  16053. done = 1;
  16054. grammarID = 4;
  16055. break;
  16056. default:
  16057. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  16058. break;
  16059. }
  16060. }
  16061. break;
  16062. default:
  16063. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  16064. break;
  16065. }
  16066. if(errn) {
  16067. done = 1;
  16068. }
  16069. }
  16070. return errn;
  16071. }
  16072. int decode_iso1EXISchemaInformedElementFragmentGrammar(bitstream_t* stream, struct iso1EXISchemaInformedElementFragmentGrammar* exiElementFrag) {
  16073. int grammarID = 370;
  16074. int done = 0;
  16075. init_iso1EXISchemaInformedElementFragmentGrammar(exiElementFrag);
  16076. while(!done) {
  16077. switch(grammarID) {
  16078. case 370:
  16079. /* 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]] */
  16080. errn = decodeNBitUnsignedInteger(stream, 9, &eventCode);
  16081. if (errn == 0) {
  16082. switch(eventCode) {
  16083. case 4:
  16084. errn = decodeUnsignedInteger16(stream, &exiElementFrag->Id.charactersLen);
  16085. if (errn == 0) {
  16086. if (exiElementFrag->Id.charactersLen >= 2) {
  16087. exiElementFrag->Id.charactersLen = (uint16_t)(exiElementFrag->Id.charactersLen - 2); /* string table miss */
  16088. errn = decodeCharacters(stream, exiElementFrag->Id.charactersLen, exiElementFrag->Id.characters, exiElementFrag_Id_CHARACTERS_SIZE);
  16089. } else {
  16090. /* string table hit */
  16091. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  16092. }
  16093. }
  16094. exiElementFrag->Id_isUsed = 1u;
  16095. grammarID = 370;
  16096. break;
  16097. case 255:
  16098. done = 1;
  16099. grammarID = 4;
  16100. break;
  16101. case 256:
  16102. errn = decodeUnsignedInteger16(stream, &exiElementFrag->CHARACTERS_GENERIC.charactersLen);
  16103. if (errn == 0) {
  16104. if (exiElementFrag->CHARACTERS_GENERIC.charactersLen >= 2) {
  16105. exiElementFrag->CHARACTERS_GENERIC.charactersLen = (uint16_t)(exiElementFrag->CHARACTERS_GENERIC.charactersLen - 2); /* string table miss */
  16106. errn = decodeCharacters(stream, exiElementFrag->CHARACTERS_GENERIC.charactersLen, exiElementFrag->CHARACTERS_GENERIC.characters, exiElementFrag_CHARACTERS_GENERIC_CHARACTERS_SIZE);
  16107. } else {
  16108. /* string table hit */
  16109. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  16110. }
  16111. }
  16112. exiElementFrag->CHARACTERS_GENERIC_isUsed = 1u;
  16113. grammarID = 371;
  16114. break;
  16115. default:
  16116. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  16117. break;
  16118. }
  16119. }
  16120. break;
  16121. case 371:
  16122. /* 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]] */
  16123. errn = decodeNBitUnsignedInteger(stream, 8, &eventCode);
  16124. if (errn == 0) {
  16125. switch(eventCode) {
  16126. case 244:
  16127. done = 1;
  16128. grammarID = 4;
  16129. break;
  16130. case 245:
  16131. errn = decodeUnsignedInteger16(stream, &exiElementFrag->CHARACTERS_GENERIC.charactersLen);
  16132. if (errn == 0) {
  16133. if (exiElementFrag->CHARACTERS_GENERIC.charactersLen >= 2) {
  16134. exiElementFrag->CHARACTERS_GENERIC.charactersLen = (uint16_t)(exiElementFrag->CHARACTERS_GENERIC.charactersLen - 2); /* string table miss */
  16135. errn = decodeCharacters(stream, exiElementFrag->CHARACTERS_GENERIC.charactersLen, exiElementFrag->CHARACTERS_GENERIC.characters, exiElementFrag_CHARACTERS_GENERIC_CHARACTERS_SIZE);
  16136. } else {
  16137. /* string table hit */
  16138. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  16139. }
  16140. }
  16141. exiElementFrag->CHARACTERS_GENERIC_isUsed = 1u;
  16142. grammarID = 371;
  16143. break;
  16144. default:
  16145. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  16146. break;
  16147. }
  16148. }
  16149. break;
  16150. default:
  16151. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  16152. break;
  16153. }
  16154. if(errn) {
  16155. done = 1;
  16156. }
  16157. }
  16158. return errn;
  16159. }
  16160. int decode_iso1ExiDocument(bitstream_t* stream, struct iso1EXIDocument* exiDoc) {
  16161. errn = readEXIHeader(stream);
  16162. if(errn == 0) {
  16163. /* 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] */
  16164. init_iso1EXIDocument(exiDoc);
  16165. errn = decodeNBitUnsignedInteger(stream, 7, &eventCode);
  16166. if(errn == 0) {
  16167. switch(eventCode) {
  16168. case 0:
  16169. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter) */
  16170. errn = decode_iso1AC_EVChargeParameterType(stream, &exiDoc->AC_EVChargeParameter);
  16171. exiDoc->AC_EVChargeParameter_isUsed = 1u;
  16172. break;
  16173. case 1:
  16174. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter) */
  16175. errn = decode_iso1AC_EVSEChargeParameterType(stream, &exiDoc->AC_EVSEChargeParameter);
  16176. exiDoc->AC_EVSEChargeParameter_isUsed = 1u;
  16177. break;
  16178. case 2:
  16179. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus) */
  16180. errn = decode_iso1AC_EVSEStatusType(stream, &exiDoc->AC_EVSEStatus);
  16181. exiDoc->AC_EVSEStatus_isUsed = 1u;
  16182. break;
  16183. case 3:
  16184. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq) */
  16185. errn = decode_iso1AuthorizationReqType(stream, &exiDoc->AuthorizationReq);
  16186. exiDoc->AuthorizationReq_isUsed = 1u;
  16187. break;
  16188. case 4:
  16189. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes) */
  16190. errn = decode_iso1AuthorizationResType(stream, &exiDoc->AuthorizationRes);
  16191. exiDoc->AuthorizationRes_isUsed = 1u;
  16192. break;
  16193. case 5:
  16194. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement) */
  16195. errn = decode_iso1BodyBaseType(stream, &exiDoc->BodyElement);
  16196. exiDoc->BodyElement_isUsed = 1u;
  16197. break;
  16198. case 6:
  16199. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq) */
  16200. errn = decode_iso1CableCheckReqType(stream, &exiDoc->CableCheckReq);
  16201. exiDoc->CableCheckReq_isUsed = 1u;
  16202. break;
  16203. case 7:
  16204. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes) */
  16205. errn = decode_iso1CableCheckResType(stream, &exiDoc->CableCheckRes);
  16206. exiDoc->CableCheckRes_isUsed = 1u;
  16207. break;
  16208. case 8:
  16209. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */
  16210. errn = decode_iso1CanonicalizationMethodType(stream, &exiDoc->CanonicalizationMethod);
  16211. exiDoc->CanonicalizationMethod_isUsed = 1u;
  16212. break;
  16213. case 9:
  16214. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq) */
  16215. errn = decode_iso1CertificateInstallationReqType(stream, &exiDoc->CertificateInstallationReq);
  16216. exiDoc->CertificateInstallationReq_isUsed = 1u;
  16217. break;
  16218. case 10:
  16219. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes) */
  16220. errn = decode_iso1CertificateInstallationResType(stream, &exiDoc->CertificateInstallationRes);
  16221. exiDoc->CertificateInstallationRes_isUsed = 1u;
  16222. break;
  16223. case 11:
  16224. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq) */
  16225. errn = decode_iso1CertificateUpdateReqType(stream, &exiDoc->CertificateUpdateReq);
  16226. exiDoc->CertificateUpdateReq_isUsed = 1u;
  16227. break;
  16228. case 12:
  16229. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes) */
  16230. errn = decode_iso1CertificateUpdateResType(stream, &exiDoc->CertificateUpdateRes);
  16231. exiDoc->CertificateUpdateRes_isUsed = 1u;
  16232. break;
  16233. case 13:
  16234. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq) */
  16235. errn = decode_iso1ChargeParameterDiscoveryReqType(stream, &exiDoc->ChargeParameterDiscoveryReq);
  16236. exiDoc->ChargeParameterDiscoveryReq_isUsed = 1u;
  16237. break;
  16238. case 14:
  16239. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes) */
  16240. errn = decode_iso1ChargeParameterDiscoveryResType(stream, &exiDoc->ChargeParameterDiscoveryRes);
  16241. exiDoc->ChargeParameterDiscoveryRes_isUsed = 1u;
  16242. break;
  16243. case 15:
  16244. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq) */
  16245. errn = decode_iso1ChargingStatusReqType(stream, &exiDoc->ChargingStatusReq);
  16246. exiDoc->ChargingStatusReq_isUsed = 1u;
  16247. break;
  16248. case 16:
  16249. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes) */
  16250. errn = decode_iso1ChargingStatusResType(stream, &exiDoc->ChargingStatusRes);
  16251. exiDoc->ChargingStatusRes_isUsed = 1u;
  16252. break;
  16253. case 17:
  16254. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq) */
  16255. errn = decode_iso1CurrentDemandReqType(stream, &exiDoc->CurrentDemandReq);
  16256. exiDoc->CurrentDemandReq_isUsed = 1u;
  16257. break;
  16258. case 18:
  16259. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes) */
  16260. errn = decode_iso1CurrentDemandResType(stream, &exiDoc->CurrentDemandRes);
  16261. exiDoc->CurrentDemandRes_isUsed = 1u;
  16262. break;
  16263. case 19:
  16264. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter) */
  16265. errn = decode_iso1DC_EVChargeParameterType(stream, &exiDoc->DC_EVChargeParameter);
  16266. exiDoc->DC_EVChargeParameter_isUsed = 1u;
  16267. break;
  16268. case 20:
  16269. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter) */
  16270. errn = decode_iso1DC_EVPowerDeliveryParameterType(stream, &exiDoc->DC_EVPowerDeliveryParameter);
  16271. exiDoc->DC_EVPowerDeliveryParameter_isUsed = 1u;
  16272. break;
  16273. case 21:
  16274. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter) */
  16275. errn = decode_iso1DC_EVSEChargeParameterType(stream, &exiDoc->DC_EVSEChargeParameter);
  16276. exiDoc->DC_EVSEChargeParameter_isUsed = 1u;
  16277. break;
  16278. case 22:
  16279. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus) */
  16280. errn = decode_iso1DC_EVSEStatusType(stream, &exiDoc->DC_EVSEStatus);
  16281. exiDoc->DC_EVSEStatus_isUsed = 1u;
  16282. break;
  16283. case 23:
  16284. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus) */
  16285. errn = decode_iso1DC_EVStatusType(stream, &exiDoc->DC_EVStatus);
  16286. exiDoc->DC_EVStatus_isUsed = 1u;
  16287. break;
  16288. case 24:
  16289. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */
  16290. errn = decode_iso1DSAKeyValueType(stream, &exiDoc->DSAKeyValue);
  16291. exiDoc->DSAKeyValue_isUsed = 1u;
  16292. break;
  16293. case 25:
  16294. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */
  16295. errn = decode_iso1DigestMethodType(stream, &exiDoc->DigestMethod);
  16296. exiDoc->DigestMethod_isUsed = 1u;
  16297. break;
  16298. case 26:
  16299. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */
  16300. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  16301. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16302. if(errn == 0) {
  16303. if(eventCode == 0) {
  16304. errn = decodeUnsignedInteger16(stream, &exiDoc->DigestValue.bytesLen);
  16305. if (errn == 0) {
  16306. errn = (exiDoc->DigestValue.bytesLen) <= EXIDocument_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  16307. }
  16308. if (errn == 0) {
  16309. errn = decodeBytes(stream, exiDoc->DigestValue.bytesLen, exiDoc->DigestValue.bytes);
  16310. }
  16311. exiDoc->DigestValue_isUsed = 1u;
  16312. } else {
  16313. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16314. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16315. }
  16316. }
  16317. break;
  16318. case 27:
  16319. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter) */
  16320. errn = decode_iso1EVChargeParameterType(stream, &exiDoc->EVChargeParameter);
  16321. exiDoc->EVChargeParameter_isUsed = 1u;
  16322. break;
  16323. case 28:
  16324. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter) */
  16325. errn = decode_iso1EVPowerDeliveryParameterType(stream, &exiDoc->EVPowerDeliveryParameter);
  16326. exiDoc->EVPowerDeliveryParameter_isUsed = 1u;
  16327. break;
  16328. case 29:
  16329. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter) */
  16330. errn = decode_iso1EVSEChargeParameterType(stream, &exiDoc->EVSEChargeParameter);
  16331. exiDoc->EVSEChargeParameter_isUsed = 1u;
  16332. break;
  16333. case 30:
  16334. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus) */
  16335. errn = decode_iso1EVSEStatusType(stream, &exiDoc->EVSEStatus);
  16336. exiDoc->EVSEStatus_isUsed = 1u;
  16337. break;
  16338. case 31:
  16339. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus) */
  16340. errn = decode_iso1EVStatusType(stream, &exiDoc->EVStatus);
  16341. exiDoc->EVStatus_isUsed = 1u;
  16342. break;
  16343. case 32:
  16344. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry) */
  16345. errn = decode_iso1EntryType(stream, &exiDoc->Entry);
  16346. exiDoc->Entry_isUsed = 1u;
  16347. break;
  16348. case 33:
  16349. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */
  16350. errn = decode_iso1KeyInfoType(stream, &exiDoc->KeyInfo);
  16351. exiDoc->KeyInfo_isUsed = 1u;
  16352. break;
  16353. case 34:
  16354. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */
  16355. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  16356. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16357. if(errn == 0) {
  16358. if(eventCode == 0) {
  16359. errn = decodeUnsignedInteger16(stream, &exiDoc->KeyName.charactersLen);
  16360. if (errn == 0) {
  16361. if (exiDoc->KeyName.charactersLen >= 2) {
  16362. exiDoc->KeyName.charactersLen = (uint16_t)(exiDoc->KeyName.charactersLen - 2); /* string table miss */
  16363. errn = decodeCharacters(stream, exiDoc->KeyName.charactersLen, exiDoc->KeyName.characters, EXIDocument_KeyName_CHARACTERS_SIZE);
  16364. } else {
  16365. /* string table hit */
  16366. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  16367. }
  16368. }
  16369. exiDoc->KeyName_isUsed = 1u;
  16370. } else {
  16371. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16372. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16373. }
  16374. }
  16375. break;
  16376. case 35:
  16377. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */
  16378. errn = decode_iso1KeyValueType(stream, &exiDoc->KeyValue);
  16379. exiDoc->KeyValue_isUsed = 1u;
  16380. break;
  16381. case 36:
  16382. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */
  16383. errn = decode_iso1ManifestType(stream, &exiDoc->Manifest);
  16384. exiDoc->Manifest_isUsed = 1u;
  16385. break;
  16386. case 37:
  16387. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq) */
  16388. errn = decode_iso1MeteringReceiptReqType(stream, &exiDoc->MeteringReceiptReq);
  16389. exiDoc->MeteringReceiptReq_isUsed = 1u;
  16390. break;
  16391. case 38:
  16392. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes) */
  16393. errn = decode_iso1MeteringReceiptResType(stream, &exiDoc->MeteringReceiptRes);
  16394. exiDoc->MeteringReceiptRes_isUsed = 1u;
  16395. break;
  16396. case 39:
  16397. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */
  16398. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  16399. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16400. if(errn == 0) {
  16401. if(eventCode == 0) {
  16402. errn = decodeUnsignedInteger16(stream, &exiDoc->MgmtData.charactersLen);
  16403. if (errn == 0) {
  16404. if (exiDoc->MgmtData.charactersLen >= 2) {
  16405. exiDoc->MgmtData.charactersLen = (uint16_t)(exiDoc->MgmtData.charactersLen - 2); /* string table miss */
  16406. errn = decodeCharacters(stream, exiDoc->MgmtData.charactersLen, exiDoc->MgmtData.characters, EXIDocument_MgmtData_CHARACTERS_SIZE);
  16407. } else {
  16408. /* string table hit */
  16409. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  16410. }
  16411. }
  16412. exiDoc->MgmtData_isUsed = 1u;
  16413. } else {
  16414. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16415. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16416. }
  16417. }
  16418. break;
  16419. case 40:
  16420. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */
  16421. errn = decode_iso1ObjectType(stream, &exiDoc->Object);
  16422. exiDoc->Object_isUsed = 1u;
  16423. break;
  16424. case 41:
  16425. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */
  16426. errn = decode_iso1PGPDataType(stream, &exiDoc->PGPData);
  16427. exiDoc->PGPData_isUsed = 1u;
  16428. break;
  16429. case 42:
  16430. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry) */
  16431. errn = decode_iso1PMaxScheduleEntryType(stream, &exiDoc->PMaxScheduleEntry);
  16432. exiDoc->PMaxScheduleEntry_isUsed = 1u;
  16433. break;
  16434. case 43:
  16435. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq) */
  16436. errn = decode_iso1PaymentDetailsReqType(stream, &exiDoc->PaymentDetailsReq);
  16437. exiDoc->PaymentDetailsReq_isUsed = 1u;
  16438. break;
  16439. case 44:
  16440. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes) */
  16441. errn = decode_iso1PaymentDetailsResType(stream, &exiDoc->PaymentDetailsRes);
  16442. exiDoc->PaymentDetailsRes_isUsed = 1u;
  16443. break;
  16444. case 45:
  16445. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq) */
  16446. errn = decode_iso1PaymentServiceSelectionReqType(stream, &exiDoc->PaymentServiceSelectionReq);
  16447. exiDoc->PaymentServiceSelectionReq_isUsed = 1u;
  16448. break;
  16449. case 46:
  16450. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes) */
  16451. errn = decode_iso1PaymentServiceSelectionResType(stream, &exiDoc->PaymentServiceSelectionRes);
  16452. exiDoc->PaymentServiceSelectionRes_isUsed = 1u;
  16453. break;
  16454. case 47:
  16455. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq) */
  16456. errn = decode_iso1PowerDeliveryReqType(stream, &exiDoc->PowerDeliveryReq);
  16457. exiDoc->PowerDeliveryReq_isUsed = 1u;
  16458. break;
  16459. case 48:
  16460. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes) */
  16461. errn = decode_iso1PowerDeliveryResType(stream, &exiDoc->PowerDeliveryRes);
  16462. exiDoc->PowerDeliveryRes_isUsed = 1u;
  16463. break;
  16464. case 49:
  16465. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq) */
  16466. errn = decode_iso1PreChargeReqType(stream, &exiDoc->PreChargeReq);
  16467. exiDoc->PreChargeReq_isUsed = 1u;
  16468. break;
  16469. case 50:
  16470. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes) */
  16471. errn = decode_iso1PreChargeResType(stream, &exiDoc->PreChargeRes);
  16472. exiDoc->PreChargeRes_isUsed = 1u;
  16473. break;
  16474. case 51:
  16475. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */
  16476. errn = decode_iso1RSAKeyValueType(stream, &exiDoc->RSAKeyValue);
  16477. exiDoc->RSAKeyValue_isUsed = 1u;
  16478. break;
  16479. case 52:
  16480. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */
  16481. errn = decode_iso1ReferenceType(stream, &exiDoc->Reference);
  16482. exiDoc->Reference_isUsed = 1u;
  16483. break;
  16484. case 53:
  16485. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval) */
  16486. errn = decode_iso1RelativeTimeIntervalType(stream, &exiDoc->RelativeTimeInterval);
  16487. exiDoc->RelativeTimeInterval_isUsed = 1u;
  16488. break;
  16489. case 54:
  16490. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */
  16491. errn = decode_iso1RetrievalMethodType(stream, &exiDoc->RetrievalMethod);
  16492. exiDoc->RetrievalMethod_isUsed = 1u;
  16493. break;
  16494. case 55:
  16495. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList) */
  16496. errn = decode_iso1SAScheduleListType(stream, &exiDoc->SAScheduleList);
  16497. exiDoc->SAScheduleList_isUsed = 1u;
  16498. break;
  16499. case 56:
  16500. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules) */
  16501. errn = decode_iso1SASchedulesType(stream, &exiDoc->SASchedules);
  16502. exiDoc->SASchedules_isUsed = 1u;
  16503. break;
  16504. case 57:
  16505. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */
  16506. errn = decode_iso1SPKIDataType(stream, &exiDoc->SPKIData);
  16507. exiDoc->SPKIData_isUsed = 1u;
  16508. break;
  16509. case 58:
  16510. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry) */
  16511. errn = decode_iso1SalesTariffEntryType(stream, &exiDoc->SalesTariffEntry);
  16512. exiDoc->SalesTariffEntry_isUsed = 1u;
  16513. break;
  16514. case 59:
  16515. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq) */
  16516. errn = decode_iso1ServiceDetailReqType(stream, &exiDoc->ServiceDetailReq);
  16517. exiDoc->ServiceDetailReq_isUsed = 1u;
  16518. break;
  16519. case 60:
  16520. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes) */
  16521. errn = decode_iso1ServiceDetailResType(stream, &exiDoc->ServiceDetailRes);
  16522. exiDoc->ServiceDetailRes_isUsed = 1u;
  16523. break;
  16524. case 61:
  16525. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq) */
  16526. errn = decode_iso1ServiceDiscoveryReqType(stream, &exiDoc->ServiceDiscoveryReq);
  16527. exiDoc->ServiceDiscoveryReq_isUsed = 1u;
  16528. break;
  16529. case 62:
  16530. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes) */
  16531. errn = decode_iso1ServiceDiscoveryResType(stream, &exiDoc->ServiceDiscoveryRes);
  16532. exiDoc->ServiceDiscoveryRes_isUsed = 1u;
  16533. break;
  16534. case 63:
  16535. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq) */
  16536. errn = decode_iso1SessionSetupReqType(stream, &exiDoc->SessionSetupReq);
  16537. exiDoc->SessionSetupReq_isUsed = 1u;
  16538. break;
  16539. case 64:
  16540. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes) */
  16541. errn = decode_iso1SessionSetupResType(stream, &exiDoc->SessionSetupRes);
  16542. exiDoc->SessionSetupRes_isUsed = 1u;
  16543. break;
  16544. case 65:
  16545. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq) */
  16546. errn = decode_iso1SessionStopReqType(stream, &exiDoc->SessionStopReq);
  16547. exiDoc->SessionStopReq_isUsed = 1u;
  16548. break;
  16549. case 66:
  16550. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes) */
  16551. errn = decode_iso1SessionStopResType(stream, &exiDoc->SessionStopRes);
  16552. exiDoc->SessionStopRes_isUsed = 1u;
  16553. break;
  16554. case 67:
  16555. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */
  16556. errn = decode_iso1SignatureType(stream, &exiDoc->Signature);
  16557. exiDoc->Signature_isUsed = 1u;
  16558. break;
  16559. case 68:
  16560. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */
  16561. errn = decode_iso1SignatureMethodType(stream, &exiDoc->SignatureMethod);
  16562. exiDoc->SignatureMethod_isUsed = 1u;
  16563. break;
  16564. case 69:
  16565. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */
  16566. errn = decode_iso1SignaturePropertiesType(stream, &exiDoc->SignatureProperties);
  16567. exiDoc->SignatureProperties_isUsed = 1u;
  16568. break;
  16569. case 70:
  16570. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */
  16571. errn = decode_iso1SignaturePropertyType(stream, &exiDoc->SignatureProperty);
  16572. exiDoc->SignatureProperty_isUsed = 1u;
  16573. break;
  16574. case 71:
  16575. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */
  16576. errn = decode_iso1SignatureValueType(stream, &exiDoc->SignatureValue);
  16577. exiDoc->SignatureValue_isUsed = 1u;
  16578. break;
  16579. case 72:
  16580. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */
  16581. errn = decode_iso1SignedInfoType(stream, &exiDoc->SignedInfo);
  16582. exiDoc->SignedInfo_isUsed = 1u;
  16583. break;
  16584. case 73:
  16585. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval) */
  16586. errn = decode_iso1IntervalType(stream, &exiDoc->TimeInterval);
  16587. exiDoc->TimeInterval_isUsed = 1u;
  16588. break;
  16589. case 74:
  16590. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */
  16591. errn = decode_iso1TransformType(stream, &exiDoc->Transform);
  16592. exiDoc->Transform_isUsed = 1u;
  16593. break;
  16594. case 75:
  16595. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */
  16596. errn = decode_iso1TransformsType(stream, &exiDoc->Transforms);
  16597. exiDoc->Transforms_isUsed = 1u;
  16598. break;
  16599. case 76:
  16600. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message) */
  16601. errn = decode_iso1AnonType_V2G_Message(stream, &exiDoc->V2G_Message);
  16602. exiDoc->V2G_Message_isUsed = 1u;
  16603. break;
  16604. case 77:
  16605. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq) */
  16606. errn = decode_iso1WeldingDetectionReqType(stream, &exiDoc->WeldingDetectionReq);
  16607. exiDoc->WeldingDetectionReq_isUsed = 1u;
  16608. break;
  16609. case 78:
  16610. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes) */
  16611. errn = decode_iso1WeldingDetectionResType(stream, &exiDoc->WeldingDetectionRes);
  16612. exiDoc->WeldingDetectionRes_isUsed = 1u;
  16613. break;
  16614. case 79:
  16615. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */
  16616. errn = decode_iso1X509DataType(stream, &exiDoc->X509Data);
  16617. exiDoc->X509Data_isUsed = 1u;
  16618. break;
  16619. default:
  16620. errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
  16621. break;
  16622. }
  16623. }
  16624. }
  16625. (void)exiDoc; /* avoid unused warning */
  16626. (void)eventCode; /* avoid unused warning */
  16627. (void)uint32; /* avoid unused warning */
  16628. return errn;
  16629. }
  16630. #if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES
  16631. int decode_iso1ExiFragment(bitstream_t* stream, struct iso1EXIFragment* exiFrag) {
  16632. errn = readEXIHeader(stream);
  16633. if(errn == 0) {
  16634. /* 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] */
  16635. init_iso1EXIFragment(exiFrag);
  16636. errn = decodeNBitUnsignedInteger(stream, 8, &eventCode);
  16637. if(errn == 0) {
  16638. switch(eventCode) {
  16639. case 0:
  16640. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter) */
  16641. errn = decode_iso1AC_EVChargeParameterType(stream, &exiFrag->AC_EVChargeParameter);
  16642. exiFrag->AC_EVChargeParameter_isUsed = 1u;
  16643. break;
  16644. case 1:
  16645. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter) */
  16646. errn = decode_iso1AC_EVSEChargeParameterType(stream, &exiFrag->AC_EVSEChargeParameter);
  16647. exiFrag->AC_EVSEChargeParameter_isUsed = 1u;
  16648. break;
  16649. case 2:
  16650. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus) */
  16651. errn = decode_iso1AC_EVSEStatusType(stream, &exiFrag->AC_EVSEStatus);
  16652. exiFrag->AC_EVSEStatus_isUsed = 1u;
  16653. break;
  16654. case 3:
  16655. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus) */
  16656. errn = decode_iso1AC_EVSEStatusType(stream, &exiFrag->AC_EVSEStatus);
  16657. exiFrag->AC_EVSEStatus_isUsed = 1u;
  16658. break;
  16659. case 4:
  16660. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq) */
  16661. errn = decode_iso1AuthorizationReqType(stream, &exiFrag->AuthorizationReq);
  16662. exiFrag->AuthorizationReq_isUsed = 1u;
  16663. break;
  16664. case 5:
  16665. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes) */
  16666. errn = decode_iso1AuthorizationResType(stream, &exiFrag->AuthorizationRes);
  16667. exiFrag->AuthorizationRes_isUsed = 1u;
  16668. break;
  16669. case 6:
  16670. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body) */
  16671. errn = decode_iso1BodyType(stream, &exiFrag->Body);
  16672. exiFrag->Body_isUsed = 1u;
  16673. break;
  16674. case 7:
  16675. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement) */
  16676. errn = decode_iso1BodyBaseType(stream, &exiFrag->BodyElement);
  16677. exiFrag->BodyElement_isUsed = 1u;
  16678. break;
  16679. case 8:
  16680. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) */
  16681. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  16682. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16683. if(errn == 0) {
  16684. if(eventCode == 0) {
  16685. errn = decodeBoolean(stream, &exiFrag->BulkChargingComplete);
  16686. exiFrag->BulkChargingComplete_isUsed = 1u;
  16687. } else {
  16688. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16689. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16690. }
  16691. }
  16692. break;
  16693. case 9:
  16694. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete) */
  16695. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  16696. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16697. if(errn == 0) {
  16698. if(eventCode == 0) {
  16699. errn = decodeBoolean(stream, &exiFrag->BulkChargingComplete);
  16700. exiFrag->BulkChargingComplete_isUsed = 1u;
  16701. } else {
  16702. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16703. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16704. }
  16705. }
  16706. break;
  16707. case 10:
  16708. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) */
  16709. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  16710. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16711. if(errn == 0) {
  16712. if(eventCode == 0) {
  16713. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  16714. exiFrag->BulkSOC = (int8_t)(uint32 + 0);
  16715. exiFrag->BulkSOC_isUsed = 1u;
  16716. } else {
  16717. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16718. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16719. }
  16720. }
  16721. break;
  16722. case 11:
  16723. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq) */
  16724. errn = decode_iso1CableCheckReqType(stream, &exiFrag->CableCheckReq);
  16725. exiFrag->CableCheckReq_isUsed = 1u;
  16726. break;
  16727. case 12:
  16728. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes) */
  16729. errn = decode_iso1CableCheckResType(stream, &exiFrag->CableCheckRes);
  16730. exiFrag->CableCheckRes_isUsed = 1u;
  16731. break;
  16732. case 13:
  16733. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */
  16734. errn = decode_iso1CanonicalizationMethodType(stream, &exiFrag->CanonicalizationMethod);
  16735. exiFrag->CanonicalizationMethod_isUsed = 1u;
  16736. break;
  16737. case 14:
  16738. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) */
  16739. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  16740. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16741. if(errn == 0) {
  16742. if(eventCode == 0) {
  16743. errn = decodeUnsignedInteger16(stream, &exiFrag->Certificate.bytesLen);
  16744. if (errn == 0) {
  16745. errn = (exiFrag->Certificate.bytesLen) <= EXIFragment_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  16746. }
  16747. if (errn == 0) {
  16748. errn = decodeBytes(stream, exiFrag->Certificate.bytesLen, exiFrag->Certificate.bytes);
  16749. }
  16750. exiFrag->Certificate_isUsed = 1u;
  16751. } else {
  16752. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16753. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16754. }
  16755. }
  16756. break;
  16757. case 15:
  16758. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq) */
  16759. errn = decode_iso1CertificateInstallationReqType(stream, &exiFrag->CertificateInstallationReq);
  16760. exiFrag->CertificateInstallationReq_isUsed = 1u;
  16761. break;
  16762. case 16:
  16763. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes) */
  16764. errn = decode_iso1CertificateInstallationResType(stream, &exiFrag->CertificateInstallationRes);
  16765. exiFrag->CertificateInstallationRes_isUsed = 1u;
  16766. break;
  16767. case 17:
  16768. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq) */
  16769. errn = decode_iso1CertificateUpdateReqType(stream, &exiFrag->CertificateUpdateReq);
  16770. exiFrag->CertificateUpdateReq_isUsed = 1u;
  16771. break;
  16772. case 18:
  16773. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes) */
  16774. errn = decode_iso1CertificateUpdateResType(stream, &exiFrag->CertificateUpdateRes);
  16775. exiFrag->CertificateUpdateRes_isUsed = 1u;
  16776. break;
  16777. case 19:
  16778. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq) */
  16779. errn = decode_iso1ChargeParameterDiscoveryReqType(stream, &exiFrag->ChargeParameterDiscoveryReq);
  16780. exiFrag->ChargeParameterDiscoveryReq_isUsed = 1u;
  16781. break;
  16782. case 20:
  16783. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes) */
  16784. errn = decode_iso1ChargeParameterDiscoveryResType(stream, &exiFrag->ChargeParameterDiscoveryRes);
  16785. exiFrag->ChargeParameterDiscoveryRes_isUsed = 1u;
  16786. break;
  16787. case 21:
  16788. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress) */
  16789. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  16790. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16791. if(errn == 0) {
  16792. if(eventCode == 0) {
  16793. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  16794. exiFrag->ChargeProgress = (iso1chargeProgressType) uint32;
  16795. exiFrag->ChargeProgress_isUsed = 1u;
  16796. } else {
  16797. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16798. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16799. }
  16800. }
  16801. break;
  16802. case 22:
  16803. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService) */
  16804. errn = decode_iso1ChargeServiceType(stream, &exiFrag->ChargeService);
  16805. exiFrag->ChargeService_isUsed = 1u;
  16806. break;
  16807. case 23:
  16808. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) */
  16809. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  16810. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16811. if(errn == 0) {
  16812. if(eventCode == 0) {
  16813. errn = decodeBoolean(stream, &exiFrag->ChargingComplete);
  16814. exiFrag->ChargingComplete_isUsed = 1u;
  16815. } else {
  16816. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16817. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16818. }
  16819. }
  16820. break;
  16821. case 24:
  16822. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete) */
  16823. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  16824. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16825. if(errn == 0) {
  16826. if(eventCode == 0) {
  16827. errn = decodeBoolean(stream, &exiFrag->ChargingComplete);
  16828. exiFrag->ChargingComplete_isUsed = 1u;
  16829. } else {
  16830. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16831. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16832. }
  16833. }
  16834. break;
  16835. case 25:
  16836. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile) */
  16837. errn = decode_iso1ChargingProfileType(stream, &exiFrag->ChargingProfile);
  16838. exiFrag->ChargingProfile_isUsed = 1u;
  16839. break;
  16840. case 26:
  16841. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse) */
  16842. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  16843. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16844. if(errn == 0) {
  16845. if(eventCode == 0) {
  16846. errn = decodeNBitUnsignedInteger(stream, 2, &(uint32));
  16847. exiFrag->ChargingProfileEntryMaxNumberOfPhasesInUse = (int8_t)(uint32 + 1);
  16848. exiFrag->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 1u;
  16849. } else {
  16850. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16851. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16852. }
  16853. }
  16854. break;
  16855. case 27:
  16856. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower) */
  16857. errn = decode_iso1PhysicalValueType(stream, &exiFrag->ChargingProfileEntryMaxPower);
  16858. exiFrag->ChargingProfileEntryMaxPower_isUsed = 1u;
  16859. break;
  16860. case 28:
  16861. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart) */
  16862. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  16863. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16864. if(errn == 0) {
  16865. if(eventCode == 0) {
  16866. errn = decodeUnsignedInteger32(stream, &exiFrag->ChargingProfileEntryStart);
  16867. exiFrag->ChargingProfileEntryStart_isUsed = 1u;
  16868. } else {
  16869. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16870. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16871. }
  16872. }
  16873. break;
  16874. case 29:
  16875. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession) */
  16876. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  16877. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16878. if(errn == 0) {
  16879. if(eventCode == 0) {
  16880. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  16881. exiFrag->ChargingSession = (iso1chargingSessionType) uint32;
  16882. exiFrag->ChargingSession_isUsed = 1u;
  16883. } else {
  16884. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16885. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16886. }
  16887. }
  16888. break;
  16889. case 30:
  16890. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq) */
  16891. errn = decode_iso1ChargingStatusReqType(stream, &exiFrag->ChargingStatusReq);
  16892. exiFrag->ChargingStatusReq_isUsed = 1u;
  16893. break;
  16894. case 31:
  16895. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes) */
  16896. errn = decode_iso1ChargingStatusResType(stream, &exiFrag->ChargingStatusRes);
  16897. exiFrag->ChargingStatusRes_isUsed = 1u;
  16898. break;
  16899. case 32:
  16900. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost) */
  16901. errn = decode_iso1ConsumptionCostType(stream, &exiFrag->ConsumptionCost);
  16902. exiFrag->ConsumptionCost_isUsed = 1u;
  16903. break;
  16904. case 33:
  16905. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain) */
  16906. errn = decode_iso1CertificateChainType(stream, &exiFrag->ContractSignatureCertChain);
  16907. exiFrag->ContractSignatureCertChain_isUsed = 1u;
  16908. break;
  16909. case 34:
  16910. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey) */
  16911. errn = decode_iso1ContractSignatureEncryptedPrivateKeyType(stream, &exiFrag->ContractSignatureEncryptedPrivateKey);
  16912. exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 1u;
  16913. break;
  16914. case 35:
  16915. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost) */
  16916. errn = decode_iso1CostType(stream, &exiFrag->Cost);
  16917. exiFrag->Cost_isUsed = 1u;
  16918. break;
  16919. case 36:
  16920. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq) */
  16921. errn = decode_iso1CurrentDemandReqType(stream, &exiFrag->CurrentDemandReq);
  16922. exiFrag->CurrentDemandReq_isUsed = 1u;
  16923. break;
  16924. case 37:
  16925. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes) */
  16926. errn = decode_iso1CurrentDemandResType(stream, &exiFrag->CurrentDemandRes);
  16927. exiFrag->CurrentDemandRes_isUsed = 1u;
  16928. break;
  16929. case 38:
  16930. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter) */
  16931. errn = decode_iso1DC_EVChargeParameterType(stream, &exiFrag->DC_EVChargeParameter);
  16932. exiFrag->DC_EVChargeParameter_isUsed = 1u;
  16933. break;
  16934. case 39:
  16935. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter) */
  16936. errn = decode_iso1DC_EVPowerDeliveryParameterType(stream, &exiFrag->DC_EVPowerDeliveryParameter);
  16937. exiFrag->DC_EVPowerDeliveryParameter_isUsed = 1u;
  16938. break;
  16939. case 40:
  16940. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter) */
  16941. errn = decode_iso1DC_EVSEChargeParameterType(stream, &exiFrag->DC_EVSEChargeParameter);
  16942. exiFrag->DC_EVSEChargeParameter_isUsed = 1u;
  16943. break;
  16944. case 41:
  16945. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus) */
  16946. errn = decode_iso1DC_EVSEStatusType(stream, &exiFrag->DC_EVSEStatus);
  16947. exiFrag->DC_EVSEStatus_isUsed = 1u;
  16948. break;
  16949. case 42:
  16950. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus) */
  16951. errn = decode_iso1DC_EVSEStatusType(stream, &exiFrag->DC_EVSEStatus);
  16952. exiFrag->DC_EVSEStatus_isUsed = 1u;
  16953. break;
  16954. case 43:
  16955. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus) */
  16956. errn = decode_iso1DC_EVStatusType(stream, &exiFrag->DC_EVStatus);
  16957. exiFrag->DC_EVStatus_isUsed = 1u;
  16958. break;
  16959. case 44:
  16960. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus) */
  16961. errn = decode_iso1DC_EVStatusType(stream, &exiFrag->DC_EVStatus);
  16962. exiFrag->DC_EVStatus_isUsed = 1u;
  16963. break;
  16964. case 45:
  16965. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey) */
  16966. errn = decode_iso1DiffieHellmanPublickeyType(stream, &exiFrag->DHpublickey);
  16967. exiFrag->DHpublickey_isUsed = 1u;
  16968. break;
  16969. case 46:
  16970. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */
  16971. errn = decode_iso1DSAKeyValueType(stream, &exiFrag->DSAKeyValue);
  16972. exiFrag->DSAKeyValue_isUsed = 1u;
  16973. break;
  16974. case 47:
  16975. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) */
  16976. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  16977. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16978. if(errn == 0) {
  16979. if(eventCode == 0) {
  16980. errn = decodeUnsignedInteger32(stream, &exiFrag->DepartureTime);
  16981. exiFrag->DepartureTime_isUsed = 1u;
  16982. } else {
  16983. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  16984. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  16985. }
  16986. }
  16987. break;
  16988. case 48:
  16989. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */
  16990. errn = decode_iso1DigestMethodType(stream, &exiFrag->DigestMethod);
  16991. exiFrag->DigestMethod_isUsed = 1u;
  16992. break;
  16993. case 49:
  16994. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */
  16995. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  16996. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  16997. if(errn == 0) {
  16998. if(eventCode == 0) {
  16999. errn = decodeUnsignedInteger16(stream, &exiFrag->DigestValue.bytesLen);
  17000. if (errn == 0) {
  17001. errn = (exiFrag->DigestValue.bytesLen) <= EXIFragment_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17002. }
  17003. if (errn == 0) {
  17004. errn = decodeBytes(stream, exiFrag->DigestValue.bytesLen, exiFrag->DigestValue.bytes);
  17005. }
  17006. exiFrag->DigestValue_isUsed = 1u;
  17007. } else {
  17008. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17009. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17010. }
  17011. }
  17012. break;
  17013. case 50:
  17014. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount) */
  17015. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EAmount);
  17016. exiFrag->EAmount_isUsed = 1u;
  17017. break;
  17018. case 51:
  17019. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel) */
  17020. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  17021. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17022. if(errn == 0) {
  17023. if(eventCode == 0) {
  17024. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  17025. exiFrag->EPriceLevel = (uint8_t)(uint32 + 0);
  17026. exiFrag->EPriceLevel_isUsed = 1u;
  17027. } else {
  17028. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17029. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17030. }
  17031. }
  17032. break;
  17033. case 52:
  17034. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID) */
  17035. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  17036. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17037. if(errn == 0) {
  17038. if(eventCode == 0) {
  17039. errn = decodeUnsignedInteger16(stream, &exiFrag->EVCCID.bytesLen);
  17040. if (errn == 0) {
  17041. errn = (exiFrag->EVCCID.bytesLen) <= EXIFragment_EVCCID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17042. }
  17043. if (errn == 0) {
  17044. errn = decodeBytes(stream, exiFrag->EVCCID.bytesLen, exiFrag->EVCCID.bytes);
  17045. }
  17046. exiFrag->EVCCID_isUsed = 1u;
  17047. } else {
  17048. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17049. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17050. }
  17051. }
  17052. break;
  17053. case 53:
  17054. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter) */
  17055. errn = decode_iso1EVChargeParameterType(stream, &exiFrag->EVChargeParameter);
  17056. exiFrag->EVChargeParameter_isUsed = 1u;
  17057. break;
  17058. case 54:
  17059. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity) */
  17060. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVEnergyCapacity);
  17061. exiFrag->EVEnergyCapacity_isUsed = 1u;
  17062. break;
  17063. case 55:
  17064. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest) */
  17065. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVEnergyRequest);
  17066. exiFrag->EVEnergyRequest_isUsed = 1u;
  17067. break;
  17068. case 56:
  17069. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode) */
  17070. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17071. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17072. if(errn == 0) {
  17073. if(eventCode == 0) {
  17074. errn = decodeNBitUnsignedInteger(stream, 4, &uint32);
  17075. exiFrag->EVErrorCode = (iso1DC_EVErrorCodeType) uint32;
  17076. exiFrag->EVErrorCode_isUsed = 1u;
  17077. } else {
  17078. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17079. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17080. }
  17081. }
  17082. break;
  17083. case 57:
  17084. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent) */
  17085. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaxCurrent);
  17086. exiFrag->EVMaxCurrent_isUsed = 1u;
  17087. break;
  17088. case 58:
  17089. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage) */
  17090. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaxVoltage);
  17091. exiFrag->EVMaxVoltage_isUsed = 1u;
  17092. break;
  17093. case 59:
  17094. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit) */
  17095. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumCurrentLimit);
  17096. exiFrag->EVMaximumCurrentLimit_isUsed = 1u;
  17097. break;
  17098. case 60:
  17099. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit) */
  17100. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumCurrentLimit);
  17101. exiFrag->EVMaximumCurrentLimit_isUsed = 1u;
  17102. break;
  17103. case 61:
  17104. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit) */
  17105. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumPowerLimit);
  17106. exiFrag->EVMaximumPowerLimit_isUsed = 1u;
  17107. break;
  17108. case 62:
  17109. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit) */
  17110. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumPowerLimit);
  17111. exiFrag->EVMaximumPowerLimit_isUsed = 1u;
  17112. break;
  17113. case 63:
  17114. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit) */
  17115. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumVoltageLimit);
  17116. exiFrag->EVMaximumVoltageLimit_isUsed = 1u;
  17117. break;
  17118. case 64:
  17119. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit) */
  17120. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMaximumVoltageLimit);
  17121. exiFrag->EVMaximumVoltageLimit_isUsed = 1u;
  17122. break;
  17123. case 65:
  17124. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent) */
  17125. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVMinCurrent);
  17126. exiFrag->EVMinCurrent_isUsed = 1u;
  17127. break;
  17128. case 66:
  17129. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter) */
  17130. errn = decode_iso1EVPowerDeliveryParameterType(stream, &exiFrag->EVPowerDeliveryParameter);
  17131. exiFrag->EVPowerDeliveryParameter_isUsed = 1u;
  17132. break;
  17133. case 67:
  17134. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC) */
  17135. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  17136. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17137. if(errn == 0) {
  17138. if(eventCode == 0) {
  17139. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  17140. exiFrag->EVRESSSOC = (int8_t)(uint32 + 0);
  17141. exiFrag->EVRESSSOC_isUsed = 1u;
  17142. } else {
  17143. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17144. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17145. }
  17146. }
  17147. break;
  17148. case 68:
  17149. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady) */
  17150. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  17151. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17152. if(errn == 0) {
  17153. if(eventCode == 0) {
  17154. errn = decodeBoolean(stream, &exiFrag->EVReady);
  17155. exiFrag->EVReady_isUsed = 1u;
  17156. } else {
  17157. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17158. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17159. }
  17160. }
  17161. break;
  17162. case 69:
  17163. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter) */
  17164. errn = decode_iso1EVSEChargeParameterType(stream, &exiFrag->EVSEChargeParameter);
  17165. exiFrag->EVSEChargeParameter_isUsed = 1u;
  17166. break;
  17167. case 70:
  17168. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved) */
  17169. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  17170. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17171. if(errn == 0) {
  17172. if(eventCode == 0) {
  17173. errn = decodeBoolean(stream, &exiFrag->EVSECurrentLimitAchieved);
  17174. exiFrag->EVSECurrentLimitAchieved_isUsed = 1u;
  17175. } else {
  17176. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17177. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17178. }
  17179. }
  17180. break;
  17181. case 71:
  17182. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance) */
  17183. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSECurrentRegulationTolerance);
  17184. exiFrag->EVSECurrentRegulationTolerance_isUsed = 1u;
  17185. break;
  17186. case 72:
  17187. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered) */
  17188. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEEnergyToBeDelivered);
  17189. exiFrag->EVSEEnergyToBeDelivered_isUsed = 1u;
  17190. break;
  17191. case 73:
  17192. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) */
  17193. /* FirstStartTag[CHARACTERS[STRING]] */
  17194. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17195. if(errn == 0) {
  17196. if(eventCode == 0) {
  17197. errn = decodeUnsignedInteger16(stream, &exiFrag->EVSEID.charactersLen);
  17198. if (errn == 0) {
  17199. if (exiFrag->EVSEID.charactersLen >= 2) {
  17200. exiFrag->EVSEID.charactersLen = (uint16_t)(exiFrag->EVSEID.charactersLen - 2); /* string table miss */
  17201. errn = decodeCharacters(stream, exiFrag->EVSEID.charactersLen, exiFrag->EVSEID.characters, EXIFragment_EVSEID_CHARACTERS_SIZE);
  17202. } else {
  17203. /* string table hit */
  17204. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  17205. }
  17206. }
  17207. exiFrag->EVSEID_isUsed = 1u;
  17208. } else {
  17209. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17210. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17211. }
  17212. }
  17213. break;
  17214. case 74:
  17215. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus) */
  17216. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17217. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17218. if(errn == 0) {
  17219. if(eventCode == 0) {
  17220. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  17221. exiFrag->EVSEIsolationStatus = (iso1isolationLevelType) uint32;
  17222. exiFrag->EVSEIsolationStatus_isUsed = 1u;
  17223. } else {
  17224. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17225. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17226. }
  17227. }
  17228. break;
  17229. case 75:
  17230. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent) */
  17231. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaxCurrent);
  17232. exiFrag->EVSEMaxCurrent_isUsed = 1u;
  17233. break;
  17234. case 76:
  17235. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent) */
  17236. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaxCurrent);
  17237. exiFrag->EVSEMaxCurrent_isUsed = 1u;
  17238. break;
  17239. case 77:
  17240. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit) */
  17241. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumCurrentLimit);
  17242. exiFrag->EVSEMaximumCurrentLimit_isUsed = 1u;
  17243. break;
  17244. case 78:
  17245. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit) */
  17246. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumCurrentLimit);
  17247. exiFrag->EVSEMaximumCurrentLimit_isUsed = 1u;
  17248. break;
  17249. case 79:
  17250. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit) */
  17251. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumPowerLimit);
  17252. exiFrag->EVSEMaximumPowerLimit_isUsed = 1u;
  17253. break;
  17254. case 80:
  17255. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit) */
  17256. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumPowerLimit);
  17257. exiFrag->EVSEMaximumPowerLimit_isUsed = 1u;
  17258. break;
  17259. case 81:
  17260. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit) */
  17261. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumVoltageLimit);
  17262. exiFrag->EVSEMaximumVoltageLimit_isUsed = 1u;
  17263. break;
  17264. case 82:
  17265. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit) */
  17266. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMaximumVoltageLimit);
  17267. exiFrag->EVSEMaximumVoltageLimit_isUsed = 1u;
  17268. break;
  17269. case 83:
  17270. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit) */
  17271. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMinimumCurrentLimit);
  17272. exiFrag->EVSEMinimumCurrentLimit_isUsed = 1u;
  17273. break;
  17274. case 84:
  17275. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit) */
  17276. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEMinimumVoltageLimit);
  17277. exiFrag->EVSEMinimumVoltageLimit_isUsed = 1u;
  17278. break;
  17279. case 85:
  17280. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage) */
  17281. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSENominalVoltage);
  17282. exiFrag->EVSENominalVoltage_isUsed = 1u;
  17283. break;
  17284. case 86:
  17285. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) */
  17286. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17287. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17288. if(errn == 0) {
  17289. if(eventCode == 0) {
  17290. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  17291. exiFrag->EVSENotification = (iso1EVSENotificationType) uint32;
  17292. exiFrag->EVSENotification_isUsed = 1u;
  17293. } else {
  17294. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17295. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17296. }
  17297. }
  17298. break;
  17299. case 87:
  17300. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple) */
  17301. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEPeakCurrentRipple);
  17302. exiFrag->EVSEPeakCurrentRipple_isUsed = 1u;
  17303. break;
  17304. case 88:
  17305. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved) */
  17306. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  17307. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17308. if(errn == 0) {
  17309. if(eventCode == 0) {
  17310. errn = decodeBoolean(stream, &exiFrag->EVSEPowerLimitAchieved);
  17311. exiFrag->EVSEPowerLimitAchieved_isUsed = 1u;
  17312. } else {
  17313. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17314. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17315. }
  17316. }
  17317. break;
  17318. case 89:
  17319. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent) */
  17320. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEPresentCurrent);
  17321. exiFrag->EVSEPresentCurrent_isUsed = 1u;
  17322. break;
  17323. case 90:
  17324. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage) */
  17325. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVSEPresentVoltage);
  17326. exiFrag->EVSEPresentVoltage_isUsed = 1u;
  17327. break;
  17328. case 91:
  17329. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) */
  17330. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17331. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17332. if(errn == 0) {
  17333. if(eventCode == 0) {
  17334. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  17335. exiFrag->EVSEProcessing = (iso1EVSEProcessingType) uint32;
  17336. exiFrag->EVSEProcessing_isUsed = 1u;
  17337. } else {
  17338. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17339. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17340. }
  17341. }
  17342. break;
  17343. case 92:
  17344. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus) */
  17345. errn = decode_iso1EVSEStatusType(stream, &exiFrag->EVSEStatus);
  17346. exiFrag->EVSEStatus_isUsed = 1u;
  17347. break;
  17348. case 93:
  17349. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode) */
  17350. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17351. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17352. if(errn == 0) {
  17353. if(eventCode == 0) {
  17354. errn = decodeNBitUnsignedInteger(stream, 4, &uint32);
  17355. exiFrag->EVSEStatusCode = (iso1DC_EVSEStatusCodeType) uint32;
  17356. exiFrag->EVSEStatusCode_isUsed = 1u;
  17357. } else {
  17358. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17359. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17360. }
  17361. }
  17362. break;
  17363. case 94:
  17364. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp) */
  17365. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  17366. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17367. if(errn == 0) {
  17368. if(eventCode == 0) {
  17369. errn = decodeInteger64(stream, &exiFrag->EVSETimeStamp);
  17370. exiFrag->EVSETimeStamp_isUsed = 1u;
  17371. } else {
  17372. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17373. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17374. }
  17375. }
  17376. break;
  17377. case 95:
  17378. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved) */
  17379. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  17380. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17381. if(errn == 0) {
  17382. if(eventCode == 0) {
  17383. errn = decodeBoolean(stream, &exiFrag->EVSEVoltageLimitAchieved);
  17384. exiFrag->EVSEVoltageLimitAchieved_isUsed = 1u;
  17385. } else {
  17386. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17387. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17388. }
  17389. }
  17390. break;
  17391. case 96:
  17392. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus) */
  17393. errn = decode_iso1EVStatusType(stream, &exiFrag->EVStatus);
  17394. exiFrag->EVStatus_isUsed = 1u;
  17395. break;
  17396. case 97:
  17397. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent) */
  17398. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVTargetCurrent);
  17399. exiFrag->EVTargetCurrent_isUsed = 1u;
  17400. break;
  17401. case 98:
  17402. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage) */
  17403. errn = decode_iso1PhysicalValueType(stream, &exiFrag->EVTargetVoltage);
  17404. exiFrag->EVTargetVoltage_isUsed = 1u;
  17405. break;
  17406. case 99:
  17407. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) */
  17408. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17409. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17410. if(errn == 0) {
  17411. if(eventCode == 0) {
  17412. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  17413. exiFrag->EnergyTransferMode = (iso1EnergyTransferModeType) uint32;
  17414. exiFrag->EnergyTransferMode_isUsed = 1u;
  17415. } else {
  17416. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17417. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17418. }
  17419. }
  17420. break;
  17421. case 100:
  17422. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry) */
  17423. errn = decode_iso1EntryType(stream, &exiFrag->Entry);
  17424. exiFrag->Entry_isUsed = 1u;
  17425. break;
  17426. case 101:
  17427. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent) */
  17428. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17429. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17430. if(errn == 0) {
  17431. if(eventCode == 0) {
  17432. errn = decodeUnsignedInteger16(stream, &exiFrag->Exponent.bytesLen);
  17433. if (errn == 0) {
  17434. errn = (exiFrag->Exponent.bytesLen) <= EXIFragment_Exponent_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17435. }
  17436. if (errn == 0) {
  17437. errn = decodeBytes(stream, exiFrag->Exponent.bytesLen, exiFrag->Exponent.bytes);
  17438. }
  17439. exiFrag->Exponent_isUsed = 1u;
  17440. } else {
  17441. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17442. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17443. }
  17444. }
  17445. break;
  17446. case 102:
  17447. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode) */
  17448. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17449. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17450. if(errn == 0) {
  17451. if(eventCode == 0) {
  17452. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  17453. exiFrag->FaultCode = (iso1faultCodeType) uint32;
  17454. exiFrag->FaultCode_isUsed = 1u;
  17455. } else {
  17456. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17457. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17458. }
  17459. }
  17460. break;
  17461. case 103:
  17462. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg) */
  17463. /* FirstStartTag[CHARACTERS[STRING]] */
  17464. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17465. if(errn == 0) {
  17466. if(eventCode == 0) {
  17467. errn = decodeUnsignedInteger16(stream, &exiFrag->FaultMsg.charactersLen);
  17468. if (errn == 0) {
  17469. if (exiFrag->FaultMsg.charactersLen >= 2) {
  17470. exiFrag->FaultMsg.charactersLen = (uint16_t)(exiFrag->FaultMsg.charactersLen - 2); /* string table miss */
  17471. errn = decodeCharacters(stream, exiFrag->FaultMsg.charactersLen, exiFrag->FaultMsg.characters, EXIFragment_FaultMsg_CHARACTERS_SIZE);
  17472. } else {
  17473. /* string table hit */
  17474. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  17475. }
  17476. }
  17477. exiFrag->FaultMsg_isUsed = 1u;
  17478. } else {
  17479. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17480. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17481. }
  17482. }
  17483. break;
  17484. case 104:
  17485. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) */
  17486. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  17487. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17488. if(errn == 0) {
  17489. if(eventCode == 0) {
  17490. errn = decodeBoolean(stream, &exiFrag->FreeService);
  17491. exiFrag->FreeService_isUsed = 1u;
  17492. } else {
  17493. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17494. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17495. }
  17496. }
  17497. break;
  17498. case 105:
  17499. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) */
  17500. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  17501. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17502. if(errn == 0) {
  17503. if(eventCode == 0) {
  17504. errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
  17505. exiFrag->FullSOC = (int8_t)(uint32 + 0);
  17506. exiFrag->FullSOC_isUsed = 1u;
  17507. } else {
  17508. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17509. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17510. }
  17511. }
  17512. break;
  17513. case 106:
  17514. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) */
  17515. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17516. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17517. if(errn == 0) {
  17518. if(eventCode == 0) {
  17519. errn = decodeUnsignedInteger16(stream, &exiFrag->G.bytesLen);
  17520. if (errn == 0) {
  17521. errn = (exiFrag->G.bytesLen) <= EXIFragment_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17522. }
  17523. if (errn == 0) {
  17524. errn = decodeBytes(stream, exiFrag->G.bytesLen, exiFrag->G.bytes);
  17525. }
  17526. exiFrag->G_isUsed = 1u;
  17527. } else {
  17528. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17529. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17530. }
  17531. }
  17532. break;
  17533. case 107:
  17534. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) */
  17535. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17536. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17537. if(errn == 0) {
  17538. if(eventCode == 0) {
  17539. errn = decodeUnsignedInteger16(stream, &exiFrag->GenChallenge.bytesLen);
  17540. if (errn == 0) {
  17541. errn = (exiFrag->GenChallenge.bytesLen) <= EXIFragment_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17542. }
  17543. if (errn == 0) {
  17544. errn = decodeBytes(stream, exiFrag->GenChallenge.bytesLen, exiFrag->GenChallenge.bytes);
  17545. }
  17546. exiFrag->GenChallenge_isUsed = 1u;
  17547. } else {
  17548. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17549. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17550. }
  17551. }
  17552. break;
  17553. case 108:
  17554. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) */
  17555. /* FirstStartTag[CHARACTERS[INTEGER]] */
  17556. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17557. if(errn == 0) {
  17558. if(eventCode == 0) {
  17559. errn = decodeInteger64(stream, &exiFrag->HMACOutputLength);
  17560. exiFrag->HMACOutputLength_isUsed = 1u;
  17561. } else {
  17562. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17563. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17564. }
  17565. }
  17566. break;
  17567. case 109:
  17568. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header) */
  17569. errn = decode_iso1MessageHeaderType(stream, &exiFrag->Header);
  17570. exiFrag->Header_isUsed = 1u;
  17571. break;
  17572. case 110:
  17573. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J) */
  17574. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17575. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17576. if(errn == 0) {
  17577. if(eventCode == 0) {
  17578. errn = decodeUnsignedInteger16(stream, &exiFrag->J.bytesLen);
  17579. if (errn == 0) {
  17580. errn = (exiFrag->J.bytesLen) <= EXIFragment_J_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17581. }
  17582. if (errn == 0) {
  17583. errn = decodeBytes(stream, exiFrag->J.bytesLen, exiFrag->J.bytes);
  17584. }
  17585. exiFrag->J_isUsed = 1u;
  17586. } else {
  17587. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17588. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17589. }
  17590. }
  17591. break;
  17592. case 111:
  17593. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */
  17594. errn = decode_iso1KeyInfoType(stream, &exiFrag->KeyInfo);
  17595. exiFrag->KeyInfo_isUsed = 1u;
  17596. break;
  17597. case 112:
  17598. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */
  17599. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  17600. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17601. if(errn == 0) {
  17602. if(eventCode == 0) {
  17603. errn = decodeUnsignedInteger16(stream, &exiFrag->KeyName.charactersLen);
  17604. if (errn == 0) {
  17605. if (exiFrag->KeyName.charactersLen >= 2) {
  17606. exiFrag->KeyName.charactersLen = (uint16_t)(exiFrag->KeyName.charactersLen - 2); /* string table miss */
  17607. errn = decodeCharacters(stream, exiFrag->KeyName.charactersLen, exiFrag->KeyName.characters, EXIFragment_KeyName_CHARACTERS_SIZE);
  17608. } else {
  17609. /* string table hit */
  17610. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  17611. }
  17612. }
  17613. exiFrag->KeyName_isUsed = 1u;
  17614. } else {
  17615. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17616. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17617. }
  17618. }
  17619. break;
  17620. case 113:
  17621. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */
  17622. errn = decode_iso1KeyValueType(stream, &exiFrag->KeyValue);
  17623. exiFrag->KeyValue_isUsed = 1u;
  17624. break;
  17625. case 114:
  17626. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs) */
  17627. errn = decode_iso1ListOfRootCertificateIDsType(stream, &exiFrag->ListOfRootCertificateIDs);
  17628. exiFrag->ListOfRootCertificateIDs_isUsed = 1u;
  17629. break;
  17630. case 115:
  17631. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */
  17632. errn = decode_iso1ManifestType(stream, &exiFrag->Manifest);
  17633. exiFrag->Manifest_isUsed = 1u;
  17634. break;
  17635. case 116:
  17636. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple) */
  17637. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  17638. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17639. if(errn == 0) {
  17640. if(eventCode == 0) {
  17641. errn = decodeUnsignedInteger16(stream, &exiFrag->MaxEntriesSAScheduleTuple);
  17642. exiFrag->MaxEntriesSAScheduleTuple_isUsed = 1u;
  17643. } else {
  17644. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17645. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17646. }
  17647. }
  17648. break;
  17649. case 117:
  17650. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID) */
  17651. /* FirstStartTag[CHARACTERS[STRING]] */
  17652. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17653. if(errn == 0) {
  17654. if(eventCode == 0) {
  17655. errn = decodeUnsignedInteger16(stream, &exiFrag->MeterID.charactersLen);
  17656. if (errn == 0) {
  17657. if (exiFrag->MeterID.charactersLen >= 2) {
  17658. exiFrag->MeterID.charactersLen = (uint16_t)(exiFrag->MeterID.charactersLen - 2); /* string table miss */
  17659. errn = decodeCharacters(stream, exiFrag->MeterID.charactersLen, exiFrag->MeterID.characters, EXIFragment_MeterID_CHARACTERS_SIZE);
  17660. } else {
  17661. /* string table hit */
  17662. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  17663. }
  17664. }
  17665. exiFrag->MeterID_isUsed = 1u;
  17666. } else {
  17667. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17668. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17669. }
  17670. }
  17671. break;
  17672. case 118:
  17673. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo) */
  17674. errn = decode_iso1MeterInfoType(stream, &exiFrag->MeterInfo);
  17675. exiFrag->MeterInfo_isUsed = 1u;
  17676. break;
  17677. case 119:
  17678. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading) */
  17679. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  17680. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17681. if(errn == 0) {
  17682. if(eventCode == 0) {
  17683. errn = decodeUnsignedInteger64(stream, &exiFrag->MeterReading);
  17684. exiFrag->MeterReading_isUsed = 1u;
  17685. } else {
  17686. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17687. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17688. }
  17689. }
  17690. break;
  17691. case 120:
  17692. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) */
  17693. /* FirstStartTag[CHARACTERS[INTEGER]] */
  17694. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17695. if(errn == 0) {
  17696. if(eventCode == 0) {
  17697. errn = decodeInteger16(stream, &exiFrag->MeterStatus);
  17698. exiFrag->MeterStatus_isUsed = 1u;
  17699. } else {
  17700. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17701. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17702. }
  17703. }
  17704. break;
  17705. case 121:
  17706. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq) */
  17707. errn = decode_iso1MeteringReceiptReqType(stream, &exiFrag->MeteringReceiptReq);
  17708. exiFrag->MeteringReceiptReq_isUsed = 1u;
  17709. break;
  17710. case 122:
  17711. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes) */
  17712. errn = decode_iso1MeteringReceiptResType(stream, &exiFrag->MeteringReceiptRes);
  17713. exiFrag->MeteringReceiptRes_isUsed = 1u;
  17714. break;
  17715. case 123:
  17716. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */
  17717. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  17718. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17719. if(errn == 0) {
  17720. if(eventCode == 0) {
  17721. errn = decodeUnsignedInteger16(stream, &exiFrag->MgmtData.charactersLen);
  17722. if (errn == 0) {
  17723. if (exiFrag->MgmtData.charactersLen >= 2) {
  17724. exiFrag->MgmtData.charactersLen = (uint16_t)(exiFrag->MgmtData.charactersLen - 2); /* string table miss */
  17725. errn = decodeCharacters(stream, exiFrag->MgmtData.charactersLen, exiFrag->MgmtData.characters, EXIFragment_MgmtData_CHARACTERS_SIZE);
  17726. } else {
  17727. /* string table hit */
  17728. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  17729. }
  17730. }
  17731. exiFrag->MgmtData_isUsed = 1u;
  17732. } else {
  17733. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17734. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17735. }
  17736. }
  17737. break;
  17738. case 124:
  17739. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus) */
  17740. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17741. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17742. if(errn == 0) {
  17743. if(eventCode == 0) {
  17744. errn = decodeUnsignedInteger16(stream, &exiFrag->Modulus.bytesLen);
  17745. if (errn == 0) {
  17746. errn = (exiFrag->Modulus.bytesLen) <= EXIFragment_Modulus_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17747. }
  17748. if (errn == 0) {
  17749. errn = decodeBytes(stream, exiFrag->Modulus.bytesLen, exiFrag->Modulus.bytes);
  17750. }
  17751. exiFrag->Modulus_isUsed = 1u;
  17752. } else {
  17753. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17754. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17755. }
  17756. }
  17757. break;
  17758. case 125:
  17759. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier) */
  17760. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  17761. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17762. if(errn == 0) {
  17763. if(eventCode == 0) {
  17764. errn = decodeNBitUnsignedInteger(stream, 3, &(uint32));
  17765. exiFrag->Multiplier = (int8_t)(uint32 -3);
  17766. exiFrag->Multiplier_isUsed = 1u;
  17767. } else {
  17768. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17769. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17770. }
  17771. }
  17772. break;
  17773. case 126:
  17774. /* START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification) */
  17775. errn = decode_iso1NotificationType(stream, &exiFrag->Notification);
  17776. exiFrag->Notification_isUsed = 1u;
  17777. break;
  17778. case 127:
  17779. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) */
  17780. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  17781. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17782. if(errn == 0) {
  17783. if(eventCode == 0) {
  17784. errn = decodeUnsignedInteger16(stream, &exiFrag->NotificationMaxDelay);
  17785. exiFrag->NotificationMaxDelay_isUsed = 1u;
  17786. } else {
  17787. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17788. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17789. }
  17790. }
  17791. break;
  17792. case 128:
  17793. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels) */
  17794. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  17795. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17796. if(errn == 0) {
  17797. if(eventCode == 0) {
  17798. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  17799. exiFrag->NumEPriceLevels = (uint8_t)(uint32 + 0);
  17800. exiFrag->NumEPriceLevels_isUsed = 1u;
  17801. } else {
  17802. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17803. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17804. }
  17805. }
  17806. break;
  17807. case 129:
  17808. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert) */
  17809. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17810. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17811. if(errn == 0) {
  17812. if(eventCode == 0) {
  17813. errn = decodeUnsignedInteger16(stream, &exiFrag->OEMProvisioningCert.bytesLen);
  17814. if (errn == 0) {
  17815. errn = (exiFrag->OEMProvisioningCert.bytesLen) <= EXIFragment_OEMProvisioningCert_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17816. }
  17817. if (errn == 0) {
  17818. errn = decodeBytes(stream, exiFrag->OEMProvisioningCert.bytesLen, exiFrag->OEMProvisioningCert.bytes);
  17819. }
  17820. exiFrag->OEMProvisioningCert_isUsed = 1u;
  17821. } else {
  17822. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17823. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17824. }
  17825. }
  17826. break;
  17827. case 130:
  17828. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */
  17829. errn = decode_iso1ObjectType(stream, &exiFrag->Object);
  17830. exiFrag->Object_isUsed = 1u;
  17831. break;
  17832. case 131:
  17833. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P) */
  17834. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17835. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17836. if(errn == 0) {
  17837. if(eventCode == 0) {
  17838. errn = decodeUnsignedInteger16(stream, &exiFrag->P.bytesLen);
  17839. if (errn == 0) {
  17840. errn = (exiFrag->P.bytesLen) <= EXIFragment_P_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17841. }
  17842. if (errn == 0) {
  17843. errn = decodeBytes(stream, exiFrag->P.bytesLen, exiFrag->P.bytes);
  17844. }
  17845. exiFrag->P_isUsed = 1u;
  17846. } else {
  17847. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17848. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17849. }
  17850. }
  17851. break;
  17852. case 132:
  17853. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */
  17854. errn = decode_iso1PGPDataType(stream, &exiFrag->PGPData);
  17855. exiFrag->PGPData_isUsed = 1u;
  17856. break;
  17857. case 133:
  17858. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID) */
  17859. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  17860. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17861. if(errn == 0) {
  17862. if(eventCode == 0) {
  17863. errn = decodeUnsignedInteger16(stream, &exiFrag->PGPKeyID.bytesLen);
  17864. if (errn == 0) {
  17865. errn = (exiFrag->PGPKeyID.bytesLen) <= EXIFragment_PGPKeyID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17866. }
  17867. if (errn == 0) {
  17868. errn = decodeBytes(stream, exiFrag->PGPKeyID.bytesLen, exiFrag->PGPKeyID.bytes);
  17869. }
  17870. exiFrag->PGPKeyID_isUsed = 1u;
  17871. } else {
  17872. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17873. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17874. }
  17875. }
  17876. break;
  17877. case 134:
  17878. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) */
  17879. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  17880. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17881. if(errn == 0) {
  17882. if(eventCode == 0) {
  17883. errn = decodeUnsignedInteger16(stream, &exiFrag->PGPKeyPacket.bytesLen);
  17884. if (errn == 0) {
  17885. errn = (exiFrag->PGPKeyPacket.bytesLen) <= EXIFragment_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17886. }
  17887. if (errn == 0) {
  17888. errn = decodeBytes(stream, exiFrag->PGPKeyPacket.bytesLen, exiFrag->PGPKeyPacket.bytes);
  17889. }
  17890. exiFrag->PGPKeyPacket_isUsed = 1u;
  17891. } else {
  17892. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17893. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17894. }
  17895. }
  17896. break;
  17897. case 135:
  17898. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax) */
  17899. errn = decode_iso1PhysicalValueType(stream, &exiFrag->PMax);
  17900. exiFrag->PMax_isUsed = 1u;
  17901. break;
  17902. case 136:
  17903. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule) */
  17904. errn = decode_iso1PMaxScheduleType(stream, &exiFrag->PMaxSchedule);
  17905. exiFrag->PMaxSchedule_isUsed = 1u;
  17906. break;
  17907. case 137:
  17908. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry) */
  17909. errn = decode_iso1PMaxScheduleEntryType(stream, &exiFrag->PMaxScheduleEntry);
  17910. exiFrag->PMaxScheduleEntry_isUsed = 1u;
  17911. break;
  17912. case 138:
  17913. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter) */
  17914. errn = decode_iso1ParameterType(stream, &exiFrag->Parameter);
  17915. exiFrag->Parameter_isUsed = 1u;
  17916. break;
  17917. case 139:
  17918. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet) */
  17919. errn = decode_iso1ParameterSetType(stream, &exiFrag->ParameterSet);
  17920. exiFrag->ParameterSet_isUsed = 1u;
  17921. break;
  17922. case 140:
  17923. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID) */
  17924. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  17925. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17926. if(errn == 0) {
  17927. if(eventCode == 0) {
  17928. errn = decodeInteger16(stream, &exiFrag->ParameterSetID);
  17929. exiFrag->ParameterSetID_isUsed = 1u;
  17930. } else {
  17931. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17932. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17933. }
  17934. }
  17935. break;
  17936. case 141:
  17937. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq) */
  17938. errn = decode_iso1PaymentDetailsReqType(stream, &exiFrag->PaymentDetailsReq);
  17939. exiFrag->PaymentDetailsReq_isUsed = 1u;
  17940. break;
  17941. case 142:
  17942. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes) */
  17943. errn = decode_iso1PaymentDetailsResType(stream, &exiFrag->PaymentDetailsRes);
  17944. exiFrag->PaymentDetailsRes_isUsed = 1u;
  17945. break;
  17946. case 143:
  17947. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption) */
  17948. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  17949. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17950. if(errn == 0) {
  17951. if(eventCode == 0) {
  17952. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  17953. exiFrag->PaymentOption = (iso1paymentOptionType) uint32;
  17954. exiFrag->PaymentOption_isUsed = 1u;
  17955. } else {
  17956. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17957. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17958. }
  17959. }
  17960. break;
  17961. case 144:
  17962. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList) */
  17963. errn = decode_iso1PaymentOptionListType(stream, &exiFrag->PaymentOptionList);
  17964. exiFrag->PaymentOptionList_isUsed = 1u;
  17965. break;
  17966. case 145:
  17967. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq) */
  17968. errn = decode_iso1PaymentServiceSelectionReqType(stream, &exiFrag->PaymentServiceSelectionReq);
  17969. exiFrag->PaymentServiceSelectionReq_isUsed = 1u;
  17970. break;
  17971. case 146:
  17972. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes) */
  17973. errn = decode_iso1PaymentServiceSelectionResType(stream, &exiFrag->PaymentServiceSelectionRes);
  17974. exiFrag->PaymentServiceSelectionRes_isUsed = 1u;
  17975. break;
  17976. case 147:
  17977. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter) */
  17978. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  17979. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  17980. if(errn == 0) {
  17981. if(eventCode == 0) {
  17982. errn = decodeUnsignedInteger16(stream, &exiFrag->PgenCounter.bytesLen);
  17983. if (errn == 0) {
  17984. errn = (exiFrag->PgenCounter.bytesLen) <= EXIFragment_PgenCounter_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  17985. }
  17986. if (errn == 0) {
  17987. errn = decodeBytes(stream, exiFrag->PgenCounter.bytesLen, exiFrag->PgenCounter.bytes);
  17988. }
  17989. exiFrag->PgenCounter_isUsed = 1u;
  17990. } else {
  17991. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  17992. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  17993. }
  17994. }
  17995. break;
  17996. case 148:
  17997. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq) */
  17998. errn = decode_iso1PowerDeliveryReqType(stream, &exiFrag->PowerDeliveryReq);
  17999. exiFrag->PowerDeliveryReq_isUsed = 1u;
  18000. break;
  18001. case 149:
  18002. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes) */
  18003. errn = decode_iso1PowerDeliveryResType(stream, &exiFrag->PowerDeliveryRes);
  18004. exiFrag->PowerDeliveryRes_isUsed = 1u;
  18005. break;
  18006. case 150:
  18007. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq) */
  18008. errn = decode_iso1PreChargeReqType(stream, &exiFrag->PreChargeReq);
  18009. exiFrag->PreChargeReq_isUsed = 1u;
  18010. break;
  18011. case 151:
  18012. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes) */
  18013. errn = decode_iso1PreChargeResType(stream, &exiFrag->PreChargeRes);
  18014. exiFrag->PreChargeRes_isUsed = 1u;
  18015. break;
  18016. case 152:
  18017. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry) */
  18018. errn = decode_iso1ProfileEntryType(stream, &exiFrag->ProfileEntry);
  18019. exiFrag->ProfileEntry_isUsed = 1u;
  18020. break;
  18021. case 153:
  18022. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q) */
  18023. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  18024. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18025. if(errn == 0) {
  18026. if(eventCode == 0) {
  18027. errn = decodeUnsignedInteger16(stream, &exiFrag->Q.bytesLen);
  18028. if (errn == 0) {
  18029. errn = (exiFrag->Q.bytesLen) <= EXIFragment_Q_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18030. }
  18031. if (errn == 0) {
  18032. errn = decodeBytes(stream, exiFrag->Q.bytesLen, exiFrag->Q.bytes);
  18033. }
  18034. exiFrag->Q_isUsed = 1u;
  18035. } else {
  18036. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18037. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18038. }
  18039. }
  18040. break;
  18041. case 154:
  18042. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD) */
  18043. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  18044. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18045. if(errn == 0) {
  18046. if(eventCode == 0) {
  18047. errn = decodeBoolean(stream, &exiFrag->RCD);
  18048. exiFrag->RCD_isUsed = 1u;
  18049. } else {
  18050. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18051. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18052. }
  18053. }
  18054. break;
  18055. case 155:
  18056. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */
  18057. errn = decode_iso1RSAKeyValueType(stream, &exiFrag->RSAKeyValue);
  18058. exiFrag->RSAKeyValue_isUsed = 1u;
  18059. break;
  18060. case 156:
  18061. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) */
  18062. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  18063. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18064. if(errn == 0) {
  18065. if(eventCode == 0) {
  18066. errn = decodeBoolean(stream, &exiFrag->ReceiptRequired);
  18067. exiFrag->ReceiptRequired_isUsed = 1u;
  18068. } else {
  18069. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18070. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18071. }
  18072. }
  18073. break;
  18074. case 157:
  18075. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */
  18076. errn = decode_iso1ReferenceType(stream, &exiFrag->Reference);
  18077. exiFrag->Reference_isUsed = 1u;
  18078. break;
  18079. case 158:
  18080. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval) */
  18081. errn = decode_iso1RelativeTimeIntervalType(stream, &exiFrag->RelativeTimeInterval);
  18082. exiFrag->RelativeTimeInterval_isUsed = 1u;
  18083. break;
  18084. case 159:
  18085. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC) */
  18086. errn = decode_iso1PhysicalValueType(stream, &exiFrag->RemainingTimeToBulkSoC);
  18087. exiFrag->RemainingTimeToBulkSoC_isUsed = 1u;
  18088. break;
  18089. case 160:
  18090. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC) */
  18091. errn = decode_iso1PhysicalValueType(stream, &exiFrag->RemainingTimeToFullSoC);
  18092. exiFrag->RemainingTimeToFullSoC_isUsed = 1u;
  18093. break;
  18094. case 161:
  18095. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode) */
  18096. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18097. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18098. if(errn == 0) {
  18099. if(eventCode == 0) {
  18100. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  18101. exiFrag->RequestedEnergyTransferMode = (iso1EnergyTransferModeType) uint32;
  18102. exiFrag->RequestedEnergyTransferMode_isUsed = 1u;
  18103. } else {
  18104. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18105. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18106. }
  18107. }
  18108. break;
  18109. case 162:
  18110. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) */
  18111. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18112. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18113. if(errn == 0) {
  18114. if(eventCode == 0) {
  18115. errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
  18116. exiFrag->ResponseCode = (iso1responseCodeType) uint32;
  18117. exiFrag->ResponseCode_isUsed = 1u;
  18118. } else {
  18119. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18120. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18121. }
  18122. }
  18123. break;
  18124. case 163:
  18125. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */
  18126. errn = decode_iso1RetrievalMethodType(stream, &exiFrag->RetrievalMethod);
  18127. exiFrag->RetrievalMethod_isUsed = 1u;
  18128. break;
  18129. case 164:
  18130. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter) */
  18131. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  18132. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18133. if(errn == 0) {
  18134. if(eventCode == 0) {
  18135. errn = decodeInteger16(stream, &exiFrag->RetryCounter);
  18136. exiFrag->RetryCounter_isUsed = 1u;
  18137. } else {
  18138. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18139. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18140. }
  18141. }
  18142. break;
  18143. case 165:
  18144. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID) */
  18145. errn = decode_iso1X509IssuerSerialType(stream, &exiFrag->RootCertificateID);
  18146. exiFrag->RootCertificateID_isUsed = 1u;
  18147. break;
  18148. case 166:
  18149. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain) */
  18150. errn = decode_iso1CertificateChainType(stream, &exiFrag->SAProvisioningCertificateChain);
  18151. exiFrag->SAProvisioningCertificateChain_isUsed = 1u;
  18152. break;
  18153. case 167:
  18154. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList) */
  18155. errn = decode_iso1SAScheduleListType(stream, &exiFrag->SAScheduleList);
  18156. exiFrag->SAScheduleList_isUsed = 1u;
  18157. break;
  18158. case 168:
  18159. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple) */
  18160. errn = decode_iso1SAScheduleTupleType(stream, &exiFrag->SAScheduleTuple);
  18161. exiFrag->SAScheduleTuple_isUsed = 1u;
  18162. break;
  18163. case 169:
  18164. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) */
  18165. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  18166. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18167. if(errn == 0) {
  18168. if(eventCode == 0) {
  18169. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  18170. exiFrag->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  18171. exiFrag->SAScheduleTupleID_isUsed = 1u;
  18172. } else {
  18173. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18174. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18175. }
  18176. }
  18177. break;
  18178. case 170:
  18179. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID) */
  18180. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  18181. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18182. if(errn == 0) {
  18183. if(eventCode == 0) {
  18184. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  18185. exiFrag->SAScheduleTupleID = (uint8_t)(uint32 + 1);
  18186. exiFrag->SAScheduleTupleID_isUsed = 1u;
  18187. } else {
  18188. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18189. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18190. }
  18191. }
  18192. break;
  18193. case 171:
  18194. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules) */
  18195. errn = decode_iso1SASchedulesType(stream, &exiFrag->SASchedules);
  18196. exiFrag->SASchedules_isUsed = 1u;
  18197. break;
  18198. case 172:
  18199. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */
  18200. errn = decode_iso1SPKIDataType(stream, &exiFrag->SPKIData);
  18201. exiFrag->SPKIData_isUsed = 1u;
  18202. break;
  18203. case 173:
  18204. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) */
  18205. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  18206. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18207. if(errn == 0) {
  18208. if(eventCode == 0) {
  18209. errn = decodeUnsignedInteger16(stream, &exiFrag->SPKISexp.bytesLen);
  18210. if (errn == 0) {
  18211. errn = (exiFrag->SPKISexp.bytesLen) <= EXIFragment_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18212. }
  18213. if (errn == 0) {
  18214. errn = decodeBytes(stream, exiFrag->SPKISexp.bytesLen, exiFrag->SPKISexp.bytes);
  18215. }
  18216. exiFrag->SPKISexp_isUsed = 1u;
  18217. } else {
  18218. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18219. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18220. }
  18221. }
  18222. break;
  18223. case 174:
  18224. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff) */
  18225. errn = decode_iso1SalesTariffType(stream, &exiFrag->SalesTariff);
  18226. exiFrag->SalesTariff_isUsed = 1u;
  18227. break;
  18228. case 175:
  18229. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription) */
  18230. /* FirstStartTag[CHARACTERS[STRING]] */
  18231. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18232. if(errn == 0) {
  18233. if(eventCode == 0) {
  18234. errn = decodeUnsignedInteger16(stream, &exiFrag->SalesTariffDescription.charactersLen);
  18235. if (errn == 0) {
  18236. if (exiFrag->SalesTariffDescription.charactersLen >= 2) {
  18237. exiFrag->SalesTariffDescription.charactersLen = (uint16_t)(exiFrag->SalesTariffDescription.charactersLen - 2); /* string table miss */
  18238. errn = decodeCharacters(stream, exiFrag->SalesTariffDescription.charactersLen, exiFrag->SalesTariffDescription.characters, EXIFragment_SalesTariffDescription_CHARACTERS_SIZE);
  18239. } else {
  18240. /* string table hit */
  18241. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18242. }
  18243. }
  18244. exiFrag->SalesTariffDescription_isUsed = 1u;
  18245. } else {
  18246. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18247. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18248. }
  18249. }
  18250. break;
  18251. case 176:
  18252. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry) */
  18253. errn = decode_iso1SalesTariffEntryType(stream, &exiFrag->SalesTariffEntry);
  18254. exiFrag->SalesTariffEntry_isUsed = 1u;
  18255. break;
  18256. case 177:
  18257. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID) */
  18258. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  18259. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18260. if(errn == 0) {
  18261. if(eventCode == 0) {
  18262. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  18263. exiFrag->SalesTariffID = (uint8_t)(uint32 + 1);
  18264. exiFrag->SalesTariffID_isUsed = 1u;
  18265. } else {
  18266. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18267. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18268. }
  18269. }
  18270. break;
  18271. case 178:
  18272. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) */
  18273. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  18274. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18275. if(errn == 0) {
  18276. if(eventCode == 0) {
  18277. errn = decodeUnsignedInteger16(stream, &exiFrag->Seed.bytesLen);
  18278. if (errn == 0) {
  18279. errn = (exiFrag->Seed.bytesLen) <= EXIFragment_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18280. }
  18281. if (errn == 0) {
  18282. errn = decodeBytes(stream, exiFrag->Seed.bytesLen, exiFrag->Seed.bytes);
  18283. }
  18284. exiFrag->Seed_isUsed = 1u;
  18285. } else {
  18286. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18287. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18288. }
  18289. }
  18290. break;
  18291. case 179:
  18292. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption) */
  18293. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18294. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18295. if(errn == 0) {
  18296. if(eventCode == 0) {
  18297. errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
  18298. exiFrag->SelectedPaymentOption = (iso1paymentOptionType) uint32;
  18299. exiFrag->SelectedPaymentOption_isUsed = 1u;
  18300. } else {
  18301. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18302. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18303. }
  18304. }
  18305. break;
  18306. case 180:
  18307. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService) */
  18308. errn = decode_iso1SelectedServiceType(stream, &exiFrag->SelectedService);
  18309. exiFrag->SelectedService_isUsed = 1u;
  18310. break;
  18311. case 181:
  18312. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList) */
  18313. errn = decode_iso1SelectedServiceListType(stream, &exiFrag->SelectedServiceList);
  18314. exiFrag->SelectedServiceList_isUsed = 1u;
  18315. break;
  18316. case 182:
  18317. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service) */
  18318. errn = decode_iso1ServiceType(stream, &exiFrag->Service);
  18319. exiFrag->Service_isUsed = 1u;
  18320. break;
  18321. case 183:
  18322. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory) */
  18323. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18324. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18325. if(errn == 0) {
  18326. if(eventCode == 0) {
  18327. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  18328. exiFrag->ServiceCategory = (iso1serviceCategoryType) uint32;
  18329. exiFrag->ServiceCategory_isUsed = 1u;
  18330. } else {
  18331. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18332. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18333. }
  18334. }
  18335. break;
  18336. case 184:
  18337. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) */
  18338. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18339. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18340. if(errn == 0) {
  18341. if(eventCode == 0) {
  18342. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  18343. exiFrag->ServiceCategory = (iso1serviceCategoryType) uint32;
  18344. exiFrag->ServiceCategory_isUsed = 1u;
  18345. } else {
  18346. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18347. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18348. }
  18349. }
  18350. break;
  18351. case 185:
  18352. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq) */
  18353. errn = decode_iso1ServiceDetailReqType(stream, &exiFrag->ServiceDetailReq);
  18354. exiFrag->ServiceDetailReq_isUsed = 1u;
  18355. break;
  18356. case 186:
  18357. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes) */
  18358. errn = decode_iso1ServiceDetailResType(stream, &exiFrag->ServiceDetailRes);
  18359. exiFrag->ServiceDetailRes_isUsed = 1u;
  18360. break;
  18361. case 187:
  18362. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq) */
  18363. errn = decode_iso1ServiceDiscoveryReqType(stream, &exiFrag->ServiceDiscoveryReq);
  18364. exiFrag->ServiceDiscoveryReq_isUsed = 1u;
  18365. break;
  18366. case 188:
  18367. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes) */
  18368. errn = decode_iso1ServiceDiscoveryResType(stream, &exiFrag->ServiceDiscoveryRes);
  18369. exiFrag->ServiceDiscoveryRes_isUsed = 1u;
  18370. break;
  18371. case 189:
  18372. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID) */
  18373. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  18374. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18375. if(errn == 0) {
  18376. if(eventCode == 0) {
  18377. errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceID);
  18378. exiFrag->ServiceID_isUsed = 1u;
  18379. } else {
  18380. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18381. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18382. }
  18383. }
  18384. break;
  18385. case 190:
  18386. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) */
  18387. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  18388. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18389. if(errn == 0) {
  18390. if(eventCode == 0) {
  18391. errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceID);
  18392. exiFrag->ServiceID_isUsed = 1u;
  18393. } else {
  18394. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18395. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18396. }
  18397. }
  18398. break;
  18399. case 191:
  18400. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList) */
  18401. errn = decode_iso1ServiceListType(stream, &exiFrag->ServiceList);
  18402. exiFrag->ServiceList_isUsed = 1u;
  18403. break;
  18404. case 192:
  18405. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName) */
  18406. /* FirstStartTag[CHARACTERS[STRING]] */
  18407. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18408. if(errn == 0) {
  18409. if(eventCode == 0) {
  18410. errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceName.charactersLen);
  18411. if (errn == 0) {
  18412. if (exiFrag->ServiceName.charactersLen >= 2) {
  18413. exiFrag->ServiceName.charactersLen = (uint16_t)(exiFrag->ServiceName.charactersLen - 2); /* string table miss */
  18414. errn = decodeCharacters(stream, exiFrag->ServiceName.charactersLen, exiFrag->ServiceName.characters, EXIFragment_ServiceName_CHARACTERS_SIZE);
  18415. } else {
  18416. /* string table hit */
  18417. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18418. }
  18419. }
  18420. exiFrag->ServiceName_isUsed = 1u;
  18421. } else {
  18422. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18423. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18424. }
  18425. }
  18426. break;
  18427. case 193:
  18428. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList) */
  18429. errn = decode_iso1ServiceParameterListType(stream, &exiFrag->ServiceParameterList);
  18430. exiFrag->ServiceParameterList_isUsed = 1u;
  18431. break;
  18432. case 194:
  18433. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope) */
  18434. /* FirstStartTag[CHARACTERS[STRING]] */
  18435. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18436. if(errn == 0) {
  18437. if(eventCode == 0) {
  18438. errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceScope.charactersLen);
  18439. if (errn == 0) {
  18440. if (exiFrag->ServiceScope.charactersLen >= 2) {
  18441. exiFrag->ServiceScope.charactersLen = (uint16_t)(exiFrag->ServiceScope.charactersLen - 2); /* string table miss */
  18442. errn = decodeCharacters(stream, exiFrag->ServiceScope.charactersLen, exiFrag->ServiceScope.characters, EXIFragment_ServiceScope_CHARACTERS_SIZE);
  18443. } else {
  18444. /* string table hit */
  18445. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18446. }
  18447. }
  18448. exiFrag->ServiceScope_isUsed = 1u;
  18449. } else {
  18450. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18451. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18452. }
  18453. }
  18454. break;
  18455. case 195:
  18456. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope) */
  18457. /* FirstStartTag[CHARACTERS[STRING]] */
  18458. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18459. if(errn == 0) {
  18460. if(eventCode == 0) {
  18461. errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceScope.charactersLen);
  18462. if (errn == 0) {
  18463. if (exiFrag->ServiceScope.charactersLen >= 2) {
  18464. exiFrag->ServiceScope.charactersLen = (uint16_t)(exiFrag->ServiceScope.charactersLen - 2); /* string table miss */
  18465. errn = decodeCharacters(stream, exiFrag->ServiceScope.charactersLen, exiFrag->ServiceScope.characters, EXIFragment_ServiceScope_CHARACTERS_SIZE);
  18466. } else {
  18467. /* string table hit */
  18468. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18469. }
  18470. }
  18471. exiFrag->ServiceScope_isUsed = 1u;
  18472. } else {
  18473. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18474. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18475. }
  18476. }
  18477. break;
  18478. case 196:
  18479. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID) */
  18480. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  18481. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18482. if(errn == 0) {
  18483. if(eventCode == 0) {
  18484. errn = decodeUnsignedInteger16(stream, &exiFrag->SessionID.bytesLen);
  18485. if (errn == 0) {
  18486. errn = (exiFrag->SessionID.bytesLen) <= EXIFragment_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18487. }
  18488. if (errn == 0) {
  18489. errn = decodeBytes(stream, exiFrag->SessionID.bytesLen, exiFrag->SessionID.bytes);
  18490. }
  18491. exiFrag->SessionID_isUsed = 1u;
  18492. } else {
  18493. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18494. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18495. }
  18496. }
  18497. break;
  18498. case 197:
  18499. /* START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID) */
  18500. /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
  18501. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18502. if(errn == 0) {
  18503. if(eventCode == 0) {
  18504. errn = decodeUnsignedInteger16(stream, &exiFrag->SessionID.bytesLen);
  18505. if (errn == 0) {
  18506. errn = (exiFrag->SessionID.bytesLen) <= EXIFragment_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18507. }
  18508. if (errn == 0) {
  18509. errn = decodeBytes(stream, exiFrag->SessionID.bytesLen, exiFrag->SessionID.bytes);
  18510. }
  18511. exiFrag->SessionID_isUsed = 1u;
  18512. } else {
  18513. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18514. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18515. }
  18516. }
  18517. break;
  18518. case 198:
  18519. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq) */
  18520. errn = decode_iso1SessionSetupReqType(stream, &exiFrag->SessionSetupReq);
  18521. exiFrag->SessionSetupReq_isUsed = 1u;
  18522. break;
  18523. case 199:
  18524. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes) */
  18525. errn = decode_iso1SessionSetupResType(stream, &exiFrag->SessionSetupRes);
  18526. exiFrag->SessionSetupRes_isUsed = 1u;
  18527. break;
  18528. case 200:
  18529. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq) */
  18530. errn = decode_iso1SessionStopReqType(stream, &exiFrag->SessionStopReq);
  18531. exiFrag->SessionStopReq_isUsed = 1u;
  18532. break;
  18533. case 201:
  18534. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes) */
  18535. errn = decode_iso1SessionStopResType(stream, &exiFrag->SessionStopRes);
  18536. exiFrag->SessionStopRes_isUsed = 1u;
  18537. break;
  18538. case 202:
  18539. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading) */
  18540. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  18541. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18542. if(errn == 0) {
  18543. if(eventCode == 0) {
  18544. errn = decodeUnsignedInteger16(stream, &exiFrag->SigMeterReading.bytesLen);
  18545. if (errn == 0) {
  18546. errn = (exiFrag->SigMeterReading.bytesLen) <= EXIFragment_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18547. }
  18548. if (errn == 0) {
  18549. errn = decodeBytes(stream, exiFrag->SigMeterReading.bytesLen, exiFrag->SigMeterReading.bytes);
  18550. }
  18551. exiFrag->SigMeterReading_isUsed = 1u;
  18552. } else {
  18553. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18554. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18555. }
  18556. }
  18557. break;
  18558. case 203:
  18559. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */
  18560. errn = decode_iso1SignatureType(stream, &exiFrag->Signature);
  18561. exiFrag->Signature_isUsed = 1u;
  18562. break;
  18563. case 204:
  18564. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */
  18565. errn = decode_iso1SignatureMethodType(stream, &exiFrag->SignatureMethod);
  18566. exiFrag->SignatureMethod_isUsed = 1u;
  18567. break;
  18568. case 205:
  18569. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */
  18570. errn = decode_iso1SignaturePropertiesType(stream, &exiFrag->SignatureProperties);
  18571. exiFrag->SignatureProperties_isUsed = 1u;
  18572. break;
  18573. case 206:
  18574. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */
  18575. errn = decode_iso1SignaturePropertyType(stream, &exiFrag->SignatureProperty);
  18576. exiFrag->SignatureProperty_isUsed = 1u;
  18577. break;
  18578. case 207:
  18579. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */
  18580. errn = decode_iso1SignatureValueType(stream, &exiFrag->SignatureValue);
  18581. exiFrag->SignatureValue_isUsed = 1u;
  18582. break;
  18583. case 208:
  18584. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */
  18585. errn = decode_iso1SignedInfoType(stream, &exiFrag->SignedInfo);
  18586. exiFrag->SignedInfo_isUsed = 1u;
  18587. break;
  18588. case 209:
  18589. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates) */
  18590. errn = decode_iso1SubCertificatesType(stream, &exiFrag->SubCertificates);
  18591. exiFrag->SubCertificates_isUsed = 1u;
  18592. break;
  18593. case 210:
  18594. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode) */
  18595. errn = decode_iso1SupportedEnergyTransferModeType(stream, &exiFrag->SupportedEnergyTransferMode);
  18596. exiFrag->SupportedEnergyTransferMode_isUsed = 1u;
  18597. break;
  18598. case 211:
  18599. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) */
  18600. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  18601. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18602. if(errn == 0) {
  18603. if(eventCode == 0) {
  18604. errn = decodeInteger64(stream, &exiFrag->TMeter);
  18605. exiFrag->TMeter_isUsed = 1u;
  18606. } else {
  18607. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18608. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18609. }
  18610. }
  18611. break;
  18612. case 212:
  18613. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval) */
  18614. errn = decode_iso1IntervalType(stream, &exiFrag->TimeInterval);
  18615. exiFrag->TimeInterval_isUsed = 1u;
  18616. break;
  18617. case 213:
  18618. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */
  18619. errn = decode_iso1TransformType(stream, &exiFrag->Transform);
  18620. exiFrag->Transform_isUsed = 1u;
  18621. break;
  18622. case 214:
  18623. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */
  18624. errn = decode_iso1TransformsType(stream, &exiFrag->Transforms);
  18625. exiFrag->Transforms_isUsed = 1u;
  18626. break;
  18627. case 215:
  18628. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit) */
  18629. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18630. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18631. if(errn == 0) {
  18632. if(eventCode == 0) {
  18633. errn = decodeNBitUnsignedInteger(stream, 3, &uint32);
  18634. exiFrag->Unit = (iso1unitSymbolType) uint32;
  18635. exiFrag->Unit_isUsed = 1u;
  18636. } else {
  18637. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18638. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18639. }
  18640. }
  18641. break;
  18642. case 216:
  18643. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message) */
  18644. errn = decode_iso1AnonType_V2G_Message(stream, &exiFrag->V2G_Message);
  18645. exiFrag->V2G_Message_isUsed = 1u;
  18646. break;
  18647. case 217:
  18648. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value) */
  18649. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  18650. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18651. if(errn == 0) {
  18652. if(eventCode == 0) {
  18653. errn = decodeInteger16(stream, &exiFrag->Value);
  18654. exiFrag->Value_isUsed = 1u;
  18655. } else {
  18656. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18657. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18658. }
  18659. }
  18660. break;
  18661. case 218:
  18662. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq) */
  18663. errn = decode_iso1WeldingDetectionReqType(stream, &exiFrag->WeldingDetectionReq);
  18664. exiFrag->WeldingDetectionReq_isUsed = 1u;
  18665. break;
  18666. case 219:
  18667. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes) */
  18668. errn = decode_iso1WeldingDetectionResType(stream, &exiFrag->WeldingDetectionRes);
  18669. exiFrag->WeldingDetectionRes_isUsed = 1u;
  18670. break;
  18671. case 220:
  18672. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) */
  18673. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  18674. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18675. if(errn == 0) {
  18676. if(eventCode == 0) {
  18677. errn = decodeUnsignedInteger16(stream, &exiFrag->X509CRL.bytesLen);
  18678. if (errn == 0) {
  18679. errn = (exiFrag->X509CRL.bytesLen) <= EXIFragment_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18680. }
  18681. if (errn == 0) {
  18682. errn = decodeBytes(stream, exiFrag->X509CRL.bytesLen, exiFrag->X509CRL.bytes);
  18683. }
  18684. exiFrag->X509CRL_isUsed = 1u;
  18685. } else {
  18686. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18687. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18688. }
  18689. }
  18690. break;
  18691. case 221:
  18692. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) */
  18693. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  18694. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18695. if(errn == 0) {
  18696. if(eventCode == 0) {
  18697. errn = decodeUnsignedInteger16(stream, &exiFrag->X509Certificate.bytesLen);
  18698. if (errn == 0) {
  18699. errn = (exiFrag->X509Certificate.bytesLen) <= EXIFragment_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18700. }
  18701. if (errn == 0) {
  18702. errn = decodeBytes(stream, exiFrag->X509Certificate.bytesLen, exiFrag->X509Certificate.bytes);
  18703. }
  18704. exiFrag->X509Certificate_isUsed = 1u;
  18705. } else {
  18706. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18707. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18708. }
  18709. }
  18710. break;
  18711. case 222:
  18712. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */
  18713. errn = decode_iso1X509DataType(stream, &exiFrag->X509Data);
  18714. exiFrag->X509Data_isUsed = 1u;
  18715. break;
  18716. case 223:
  18717. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName) */
  18718. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  18719. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18720. if(errn == 0) {
  18721. if(eventCode == 0) {
  18722. errn = decodeUnsignedInteger16(stream, &exiFrag->X509IssuerName.charactersLen);
  18723. if (errn == 0) {
  18724. if (exiFrag->X509IssuerName.charactersLen >= 2) {
  18725. exiFrag->X509IssuerName.charactersLen = (uint16_t)(exiFrag->X509IssuerName.charactersLen - 2); /* string table miss */
  18726. errn = decodeCharacters(stream, exiFrag->X509IssuerName.charactersLen, exiFrag->X509IssuerName.characters, EXIFragment_X509IssuerName_CHARACTERS_SIZE);
  18727. } else {
  18728. /* string table hit */
  18729. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18730. }
  18731. }
  18732. exiFrag->X509IssuerName_isUsed = 1u;
  18733. } else {
  18734. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18735. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18736. }
  18737. }
  18738. break;
  18739. case 224:
  18740. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial) */
  18741. errn = decode_iso1X509IssuerSerialType(stream, &exiFrag->X509IssuerSerial);
  18742. exiFrag->X509IssuerSerial_isUsed = 1u;
  18743. break;
  18744. case 225:
  18745. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) */
  18746. /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
  18747. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18748. if(errn == 0) {
  18749. if(eventCode == 0) {
  18750. errn = decodeUnsignedInteger16(stream, &exiFrag->X509SKI.bytesLen);
  18751. if (errn == 0) {
  18752. errn = (exiFrag->X509SKI.bytesLen) <= EXIFragment_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18753. }
  18754. if (errn == 0) {
  18755. errn = decodeBytes(stream, exiFrag->X509SKI.bytesLen, exiFrag->X509SKI.bytes);
  18756. }
  18757. exiFrag->X509SKI_isUsed = 1u;
  18758. } else {
  18759. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18760. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18761. }
  18762. }
  18763. break;
  18764. case 226:
  18765. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber) */
  18766. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  18767. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18768. if(errn == 0) {
  18769. if(eventCode == 0) {
  18770. errn = decodeInteger64(stream, &exiFrag->X509SerialNumber);
  18771. exiFrag->X509SerialNumber_isUsed = 1u;
  18772. } else {
  18773. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18774. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18775. }
  18776. }
  18777. break;
  18778. case 227:
  18779. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) */
  18780. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  18781. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18782. if(errn == 0) {
  18783. if(eventCode == 0) {
  18784. errn = decodeUnsignedInteger16(stream, &exiFrag->X509SubjectName.charactersLen);
  18785. if (errn == 0) {
  18786. if (exiFrag->X509SubjectName.charactersLen >= 2) {
  18787. exiFrag->X509SubjectName.charactersLen = (uint16_t)(exiFrag->X509SubjectName.charactersLen - 2); /* string table miss */
  18788. errn = decodeCharacters(stream, exiFrag->X509SubjectName.charactersLen, exiFrag->X509SubjectName.characters, EXIFragment_X509SubjectName_CHARACTERS_SIZE);
  18789. } else {
  18790. /* string table hit */
  18791. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18792. }
  18793. }
  18794. exiFrag->X509SubjectName_isUsed = 1u;
  18795. } else {
  18796. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18797. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18798. }
  18799. }
  18800. break;
  18801. case 228:
  18802. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) */
  18803. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  18804. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18805. if(errn == 0) {
  18806. if(eventCode == 0) {
  18807. errn = decodeUnsignedInteger16(stream, &exiFrag->XPath.charactersLen);
  18808. if (errn == 0) {
  18809. if (exiFrag->XPath.charactersLen >= 2) {
  18810. exiFrag->XPath.charactersLen = (uint16_t)(exiFrag->XPath.charactersLen - 2); /* string table miss */
  18811. errn = decodeCharacters(stream, exiFrag->XPath.charactersLen, exiFrag->XPath.characters, EXIFragment_XPath_CHARACTERS_SIZE);
  18812. } else {
  18813. /* string table hit */
  18814. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  18815. }
  18816. }
  18817. exiFrag->XPath_isUsed = 1u;
  18818. } else {
  18819. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18820. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18821. }
  18822. }
  18823. break;
  18824. case 229:
  18825. /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) */
  18826. /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
  18827. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18828. if(errn == 0) {
  18829. if(eventCode == 0) {
  18830. errn = decodeUnsignedInteger16(stream, &exiFrag->Y.bytesLen);
  18831. if (errn == 0) {
  18832. errn = (exiFrag->Y.bytesLen) <= EXIFragment_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
  18833. }
  18834. if (errn == 0) {
  18835. errn = decodeBytes(stream, exiFrag->Y.bytesLen, exiFrag->Y.bytes);
  18836. }
  18837. exiFrag->Y_isUsed = 1u;
  18838. } else {
  18839. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18840. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18841. }
  18842. }
  18843. break;
  18844. case 230:
  18845. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount) */
  18846. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  18847. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18848. if(errn == 0) {
  18849. if(eventCode == 0) {
  18850. errn = decodeUnsignedInteger32(stream, &exiFrag->amount);
  18851. exiFrag->amount_isUsed = 1u;
  18852. } else {
  18853. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18854. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18855. }
  18856. }
  18857. break;
  18858. case 231:
  18859. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier) */
  18860. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  18861. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18862. if(errn == 0) {
  18863. if(eventCode == 0) {
  18864. errn = decodeNBitUnsignedInteger(stream, 3, &(uint32));
  18865. exiFrag->amountMultiplier = (int8_t)(uint32 -3);
  18866. exiFrag->amountMultiplier_isUsed = 1u;
  18867. } else {
  18868. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18869. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18870. }
  18871. }
  18872. break;
  18873. case 232:
  18874. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue) */
  18875. /* FirstStartTag[CHARACTERS[BOOLEAN]] */
  18876. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18877. if(errn == 0) {
  18878. if(eventCode == 0) {
  18879. errn = decodeBoolean(stream, &exiFrag->boolValue);
  18880. exiFrag->boolValue_isUsed = 1u;
  18881. } else {
  18882. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18883. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18884. }
  18885. }
  18886. break;
  18887. case 233:
  18888. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue) */
  18889. /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  18890. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18891. if(errn == 0) {
  18892. if(eventCode == 0) {
  18893. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  18894. exiFrag->byteValue = (int8_t)(uint32 -128);
  18895. exiFrag->byteValue_isUsed = 1u;
  18896. } else {
  18897. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18898. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18899. }
  18900. }
  18901. break;
  18902. case 234:
  18903. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind) */
  18904. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  18905. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18906. if(errn == 0) {
  18907. if(eventCode == 0) {
  18908. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  18909. exiFrag->costKind = (iso1costKindType) uint32;
  18910. exiFrag->costKind_isUsed = 1u;
  18911. } else {
  18912. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18913. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18914. }
  18915. }
  18916. break;
  18917. case 235:
  18918. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration) */
  18919. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  18920. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18921. if(errn == 0) {
  18922. if(eventCode == 0) {
  18923. errn = decodeUnsignedInteger32(stream, &exiFrag->duration);
  18924. exiFrag->duration_isUsed = 1u;
  18925. } else {
  18926. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18927. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18928. }
  18929. }
  18930. break;
  18931. case 236:
  18932. /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID) */
  18933. errn = decode_iso1EXISchemaInformedElementFragmentGrammar(stream, &exiFrag->eMAID);
  18934. exiFrag->eMAID_isUsed = 1u;
  18935. break;
  18936. case 237:
  18937. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue) */
  18938. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  18939. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18940. if(errn == 0) {
  18941. if(eventCode == 0) {
  18942. errn = decodeInteger32(stream, &exiFrag->intValue);
  18943. exiFrag->intValue_isUsed = 1u;
  18944. } else {
  18945. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18946. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18947. }
  18948. }
  18949. break;
  18950. case 238:
  18951. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue) */
  18952. errn = decode_iso1PhysicalValueType(stream, &exiFrag->physicalValue);
  18953. exiFrag->physicalValue_isUsed = 1u;
  18954. break;
  18955. case 239:
  18956. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue) */
  18957. /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
  18958. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18959. if(errn == 0) {
  18960. if(eventCode == 0) {
  18961. errn = decodeInteger16(stream, &exiFrag->shortValue);
  18962. exiFrag->shortValue_isUsed = 1u;
  18963. } else {
  18964. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18965. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18966. }
  18967. }
  18968. break;
  18969. case 240:
  18970. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start) */
  18971. /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  18972. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18973. if(errn == 0) {
  18974. if(eventCode == 0) {
  18975. errn = decodeUnsignedInteger32(stream, &exiFrag->start);
  18976. exiFrag->start_isUsed = 1u;
  18977. } else {
  18978. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  18979. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  18980. }
  18981. }
  18982. break;
  18983. case 241:
  18984. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue) */
  18985. errn = decode_iso1PhysicalValueType(stream, &exiFrag->startValue);
  18986. exiFrag->startValue_isUsed = 1u;
  18987. break;
  18988. case 242:
  18989. /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue) */
  18990. /* First(xsi:type)StartTag[CHARACTERS[STRING]] */
  18991. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  18992. if(errn == 0) {
  18993. if(eventCode == 0) {
  18994. errn = decodeUnsignedInteger16(stream, &exiFrag->stringValue.charactersLen);
  18995. if (errn == 0) {
  18996. if (exiFrag->stringValue.charactersLen >= 2) {
  18997. exiFrag->stringValue.charactersLen = (uint16_t)(exiFrag->stringValue.charactersLen - 2); /* string table miss */
  18998. errn = decodeCharacters(stream, exiFrag->stringValue.charactersLen, exiFrag->stringValue.characters, EXIFragment_stringValue_CHARACTERS_SIZE);
  18999. } else {
  19000. /* string table hit */
  19001. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  19002. }
  19003. }
  19004. exiFrag->stringValue_isUsed = 1u;
  19005. } else {
  19006. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  19007. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  19008. }
  19009. }
  19010. break;
  19011. default:
  19012. errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
  19013. break;
  19014. }
  19015. }
  19016. if(errn == 0) {
  19017. /* EndDocument */
  19018. errn = decodeNBitUnsignedInteger(stream, 8, &eventCode);
  19019. if (eventCode != 244) {
  19020. errn = EXI_UNSUPPORTED_FRAGMENT_ELEMENT;
  19021. }
  19022. }
  19023. }
  19024. (void)exiFrag; /* avoid unused warning */
  19025. return errn;
  19026. }
  19027. #endif /* DEPLOY_ISO1_CODEC_FRAGMENT */
  19028. #endif /* DEPLOY_ISO1_CODEC */
  19029. #endif