calypso_util.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #include <stdbool.h>
  2. #include "calypso_i.h"
  3. #ifndef CALYPSO_UTIL_H
  4. #define CALYPSO_UTIL_H
  5. typedef enum {
  6. CALYPSO_APP_ENV_HOLDER,
  7. CALYPSO_APP_CONTRACT,
  8. CALYPSO_APP_EVENT,
  9. CALYPSO_APP_COUNTER,
  10. } CalypsoAppType;
  11. typedef enum {
  12. CALYPSO_FINAL_TYPE_UNKNOWN,
  13. CALYPSO_FINAL_TYPE_NUMBER,
  14. CALYPSO_FINAL_TYPE_DATE,
  15. CALYPSO_FINAL_TYPE_TIME,
  16. CALYPSO_FINAL_TYPE_PAY_METHOD,
  17. CALYPSO_FINAL_TYPE_AMOUNT,
  18. CALYPSO_FINAL_TYPE_SERVICE_PROVIDER,
  19. CALYPSO_FINAL_TYPE_ZONES,
  20. CALYPSO_FINAL_TYPE_TARIFF,
  21. CALYPSO_FINAL_TYPE_NETWORK_ID,
  22. CALYPSO_FINAL_TYPE_TRANSPORT_TYPE,
  23. CALYPSO_FINAL_TYPE_CARD_STATUS,
  24. CALYPSO_FINAL_TYPE_STRING,
  25. } CalypsoFinalType;
  26. typedef enum {
  27. CALYPSO_ELEMENT_TYPE_REPEATER,
  28. CALYPSO_ELEMENT_TYPE_CONTAINER,
  29. CALYPSO_ELEMENT_TYPE_BITMAP,
  30. CALYPSO_ELEMENT_TYPE_FINAL
  31. } CalypsoElementType;
  32. typedef struct CalypsoFinalElement_t CalypsoFinalElement;
  33. typedef struct CalypsoBitmapElement_t CalypsoBitmapElement;
  34. typedef struct CalypsoContainerElement_t CalypsoContainerElement;
  35. typedef struct CalypsoRepeaterElement_t CalypsoRepeaterElement;
  36. typedef struct {
  37. CalypsoElementType type;
  38. union {
  39. CalypsoFinalElement* final;
  40. CalypsoBitmapElement* bitmap;
  41. CalypsoContainerElement* container;
  42. CalypsoRepeaterElement* repeater;
  43. };
  44. } CalypsoElement;
  45. struct CalypsoFinalElement_t {
  46. char key[36];
  47. int size;
  48. char label[64];
  49. CalypsoFinalType final_type;
  50. };
  51. struct CalypsoBitmapElement_t {
  52. char key[36];
  53. int size;
  54. CalypsoElement* elements;
  55. };
  56. struct CalypsoContainerElement_t {
  57. char key[36];
  58. int size;
  59. CalypsoElement* elements;
  60. };
  61. struct CalypsoRepeaterElement_t {
  62. char key[36];
  63. int size;
  64. CalypsoElement element;
  65. };
  66. typedef struct {
  67. CalypsoAppType type;
  68. CalypsoContainerElement* container;
  69. } CalypsoApp;
  70. CalypsoElement make_calypso_final_element(
  71. const char* key,
  72. int size,
  73. const char* label,
  74. CalypsoFinalType final_type);
  75. CalypsoElement make_calypso_bitmap_element(const char* key, int size, CalypsoElement* elements);
  76. CalypsoElement make_calypso_container_element(const char* key, int size, CalypsoElement* elements);
  77. CalypsoElement make_calypso_repeater_element(const char* key, int size, CalypsoElement element);
  78. int* get_bitmap_positions(const char* binary_string, int* count);
  79. int is_bit_present(int* positions, int count, int bit);
  80. // Calypso known Card types
  81. const char* get_country_string(int country_num);
  82. #endif // CALYPSO_UTIL_H