opus.c 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. #include <stdlib.h>
  2. #include "opus.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 = 2;
  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] =
  15. make_calypso_final_element("ContractUnknownA", 3, "Unknown A", CALYPSO_FINAL_TYPE_NUMBER);
  16. OpusContractStructure->container->elements[1] = make_calypso_bitmap_element(
  17. "Contract",
  18. 4,
  19. (CalypsoElement[]){
  20. make_calypso_final_element(
  21. "ContractProvider", 8, "Provider", CALYPSO_FINAL_TYPE_UNKNOWN),
  22. make_calypso_final_element("ContractTariff", 16, "Tariff", CALYPSO_FINAL_TYPE_TARIFF),
  23. make_calypso_bitmap_element(
  24. "ContractDates",
  25. 2,
  26. (CalypsoElement[]){
  27. make_calypso_final_element(
  28. "ContractStartDate", 14, "Start date", CALYPSO_FINAL_TYPE_DATE),
  29. make_calypso_final_element(
  30. "ContractEndDate", 14, "End date", CALYPSO_FINAL_TYPE_DATE),
  31. }),
  32. make_calypso_bitmap_element(
  33. "ContractSaleData",
  34. 6,
  35. (CalypsoElement[]){
  36. make_calypso_final_element(
  37. "ContractUnknownB", 17, "Unknown B", CALYPSO_FINAL_TYPE_NUMBER),
  38. make_calypso_final_element(
  39. "ContractSaleDate", 14, "Sale date", CALYPSO_FINAL_TYPE_DATE),
  40. make_calypso_final_element(
  41. "ContractSaleTime", 11, "Sale time", CALYPSO_FINAL_TYPE_TIME),
  42. make_calypso_final_element(
  43. "ContractUnknownC", 36, "Unknown C", CALYPSO_FINAL_TYPE_NUMBER),
  44. make_calypso_final_element(
  45. "ContractStatus", 8, "Status", CALYPSO_FINAL_TYPE_UNKNOWN),
  46. make_calypso_final_element(
  47. "ContractUnknownD", 36, "Unknown D", CALYPSO_FINAL_TYPE_NUMBER),
  48. }),
  49. });
  50. return OpusContractStructure;
  51. }
  52. CalypsoApp* get_opus_event_structure() {
  53. CalypsoApp* OpusEventStructure = malloc(sizeof(CalypsoApp));
  54. if(!OpusEventStructure) {
  55. return NULL;
  56. }
  57. int app_elements_count = 4;
  58. OpusEventStructure->type = CALYPSO_APP_EVENT;
  59. OpusEventStructure->container = malloc(sizeof(CalypsoContainerElement));
  60. OpusEventStructure->container->elements = malloc(app_elements_count * sizeof(CalypsoElement));
  61. OpusEventStructure->container->size = app_elements_count;
  62. OpusEventStructure->container->elements[0] =
  63. make_calypso_final_element("EventDateStamp", 14, "Event date", CALYPSO_FINAL_TYPE_DATE);
  64. OpusEventStructure->container->elements[1] =
  65. make_calypso_final_element("EventTimeStamp", 11, "Event time", CALYPSO_FINAL_TYPE_TIME);
  66. OpusEventStructure->container->elements[2] =
  67. make_calypso_final_element("EventUnknownX", 19, "Unknown X", CALYPSO_FINAL_TYPE_NUMBER);
  68. OpusEventStructure->container->elements[3] = make_calypso_bitmap_element(
  69. "Event",
  70. 9,
  71. (CalypsoElement[]){
  72. make_calypso_final_element("EventUnknownA", 8, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  73. make_calypso_final_element(
  74. "EventResult", 8, "Code Résultat", CALYPSO_FINAL_TYPE_UNKNOWN),
  75. make_calypso_final_element(
  76. "EventServiceProvider",
  77. 8,
  78. "Identité de l’exploitant",
  79. CALYPSO_FINAL_TYPE_SERVICE_PROVIDER),
  80. make_calypso_final_element(
  81. "EventLocationId", 16, "Lieu de l’événement", CALYPSO_FINAL_TYPE_UNKNOWN),
  82. make_calypso_final_element(
  83. "EventRouteNumber", 16, "Référence de la ligne", CALYPSO_FINAL_TYPE_UNKNOWN),
  84. make_calypso_final_element(
  85. "EventUnknownD", 16, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN),
  86. make_calypso_final_element(
  87. "EventUnknownE", 16, "Unknown E", CALYPSO_FINAL_TYPE_UNKNOWN),
  88. make_calypso_final_element(
  89. "EventContractPointer",
  90. 5,
  91. "Référence du contrat concerné",
  92. CALYPSO_FINAL_TYPE_UNKNOWN),
  93. make_calypso_bitmap_element(
  94. "EventData",
  95. 7,
  96. (CalypsoElement[]){
  97. make_calypso_final_element(
  98. "EventDataDateFirstStamp",
  99. 14,
  100. "Date de la première montée",
  101. CALYPSO_FINAL_TYPE_DATE),
  102. make_calypso_final_element(
  103. "EventDataTimeFirstStamp",
  104. 11,
  105. "Heure de la première montée",
  106. CALYPSO_FINAL_TYPE_TIME),
  107. make_calypso_final_element(
  108. "EventDataSimulation", 1, "Simulation", CALYPSO_FINAL_TYPE_UNKNOWN),
  109. make_calypso_final_element(
  110. "EventDataRouteDirection", 4, "Sens", CALYPSO_FINAL_TYPE_UNKNOWN),
  111. make_calypso_final_element(
  112. "EventUnknownG", 4, "Unknown G", CALYPSO_FINAL_TYPE_UNKNOWN),
  113. make_calypso_final_element(
  114. "EventUnknownH", 4, "Unknown H", CALYPSO_FINAL_TYPE_UNKNOWN),
  115. make_calypso_final_element(
  116. "EventUnknownI", 4, "Unknown I", CALYPSO_FINAL_TYPE_UNKNOWN),
  117. }),
  118. });
  119. return OpusEventStructure;
  120. }
  121. CalypsoApp* get_opus_env_holder_structure() {
  122. CalypsoApp* OpusEnvHolderStructure = malloc(sizeof(CalypsoApp));
  123. if(!OpusEnvHolderStructure) {
  124. return NULL;
  125. }
  126. int app_elements_count = 3;
  127. OpusEnvHolderStructure->type = CALYPSO_APP_ENV_HOLDER;
  128. OpusEnvHolderStructure->container = malloc(sizeof(CalypsoContainerElement));
  129. OpusEnvHolderStructure->container->elements =
  130. malloc(app_elements_count * sizeof(CalypsoElement));
  131. OpusEnvHolderStructure->container->size = app_elements_count;
  132. OpusEnvHolderStructure->container->elements[0] = make_calypso_final_element(
  133. "EnvApplicationVersionNumber",
  134. 6,
  135. "Numéro de version de l’application Billettique",
  136. CALYPSO_FINAL_TYPE_NUMBER);
  137. OpusEnvHolderStructure->container->elements[1] = make_calypso_bitmap_element(
  138. "Env",
  139. 7,
  140. (CalypsoElement[]){
  141. make_calypso_final_element(
  142. "EnvNetworkId", 24, "Identification du réseau", CALYPSO_FINAL_TYPE_NUMBER),
  143. make_calypso_final_element(
  144. "EnvApplicationIssuerId",
  145. 8,
  146. "Identification de l’émetteur de l’application",
  147. CALYPSO_FINAL_TYPE_UNKNOWN),
  148. make_calypso_final_element(
  149. "EnvApplicationValidityEndDate",
  150. 14,
  151. "Date de fin de validité de l’application",
  152. CALYPSO_FINAL_TYPE_DATE),
  153. make_calypso_bitmap_element(
  154. "EnvData",
  155. 4,
  156. (CalypsoElement[]){
  157. make_calypso_final_element(
  158. "EnvDataCardStatus", 1, "Statut de la carte", CALYPSO_FINAL_TYPE_UNKNOWN),
  159. make_calypso_final_element(
  160. "EnvData2", 0, "Données complémentaires", CALYPSO_FINAL_TYPE_UNKNOWN),
  161. make_calypso_final_element(
  162. "EnvData_CardUtilisation",
  163. 1,
  164. "Utilisation de la carte",
  165. CALYPSO_FINAL_TYPE_UNKNOWN),
  166. make_calypso_final_element(
  167. "EnvData4", 0, "Données complémentaires", CALYPSO_FINAL_TYPE_UNKNOWN),
  168. }),
  169. make_calypso_final_element("EnvUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  170. make_calypso_final_element("EnvUnknownB", 0, "Unknown B", CALYPSO_FINAL_TYPE_UNKNOWN),
  171. make_calypso_final_element("EnvUnknownC", 0, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  172. });
  173. OpusEnvHolderStructure->container->elements[2] = make_calypso_bitmap_element(
  174. "Holder",
  175. 8,
  176. (CalypsoElement[]){
  177. make_calypso_bitmap_element(
  178. "HolderBirthBitmap",
  179. 2,
  180. (CalypsoElement[]){
  181. make_calypso_final_element(
  182. "HolderBirthDate", 32, "Date de naissance", CALYPSO_FINAL_TYPE_DATE),
  183. make_calypso_final_element(
  184. "HolderBirthUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  185. }),
  186. make_calypso_repeater_element(
  187. "HolderProfilesList",
  188. 4,
  189. make_calypso_bitmap_element(
  190. "HolderProfile",
  191. 3,
  192. (CalypsoElement[]){
  193. make_calypso_final_element(
  194. "HolderProfileNumber", 6, "Numéro de profil", CALYPSO_FINAL_TYPE_NUMBER),
  195. make_calypso_final_element(
  196. "HolderProfileDate", 14, "Date de profil", CALYPSO_FINAL_TYPE_DATE),
  197. make_calypso_final_element(
  198. "HolderProfileUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  199. })),
  200. make_calypso_final_element(
  201. "HolderData_Language", 6, "Langue de l'utilisateur", CALYPSO_FINAL_TYPE_UNKNOWN),
  202. make_calypso_final_element(
  203. "HolderUnknownA", 0, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  204. make_calypso_final_element(
  205. "HolderUnknownB", 0, "Unknown B", CALYPSO_FINAL_TYPE_UNKNOWN),
  206. make_calypso_final_element(
  207. "HolderUnknownC", 0, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  208. make_calypso_final_element(
  209. "HolderUnknownD", 0, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN),
  210. make_calypso_final_element(
  211. "HolderUnknownE", 0, "Unknown E", CALYPSO_FINAL_TYPE_UNKNOWN),
  212. });
  213. return OpusEnvHolderStructure;
  214. }