ravkav.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. #include <stdlib.h>
  2. #include "../../metroflip/metroflip_api.h"
  3. CalypsoApp* get_ravkav_contract_structure() {
  4. /*
  5. En1545FixedInteger("Version", 3),
  6. En1545FixedInteger.date(CONTRACT_START),
  7. En1545FixedInteger(CONTRACT_PROVIDER, 8),
  8. En1545FixedInteger(CONTRACT_TARIFF, 11),
  9. En1545FixedInteger.date(CONTRACT_SALE),
  10. En1545FixedInteger(CONTRACT_SALE_DEVICE, 12),
  11. En1545FixedInteger("ContractSaleNumber", 10),
  12. En1545FixedInteger(CONTRACT_INTERCHANGE, 1),
  13. En1545Bitmap(
  14. En1545FixedInteger(CONTRACT_UNKNOWN_A, 5),
  15. En1545FixedInteger(CONTRACT_RESTRICT_CODE, 5),
  16. En1545FixedInteger("ContractRestrictDuration", 6),
  17. En1545FixedInteger.date(CONTRACT_END),
  18. En1545FixedInteger(CONTRACT_DURATION, 8),
  19. En1545FixedInteger(CONTRACT_UNKNOWN_B, 32),
  20. En1545FixedInteger(CONTRACT_UNKNOWN_C, 6),
  21. En1545FixedInteger(CONTRACT_UNKNOWN_D, 32),
  22. En1545FixedInteger(CONTRACT_UNKNOWN_E, 32)
  23. )
  24. */
  25. CalypsoApp* RavKavContractStructure = malloc(sizeof(CalypsoApp));
  26. if(!RavKavContractStructure) {
  27. return NULL;
  28. }
  29. int app_elements_count = 9;
  30. RavKavContractStructure->type = CALYPSO_APP_CONTRACT;
  31. RavKavContractStructure->container = malloc(sizeof(CalypsoContainerElement));
  32. RavKavContractStructure->container->elements =
  33. malloc(app_elements_count * sizeof(CalypsoElement));
  34. RavKavContractStructure->container->size = app_elements_count;
  35. RavKavContractStructure->container->elements[0] =
  36. make_calypso_final_element("ContractVersion", 3, "Version", CALYPSO_FINAL_TYPE_NUMBER);
  37. RavKavContractStructure->container->elements[1] =
  38. make_calypso_final_element("ContractStartDate", 14, "Start Date", CALYPSO_FINAL_TYPE_DATE);
  39. RavKavContractStructure->container->elements[2] =
  40. make_calypso_final_element("ContractProvider", 8, "Provider", CALYPSO_FINAL_TYPE_UNKNOWN);
  41. RavKavContractStructure->container->elements[3] =
  42. make_calypso_final_element("ContractTariff", 11, "Tariff", CALYPSO_FINAL_TYPE_TARIFF);
  43. RavKavContractStructure->container->elements[4] =
  44. make_calypso_final_element("ContractSaleDate", 14, "Sale Date", CALYPSO_FINAL_TYPE_DATE);
  45. RavKavContractStructure->container->elements[5] = make_calypso_final_element(
  46. "ContractSaleDevice", 12, "Sale Device", CALYPSO_FINAL_TYPE_UNKNOWN);
  47. RavKavContractStructure->container->elements[6] = make_calypso_final_element(
  48. "ContractSaleNumber", 10, "Sale Number", CALYPSO_FINAL_TYPE_UNKNOWN);
  49. RavKavContractStructure->container->elements[7] = make_calypso_final_element(
  50. "ContractInterchange", 1, "Contract Interchange", CALYPSO_FINAL_TYPE_UNKNOWN);
  51. RavKavContractStructure->container->elements[8] = make_calypso_bitmap_element(
  52. "Contract",
  53. 9,
  54. (CalypsoElement[]){
  55. make_calypso_final_element(
  56. "ContractUnknownA", 5, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN),
  57. make_calypso_final_element(
  58. "ContractRestrictCode", 5, "Restrict Code", CALYPSO_FINAL_TYPE_UNKNOWN),
  59. make_calypso_final_element(
  60. "ContractRestrictDuration", 6, "Restrict Duration", CALYPSO_FINAL_TYPE_UNKNOWN),
  61. make_calypso_final_element("ContractEndDate", 14, "End Date", CALYPSO_FINAL_TYPE_DATE),
  62. make_calypso_final_element(
  63. "ContractDuration", 8, "Duration", CALYPSO_FINAL_TYPE_UNKNOWN),
  64. make_calypso_final_element(
  65. "ContractUnknownB", 32, "Unknown B", CALYPSO_FINAL_TYPE_UNKNOWN),
  66. make_calypso_final_element(
  67. "ContractUnknownC", 6, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  68. make_calypso_final_element(
  69. "ContractUnknownD", 32, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN),
  70. make_calypso_final_element(
  71. "ContractUnknownE", 32, "Unknown E", CALYPSO_FINAL_TYPE_UNKNOWN),
  72. });
  73. return RavKavContractStructure;
  74. }
  75. CalypsoApp* get_ravkav_env_holder_structure() {
  76. /*
  77. En1545FixedInteger(ENV_VERSION_NUMBER, 3),
  78. En1545FixedInteger(ENV_NETWORK_ID, 20),
  79. En1545FixedInteger(ENV_UNKNOWN_A, 26),
  80. En1545FixedInteger.date(ENV_APPLICATION_ISSUE),
  81. En1545FixedInteger.date(ENV_APPLICATION_VALIDITY_END),
  82. En1545FixedInteger("PayMethod", 3),
  83. En1545FixedInteger.dateBCD(HOLDER_BIRTH_DATE),
  84. En1545FixedHex(ENV_UNKNOWN_B, 44),
  85. En1545FixedInteger(HOLDER_ID_NUMBER, 30)
  86. */
  87. CalypsoApp* RavKavEnvHolderStructure = malloc(sizeof(CalypsoApp));
  88. if(!RavKavEnvHolderStructure) {
  89. return NULL;
  90. }
  91. int app_elements_count = 8;
  92. RavKavEnvHolderStructure->type = CALYPSO_APP_ENV_HOLDER;
  93. RavKavEnvHolderStructure->container = malloc(sizeof(CalypsoContainerElement));
  94. RavKavEnvHolderStructure->container->elements =
  95. malloc(app_elements_count * sizeof(CalypsoElement));
  96. RavKavEnvHolderStructure->container->size = app_elements_count;
  97. RavKavEnvHolderStructure->container->elements[0] = make_calypso_final_element(
  98. "EnvApplicationVersionNumber",
  99. 3,
  100. "Numéro de version de l’application Billettique",
  101. CALYPSO_FINAL_TYPE_NUMBER);
  102. RavKavEnvHolderStructure->container->elements[1] = make_calypso_final_element(
  103. "EnvCountry", 12, "Identification du réseau", CALYPSO_FINAL_TYPE_NUMBER);
  104. RavKavEnvHolderStructure->container->elements[2] =
  105. make_calypso_final_element("EnvIssuer", 8, "Issuer", CALYPSO_FINAL_TYPE_NUMBER);
  106. RavKavEnvHolderStructure->container->elements[3] = make_calypso_final_element(
  107. "EnvApplicationNumber", 26, "Application Number", CALYPSO_FINAL_TYPE_NUMBER);
  108. RavKavEnvHolderStructure->container->elements[4] =
  109. make_calypso_final_element("EnvDateOfIssue", 14, "Date of issue", CALYPSO_FINAL_TYPE_DATE);
  110. RavKavEnvHolderStructure->container->elements[5] =
  111. make_calypso_final_element("EnvEndValidity", 14, "End Validity", CALYPSO_FINAL_TYPE_DATE);
  112. RavKavEnvHolderStructure->container->elements[6] =
  113. make_calypso_final_element(" ", 3, "Payment method", CALYPSO_FINAL_TYPE_PAY_METHOD),
  114. RavKavEnvHolderStructure->container->elements[7] = make_calypso_final_element(
  115. "EnvBCDDate", 32, "Birth Date", CALYPSO_FINAL_TYPE_DATE); // might do this one later
  116. return RavKavEnvHolderStructure;
  117. }
  118. CalypsoApp* get_ravkav_event_structure() {
  119. /*
  120. En1545FixedInteger("EventVersion", 3),
  121. En1545FixedInteger(EVENT_SERVICE_PROVIDER, 8),
  122. En1545FixedInteger(EVENT_CONTRACT_POINTER, 4),
  123. En1545FixedInteger(EVENT_CODE, 8),
  124. En1545FixedInteger.dateTime(EVENT),
  125. En1545FixedInteger("EventTransferFlag", 1),
  126. En1545FixedInteger.dateTime(EVENT_FIRST_STAMP),
  127. En1545FixedInteger("EventContractPrefs", 32),
  128. En1545Bitmap(
  129. En1545FixedInteger(EVENT_LOCATION_ID, 16),
  130. En1545FixedInteger(EVENT_ROUTE_NUMBER, 16),
  131. En1545FixedInteger("StopEnRoute", 8),
  132. En1545FixedInteger(EVENT_UNKNOWN_A, 12),
  133. En1545FixedInteger(EVENT_VEHICLE_ID, 14),
  134. En1545FixedInteger(EVENT_UNKNOWN_B, 4),
  135. En1545FixedInteger(EVENT_UNKNOWN_C, 8)
  136. ),
  137. En1545Bitmap(
  138. En1545Container(
  139. En1545FixedInteger("RouteSystem", 10),
  140. En1545FixedInteger("FareCode", 8),
  141. En1545FixedInteger(EVENT_PRICE_AMOUNT, 16)
  142. ),
  143. En1545FixedInteger(EVENT_UNKNOWN_D, 32),
  144. En1545FixedInteger(EVENT_UNKNOWN_E, 32)
  145. )
  146. */
  147. // EventTime EventVehicle
  148. CalypsoApp* RavKavEventStructure = malloc(sizeof(CalypsoApp));
  149. if(!RavKavEventStructure) {
  150. return NULL;
  151. }
  152. int app_elements_count = 11;
  153. RavKavEventStructure->type = CALYPSO_APP_EVENT;
  154. RavKavEventStructure->container = malloc(sizeof(CalypsoContainerElement));
  155. RavKavEventStructure->container->elements =
  156. malloc(app_elements_count * sizeof(CalypsoElement));
  157. RavKavEventStructure->container->size = app_elements_count;
  158. RavKavEventStructure->container->elements[0] =
  159. make_calypso_final_element("EventVersion", 3, "Version Number", CALYPSO_FINAL_TYPE_NUMBER);
  160. RavKavEventStructure->container->elements[1] = make_calypso_final_element(
  161. "EventServiceProvider", 8, "Service provider", CALYPSO_FINAL_TYPE_UNKNOWN);
  162. RavKavEventStructure->container->elements[2] = make_calypso_final_element(
  163. "EventContractID", 4, "Contract ID", CALYPSO_FINAL_TYPE_UNKNOWN);
  164. RavKavEventStructure->container->elements[3] =
  165. make_calypso_final_element("EventAreaID", 4, "Area ID", CALYPSO_FINAL_TYPE_UNKNOWN);
  166. RavKavEventStructure->container->elements[4] =
  167. make_calypso_final_element("EventType", 4, "Event Type", CALYPSO_FINAL_TYPE_UNKNOWN);
  168. RavKavEventStructure->container->elements[5] =
  169. make_calypso_final_element("EventTime", 30, "Event Time", CALYPSO_FINAL_TYPE_DATE);
  170. RavKavEventStructure->container->elements[6] = make_calypso_final_element(
  171. "EventInterchangeFlag", 1, "Event Interchange flag", CALYPSO_FINAL_TYPE_UNKNOWN);
  172. RavKavEventStructure->container->elements[7] = make_calypso_final_element(
  173. "EventFirstTime", 30, "Event First Time", CALYPSO_FINAL_TYPE_DATE);
  174. RavKavEventStructure->container->elements[8] =
  175. make_calypso_final_element("EventUnknownA", 32, "Unknown A", CALYPSO_FINAL_TYPE_UNKNOWN);
  176. RavKavEventStructure->container->elements[9] = make_calypso_bitmap_element(
  177. "Location",
  178. 7,
  179. (CalypsoElement[]){
  180. make_calypso_final_element(
  181. "EventLocationID", 16, "Location ID", CALYPSO_FINAL_TYPE_NUMBER),
  182. make_calypso_final_element(
  183. "EVentRouteNumber", 16, "Route Number", CALYPSO_FINAL_TYPE_NUMBER),
  184. make_calypso_final_element(
  185. "EventStopEnRoute", 8, "Stop En Route", CALYPSO_FINAL_TYPE_UNKNOWN),
  186. make_calypso_final_element(
  187. "EventUnknownB", 12, "Unknown B", CALYPSO_FINAL_TYPE_UNKNOWN),
  188. make_calypso_final_element(
  189. "EventVehicleID", 14, "Vehicle ID", CALYPSO_FINAL_TYPE_UNKNOWN),
  190. make_calypso_final_element("EventUnknownC", 4, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  191. make_calypso_final_element(
  192. "EventUnknownD", 8, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN)});
  193. RavKavEventStructure->container->elements[10] = make_calypso_bitmap_element(
  194. "EventExtension",
  195. 3,
  196. (CalypsoElement[]){
  197. make_calypso_container_element(
  198. "EventData",
  199. 3,
  200. (CalypsoElement[]){
  201. make_calypso_final_element(
  202. "EventRouteSystem", 10, "Route System", CALYPSO_FINAL_TYPE_UNKNOWN),
  203. make_calypso_final_element(
  204. "EventfareCode", 8, "fare Code", CALYPSO_FINAL_TYPE_UNKNOWN),
  205. make_calypso_final_element(
  206. "EventDebitAmount", 16, "Debit Amount", CALYPSO_FINAL_TYPE_UNKNOWN),
  207. }),
  208. make_calypso_final_element(
  209. "EventUnknownE", 32, "Unknown C", CALYPSO_FINAL_TYPE_UNKNOWN),
  210. make_calypso_final_element(
  211. "EventUnknownF", 32, "Unknown D", CALYPSO_FINAL_TYPE_UNKNOWN),
  212. });
  213. return RavKavEventStructure;
  214. }