appHandEXIDatatypesDecoder.c 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899
  1. /*
  2. * Copyright (C) 2007-2014 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.1
  21. * @contact Joerg.Heuer@siemens.com
  22. *
  23. * <p>Code generated by EXIdizer</p>
  24. * <p>Schema: V2G_CI_AppProtocol.xsd</p>
  25. *
  26. *
  27. ********************************************************************/
  28. #include "appHandEXIDatatypesDecoder.h"
  29. #include "DecoderChannel.h"
  30. #include "EXIHeaderDecoder.h"
  31. #include "appHandEXIDatatypes.h"
  32. #include "ErrorCodes.h"
  33. #ifndef EXI_appHand_DATATYPES_DECODER_C
  34. #define EXI_appHand_DATATYPES_DECODER_C
  35. /** event-code */
  36. static uint32_t eventCode;
  37. static int errn;
  38. static uint32_t uint32;
  39. /* Forward Declarations */
  40. static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
  41. static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType);
  42. static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
  43. /* Deviant data decoding (skip functions) */
  44. /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */
  45. static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
  46. int grammarID = 0;
  47. int done = 0;
  48. init_appHandAnonType_supportedAppProtocolRes(appHandAnonType_supportedAppProtocolRes);
  49. while(!done) {
  50. switch(grammarID) {
  51. case 0:
  52. /* FirstStartTag[START_ELEMENT(ResponseCode)] */
  53. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  54. if (errn == 0) {
  55. switch(eventCode) {
  56. case 0:
  57. /* FirstStartTag[CHARACTERS[ENUMERATION]] */
  58. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  59. if(errn == 0) {
  60. if(eventCode == 0) {
  61. errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
  62. appHandAnonType_supportedAppProtocolRes->ResponseCode = (appHandresponseCodeType) uint32;
  63. } else {
  64. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  65. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  66. }
  67. }
  68. if(errn == 0) {
  69. /* valid EE for simple element START_ELEMENT(ResponseCode) ? */
  70. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  71. if(eventCode == 0) {
  72. grammarID = 1;
  73. } else {
  74. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  75. }
  76. }
  77. break;
  78. default:
  79. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  80. break;
  81. }
  82. }
  83. break;
  84. case 1:
  85. /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
  86. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  87. if (errn == 0) {
  88. switch(eventCode) {
  89. case 0:
  90. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  91. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  92. if(errn == 0) {
  93. if(eventCode == 0) {
  94. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  95. appHandAnonType_supportedAppProtocolRes->SchemaID = (uint8_t)(uint32 + 0);
  96. appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 1u;
  97. } else {
  98. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  99. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  100. }
  101. }
  102. if(errn == 0) {
  103. /* valid EE for simple element START_ELEMENT(SchemaID) ? */
  104. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  105. if(eventCode == 0) {
  106. grammarID = 2;
  107. } else {
  108. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  109. }
  110. }
  111. break;
  112. case 1:
  113. done = 1;
  114. grammarID = 3;
  115. break;
  116. default:
  117. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  118. break;
  119. }
  120. }
  121. break;
  122. case 2:
  123. /* Element[END_ELEMENT] */
  124. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  125. if (errn == 0) {
  126. switch(eventCode) {
  127. case 0:
  128. done = 1;
  129. grammarID = 3;
  130. break;
  131. default:
  132. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  133. break;
  134. }
  135. }
  136. break;
  137. default:
  138. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  139. break;
  140. }
  141. if(errn) {
  142. done = 1;
  143. }
  144. }
  145. return errn;
  146. }
  147. /* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */
  148. static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
  149. int grammarID = 4;
  150. int done = 0;
  151. init_appHandAppProtocolType(appHandAppProtocolType);
  152. while(!done) {
  153. switch(grammarID) {
  154. case 4:
  155. /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */
  156. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  157. if (errn == 0) {
  158. switch(eventCode) {
  159. case 0:
  160. /* FirstStartTag[CHARACTERS[STRING]] */
  161. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  162. if(errn == 0) {
  163. if(eventCode == 0) {
  164. errn = decodeUnsignedInteger16(stream, &appHandAppProtocolType->ProtocolNamespace.charactersLen);
  165. if (errn == 0) {
  166. errn = (appHandAppProtocolType->ProtocolNamespace.charactersLen - 2) <= appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND;
  167. }
  168. if (errn == 0) {
  169. if (appHandAppProtocolType->ProtocolNamespace.charactersLen >= 2) {
  170. appHandAppProtocolType->ProtocolNamespace.charactersLen = (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen - 2); /* string table miss */
  171. errn = decodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.charactersLen, appHandAppProtocolType->ProtocolNamespace.characters);
  172. } else {
  173. /* string table hit */
  174. errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
  175. }
  176. }
  177. } else {
  178. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  179. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  180. }
  181. }
  182. if(errn == 0) {
  183. /* valid EE for simple element START_ELEMENT(ProtocolNamespace) ? */
  184. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  185. if(eventCode == 0) {
  186. grammarID = 5;
  187. } else {
  188. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  189. }
  190. }
  191. break;
  192. default:
  193. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  194. break;
  195. }
  196. }
  197. break;
  198. case 5:
  199. /* Element[START_ELEMENT(VersionNumberMajor)] */
  200. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  201. if (errn == 0) {
  202. switch(eventCode) {
  203. case 0:
  204. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  205. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  206. if(errn == 0) {
  207. if(eventCode == 0) {
  208. errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMajor);
  209. } else {
  210. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  211. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  212. }
  213. }
  214. if(errn == 0) {
  215. /* valid EE for simple element START_ELEMENT(VersionNumberMajor) ? */
  216. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  217. if(eventCode == 0) {
  218. grammarID = 6;
  219. } else {
  220. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  221. }
  222. }
  223. break;
  224. default:
  225. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  226. break;
  227. }
  228. }
  229. break;
  230. case 6:
  231. /* Element[START_ELEMENT(VersionNumberMinor)] */
  232. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  233. if (errn == 0) {
  234. switch(eventCode) {
  235. case 0:
  236. /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
  237. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  238. if(errn == 0) {
  239. if(eventCode == 0) {
  240. errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMinor);
  241. } else {
  242. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  243. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  244. }
  245. }
  246. if(errn == 0) {
  247. /* valid EE for simple element START_ELEMENT(VersionNumberMinor) ? */
  248. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  249. if(eventCode == 0) {
  250. grammarID = 7;
  251. } else {
  252. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  253. }
  254. }
  255. break;
  256. default:
  257. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  258. break;
  259. }
  260. }
  261. break;
  262. case 7:
  263. /* Element[START_ELEMENT(SchemaID)] */
  264. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  265. if (errn == 0) {
  266. switch(eventCode) {
  267. case 0:
  268. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  269. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  270. if(errn == 0) {
  271. if(eventCode == 0) {
  272. errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
  273. appHandAppProtocolType->SchemaID = (uint8_t)(uint32 + 0);
  274. } else {
  275. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  276. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  277. }
  278. }
  279. if(errn == 0) {
  280. /* valid EE for simple element START_ELEMENT(SchemaID) ? */
  281. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  282. if(eventCode == 0) {
  283. grammarID = 8;
  284. } else {
  285. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  286. }
  287. }
  288. break;
  289. default:
  290. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  291. break;
  292. }
  293. }
  294. break;
  295. case 8:
  296. /* Element[START_ELEMENT(Priority)] */
  297. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  298. if (errn == 0) {
  299. switch(eventCode) {
  300. case 0:
  301. /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
  302. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  303. if(errn == 0) {
  304. if(eventCode == 0) {
  305. errn = decodeNBitUnsignedInteger(stream, 5, &(uint32));
  306. appHandAppProtocolType->Priority = (uint8_t)(uint32 + 1);
  307. } else {
  308. /* Second level event (e.g., xsi:type, xsi:nil, ...) */
  309. errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
  310. }
  311. }
  312. if(errn == 0) {
  313. /* valid EE for simple element START_ELEMENT(Priority) ? */
  314. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  315. if(eventCode == 0) {
  316. grammarID = 2;
  317. } else {
  318. errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
  319. }
  320. }
  321. break;
  322. default:
  323. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  324. break;
  325. }
  326. }
  327. break;
  328. case 2:
  329. /* Element[END_ELEMENT] */
  330. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  331. if (errn == 0) {
  332. switch(eventCode) {
  333. case 0:
  334. done = 1;
  335. grammarID = 3;
  336. break;
  337. default:
  338. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  339. break;
  340. }
  341. }
  342. break;
  343. default:
  344. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  345. break;
  346. }
  347. if(errn) {
  348. done = 1;
  349. }
  350. }
  351. return errn;
  352. }
  353. /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */
  354. static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) {
  355. int grammarID = 9;
  356. int done = 0;
  357. init_appHandAnonType_supportedAppProtocolReq(appHandAnonType_supportedAppProtocolReq);
  358. while(!done) {
  359. switch(grammarID) {
  360. case 9:
  361. /* FirstStartTag[START_ELEMENT(AppProtocol)] */
  362. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  363. if (errn == 0) {
  364. switch(eventCode) {
  365. case 0:
  366. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  367. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  368. } else {
  369. errn = EXI_ERROR_OUT_OF_BOUNDS;
  370. }
  371. grammarID = 10;
  372. break;
  373. default:
  374. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  375. break;
  376. }
  377. }
  378. break;
  379. case 10:
  380. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  381. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  382. if (errn == 0) {
  383. switch(eventCode) {
  384. case 0:
  385. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  386. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  387. } else {
  388. errn = EXI_ERROR_OUT_OF_BOUNDS;
  389. }
  390. grammarID = 11;
  391. break;
  392. case 1:
  393. done = 1;
  394. grammarID = 3;
  395. break;
  396. default:
  397. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  398. break;
  399. }
  400. }
  401. break;
  402. case 11:
  403. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  404. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  405. if (errn == 0) {
  406. switch(eventCode) {
  407. case 0:
  408. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  409. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  410. } else {
  411. errn = EXI_ERROR_OUT_OF_BOUNDS;
  412. }
  413. grammarID = 12;
  414. break;
  415. case 1:
  416. done = 1;
  417. grammarID = 3;
  418. break;
  419. default:
  420. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  421. break;
  422. }
  423. }
  424. break;
  425. case 12:
  426. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  427. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  428. if (errn == 0) {
  429. switch(eventCode) {
  430. case 0:
  431. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  432. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  433. } else {
  434. errn = EXI_ERROR_OUT_OF_BOUNDS;
  435. }
  436. grammarID = 13;
  437. break;
  438. case 1:
  439. done = 1;
  440. grammarID = 3;
  441. break;
  442. default:
  443. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  444. break;
  445. }
  446. }
  447. break;
  448. case 13:
  449. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  450. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  451. if (errn == 0) {
  452. switch(eventCode) {
  453. case 0:
  454. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  455. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  456. } else {
  457. errn = EXI_ERROR_OUT_OF_BOUNDS;
  458. }
  459. grammarID = 14;
  460. break;
  461. case 1:
  462. done = 1;
  463. grammarID = 3;
  464. break;
  465. default:
  466. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  467. break;
  468. }
  469. }
  470. break;
  471. case 14:
  472. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  473. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  474. if (errn == 0) {
  475. switch(eventCode) {
  476. case 0:
  477. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  478. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  479. } else {
  480. errn = EXI_ERROR_OUT_OF_BOUNDS;
  481. }
  482. grammarID = 15;
  483. break;
  484. case 1:
  485. done = 1;
  486. grammarID = 3;
  487. break;
  488. default:
  489. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  490. break;
  491. }
  492. }
  493. break;
  494. case 15:
  495. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  496. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  497. if (errn == 0) {
  498. switch(eventCode) {
  499. case 0:
  500. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  501. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  502. } else {
  503. errn = EXI_ERROR_OUT_OF_BOUNDS;
  504. }
  505. grammarID = 16;
  506. break;
  507. case 1:
  508. done = 1;
  509. grammarID = 3;
  510. break;
  511. default:
  512. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  513. break;
  514. }
  515. }
  516. break;
  517. case 16:
  518. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  519. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  520. if (errn == 0) {
  521. switch(eventCode) {
  522. case 0:
  523. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  524. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  525. } else {
  526. errn = EXI_ERROR_OUT_OF_BOUNDS;
  527. }
  528. grammarID = 17;
  529. break;
  530. case 1:
  531. done = 1;
  532. grammarID = 3;
  533. break;
  534. default:
  535. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  536. break;
  537. }
  538. }
  539. break;
  540. case 17:
  541. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  542. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  543. if (errn == 0) {
  544. switch(eventCode) {
  545. case 0:
  546. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  547. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  548. } else {
  549. errn = EXI_ERROR_OUT_OF_BOUNDS;
  550. }
  551. grammarID = 18;
  552. break;
  553. case 1:
  554. done = 1;
  555. grammarID = 3;
  556. break;
  557. default:
  558. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  559. break;
  560. }
  561. }
  562. break;
  563. case 18:
  564. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  565. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  566. if (errn == 0) {
  567. switch(eventCode) {
  568. case 0:
  569. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  570. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  571. } else {
  572. errn = EXI_ERROR_OUT_OF_BOUNDS;
  573. }
  574. grammarID = 19;
  575. break;
  576. case 1:
  577. done = 1;
  578. grammarID = 3;
  579. break;
  580. default:
  581. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  582. break;
  583. }
  584. }
  585. break;
  586. case 19:
  587. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  588. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  589. if (errn == 0) {
  590. switch(eventCode) {
  591. case 0:
  592. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  593. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  594. } else {
  595. errn = EXI_ERROR_OUT_OF_BOUNDS;
  596. }
  597. grammarID = 20;
  598. break;
  599. case 1:
  600. done = 1;
  601. grammarID = 3;
  602. break;
  603. default:
  604. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  605. break;
  606. }
  607. }
  608. break;
  609. case 20:
  610. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  611. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  612. if (errn == 0) {
  613. switch(eventCode) {
  614. case 0:
  615. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  616. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  617. } else {
  618. errn = EXI_ERROR_OUT_OF_BOUNDS;
  619. }
  620. grammarID = 21;
  621. break;
  622. case 1:
  623. done = 1;
  624. grammarID = 3;
  625. break;
  626. default:
  627. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  628. break;
  629. }
  630. }
  631. break;
  632. case 21:
  633. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  634. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  635. if (errn == 0) {
  636. switch(eventCode) {
  637. case 0:
  638. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  639. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  640. } else {
  641. errn = EXI_ERROR_OUT_OF_BOUNDS;
  642. }
  643. grammarID = 22;
  644. break;
  645. case 1:
  646. done = 1;
  647. grammarID = 3;
  648. break;
  649. default:
  650. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  651. break;
  652. }
  653. }
  654. break;
  655. case 22:
  656. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  657. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  658. if (errn == 0) {
  659. switch(eventCode) {
  660. case 0:
  661. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  662. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  663. } else {
  664. errn = EXI_ERROR_OUT_OF_BOUNDS;
  665. }
  666. grammarID = 23;
  667. break;
  668. case 1:
  669. done = 1;
  670. grammarID = 3;
  671. break;
  672. default:
  673. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  674. break;
  675. }
  676. }
  677. break;
  678. case 23:
  679. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  680. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  681. if (errn == 0) {
  682. switch(eventCode) {
  683. case 0:
  684. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  685. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  686. } else {
  687. errn = EXI_ERROR_OUT_OF_BOUNDS;
  688. }
  689. grammarID = 24;
  690. break;
  691. case 1:
  692. done = 1;
  693. grammarID = 3;
  694. break;
  695. default:
  696. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  697. break;
  698. }
  699. }
  700. break;
  701. case 24:
  702. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  703. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  704. if (errn == 0) {
  705. switch(eventCode) {
  706. case 0:
  707. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  708. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  709. } else {
  710. errn = EXI_ERROR_OUT_OF_BOUNDS;
  711. }
  712. grammarID = 25;
  713. break;
  714. case 1:
  715. done = 1;
  716. grammarID = 3;
  717. break;
  718. default:
  719. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  720. break;
  721. }
  722. }
  723. break;
  724. case 25:
  725. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  726. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  727. if (errn == 0) {
  728. switch(eventCode) {
  729. case 0:
  730. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  731. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  732. } else {
  733. errn = EXI_ERROR_OUT_OF_BOUNDS;
  734. }
  735. grammarID = 26;
  736. break;
  737. case 1:
  738. done = 1;
  739. grammarID = 3;
  740. break;
  741. default:
  742. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  743. break;
  744. }
  745. }
  746. break;
  747. case 26:
  748. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  749. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  750. if (errn == 0) {
  751. switch(eventCode) {
  752. case 0:
  753. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  754. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  755. } else {
  756. errn = EXI_ERROR_OUT_OF_BOUNDS;
  757. }
  758. grammarID = 27;
  759. break;
  760. case 1:
  761. done = 1;
  762. grammarID = 3;
  763. break;
  764. default:
  765. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  766. break;
  767. }
  768. }
  769. break;
  770. case 27:
  771. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  772. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  773. if (errn == 0) {
  774. switch(eventCode) {
  775. case 0:
  776. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  777. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  778. } else {
  779. errn = EXI_ERROR_OUT_OF_BOUNDS;
  780. }
  781. grammarID = 28;
  782. break;
  783. case 1:
  784. done = 1;
  785. grammarID = 3;
  786. break;
  787. default:
  788. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  789. break;
  790. }
  791. }
  792. break;
  793. case 28:
  794. /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
  795. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  796. if (errn == 0) {
  797. switch(eventCode) {
  798. case 0:
  799. if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
  800. errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
  801. } else {
  802. errn = EXI_ERROR_OUT_OF_BOUNDS;
  803. }
  804. grammarID = 2;
  805. break;
  806. case 1:
  807. done = 1;
  808. grammarID = 3;
  809. break;
  810. default:
  811. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  812. break;
  813. }
  814. }
  815. break;
  816. case 2:
  817. /* Element[END_ELEMENT] */
  818. errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
  819. if (errn == 0) {
  820. switch(eventCode) {
  821. case 0:
  822. done = 1;
  823. grammarID = 3;
  824. break;
  825. default:
  826. errn = EXI_ERROR_UNKOWN_EVENT_CODE;
  827. break;
  828. }
  829. }
  830. break;
  831. default:
  832. errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
  833. break;
  834. }
  835. if(errn) {
  836. done = 1;
  837. }
  838. }
  839. return errn;
  840. }
  841. int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) {
  842. errn = readEXIHeader(stream);
  843. if(errn == 0) {
  844. /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */
  845. init_appHandEXIDocument(exiDoc);
  846. errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
  847. if(errn == 0) {
  848. switch(eventCode) {
  849. case 0:
  850. /* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */
  851. errn = decode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq);
  852. exiDoc->supportedAppProtocolReq_isUsed = 1u;
  853. break;
  854. case 1:
  855. /* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */
  856. errn = decode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes);
  857. exiDoc->supportedAppProtocolRes_isUsed = 1u;
  858. break;
  859. default:
  860. errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
  861. break;
  862. }
  863. }
  864. }
  865. return errn;
  866. }
  867. #endif