opus.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. #include <stdlib.h>
  2. #include "../../metroflip/metroflip_api.h"
  3. CalypsoApp* get_opus_contract_structure() {
  4. CalypsoApp* OpusContractStructure = malloc(sizeof(CalypsoApp));
  5. if(!OpusContractStructure) {
  6. return NULL;
  7. }
  8. int app_elements_count = 1;
  9. OpusContractStructure->type = CALYPSO_APP_CONTRACT;
  10. OpusContractStructure->container = malloc(sizeof(CalypsoContainerElement));
  11. OpusContractStructure->container->elements =
  12. malloc(app_elements_count * sizeof(CalypsoElement));
  13. OpusContractStructure->container->size = app_elements_count;
  14. OpusContractStructure->container->elements[0] = make_calypso_bitmap_element(
  15. "Contract",
  16. 7,
  17. (CalypsoElement[]){
  18. make_calypso_final_element(
  19. "ContractProvider",
  20. 8,
  21. "Acteur ou groupe d’acteurs ayant dèfini et assurant le service pour le contrat",
  22. CALYPSO_FINAL_TYPE_SERVICE_PROVIDER),
  23. make_calypso_final_element(
  24. "ContractTariff", 16, "Code tarif du contrat", CALYPSO_FINAL_TYPE_TARIFF),
  25. make_calypso_bitmap_element(
  26. "ContractValidityInfoBitmap",
  27. 2,
  28. (CalypsoElement[]){
  29. make_calypso_final_element(
  30. "ContractValidityStartDate",
  31. 14,
  32. "Date de début de validité du contrat",
  33. CALYPSO_FINAL_TYPE_DATE),
  34. make_calypso_final_element(
  35. "ContractValidityEndDate",
  36. 14,
  37. "Date de fin de validité du contrat",
  38. CALYPSO_FINAL_TYPE_DATE),
  39. }),
  40. make_calypso_bitmap_element(
  41. "ContractData",
  42. 9,
  43. (CalypsoElement[]){
  44. make_calypso_final_element(
  45. "ContractDataSaleAgent",
  46. 8,
  47. "Acteur ayant effectué la dernière vente sur le contrat",
  48. CALYPSO_FINAL_TYPE_SERVICE_PROVIDER),
  49. make_calypso_final_element(
  50. "ContractDataSaleSecureDevice",
  51. 32,
  52. "Numéro du SAM utilisé pour charger le contrat",
  53. CALYPSO_FINAL_TYPE_UNKNOWN),
  54. make_calypso_final_element(
  55. "ContractDataSaleDate",
  56. 14,
  57. "Date de chargement initial du contrat",
  58. CALYPSO_FINAL_TYPE_DATE),
  59. make_calypso_final_element(
  60. "ContractDataSaleTime",
  61. 11,
  62. "Heure de chargement initial du contrat",
  63. CALYPSO_FINAL_TYPE_TIME),
  64. make_calypso_final_element(
  65. "ContractDataReloadDate",
  66. 14,
  67. "Date de rechargement du contrat",
  68. CALYPSO_FINAL_TYPE_DATE),
  69. make_calypso_final_element(
  70. "ContractDataValidityLimitDate",
  71. 14,
  72. "Date limite pour une première utilisation du contrat",
  73. CALYPSO_FINAL_TYPE_DATE),
  74. make_calypso_final_element(
  75. "ContractDataEndInhibitionDate",
  76. 14,
  77. "Date jusqu’à laquelle la prèsence du contrat dans une liste de suspension est ignorée",
  78. CALYPSO_FINAL_TYPE_DATE),
  79. make_calypso_final_element(
  80. "ContractDataInhibition", 1, "Contrat invalide", CALYPSO_FINAL_TYPE_UNKNOWN),
  81. make_calypso_final_element(
  82. "ContractDataUsed",
  83. 1,
  84. "Contrat déjà validé au moins une fois",
  85. CALYPSO_FINAL_TYPE_UNKNOWN),
  86. }),
  87. make_calypso_final_element(
  88. "ContractUnknownE", 0, "Unknown E", CALYPSO_FINAL_TYPE_UNKNOWN),
  89. make_calypso_final_element(
  90. "ContractUnknownF", 0, "Unknown F", CALYPSO_FINAL_TYPE_UNKNOWN),
  91. make_calypso_final_element(
  92. "ContractUnknownG", 0, "Unknown G", CALYPSO_FINAL_TYPE_UNKNOWN),
  93. });
  94. return OpusContractStructure;
  95. }
  96. CalypsoApp* get_opus_event_structure() {
  97. CalypsoApp* OpusEventStructure = malloc(sizeof(CalypsoApp));
  98. if(!OpusEventStructure) {
  99. return NULL;
  100. }
  101. int app_elements_count = 4;
  102. OpusEventStructure->type = CALYPSO_APP_EVENT;
  103. OpusEventStructure->container = malloc(sizeof(CalypsoContainerElement));
  104. OpusEventStructure->container->elements = malloc(app_elements_count * sizeof(CalypsoElement));
  105. OpusEventStructure->container->size = app_elements_count;
  106. OpusEventStructure->container->elements[0] =
  107. make_calypso_final_element("EventDateStamp", 14, "Event date", CALYPSO_FINAL_TYPE_DATE);
  108. OpusEventStructure->container->elements[1] =
  109. make_calypso_final_element("EventTimeStamp", 11, "Event time", CALYPSO_FINAL_TYPE_TIME);
  110. OpusEventStructure->container->elements[2] =
  111. make_calypso_final_element("EventUnknownX", 19, "Unknown X", CALYPSO_FINAL_TYPE_NUMBER);
  112. OpusEventStructure->container->elements[3] = make_calypso_bitmap_element(
  113. "Event",
  114. 9,
  115. (CalypsoElement[]){
  116. make_calypso_final_element("EventUnknownA", 8, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  117. make_calypso_final_element(
  118. "EventResult", 8, "Code Résultat", CALYPSO_FINAL_TYPE_UNKNOWN),
  119. make_calypso_final_element(
  120. "EventServiceProvider",
  121. 8,
  122. "Identité de l’exploitant",
  123. CALYPSO_FINAL_TYPE_SERVICE_PROVIDER),
  124. make_calypso_final_element(
  125. "EventLocationId", 16, "Lieu de l’événement", CALYPSO_FINAL_TYPE_UNKNOWN),
  126. make_calypso_final_element(
  127. "EventRouteNumber", 16, "Référence de la ligne", CALYPSO_FINAL_TYPE_UNKNOWN),
  128. make_calypso_final_element(
  129. "EventUnknownD", 16, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN),
  130. make_calypso_final_element(
  131. "EventUnknownE", 16, "Unknown E", CALYPSO_FINAL_TYPE_UNKNOWN),
  132. make_calypso_final_element(
  133. "EventContractPointer",
  134. 5,
  135. "Référence du contrat concerné",
  136. CALYPSO_FINAL_TYPE_UNKNOWN),
  137. make_calypso_bitmap_element(
  138. "EventData",
  139. 7,
  140. (CalypsoElement[]){
  141. make_calypso_final_element(
  142. "EventDataDateFirstStamp",
  143. 14,
  144. "Date de la première montée",
  145. CALYPSO_FINAL_TYPE_DATE),
  146. make_calypso_final_element(
  147. "EventDataTimeFirstStamp",
  148. 11,
  149. "Heure de la première montée",
  150. CALYPSO_FINAL_TYPE_TIME),
  151. make_calypso_final_element(
  152. "EventDataSimulation", 1, "Simulation", CALYPSO_FINAL_TYPE_UNKNOWN),
  153. make_calypso_final_element(
  154. "EventDataRouteDirection", 4, "Sens", CALYPSO_FINAL_TYPE_UNKNOWN),
  155. make_calypso_final_element(
  156. "EventUnknownG", 4, "Unknown G", CALYPSO_FINAL_TYPE_UNKNOWN),
  157. make_calypso_final_element(
  158. "EventUnknownH", 4, "Unknown H", CALYPSO_FINAL_TYPE_UNKNOWN),
  159. make_calypso_final_element(
  160. "EventUnknownI", 4, "Unknown I", CALYPSO_FINAL_TYPE_UNKNOWN),
  161. }),
  162. });
  163. return OpusEventStructure;
  164. }
  165. CalypsoApp* get_opus_env_holder_structure() {
  166. CalypsoApp* OpusEnvHolderStructure = malloc(sizeof(CalypsoApp));
  167. if(!OpusEnvHolderStructure) {
  168. return NULL;
  169. }
  170. int app_elements_count = 3;
  171. OpusEnvHolderStructure->type = CALYPSO_APP_ENV_HOLDER;
  172. OpusEnvHolderStructure->container = malloc(sizeof(CalypsoContainerElement));
  173. OpusEnvHolderStructure->container->elements =
  174. malloc(app_elements_count * sizeof(CalypsoElement));
  175. OpusEnvHolderStructure->container->size = app_elements_count;
  176. OpusEnvHolderStructure->container->elements[0] = make_calypso_final_element(
  177. "EnvApplicationVersionNumber",
  178. 6,
  179. "Numéro de version de l’application Billettique",
  180. CALYPSO_FINAL_TYPE_NUMBER);
  181. OpusEnvHolderStructure->container->elements[1] = make_calypso_bitmap_element(
  182. "Env",
  183. 7,
  184. (CalypsoElement[]){
  185. make_calypso_final_element(
  186. "EnvNetworkId", 24, "Identification du réseau", CALYPSO_FINAL_TYPE_NUMBER),
  187. make_calypso_final_element(
  188. "EnvApplicationIssuerId",
  189. 8,
  190. "Identification de l’émetteur de l’application",
  191. CALYPSO_FINAL_TYPE_UNKNOWN),
  192. make_calypso_final_element(
  193. "EnvApplicationValidityEndDate",
  194. 14,
  195. "Date de fin de validité de l’application",
  196. CALYPSO_FINAL_TYPE_DATE),
  197. make_calypso_bitmap_element(
  198. "EnvData",
  199. 4,
  200. (CalypsoElement[]){
  201. make_calypso_final_element(
  202. "EnvDataCardStatus", 1, "Statut de la carte", CALYPSO_FINAL_TYPE_UNKNOWN),
  203. make_calypso_final_element(
  204. "EnvData2", 0, "Données complémentaires", CALYPSO_FINAL_TYPE_UNKNOWN),
  205. make_calypso_final_element(
  206. "EnvData_CardUtilisation",
  207. 1,
  208. "Utilisation de la carte",
  209. CALYPSO_FINAL_TYPE_UNKNOWN),
  210. make_calypso_final_element(
  211. "EnvData4", 0, "Données complémentaires", CALYPSO_FINAL_TYPE_UNKNOWN),
  212. }),
  213. make_calypso_final_element("EnvUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  214. make_calypso_final_element("EnvUnknownB", 0, "Unknown B", CALYPSO_FINAL_TYPE_UNKNOWN),
  215. make_calypso_final_element("EnvUnknownC", 0, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  216. });
  217. OpusEnvHolderStructure->container->elements[2] = make_calypso_bitmap_element(
  218. "Holder",
  219. 8,
  220. (CalypsoElement[]){
  221. make_calypso_bitmap_element(
  222. "HolderBirthBitmap",
  223. 2,
  224. (CalypsoElement[]){
  225. make_calypso_final_element(
  226. "HolderBirthDate", 32, "Date de naissance", CALYPSO_FINAL_TYPE_DATE),
  227. make_calypso_final_element(
  228. "HolderBirthUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  229. }),
  230. make_calypso_repeater_element(
  231. "HolderProfilesList",
  232. 4,
  233. make_calypso_bitmap_element(
  234. "HolderProfile",
  235. 3,
  236. (CalypsoElement[]){
  237. make_calypso_final_element(
  238. "HolderProfileNumber", 6, "Numéro de profil", CALYPSO_FINAL_TYPE_NUMBER),
  239. make_calypso_final_element(
  240. "HolderProfileDate", 14, "Date de profil", CALYPSO_FINAL_TYPE_DATE),
  241. make_calypso_final_element(
  242. "HolderProfileUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  243. })),
  244. make_calypso_final_element(
  245. "HolderData_Language", 6, "Langue de l'utilisateur", CALYPSO_FINAL_TYPE_UNKNOWN),
  246. make_calypso_final_element(
  247. "HolderUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  248. make_calypso_final_element(
  249. "HolderUnknownB", 0, "Unknown B", CALYPSO_FINAL_TYPE_UNKNOWN),
  250. make_calypso_final_element(
  251. "HolderUnknownC", 0, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  252. make_calypso_final_element(
  253. "HolderUnknownD", 0, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN),
  254. make_calypso_final_element(
  255. "HolderUnknownE", 0, "Unknown E", CALYPSO_FINAL_TYPE_UNKNOWN),
  256. });
  257. return OpusEnvHolderStructure;
  258. }